diff options
author | Zhang Xiaoxu <zhangxiaoxu5@huawei.com> | 2022-10-17 17:45:22 +0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-10-18 19:33:43 +0300 |
commit | 9a97df404a402fe1174d2d1119f87ff2a0ca2fe9 (patch) | |
tree | 4a59ea5842d3d10e37f498378d6641508c49dd93 /fs/cifs | |
parent | fee0fb1f15054bb6a0ede452acb42da5bef4d587 (diff) | |
download | linux-9a97df404a402fe1174d2d1119f87ff2a0ca2fe9.tar.xz |
cifs: Fix xid leak in cifs_copy_file_range()
If the file is used by swap, before return -EOPNOTSUPP, should
free the xid, otherwise, the xid will be leaked.
Fixes: 4e8aea30f775 ("smb3: enable swap on SMB3 mounts")
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r-- | fs/cifs/cifsfs.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index c6ac19223ddc..d0b9fec111aa 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -1302,8 +1302,11 @@ static ssize_t cifs_copy_file_range(struct file *src_file, loff_t off, ssize_t rc; struct cifsFileInfo *cfile = dst_file->private_data; - if (cfile->swapfile) - return -EOPNOTSUPP; + if (cfile->swapfile) { + rc = -EOPNOTSUPP; + free_xid(xid); + return rc; + } rc = cifs_file_copychunk_range(xid, src_file, off, dst_file, destoff, len, flags); |