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

Reported-by: Tkaczyk Mariusz <mariusz.tkaczyk@intel.com>
Tested-by: Tkaczyk Mariusz <mariusz.tkaczyk@intel.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
Guoqing Jiang 2018-08-27 11:10:52 +08:00 committed by Jes Sorensen
parent d8b0173894
commit 783a4a93b9
1 changed files with 5 additions and 0 deletions

View File

@ -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;
}