]> git.baikalelectronics.ru Git - kernel.git/commit
cifs: fix potential double put of TCP session reference
authorJeff Layton <jlayton@redhat.com>
Tue, 14 Sep 2010 15:38:24 +0000 (11:38 -0400)
committerSteve French <sfrench@us.ibm.com>
Tue, 14 Sep 2010 23:21:03 +0000 (23:21 +0000)
commitf788726fc639e139640f49f15d3e2106a42f92ef
tree3ff261b74c1751b9b0edd904f8d2d7f09f7440f6
parent27e8348673314dbc0a59963928e772fd9f804234
cifs: fix potential double put of TCP session reference

cifs_get_smb_ses must be called on a server pointer on which it holds an
active reference. It first does a search for an existing SMB session. If
it finds one, it'll put the server reference and then try to ensure that
the negprot is done, etc.

If it encounters an error at that point then it'll return an error.
There's a potential problem here though. When cifs_get_smb_ses returns
an error, the caller will also put the TCP server reference leading to a
double-put.

Fix this by having cifs_get_smb_ses only put the server reference if
it found an existing session that it could use and isn't returning an
error.

Cc: stable@kernel.org
Reviewed-by: Suresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/connect.c