• J
    cifs: eliminate some more premature cifsd exits · 7332f2a6
    Jeff Layton 提交于
    If the tcpStatus is still CifsNew, the main cifs_demultiplex_loop can
    break out prematurely in some cases. This is wrong as we will almost
    always have other structures with pointers to the TCP_Server_Info. If
    the main loop breaks under any other condition other than tcpStatus ==
    CifsExiting, then it'll face a use-after-free situation.
    
    I don't see any reason to treat a CifsNew tcpStatus differently than
    CifsGood. I believe we'll still want to attempt to reconnect in either
    case. What should happen in those situations is that the MIDs get marked
    as MID_RETRY_NEEDED. This will make CIFSSMBNegotiate return -EAGAIN, and
    then the caller can retry the whole thing on a newly reconnected socket.
    If that fails again in the same way, the caller of cifs_get_smb_ses
    should tear down the TCP_Server_Info struct.
    Signed-off-by: NJeff Layton <jlayton@redhat.com>
    Signed-off-by: NSteve French <sfrench@us.ibm.com>
    7332f2a6
connect.c 85.0 KB