Whamcloud - gitweb
LU-15308 lod: set ldo_mirrors to NULL on error
authorJohn L. Hammond <jhammond@whamcloud.com>
Wed, 6 Apr 2022 16:51:47 +0000 (11:51 -0500)
committerAndreas Dilger <adilger@whamcloud.com>
Sat, 2 Jul 2022 01:54:34 +0000 (01:54 +0000)
In lod_alloc_comp_entries() if OBD_ALLOC_LARGE fails and we free
ldo_mirrors then we set it to NULL to avoid a double free later.

Lustre-change: https://review.whamcloud.com/47008
Lustre-commit: 26f6b0e952b24de2a900f6f1eeae79fea6af4787

Test-Parameters: trivial
Signed-off-by: John L. Hammond <jhammond@whamcloud.com>
Change-Id: I27552d1eaecc06720190db9cfe89ded71b9fef53
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/47850
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/lod/lod_lov.c
lustre/lod/lod_qos.c

index 4f295bd..6d4b08d 100644 (file)
@@ -583,6 +583,7 @@ int lod_alloc_comp_entries(struct lod_object *lo,
                        sizeof(*lo->ldo_comp_entries) * comp_count);
        if (lo->ldo_comp_entries == NULL) {
                OBD_FREE_PTR_ARRAY(lo->ldo_mirrors, mirror_count);
+               lo->ldo_mirrors = NULL;
                lo->ldo_mirror_count = 0;
                return -ENOMEM;
        }
index 6391761..4165de5 100644 (file)
@@ -2608,7 +2608,9 @@ int lod_qos_prep_create(const struct lu_env *env, struct lod_object *lo,
        ENTRY;
 
        LASSERT(lo);
-       LASSERT(lo->ldo_comp_cnt > comp_idx && lo->ldo_comp_entries != NULL);
+       LASSERTF(lo->ldo_comp_cnt > comp_idx, "ldo_comp_cnt %u, comp_idx %u\n",
+                lo->ldo_comp_cnt, comp_idx);
+       LASSERT(lo->ldo_comp_entries != NULL);
        lod_comp = &lo->ldo_comp_entries[comp_idx];
        LASSERT(!(lod_comp->llc_flags & LCME_FL_EXTENSION));