From fd2e25765d5083340f5628bc1a0d224884ff7128 Mon Sep 17 00:00:00 2001 From: Bobi Jam Date: Wed, 25 Oct 2023 14:52:20 +0800 Subject: [PATCH] LU-16837 lov: NULL dereference in lov_delete_composite commit 14ed4a6f8f retroduced the issue fixed by commit 5da049d9ef ("LU-14389 lov: avoid NULL dereference in cleanup), this patch makes the fix cover the new case added by 14ed4a6f8f. Lustre-change: https://review.whamcloud.com/52826 Lustre-commit: TBD (from 10b4a14b389cb00e1033e2f49e3d1f5a554b259a) Fixes: 14ed4a6f8f ("LU-16837 llite: handle unknown layout component") Signed-off-by: Bobi Jam Change-Id: I4a2b72e21139b60519ed523b4851723c91f523c1 Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/52827 Tested-by: jenkins Tested-by: Andreas Dilger Reviewed-by: Andreas Dilger --- lustre/lov/lov_object.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lustre/lov/lov_object.c b/lustre/lov/lov_object.c index eff1a08..fc6affa 100644 --- a/lustre/lov/lov_object.c +++ b/lustre/lov/lov_object.c @@ -899,12 +899,16 @@ static int lov_delete_composite(const struct lu_env *env, lov_layout_wait(env, lov); lov_foreach_layout_entry(lov, entry) { - if (entry->lle_lsme && lsme_is_foreign(entry->lle_lsme)) - continue; - if (!lov_pattern_supported( - lov_pattern(entry->lle_lsme->lsme_pattern)) || - !lov_supported_comp_magic(entry->lle_lsme->lsme_magic)) - continue; + struct lov_stripe_md_entry *lsme = entry->lle_lsme; + + if (lsme) { + if (lsme_is_foreign(lsme)) + continue; + if (!lov_pattern_supported(lov_pattern( + lsme->lsme_pattern)) || + !lov_supported_comp_magic(lsme->lsme_magic)) + continue; + } rc = lov_delete_raid0(env, lov, entry); if (rc) -- 1.8.3.1