diff options
Diffstat (limited to 'drivers/char/vt_ioctl.c')
| -rw-r--r-- | drivers/char/vt_ioctl.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c index 87778dcf8727..6aa10284104a 100644 --- a/drivers/char/vt_ioctl.c +++ b/drivers/char/vt_ioctl.c | |||
| @@ -888,7 +888,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file, | |||
| 888 | ret = -EFAULT; | 888 | ret = -EFAULT; |
| 889 | goto out; | 889 | goto out; |
| 890 | } | 890 | } |
| 891 | if (tmp.mode != VT_AUTO && tmp.mode != VT_PROCESS && tmp.mode != VT_PROCESS_AUTO) { | 891 | if (tmp.mode != VT_AUTO && tmp.mode != VT_PROCESS) { |
| 892 | ret = -EINVAL; | 892 | ret = -EINVAL; |
| 893 | goto out; | 893 | goto out; |
| 894 | } | 894 | } |
| @@ -1622,7 +1622,7 @@ static void complete_change_console(struct vc_data *vc) | |||
| 1622 | * telling it that it has acquired. Also check if it has died and | 1622 | * telling it that it has acquired. Also check if it has died and |
| 1623 | * clean up (similar to logic employed in change_console()) | 1623 | * clean up (similar to logic employed in change_console()) |
| 1624 | */ | 1624 | */ |
| 1625 | if (vc->vt_mode.mode == VT_PROCESS || vc->vt_mode.mode == VT_PROCESS_AUTO) { | 1625 | if (vc->vt_mode.mode == VT_PROCESS) { |
| 1626 | /* | 1626 | /* |
| 1627 | * Send the signal as privileged - kill_pid() will | 1627 | * Send the signal as privileged - kill_pid() will |
| 1628 | * tell us if the process has gone or something else | 1628 | * tell us if the process has gone or something else |
| @@ -1682,7 +1682,7 @@ void change_console(struct vc_data *new_vc) | |||
| 1682 | * vt to auto control. | 1682 | * vt to auto control. |
| 1683 | */ | 1683 | */ |
| 1684 | vc = vc_cons[fg_console].d; | 1684 | vc = vc_cons[fg_console].d; |
| 1685 | if (vc->vt_mode.mode == VT_PROCESS || vc->vt_mode.mode == VT_PROCESS_AUTO) { | 1685 | if (vc->vt_mode.mode == VT_PROCESS) { |
| 1686 | /* | 1686 | /* |
| 1687 | * Send the signal as privileged - kill_pid() will | 1687 | * Send the signal as privileged - kill_pid() will |
| 1688 | * tell us if the process has gone or something else | 1688 | * tell us if the process has gone or something else |
| @@ -1693,28 +1693,27 @@ void change_console(struct vc_data *new_vc) | |||
| 1693 | */ | 1693 | */ |
| 1694 | vc->vt_newvt = new_vc->vc_num; | 1694 | vc->vt_newvt = new_vc->vc_num; |
| 1695 | if (kill_pid(vc->vt_pid, vc->vt_mode.relsig, 1) == 0) { | 1695 | if (kill_pid(vc->vt_pid, vc->vt_mode.relsig, 1) == 0) { |
| 1696 | if(vc->vt_mode.mode == VT_PROCESS) | ||
| 1697 | /* | ||
| 1698 | * It worked. Mark the vt to switch to and | ||
| 1699 | * return. The process needs to send us a | ||
| 1700 | * VT_RELDISP ioctl to complete the switch. | ||
| 1701 | */ | ||
| 1702 | return; | ||
| 1703 | } else { | ||
| 1704 | /* | 1696 | /* |
| 1705 | * The controlling process has died, so we revert back to | 1697 | * It worked. Mark the vt to switch to and |
| 1706 | * normal operation. In this case, we'll also change back | 1698 | * return. The process needs to send us a |
| 1707 | * to KD_TEXT mode. I'm not sure if this is strictly correct | 1699 | * VT_RELDISP ioctl to complete the switch. |
| 1708 | * but it saves the agony when the X server dies and the screen | ||
| 1709 | * remains blanked due to KD_GRAPHICS! It would be nice to do | ||
| 1710 | * this outside of VT_PROCESS but there is no single process | ||
| 1711 | * to account for and tracking tty count may be undesirable. | ||
| 1712 | */ | 1700 | */ |
| 1713 | reset_vc(vc); | 1701 | return; |
| 1714 | } | 1702 | } |
| 1715 | 1703 | ||
| 1716 | /* | 1704 | /* |
| 1717 | * Fall through to normal (VT_AUTO and VT_PROCESS_AUTO) handling of the switch... | 1705 | * The controlling process has died, so we revert back to |
| 1706 | * normal operation. In this case, we'll also change back | ||
| 1707 | * to KD_TEXT mode. I'm not sure if this is strictly correct | ||
| 1708 | * but it saves the agony when the X server dies and the screen | ||
| 1709 | * remains blanked due to KD_GRAPHICS! It would be nice to do | ||
| 1710 | * this outside of VT_PROCESS but there is no single process | ||
| 1711 | * to account for and tracking tty count may be undesirable. | ||
| 1712 | */ | ||
| 1713 | reset_vc(vc); | ||
| 1714 | |||
| 1715 | /* | ||
| 1716 | * Fall through to normal (VT_AUTO) handling of the switch... | ||
| 1718 | */ | 1717 | */ |
| 1719 | } | 1718 | } |
| 1720 | 1719 | ||
