OST object FID from other nodes can only be normal FID, IDIF, ECHO or
OST_MDT0, and MDT object FID can only be namespace visible FID or
local ROOT, return error if it's not true to avoid assertion later.
Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: I0c518c67acad44e90159fff71ff4fa9b893e8f3d
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55401
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
struct mdt_object *m;
ENTRY;
+ /* mdt_orphan_open() gets local ROOT */
+ if (!fid_is_namespace_visible(f) && !fid_is_local_file(f)) {
+ CERROR("%s: MDT object FID "DFID" is corrupt: rc = %d\n",
+ mdt_obd_name(d), PFID(f), -EINVAL);
+ RETURN(ERR_PTR(-EINVAL));
+ }
CDEBUG(D_INFO, "Find object for "DFID"\n", PFID(f));
o = lu_object_find(env, &d->mdt_lu_dev, f, NULL);
struct lu_object *o;
ENTRY;
-
+ if (!(fid_is_mdt0(fid) || fid_is_norm(fid) || fid_is_idif(fid) ||
+ fid_is_echo(fid)) ||
+ fid_oid(fid) == 0) {
+ CERROR("%s: OST object FID "DFID" is corrupt, rc = %d\n",
+ ofd_name(ofd), PFID(fid), -EINVAL);
+ RETURN(ERR_PTR(-EINVAL));
+ }
o = lu_object_find(env, &ofd->ofd_dt_dev.dd_lu_dev, fid, NULL);
if (likely(!IS_ERR(o)))
fo = ofd_obj(o);