Whamcloud - gitweb
LU-9856 mdd: handle NULL buffer in mdd_xattr_list() 69/28469/2
authorJohn L. Hammond <john.hammond@intel.com>
Thu, 10 Aug 2017 19:44:24 +0000 (14:44 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 28 Aug 2017 06:26:49 +0000 (06:26 +0000)
The upper layer may call mdd_xattr_list() with a NULL buffer to get
the length of the xattr name list. Handle this case safely by skipping
the removal of the link xattr for unlinked objects.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: Iae87fba20325b228ef75ee762acfa49353932b1b
Reviewed-on: https://review.whamcloud.com/28469
Tested-by: Jenkins
Reviewed-by: Andrew Perepechko <andrew.perepechko@seagate.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/mdd/mdd_object.c

index 7ab1a1a..beb9960 100644 (file)
@@ -301,7 +301,9 @@ static int mdd_xattr_list(const struct lu_env *env, struct md_object *obj,
        rc = mdo_xattr_list(env, mdd_obj, buf);
         mdd_read_unlock(env, mdd_obj);
 
-       if (rc < 0)
+       /* If the buffer is NULL then we are only here to get the
+        * length of the xattr name list. */
+       if (rc < 0 || buf->lb_buf == NULL)
                RETURN(rc);
 
        /*