[PATCH] signal: rewrite kill_something_info so it uses newer helpers
[firefly-linux-kernel-4.4.55.git] / kernel / signal.c
index 228fdb5c01d12a0b1b409b1819a95a4c8d223840..de66def71644214836e03ed0b94f9936ab61856f 100644 (file)
@@ -1191,8 +1191,10 @@ EXPORT_SYMBOL_GPL(kill_pid_info_as_uid);
 
 static int kill_something_info(int sig, struct siginfo *info, int pid)
 {
+       int ret;
+       rcu_read_lock();
        if (!pid) {
-               return kill_pg_info(sig, info, process_group(current));
+               ret = kill_pgrp_info(sig, info, task_pgrp(current));
        } else if (pid == -1) {
                int retval = 0, count = 0;
                struct task_struct * p;
@@ -1207,12 +1209,14 @@ static int kill_something_info(int sig, struct siginfo *info, int pid)
                        }
                }
                read_unlock(&tasklist_lock);
-               return count ? retval : -ESRCH;
+               ret = count ? retval : -ESRCH;
        } else if (pid < 0) {
-               return kill_pg_info(sig, info, -pid);
+               ret = kill_pgrp_info(sig, info, find_pid(-pid));
        } else {
-               return kill_proc_info(sig, info, pid);
+               ret = kill_pid_info(sig, info, find_pid(pid));
        }
+       rcu_read_unlock();
+       return ret;
 }
 
 /*