From: NeilBrown <neilb@cse.unsw.edu.au>

Signed-off-by: Andy Adamson <andros@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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
 */
_