Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3fdc89c authored by Trond Myklebust's avatar Trond Myklebust Committed by J. Bruce Fields
Browse files

nfsd: Fix error return values for nfsd4_clone_file_range()



If the parameter 'count' is non-zero, nfsd4_clone_file_range() will
currently clobber all errors returned by vfs_clone_file_range() and
replace them with EINVAL.

Fixes: 42ec3d4c ("vfs: make remap_file_range functions take and...")
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Cc: stable@vger.kernel.org # v4.20+
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 8834f560
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -557,9 +557,11 @@ __be32 nfsd4_clone_file_range(struct file *src, u64 src_pos, struct file *dst,
	loff_t cloned;

	cloned = vfs_clone_file_range(src, src_pos, dst, dst_pos, count, 0);
	if (cloned < 0)
		return nfserrno(cloned);
	if (count && cloned != count)
		cloned = -EINVAL;
	return nfserrno(cloned < 0 ? cloned : 0);
		return nfserrno(-EINVAL);
	return 0;
}

ssize_t nfsd_copy_file_range(struct file *src, u64 src_pos, struct file *dst,