From: John L. Hammond Date: Wed, 6 Apr 2022 16:51:47 +0000 (-0500) Subject: LU-15308 lod: set ldo_mirrors to NULL on error X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=4acea881a59e616751b65b78b92508e1a8b3abf3;p=fs%2Flustre-release.git LU-15308 lod: set ldo_mirrors to NULL on error 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 Change-Id: I27552d1eaecc06720190db9cfe89ded71b9fef53 Reviewed-by: Andreas Dilger Reviewed-by: Alex Zhuravlev Reviewed-on: https://review.whamcloud.com/47850 Tested-by: jenkins Tested-by: Maloo --- diff --git a/lustre/lod/lod_lov.c b/lustre/lod/lod_lov.c index 4f295bd..6d4b08d 100644 --- a/lustre/lod/lod_lov.c +++ b/lustre/lod/lod_lov.c @@ -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; } diff --git a/lustre/lod/lod_qos.c b/lustre/lod/lod_qos.c index 6391761..4165de5 100644 --- a/lustre/lod/lod_qos.c +++ b/lustre/lod/lod_qos.c @@ -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));