cifs: Fix xid leak in cifs_copy_file_range()

[ Upstream commit 9a97df404a ]

If the file is used by swap, before return -EOPNOTSUPP, should
free the xid, otherwise, the xid will be leaked.

Fixes: 4e8aea30f7 ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Zhang Xiaoxu 2022-10-17 22:45:22 +08:00 коммит произвёл Greg Kroah-Hartman
Родитель 593d877c39
Коммит 27cfd3afaa
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -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);