From: Jiri P. <jpa...@we...> - 2009-06-08 11:27:54
|
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...> --- 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; } } -- 1.6.2.4 |