[dm-devel] [PATCH] Don't exit() from library

Ritesh Raj Sarraf rrs at debian.org
Tue Mar 11 06:10:11 UTC 2014


Also call pthread_attr_destroy() on thread creation failure

Signed-off-by: Ritesh Raj Sarraf <rrs at debian.org>
---
 libmpathpersist/mpath_persist.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
index bd30125..b74ce4e 100644
--- a/libmpathpersist/mpath_persist.c
+++ b/libmpathpersist/mpath_persist.c
@@ -585,11 +585,14 @@ int send_prout_activepath(char * dev, int rq_servact, int rq_scope,
 	rc = pthread_create(&thread, &attr, mpath_prout_pthread_fn, (void *)(&param));
 	if (rc){
 		condlog (3, "%s: failed to create thread %d", dev, rc);
-		exit(-1);
+		/* Destroy the thread attribute since we failed to create */
+		pthread_attr_destroy(&attr);
+	}
+	else {
+		/* Free attribute and wait for the other threads */
+		pthread_attr_destroy(&attr);
+		rc = pthread_join(thread, NULL);
 	}
-	/* Free attribute and wait for the other threads */
-	pthread_attr_destroy(&attr);
-	rc = pthread_join(thread, NULL);
 
 	return (param.status);
 }
-- 
1.9.0




More information about the dm-devel mailing list