From 0facd12afa33c61e4123f6e793d232d8c814fbec Mon Sep 17 00:00:00 2001 From: Vladimir Saveliev Date: Fri, 1 Feb 2019 03:16:29 +0300 Subject: [PATCH] LU-11911 lov: fix lov_iocontrol for inactive OST case For inactive OSTs lov->lov_tgts[index]->ltd_exp is NULL. lov_iocontrol() is to check that before dereferencing to lov->lov_tgts[index]->ltd_exp->exp_obd. Signed-off-by: Vladimir Saveliev Cray-bug-id: LUS-6937 Test-Parameters: trivial Change-Id: I4bb332ee2c50b07a1471035556f4d77a3559847f Reviewed-on: https://review.whamcloud.com/34148 Tested-by: Jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Alexandr Boyko --- lustre/lov/lov_obd.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index 2965c1d..fbe7eb6 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -994,15 +994,16 @@ static int lov_iocontrol(unsigned int cmd, struct obd_export *exp, int len, if (!lov->lov_tgts[index]) /* Try again with the next index */ RETURN(-EAGAIN); - imp = lov->lov_tgts[index]->ltd_exp->exp_obd->u.cli.cl_import; - if (!lov->lov_tgts[index]->ltd_active && - imp->imp_state != LUSTRE_IMP_IDLE) - RETURN(-ENODATA); osc_obd = class_exp2obd(lov->lov_tgts[index]->ltd_exp); if (!osc_obd) RETURN(-EINVAL); + imp = osc_obd->u.cli.cl_import; + if (!lov->lov_tgts[index]->ltd_active && + imp->imp_state != LUSTRE_IMP_IDLE) + RETURN(-ENODATA); + /* copy UUID */ if (copy_to_user(data->ioc_pbuf2, obd2cli_tgt(osc_obd), min_t(unsigned long, data->ioc_plen2, -- 1.8.3.1