• Trond Myklebust's avatar
    NFSv4.1: Return NFS4ERR_BADSESSION to callbacks during session resets · 910ac68a
    Trond Myklebust authored
    If the client is in the process of resetting the session when it receives
    a callback, then returning NFS4ERR_DELAY may cause a deadlock with the
    DESTROY_SESSION call.
    
    Basically, if the client returns NFS4ERR_DELAY in response to the
    CB_SEQUENCE call, then the server is entitled to believe that the
    client is busy because it is already processing that call. In that
    case, the server is perfectly entitled to respond with a
    NFS4ERR_BACK_CHAN_BUSY to any DESTROY_SESSION call.
    
    Fix this by having the client reply with a NFS4ERR_BADSESSION in
    response to the callback if it is resetting the session.
    
    Cc: stable@kernel.org [2.6.38+]
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    910ac68a
callback_proc.c 15.2 KB