Unverified Commit cbb4fa32 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!12550 fs/inode: Prevent dump_mapping() accessing invalid dentry.d_name.name

parents 75b7995d 53362cdd
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -593,6 +593,7 @@ void dump_mapping(const struct address_space *mapping)
	struct hlist_node *dentry_first;
	struct dentry *dentry_ptr;
	struct dentry dentry;
	char fname[64] = {};
	unsigned long ino;

	/*
@@ -629,11 +630,14 @@ void dump_mapping(const struct address_space *mapping)
		return;
	}

	if (strncpy_from_kernel_nofault(fname, dentry.d_name.name, 63) < 0)
		strscpy(fname, "<invalid>", sizeof(fname));
	/*
	 * if dentry is corrupted, the %pd handler may still crash,
	 * but it's unlikely that we reach here with a corrupt mapping
	 * Even if strncpy_from_kernel_nofault() succeeded,
	 * the fname could be unreliable
	 */
	pr_warn("aops:%ps ino:%lx dentry name:\"%pd\"\n", a_ops, ino, &dentry);
	pr_warn("aops:%ps ino:%lx dentry name(?):\"%s\"\n",
		a_ops, ino, fname);
}

void clear_inode(struct inode *inode)