Check object existence in mdd_is_parent()
and _mdd_lookup(), so the following retrieving
attributes will not panic if object does not
exist.
Signed-off-by: Di Wang <di.wang@intel.com>
Change-Id: Icae243949e202f9d6a4d38b9823373101a093c74
Reviewed-on: http://review.whamcloud.com/17323
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Andreas Dilger <andreas.dilger@intel.com>
if (unlikely(mdd_is_dead_obj(mdd_obj)))
RETURN(-ESTALE);
if (unlikely(mdd_is_dead_obj(mdd_obj)))
RETURN(-ESTALE);
+ if (!mdd_object_exists(mdd_obj))
+ RETURN(-ESTALE);
+
if (mdd_object_remote(mdd_obj)) {
CDEBUG(D_INFO, "%s: Object "DFID" locates on remote server\n",
mdd2obd_dev(m)->obd_name, PFID(mdo2fid(mdd_obj)));
if (mdd_object_remote(mdd_obj)) {
CDEBUG(D_INFO, "%s: Object "DFID" locates on remote server\n",
mdd2obd_dev(m)->obd_name, PFID(mdo2fid(mdd_obj)));
- } else if (!mdd_object_exists(mdd_obj)) {
- RETURN(-ESTALE);
}
rc = mdd_permission_internal_locked(env, mdd_obj, pattr, mask,
}
rc = mdd_permission_internal_locked(env, mdd_obj, pattr, mask,
parent = mdd_object_find(env, mdd, pfid);
if (IS_ERR(parent))
GOTO(out, rc = PTR_ERR(parent));
parent = mdd_object_find(env, mdd, pfid);
if (IS_ERR(parent))
GOTO(out, rc = PTR_ERR(parent));
+
+ if (!mdd_object_exists(parent))
+ GOTO(out, rc = -EINVAL);
+