[lustre-devel] [PATCH 30/42] lustre: lov: guard against class_exp2obd() returning NULL.
James Simmons
jsimmons at infradead.org
Mon Oct 5 17:06:09 PDT 2020
From: Mr NeilBrown <neilb at suse.de>
class_exp2obd() can return NULL. Sometimes this is tested for,
sometimes not.
Add appropriate tested so that a NULL return is never dereferenced.
WC-bug-id: https://jira.whamcloud.com/browse/LU-6142
Lustre-commit: 0aa3d883acfb05 ("LU-6142 lov: guard against class_exp2obd() returning NULL.")
Signed-off-by: Mr NeilBrown <neilb at suse.de>
Reviewed-on: https://review.whamcloud.com/39379
Reviewed-by: James Simmons <jsimmons at infradead.org>
Reviewed-by: Shaun Tancheff <shaun.tancheff at hpe.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
fs/lustre/lov/lov_obd.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/fs/lustre/lov/lov_obd.c b/fs/lustre/lov/lov_obd.c
index 7fe7372..d88d325 100644
--- a/fs/lustre/lov/lov_obd.c
+++ b/fs/lustre/lov/lov_obd.c
@@ -269,8 +269,8 @@ static int lov_disconnect_obd(struct obd_device *obd, struct lov_tgt_desc *tgt)
int rc;
osc_obd = class_exp2obd(tgt->ltd_exp);
- CDEBUG(D_CONFIG, "%s: disconnecting target %s\n",
- obd->obd_name, osc_obd ? osc_obd->obd_name : "NULL");
+ CDEBUG(D_CONFIG, "%s: disconnecting target %s\n", obd->obd_name,
+ osc_obd ? osc_obd->obd_name : "<no obd>");
if (tgt->ltd_active) {
tgt->ltd_active = 0;
@@ -1122,7 +1122,8 @@ static int lov_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
/* ll_umount_begin() sets force on lov, pass to osc */
osc_obd = class_exp2obd(lov->lov_tgts[i]->ltd_exp);
- osc_obd->obd_force = obd->obd_force;
+ if (osc_obd)
+ osc_obd->obd_force = obd->obd_force;
err = obd_iocontrol(cmd, lov->lov_tgts[i]->ltd_exp,
len, karg, uarg);
if (err) {
--
1.8.3.1
More information about the lustre-devel
mailing list