I noticed this while testing the high FD usage patch.
It can get stuck in the while loop.

Signed-off-by: Angus Salkeld <[email protected]>
---
 lib/util.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/lib/util.c b/lib/util.c
index f285eb5..76b3891 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -339,6 +339,9 @@ openais_service_connect (
                shmkey = random();
                ipc_segment->shmid = shmget (shmkey, sizeof (struct 
shared_memory),
                        IPC_CREAT|IPC_EXCL|0600);
+               if (ipc_segment->semid == -1 && errno == ENOSPC) {
+                       goto error_exit;
+               }
        } while (ipc_segment->shmid == -1);
 
        /*
@@ -347,6 +350,9 @@ openais_service_connect (
        do {
                semkey = random();
                ipc_segment->semid = semget (semkey, 3, 
IPC_CREAT|IPC_EXCL|0600);
+               if (ipc_segment->semid == -1 && errno == ENOSPC) {
+                       goto error_exit;
+               }
                ipc_segment->euid = geteuid ();
        } while (ipc_segment->semid == -1);
 
-- 
1.7.4

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to