From: Eric W. Biederman I am slowly moving to a model where all process killing is struct pid based instead of pid_t based. The sunos compatibility code is one of the last users of the old pid_t based kill_pg in the kernel. By being complete I allow for the future removal of kill_pg from the kernel, which will ensure I don't miss something. Signed-off-by: Eric W. Biederman Cc: Alan Cox Cc: Oleg Nesterov Signed-off-by: Andrew Morton --- arch/sparc/kernel/sys_sunos.c | 10 ++++++---- arch/sparc64/kernel/sys_sunos32.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff -puN arch/sparc/kernel/sys_sunos.c~signal-use-kill_pgrp-not-kill_pg-in-the-sunos-compatibility-code arch/sparc/kernel/sys_sunos.c --- a/arch/sparc/kernel/sys_sunos.c~signal-use-kill_pgrp-not-kill_pg-in-the-sunos-compatibility-code +++ a/arch/sparc/kernel/sys_sunos.c @@ -859,14 +859,16 @@ asmlinkage int sunos_wait4(pid_t pid, un return ret; } -extern int kill_pg(int, int, int); asmlinkage int sunos_killpg(int pgrp, int sig) { int ret; - lock_kernel(); - ret = kill_pg(pgrp, sig, 0); - unlock_kernel(); + rcu_read_lock(); + ret = -EINVAL; + if (pgrp > 0) + ret = kill_pgrp(find_pid(pgrp), sig, 0); + rcu_read_unlock(); + return ret; } diff -puN arch/sparc64/kernel/sys_sunos32.c~signal-use-kill_pgrp-not-kill_pg-in-the-sunos-compatibility-code arch/sparc64/kernel/sys_sunos32.c --- a/arch/sparc64/kernel/sys_sunos32.c~signal-use-kill_pgrp-not-kill_pg-in-the-sunos-compatibility-code +++ a/arch/sparc64/kernel/sys_sunos32.c @@ -824,10 +824,17 @@ asmlinkage int sunos_wait4(compat_pid_t return ret; } -extern int kill_pg(int, int, int); asmlinkage int sunos_killpg(int pgrp, int sig) { - return kill_pg(pgrp, sig, 0); + int ret; + + rcu_read_lock(); + ret = -EINVAL; + if (pgrp > 0) + ret = kill_pgrp(find_pid(pgrp), sig, 0); + rcu_read_unlock(); + + return ret; } asmlinkage int sunos_audit(void) _