• J
    nfsd4: fix bad seqid on lock request incompatible with open mode · 39325bd0
    J. Bruce Fields 提交于
    The failure to return a stateowner from nfs4_preprocess_seqid_op() means
    in the case where a lock request is of a type incompatible with an open
    (due to, e.g., an application attempting a write lock on a file open for
    read), means that fs/nfsd/nfs4xdr.c:ENCODE_SEQID_OP_TAIL() never bumps
    the seqid as it should.  The client, attempting to close the file
    afterwards, then gets an (incorrect) bad sequence id error.  Worse, this
    prevents the open file from ever being closed, so we leak state.
    
    Thanks to Benny Halevy and Trond Myklebust for analysis, and to Steven
    Wilton for the report and extensive data-gathering.
    
    Cc: Benny Halevy <bhalevy@panasas.com>
    Cc: Steven Wilton <steven.wilton@team.eftel.com.au>
    Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
    Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
    39325bd0
nfs4state.c 85.0 KB