summaryrefslogtreecommitdiffstats
path: root/super-intel.c
diff options
context:
space:
mode:
authorMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>2024-03-18 17:28:42 +0100
committerMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>2024-03-22 12:16:41 +0100
commitae996e81232b8ba991e763dfa15577a0af358358 (patch)
tree6dcdff2c6e75e5dcfc4e98c7ba2b8acd12b5c184 /super-intel.c
parentsysfs: remove vers parameter from sysfs_set_array (diff)
downloadmdadm-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.c9
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;
}
/******************************************************************************