Whamcloud - gitweb
LU-10985 mdt: properly handle unknown intent requests 37/32237/3
authorOleg Drokin <oleg.drokin@intel.com>
Wed, 2 May 2018 04:48:46 +0000 (00:48 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Sun, 6 May 2018 03:43:24 +0000 (03:43 +0000)
Invalid intent requests should be rejected early on,
so the later code does not make any assumptions about
validity of various structures like extended pills
and such.

Change-Id: I74de899ae6cea7017ae8ca9a8c488ca801a38c5d
Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
Reviewed-on: https://review.whamcloud.com/32237
Tested-by: Jenkins
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
lustre/mdt/mdt_handler.c

index e349367..2ee7154 100644 (file)
@@ -3457,38 +3457,16 @@ static struct mdt_it_flavor {
                 .it_act   = mdt_intent_reint,
                 .it_reint = REINT_OPEN
         },
-        [MDT_IT_CREATE]   = {
-                .it_fmt   = &RQF_LDLM_INTENT,
-                .it_flags = MUTABOR,
-                .it_act   = mdt_intent_reint,
-                .it_reint = REINT_CREATE
-        },
         [MDT_IT_GETATTR]  = {
                 .it_fmt   = &RQF_LDLM_INTENT_GETATTR,
                 .it_flags = HABEO_REFERO,
                 .it_act   = mdt_intent_getattr
         },
-        [MDT_IT_READDIR]  = {
-                .it_fmt   = NULL,
-                .it_flags = 0,
-                .it_act   = NULL
-        },
         [MDT_IT_LOOKUP]   = {
                 .it_fmt   = &RQF_LDLM_INTENT_GETATTR,
                 .it_flags = HABEO_REFERO,
                 .it_act   = mdt_intent_getattr
         },
-        [MDT_IT_UNLINK]   = {
-                .it_fmt   = &RQF_LDLM_INTENT_UNLINK,
-                .it_flags = MUTABOR,
-                .it_act   = NULL,
-                .it_reint = REINT_UNLINK
-        },
-        [MDT_IT_TRUNC]    = {
-                .it_fmt   = NULL,
-                .it_flags = MUTABOR,
-                .it_act   = NULL
-        },
         [MDT_IT_GETXATTR] = {
                .it_fmt   = &RQF_LDLM_INTENT_GETXATTR,
                .it_flags = HABEO_CORPUS,
@@ -4085,8 +4063,12 @@ static int mdt_intent_opc(enum ldlm_intent_flags itopc,
        }
 
        flv = &mdt_it_flavor[opc];
-       if (flv->it_fmt != NULL)
-               req_capsule_extend(pill, flv->it_fmt);
+
+       /* Fail early on unknown requests. */
+       if (flv->it_fmt == NULL)
+               RETURN(-EPROTO);
+
+       req_capsule_extend(pill, flv->it_fmt);
 
        rc = mdt_unpack_req_pack_rep(info, flv->it_flags);
        if (rc < 0)