diff options
Diffstat (limited to 'kernel/signal.c')
| -rw-r--r-- | kernel/signal.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 2ac3a668d9dd..c43a3f19d477 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -497,6 +497,11 @@ static int check_kill_permission(int sig, struct siginfo *info, | |||
| 497 | int error = -EINVAL; | 497 | int error = -EINVAL; |
| 498 | if (!valid_signal(sig)) | 498 | if (!valid_signal(sig)) |
| 499 | return error; | 499 | return error; |
| 500 | |||
| 501 | error = audit_signal_info(sig, t); /* Let audit system see the signal */ | ||
| 502 | if (error) | ||
| 503 | return error; | ||
| 504 | |||
| 500 | error = -EPERM; | 505 | error = -EPERM; |
| 501 | if ((info == SEND_SIG_NOINFO || (!is_si_special(info) && SI_FROMUSER(info))) | 506 | if ((info == SEND_SIG_NOINFO || (!is_si_special(info) && SI_FROMUSER(info))) |
| 502 | && ((sig != SIGCONT) || | 507 | && ((sig != SIGCONT) || |
| @@ -506,10 +511,7 @@ static int check_kill_permission(int sig, struct siginfo *info, | |||
| 506 | && !capable(CAP_KILL)) | 511 | && !capable(CAP_KILL)) |
| 507 | return error; | 512 | return error; |
| 508 | 513 | ||
| 509 | error = security_task_kill(t, info, sig, 0); | 514 | return security_task_kill(t, info, sig, 0); |
| 510 | if (!error) | ||
| 511 | audit_signal_info(sig, t); /* Let audit system see the signal */ | ||
| 512 | return error; | ||
| 513 | } | 515 | } |
| 514 | 516 | ||
| 515 | /* forward decl */ | 517 | /* forward decl */ |
