From: Subrata M. <su...@li...> - 2009-06-09 18:26:06
|
On Mon, 2009-06-08 at 13:29 +0200, Jiri Palecek wrote: > In create_sig_proc, the child process waits for the parent to wake it > with a signal. This doesn't actually solve anything, and the > implementation with pause() syscall is inherently racy (the race > results in a deadlock). This patch removes it; it doesn't make the > function race-free (it's possible the child will send the signal > before the parent had chance to run), but this is the best you can > get. > > Regards > Jiri Palecek > > Signed-off-by: Jiri Palecek <jpa...@we...> Thanks. Regards-- Subrata > --- > testcases/kernel/syscalls/utils/common_j_h.c | 10 ---------- > 1 files changed, 0 insertions(+), 10 deletions(-) > > diff --git a/testcases/kernel/syscalls/utils/common_j_h.c b/testcases/kernel/syscalls/utils/common_j_h.c > index cda3198..d122ff9 100644 > --- a/testcases/kernel/syscalls/utils/common_j_h.c > +++ b/testcases/kernel/syscalls/utils/common_j_h.c > @@ -102,23 +102,14 @@ int cleanup_euid(uid_t old_uid) > /* > * Generate a child process which will send a signal > */ > -static void sighandler_for_sig_proc(int sig) > -{ > - if (sig == SIGUSR2) > - return; > - return; > -} > - > pid_t create_sig_proc(unsigned long usec, int sig) > { > pid_t pid, cpid; > > - signal(SIGUSR2, sighandler_for_sig_proc); > pid = getpid(); > cpid = fork(); > switch (cpid) { > case 0: > - pause(); > usleep(usec); > kill(pid, sig); > _exit(0); > @@ -127,7 +118,6 @@ pid_t create_sig_proc(unsigned long usec, int sig) > EPRINTF("fork failed.\n"); > return cpid; > default: > - kill(cpid, SIGUSR2); > return cpid; > } > } |