From de9107744bff1d59103858db06b2ba1811cb683f Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Wed, 21 May 2014 13:27:54 +1000 Subject: [PATCH] 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 --- super-ddf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/super-ddf.c b/super-ddf.c index 0c71422..607f1ea 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; } }