• Jeff Layton's avatar
    cifs: fix potential double put of TCP session reference · 460cf341
    Jeff Layton authored
    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: default avatarSuresh Jayaraman <sjayaraman@suse.de>
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    460cf341
connect.c 85 KB