From: NeilBrown Date: Wed, 21 May 2014 03:27:54 +0000 (+1000) Subject: DDF: ensure dl->devname is freed when processing a 'delete device' update. X-Git-Tag: mdadm-3.3.1~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de9107744bff1d59103858db06b2ba1811cb683f;p=thirdparty%2Fmdadm.git DDF: ensure dl->devname is freed when processing a 'delete device' update. As this code runs in 'monitor' it cannot just free memory, it must add it to a list for 'manager' to free. Fortunate update->space_list exists for just this purpose. dl->devname might be small, so put it in update->space and put dl in update->space_list. Signed-off-by: NeilBrown --- diff --git a/super-ddf.c b/super-ddf.c index 0c714225..607f1ea1 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -4597,10 +4597,10 @@ static void ddf_process_phys_update(struct supertype *st, if (dl->pdnum == (signed)ent) { close(dl->fd); dl->fd = -1; - /* FIXME this doesn't free - * dl->devname */ - update->space = dl; *dlp = dl->next; + update->space = dl->devname; + *(void**)dl = update->space_list; + update->space_list = (void**)dl; break; } }