From 13150f803a18df9b2feddd424bf513b8806bc7e8 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 10 Apr 2019 21:33:29 +0800 Subject: [PATCH 2/6] Assemble: set devices to NULL when load_devices can't load device Since load_devices frees "devices" when it can't find any device, we should set it to NULL to avoid double free issue which can be reproduced by below steps: mdadm -CR /dev/md/vol -l0 -e 1.2 -n2 /dev/sd[b-c] --assume-clean mdadm -Ss mdadm -A /dev/md127 /dev/sd[b-c] --update metadata --- Assemble.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Assemble.c b/Assemble.c index 0264190..a79466c 100644 --- a/Assemble.c +++ b/Assemble.c @@ -1539,6 +1539,11 @@ try_again: &most_recent, &bestcnt, &best, inargv); if (devcnt < 0) { mdfd = -3; + /* + * devices is already freed in load_devices, so set devices + * to NULL to avoid double free devices. + */ + devices = NULL; goto out; } -- 2.19.1