[dm-devel] [PATCH 14/15] Fix doublee free of alias after map add failure

Benjamin Marzinski bmarzins at redhat.com
Sun Mar 8 03:31:45 UTC 2015


In ev_add_map(), if add_map_without_path() fails, the alias will have
been freed by free_multipath(), so you can't access it anymore. Also,
if the multipath device already exists, but you fail to register it,
there's no point in trying to create the device. It will fail.

Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
---
 multipathd/main.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/multipathd/main.c b/multipathd/main.c
index aac8a19..62339ae 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -314,10 +314,15 @@ ev_add_map (char * dev, char * alias, struct vectors * vecs)
 	/*
 	 * now we can register the map
 	 */
-	if (map_present && (mpp = add_map_without_path(vecs, alias))) {
-		sync_map_state(mpp);
-		condlog(2, "%s: devmap %s registered", alias, dev);
-		return 0;
+	if (map_present) {
+		if ((mpp = add_map_without_path(vecs, alias))) {
+			sync_map_state(mpp);
+			condlog(2, "%s: devmap %s registered", alias, dev);
+			return 0;
+		} else {
+			condlog(2, "%s: uev_add_map failed", dev);
+			return 1;
+		}
 	}
 	r = get_refwwid(dev, DEV_DEVMAP, vecs->pathvec, &refwwid);
 
-- 
1.8.3.1




More information about the dm-devel mailing list