diff options
Diffstat (limited to 'drivers/char/vt_ioctl.c')
-rw-r--r-- | drivers/char/vt_ioctl.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c index a53e382cc107..dc408af165ab 100644 --- a/drivers/char/vt_ioctl.c +++ b/drivers/char/vt_ioctl.c | |||
@@ -645,13 +645,16 @@ int vt_ioctl(struct tty_struct *tty, struct file * file, | |||
645 | */ | 645 | */ |
646 | case KDSIGACCEPT: | 646 | case KDSIGACCEPT: |
647 | { | 647 | { |
648 | extern int spawnpid, spawnsig; | ||
649 | if (!perm || !capable(CAP_KILL)) | 648 | if (!perm || !capable(CAP_KILL)) |
650 | return -EPERM; | 649 | return -EPERM; |
651 | if (!valid_signal(arg) || arg < 1 || arg == SIGKILL) | 650 | if (!valid_signal(arg) || arg < 1 || arg == SIGKILL) |
652 | return -EINVAL; | 651 | return -EINVAL; |
653 | spawnpid = current->pid; | 652 | |
654 | spawnsig = arg; | 653 | spin_lock_irq(&vt_spawn_con.lock); |
654 | put_pid(vt_spawn_con.pid); | ||
655 | vt_spawn_con.pid = get_pid(task_pid(current)); | ||
656 | vt_spawn_con.sig = arg; | ||
657 | spin_unlock_irq(&vt_spawn_con.lock); | ||
655 | return 0; | 658 | return 0; |
656 | } | 659 | } |
657 | 660 | ||