--- ./sysklogd/syslogd.c.08 2009-10-20 11:45:18 +0200 +++ ./sysklogd/syslogd.c 2009-10-20 11:48:23 +0200 @@ -157,9 +157,11 @@ */ static inline void sem_up(int semid) { - if (semop(semid, SMwup, 1) == -1) { - bb_perror_msg_and_die("semop[SMwup]"); - } + do { + if (semop(semid, SMwup, 1) != -1) + return; + } while (errno == EAGAIN || errno == EINTR); + bb_perror_msg_and_die("semop[SMwup]"); } /* @@ -167,9 +169,11 @@ */ static inline void sem_down(int semid) { - if (semop(semid, SMwdn, 3) == -1) { - bb_perror_msg_and_die("semop[SMwdn]"); - } + do { + if (semop(semid, SMwdn, 3) != -1) + return; + } while (errno == EAGAIN || errno == EINTR); + bb_perror_msg_and_die("semop[SMwdn]"); } /*