nfsd41: add flag checking for create_session
Mi Jinlong [Wed, 23 Mar 2011 09:57:07 +0000 (17:57 +0800)]
Teach the NFS server to reject invalid create_session flags.

Also do some minor formatting adjustments.

Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>

fs/nfsd/nfs4state.c
include/linux/nfs4.h

index fbde6f7..6dbaa37 100644 (file)
@@ -1515,6 +1515,9 @@ nfsd4_create_session(struct svc_rqst *rqstp,
        bool confirm_me = false;
        int status = 0;
 
+       if (cr_ses->flags & ~SESSION4_FLAG_MASK_A)
+               return nfserr_inval;
+
        nfs4_lock_state();
        unconf = find_unconfirmed_client(&cr_ses->clientid);
        conf = find_confirmed_client(&cr_ses->clientid);
index b528f6d..8937727 100644 (file)
@@ -570,9 +570,11 @@ struct nfs4_sessionid {
 };
 
 /* Create Session Flags */
-#define SESSION4_PERSIST        0x001
-#define SESSION4_BACK_CHAN      0x002
-#define SESSION4_RDMA           0x004
+#define SESSION4_PERSIST       0x001
+#define SESSION4_BACK_CHAN     0x002
+#define SESSION4_RDMA          0x004
+
+#define SESSION4_FLAG_MASK_A   0x007
 
 enum state_protect_how4 {
        SP4_NONE        = 0,