Whamcloud - gitweb
LU-4718 osp: clear oxe_ready on old oxe 72/9672/2
authorJohn L. Hammond <john.hammond@intel.com>
Fri, 14 Mar 2014 18:37:41 +0000 (13:37 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 24 Apr 2014 04:06:23 +0000 (04:06 +0000)
In osp_xattr_get() and osp_declare_xattr_set() avoid NULL pointer
deferences in the error handling cases by clearing oxe_ready on the
old xattr cache entries.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: I54f69e2d3e6570528e5a26bc9dd6e079a773a1a8
Reviewed-on: http://review.whamcloud.com/9672
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osp/osp_object.c

index 4658f48..f30c9d3 100644 (file)
@@ -753,7 +753,7 @@ unlock:
                              "cache for "DFID": rc = %d\n",
                              dname, name, PFID(lu_object_fid(&dt->do_lu)), rc);
                        spin_lock(&obj->opo_lock);
                              "cache for "DFID": rc = %d\n",
                              dname, name, PFID(lu_object_fid(&dt->do_lu)), rc);
                        spin_lock(&obj->opo_lock);
-                       oxe->oxe_ready = 0;
+                       old->oxe_ready = 0;
                        spin_unlock(&obj->opo_lock);
 
                        GOTO(out, rc);
                        spin_unlock(&obj->opo_lock);
 
                        GOTO(out, rc);
@@ -840,7 +840,7 @@ int osp_declare_xattr_set(const struct lu_env *env, struct dt_object *dt,
                              ": rc = %d\n", dt->do_lu.lo_dev->ld_obd->obd_name,
                              name, PFID(lu_object_fid(&dt->do_lu)), rc);
                        spin_lock(&o->opo_lock);
                              ": rc = %d\n", dt->do_lu.lo_dev->ld_obd->obd_name,
                              name, PFID(lu_object_fid(&dt->do_lu)), rc);
                        spin_lock(&o->opo_lock);
-                       oxe->oxe_ready = 0;
+                       old->oxe_ready = 0;
                        spin_unlock(&o->opo_lock);
 
                        return 0;
                        spin_unlock(&o->opo_lock);
 
                        return 0;