mirror of
https://github.com/torvalds/linux.git
synced 2026-06-06 21:45:45 +02:00
cifs: Fix xid leak in cifs_flock()
[ Upstream commit575e079c78] If not flock, before return -ENOLCK, should free the xid, otherwise, the xid will be leaked. Fixes:d0677992d2("cifs: add support for flock") 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:
parent
bf49d4fe4a
commit
2d08311aa3
|
|
@ -1735,11 +1735,13 @@ int cifs_flock(struct file *file, int cmd, struct file_lock *fl)
|
||||||
struct cifsFileInfo *cfile;
|
struct cifsFileInfo *cfile;
|
||||||
__u32 type;
|
__u32 type;
|
||||||
|
|
||||||
rc = -EACCES;
|
|
||||||
xid = get_xid();
|
xid = get_xid();
|
||||||
|
|
||||||
if (!(fl->fl_flags & FL_FLOCK))
|
if (!(fl->fl_flags & FL_FLOCK)) {
|
||||||
return -ENOLCK;
|
rc = -ENOLCK;
|
||||||
|
free_xid(xid);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
cfile = (struct cifsFileInfo *)file->private_data;
|
cfile = (struct cifsFileInfo *)file->private_data;
|
||||||
tcon = tlink_tcon(cfile->tlink);
|
tcon = tlink_tcon(cfile->tlink);
|
||||||
|
|
@ -1758,8 +1760,9 @@ int cifs_flock(struct file *file, int cmd, struct file_lock *fl)
|
||||||
* if no lock or unlock then nothing to do since we do not
|
* if no lock or unlock then nothing to do since we do not
|
||||||
* know what it is
|
* know what it is
|
||||||
*/
|
*/
|
||||||
|
rc = -EOPNOTSUPP;
|
||||||
free_xid(xid);
|
free_xid(xid);
|
||||||
return -EOPNOTSUPP;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = cifs_setlk(file, fl, type, wait_flag, posix_lck, lock, unlock,
|
rc = cifs_setlk(file, fl, type, wait_flag, posix_lck, lock, unlock,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user