From: Zhang Xiaoxu Date: Mon, 17 Oct 2022 14:45:22 +0000 (+0800) Subject: cifs: Fix xid leak in cifs_copy_file_range() X-Git-Tag: v5.15.79~443 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=27cfd3afaab000a455194338db3b7f2031fde9d0;p=platform%2Fkernel%2Flinux-rpi.git cifs: Fix xid leak in cifs_copy_file_range() [ Upstream commit 9a97df404a402fe1174d2d1119f87ff2a0ca2fe9 ] 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) Signed-off-by: Zhang Xiaoxu Signed-off-by: Steve French Signed-off-by: Sasha Levin --- diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 8ec55bb..668dd6a 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -1263,8 +1263,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);