Hi,
included patch solves multiple list_del in saMsgQueueClose, which leads
to segfault.

Regards,
  Honza
diff --git a/trunk/lib/msg.c b/trunk/lib/msg.c
index 1c20119..689ffbc 100644
--- a/trunk/lib/msg.c
+++ b/trunk/lib/msg.c
@@ -78,6 +78,7 @@ struct queueInstance {
 	SaMsgQueueHandleT queue_handle;
 	SaMsgQueueOpenFlagsT open_flags;
 	SaMsgQueueCreationAttributesT create_attrs;
+	int finalize;
 	struct list_head list;
 };
 
@@ -96,6 +97,8 @@ static struct saVersionDatabase msgVersionDatabase = {
 
 static void queueInstanceFinalize (struct queueInstance *queueInstance)
 {
+	queueInstance->finalize = 1;
+
 	list_del (&queueInstance->list);
 
 	hdb_handle_destroy (&queueHandleDatabase, queueInstance->queue_handle);
@@ -713,10 +719,11 @@ saMsgQueueClose (
 		goto error_put;	/* ! */
 	}
 
-	list_del (&queueInstance->list);
+	if (!queueInstance->finalize) {
+		queueInstanceFinalize (queueInstance);
+	}
 
 	hdb_handle_put (&queueHandleDatabase, queueHandle);
-	hdb_handle_destroy (&queueHandleDatabase, queueHandle);
 
 	return (error);
 
_______________________________________________
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to