looks good for commit regards -steve
On Tue, 2009-03-24 at 08:25 +0100, Jim Meyering wrote: > Steven Dake wrote: > > This patch looks good but I want to hold off on merging until the > > corosync shared ipc library goes in to avoid big collides in the source > > tree. > > > > Regards > > -steve > > > > On Fri, 2009-03-20 at 13:43 +0100, Jim Meyering wrote: > >> I spotted these by inspection, but Steven said on irc that this > >> sort of infloop has actually been seen in practice. > >> > >> From 8907a0affff35f6637ccd560a3e872caf1fab36d Mon Sep 17 00:00:00 2001 > >> From: Jim Meyering <[email protected]> > >> Date: Fri, 20 Mar 2009 13:38:34 +0100 > >> Subject: [PATCH] avoid infloop upon out-of-memory or out-of-semaphores > > I rebased and resolved the conflicts. > Let me know if it's to commit, now. > > From f2f9ce52ba09b49d605ff067e6ce60b5b7f4b55b Mon Sep 17 00:00:00 2001 > From: Jim Meyering <[email protected]> > Date: Tue, 24 Mar 2009 08:22:20 +0100 > Subject: [PATCH] avoid infloop upon out-of-memory or out-of-semaphores > > * coroipc.c (cslib_service_connect): Upon shmget failure > loop only when errno == EEXIST. Any other error now translates > to res_setup.error. > Likewise for semget. > --- > lib/coroipcc.c | 26 +++++++++++++++++++------- > 1 files changed, 19 insertions(+), 7 deletions(-) > > diff --git a/lib/coroipcc.c b/lib/coroipcc.c > index 47937ee..3d4521f 100644 > --- a/lib/coroipcc.c > +++ b/lib/coroipcc.c > @@ -323,20 +323,32 @@ coroipcc_service_connect ( > /* > * Allocate a shared memory segment > */ > - do { > + while (1) { > shmkey = random(); > - ipc_segment->shmid = shmget (shmkey, sizeof (struct > shared_memory), > - IPC_CREAT|IPC_EXCL|0600); > - } while (ipc_segment->shmid == -1); > + if ((ipc_segment->shmid > + = shmget (shmkey, sizeof (struct shared_memory), > + IPC_CREAT|IPC_EXCL|0600)) != -1) { > + break; > + } > + if (errno != EEXIST) { > + goto error_exit; > + } > + } > > /* > * Allocate a semaphore segment > */ > - do { > + while (1) { > semkey = random(); > - ipc_segment->semid = semget (semkey, 3, > IPC_CREAT|IPC_EXCL|0600); > ipc_segment->euid = geteuid (); > - } while (ipc_segment->semid == -1); > + if ((ipc_segment->semid > + = semget (semkey, 3, IPC_CREAT|IPC_EXCL|0600)) != -1) { > + break; > + } > + if (errno != EEXIST) { > + goto error_exit; > + } > + } > > /* > * Attach to shared memory segment > -- > 1.6.2.rc1.285.gc5f54 _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
