Whamcloud - gitweb
LU-16837 lov: NULL dereference in lov_delete_composite 26/52826/3
authorBobi Jam <bobijam@whamcloud.com>
Wed, 25 Oct 2023 06:58:35 +0000 (14:58 +0800)
committerOleg Drokin <green@whamcloud.com>
Fri, 3 Nov 2023 04:03:46 +0000 (04:03 +0000)
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.

Fixes: 14ed4a6f8f ("LU-16837 llite: handle unknown layout component")
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I4a2b72e21139b60519ed523b4851723c91f523c1
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52826
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Vitaliy Kuznetsov <vkuznetsov@ddn.com>
lustre/lov/lov_object.c

index 88c15bc..dfa879f 100644 (file)
@@ -890,12 +890,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)