summaryrefslogtreecommitdiff
path: root/fs/nfs/nfs42proc.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2022-11-25 22:16:05 +0300
committerMark Brown <broonie@kernel.org>2022-11-25 22:16:05 +0300
commit5cd4d3886780bf9a846eada29a2aefe8bfcac027 (patch)
treeea5cc9b11657912a1371932ad467a7a622e8010c /fs/nfs/nfs42proc.c
parentef3232e3dbd172fa17190fa8a852a3180a73bbdc (diff)
parentf0c4d9fc9cc9462659728d168387191387e903cc (diff)
downloadlinux-5cd4d3886780bf9a846eada29a2aefe8bfcac027.tar.xz
Merge tag 'v6.1-rc4' into spi-6.2
Linux 6.1-rc4 which should get my CI working on RPi3s again.
Diffstat (limited to 'fs/nfs/nfs42proc.c')
-rw-r--r--fs/nfs/nfs42proc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 13424f0d793b..ecb428512fe1 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -1093,6 +1093,9 @@ static int _nfs42_proc_clone(struct rpc_message *msg, struct file *src_f,
&args.seq_args, &res.seq_res, 0);
trace_nfs4_clone(src_inode, dst_inode, &args, status);
if (status == 0) {
+ /* a zero-length count means clone to EOF in src */
+ if (count == 0 && res.dst_fattr->valid & NFS_ATTR_FATTR_SIZE)
+ count = nfs_size_to_loff_t(res.dst_fattr->size) - dst_offset;
nfs42_copy_dest_done(dst_inode, dst_offset, count);
status = nfs_post_op_update_inode(dst_inode, res.dst_fattr);
}