@@ -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);
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@redhat.com> --- multipathd/main.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)