Do not return number of bytes written for ioctl CIFS_IOC_COPYCHUNK_FILE
authorSachin Prabhu <sprabhu@redhat.com>
Wed, 26 Apr 2017 16:10:17 +0000 (17:10 +0100)
committerSteve French <smfrench@gmail.com>
Fri, 28 Apr 2017 12:56:33 +0000 (07:56 -0500)
commit 620d8745b35d ("Introduce cifs_copy_file_range()") changes the
behaviour of the cifs ioctl call CIFS_IOC_COPYCHUNK_FILE. In case of
successful writes, it now returns the number of bytes written. This
return value is treated as an error by the xfstest cifs/001. Depending
on the errno set at that time, this may or may not result in the test
failing.

The patch fixes this by setting the return value to 0 in case of
successful writes.

Fixes: commit 620d8745b35d ("Introduce cifs_copy_file_range()")
Reported-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
Cc: stable@vger.kernel.org
Signed-off-by: Steve French <smfrench@gmail.com>
fs/cifs/ioctl.c

index 265c45fe4ea5e5246f5304480c2b4b66bf9d6c73..7f4bba574930b5886eb69218eb11b0aea1076d31 100644 (file)
@@ -74,7 +74,8 @@ static long cifs_ioctl_copychunk(unsigned int xid, struct file *dst_file,
 
        rc = cifs_file_copychunk_range(xid, src_file.file, 0, dst_file, 0,
                                        src_inode->i_size, 0);
-
+       if (rc > 0)
+               rc = 0;
 out_fput:
        fdput(src_file);
 out_drop_write: