@@ -906,9 +906,8 @@ uev_add_path (struct uevent *uev, struct vectors * vecs, int need_do_map)
}
}
}
- lock_cleanup_pop(vecs->lock);
if (pp)
- return ret;
+ goto out;
/*
* get path vital state
@@ -920,13 +919,13 @@ uev_add_path (struct uevent *uev, struct vectors * vecs, int need_do_map)
pthread_cleanup_pop(1);
if (!pp) {
if (ret == PATHINFO_SKIPPED)
- return 0;
- condlog(3, "%s: failed to get path info", uev->kernel);
- return 1;
+ ret = 0;
+ else {
+ condlog(3, "%s: failed to get path info", uev->kernel);
+ ret = 1;
+ }
+ goto out;
}
- pthread_cleanup_push(cleanup_lock, &vecs->lock);
- lock(&vecs->lock);
- pthread_testcancel();
ret = store_path(vecs->pathvec, pp);
if (!ret) {
conf = get_multipath_config();
@@ -940,6 +939,7 @@ uev_add_path (struct uevent *uev, struct vectors * vecs, int need_do_map)
free_path(pp);
ret = 1;
}
+out:
lock_cleanup_pop(vecs->lock);
return ret;
}