linux/fs/nfsd
J. Bruce Fields 39325bd03f nfsd4: fix bad seqid on lock request incompatible with open mode
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: J. Bruce Fields <bfields@citi.umich.edu>
2008-02-01 16:42:06 -05:00
..
Makefile knfsd: trivial makefile cleanup 2007-05-09 12:30:54 -07:00
auth.c knfsd: clean up EX_RDONLY 2007-07-19 10:04:52 -07:00
auth.h nfsd: minor fs/nfsd/auth.h cleanup 2008-02-01 16:42:05 -05:00
export.c knfsd: allow cache_register to return error on failure 2008-02-01 16:42:05 -05:00
lockd.c knfsd: lockd: nfsd4: use same grace period for lockd and nfsd4 2007-07-17 10:23:07 -07:00
nfs2acl.c nfsd: Fix inconsistent assignment 2008-02-01 16:42:01 -05:00
nfs3acl.c knfsd: fix spurious EINVAL errors on first access of new filesystem 2007-11-12 14:28:08 -08:00
nfs3proc.c RPC: add wrapper for svc_reserve to account for checksum 2007-05-09 12:30:54 -07:00
nfs3xdr.c nfsd: fix encode_entryplus_baggage() indentation 2008-02-01 16:42:06 -05:00
nfs4acl.c knfsd: nfsd4: fix handling of acl errrors 2007-07-17 10:23:07 -07:00
nfs4callback.c nfsd4: recognize callback channel failure earlier 2008-02-01 16:42:06 -05:00
nfs4idmap.c knfsd: allow cache_register to return error on failure 2008-02-01 16:42:05 -05:00
nfs4proc.c knfsd: demote some printk()s to dprintk()s 2007-10-09 18:31:56 -04:00
nfs4recover.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
nfs4state.c nfsd4: fix bad seqid on lock request incompatible with open mode 2008-02-01 16:42:06 -05:00
nfs4xdr.c nfsd: Fix handling of negative lengths in read_buf() 2008-02-01 16:42:03 -05:00
nfscache.c nfsd: fail module init on reply cache init failure 2008-02-01 16:42:04 -05:00
nfsctl.c knfsd: allow cache_register to return error on failure 2008-02-01 16:42:05 -05:00
nfsfh.c nfsd: move nfsd/auth.h into fs/nfsd 2008-02-01 16:42:05 -05:00
nfsproc.c knfsd: nfsd4: make readonly access depend on pseudoflavor 2007-07-17 10:23:08 -07:00
nfssvc.c knfsd: move nfsv4 slab creation/destruction to module init/exit 2007-10-09 18:31:56 -04:00
nfsxdr.c nfsd: move nfsd/auth.h into fs/nfsd 2008-02-01 16:42:05 -05:00
stats.c [PATCH] knfsd: nfsd4: add per-operation server stats 2006-07-10 13:24:27 -07:00
vfs.c NFSD: Adjust filename length argument of nfsd_lookup 2008-02-01 16:42:03 -05:00