From: NeilBrown Inline nfs4_check_delegmode, replace & by &&, remove incorrect check. (Note that it's fine to read using the stateid for a write delegation.) While we're at it, the status return logic seems like overkill for one simple check. Signed-off-by: J. Bruce Fields Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/fs/nfsd/nfs4state.c | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-) diff -puN fs/nfsd/nfs4state.c~nfsd4-fix-nfs4_check_delegmode fs/nfsd/nfs4state.c --- 25/fs/nfsd/nfs4state.c~nfsd4-fix-nfs4_check_delegmode 2005-03-07 23:55:33.000000000 -0800 +++ 25-akpm/fs/nfsd/nfs4state.c 2005-03-07 23:55:33.000000000 -0800 @@ -1969,18 +1969,13 @@ out: return status; } -static int +static inline int nfs4_check_delegmode(struct nfs4_delegation *dp, int flags) { - int status = nfserr_openmode; - - if ((flags & WR_STATE) & (dp->dl_type == NFS4_OPEN_DELEGATE_READ)) - goto out; - if ((flags & RD_STATE) & (dp->dl_type == NFS4_OPEN_DELEGATE_WRITE)) - goto out; - status = nfs_ok; -out: - return status; + if ((flags & WR_STATE) && (dp->dl_type == NFS4_OPEN_DELEGATE_READ)) + return nfserr_openmode; + else + return nfs_ok; } static inline int _