diff options
author | Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> | 2024-03-18 17:28:42 +0100 |
---|---|---|
committer | Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> | 2024-03-22 12:16:41 +0100 |
commit | ae996e81232b8ba991e763dfa15577a0af358358 (patch) | |
tree | 6dcdff2c6e75e5dcfc4e98c7ba2b8acd12b5c184 /super-intel.c | |
parent | sysfs: remove vers parameter from sysfs_set_array (diff) | |
download | mdadm-ae996e81232b8ba991e763dfa15577a0af358358.tar.xz mdadm-ae996e81232b8ba991e763dfa15577a0af358358.zip |
mdadm: fix grow segfault for IMSM
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>
Diffstat (limited to 'super-intel.c')
-rw-r--r-- | super-intel.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/super-intel.c b/super-intel.c index ff2590fe..70f3c4ef 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; } /****************************************************************************** |