summaryrefslogtreecommitdiff
path: root/drivers/staging/lustre/lustre/lov/lov_object.c
diff options
context:
space:
mode:
authorYang Sheng <yang.sheng@intel.com>2015-03-25 21:53:22 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-03-26 11:10:25 +0100
commit397632e467d195a268ac3c5adfd7de32e92bd864 (patch)
tree8279ba6f7f489399ae4caf99c0cd6fad3d7fd3b2 /drivers/staging/lustre/lustre/lov/lov_object.c
parent4345abb2c3b56eae9bcf4728dcdc0f584690c8aa (diff)
staging/lustre/lov: don't crash accessing LOV object with FID{0, 0}
Some object maybe has a corrupted LOV EA or a hole in LOV EA. We should not crash client in such case. Signed-off-by: Fan Yong <fan.yong@intel.com> Signed-off-by: Yang Sheng <yang.sheng@intel.com> Reviewed-on: http://review.whamcloud.com/12740 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4958 Reviewed-by: Jian Yu <jian.yu@intel.com> Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Signed-off-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre/lustre/lov/lov_object.c')
-rw-r--r--drivers/staging/lustre/lustre/lov/lov_object.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/staging/lustre/lustre/lov/lov_object.c b/drivers/staging/lustre/lustre/lov/lov_object.c
index d69a0354baf5..1fb1dfae6f72 100644
--- a/drivers/staging/lustre/lustre/lov/lov_object.c
+++ b/drivers/staging/lustre/lustre/lov/lov_object.c
@@ -230,6 +230,9 @@ static int lov_init_raid0(const struct lu_env *env,
struct lov_oinfo *oinfo = lsm->lsm_oinfo[i];
int ost_idx = oinfo->loi_ost_idx;
+ if (lov_oinfo_is_dummy(oinfo))
+ continue;
+
result = ostid_to_fid(ofid, &oinfo->loi_oi,
oinfo->loi_ost_idx);
if (result != 0)
@@ -973,6 +976,10 @@ int lov_read_and_clear_async_rc(struct cl_object *clob)
LASSERT(lsm != NULL);
for (i = 0; i < lsm->lsm_stripe_count; i++) {
struct lov_oinfo *loi = lsm->lsm_oinfo[i];
+
+ if (lov_oinfo_is_dummy(loi))
+ continue;
+
if (loi->loi_ar.ar_rc && !rc)
rc = loi->loi_ar.ar_rc;
loi->loi_ar.ar_rc = 0;