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

!6669 NFSv4.2: fix nfs4_listxattr kernel BUG at mm/usercopy.c:102

parents 48d7a3c5 4099a510
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -10367,29 +10367,33 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = {
static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
{
	ssize_t error, error2, error3;
	size_t left = size;

	error = generic_listxattr(dentry, list, size);
	error = generic_listxattr(dentry, list, left);
	if (error < 0)
		return error;
	if (list) {
		list += error;
		size -= error;
		left -= error;
	}

	error2 = nfs4_listxattr_nfs4_label(d_inode(dentry), list, size);
	error2 = nfs4_listxattr_nfs4_label(d_inode(dentry), list, left);
	if (error2 < 0)
		return error2;

	if (list) {
		list += error2;
		size -= error2;
		left -= error2;
	}

	error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, size);
	error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, left);
	if (error3 < 0)
		return error3;

	return error + error2 + error3;
	error += error2 + error3;
	if (size && error > size)
		return -ERANGE;
	return error;
}

static void nfs4_enable_swap(struct inode *inode)