• Dai Ngo's avatar
    nfsd: nfsd4_setclientid_confirm mistakenly expires confirmed client. · ab451ea9
    Dai Ngo authored
    From RFC 7530 Section 16.34.5:
    
    o  The server has not recorded an unconfirmed { v, x, c, *, * } and
       has recorded a confirmed { v, x, c, *, s }.  If the principals of
       the record and of SETCLIENTID_CONFIRM do not match, the server
       returns NFS4ERR_CLID_INUSE without removing any relevant leased
       client state, and without changing recorded callback and
       callback_ident values for client { x }.
    
    The current code intends to do what the spec describes above but
    it forgot to set 'old' to NULL resulting to the confirmed client
    to be expired.
    
    Fixes: 2b634821 ("nfsd: fix clid_inuse on mount with security change")
    Signed-off-by: default avatarDai Ngo <dai.ngo@oracle.com>
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: default avatarBruce Fields <bfields@fieldses.org>
    ab451ea9
nfs4state.c 199 KB