From: NeilBrown Signed-off-by: Andy Adamson Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/fs/nfsd/nfs4state.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+) diff -puN fs/nfsd/nfs4state.c~knfsd-check-for-openmode-violations-given-a-delegation-stateid fs/nfsd/nfs4state.c --- 25/fs/nfsd/nfs4state.c~knfsd-check-for-openmode-violations-given-a-delegation-stateid Fri Dec 17 15:08:44 2004 +++ 25-akpm/fs/nfsd/nfs4state.c Fri Dec 17 15:08:44 2004 @@ -1956,6 +1956,20 @@ out: return status; } +static 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; +} + /* * Checks for stateid operations */ _