Message ID | 20240318162842.9651-1-mariusz.tkaczyk@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | mdadm: fix grow segfault for IMSM | expand |
On Mon, 18 Mar 2024 17:28:42 +0100 Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> wrote: > If sc is not initialized, there is possibility that sc.pols is not zeroed > and it causes segfault. > > Add missing initialization. > Add missing dev_policy_free() in two places. > > Fixes: f656201188d7 ("mdadm: drop get_required_spare_criteria()") > Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> > --- Applied! Thanks, Mariusz
diff --git a/Incremental.c b/Incremental.c index 958ba9ba7851..83db071214ee 100644 --- a/Incremental.c +++ b/Incremental.c @@ -874,6 +874,7 @@ mdadm_status_t incremental_external_test_spare_criteria(struct supertype *st, ch rv = MDADM_STATUS_SUCCESS; out: + dev_policy_free(sc.pols); dup->ss->free_super(dup); free(dup); diff --git a/super-intel.c b/super-intel.c index 7714045575b2..32eceb155886 100644 --- a/super-intel.c +++ b/super-intel.c @@ -11518,10 +11518,15 @@ static int imsm_reshape_is_allowed_on_container(struct supertype *st, */ static struct mdinfo *get_spares_for_grow(struct supertype *st) { - struct spare_criteria sc; + struct spare_criteria sc = {0}; + struct mdinfo *spares; get_spare_criteria_imsm(st, NULL, &sc); - return container_choose_spares(st, &sc, NULL, NULL, NULL, 0); + spares = container_choose_spares(st, &sc, NULL, NULL, NULL, 0); + + dev_policy_free(sc.pols); + + return spares; } /******************************************************************************
If sc is not initialized, there is possibility that sc.pols is not zeroed and it causes segfault. Add missing initialization. Add missing dev_policy_free() in two places. Fixes: f656201188d7 ("mdadm: drop get_required_spare_criteria()") Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> --- Incremental.c | 1 + super-intel.c | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-)