TTY: hvc_console, fix port reference count going to zero prematurely
Commit bdb498c200
"TTY: hvc_console, add tty install" took the port
refcounting out of hvc_open()/hvc_close(), but failed to remove the
kref_put() and tty_kref_put() calls in hvc_hangup() that were there to
remove the extra references that hvc_open() had taken.
The result was that doing a vhangup() when the current terminal was
a hvc_console, then closing the current terminal, would end up calling
destroy_hvc_struct() and making the port disappear entirely. This
meant that Fedora 17 systems would boot up but then not display the
login prompt on the console, and attempts to open /dev/hvc0 would
give a "No such device" error.
This fixes it by removing the extra kref_put() and tty_kref_put() calls.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Acked-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
77b67063bb
commit
c019bc119a
|
@ -424,7 +424,6 @@ static void hvc_hangup(struct tty_struct *tty)
|
|||
{
|
||||
struct hvc_struct *hp = tty->driver_data;
|
||||
unsigned long flags;
|
||||
int temp_open_count;
|
||||
|
||||
if (!hp)
|
||||
return;
|
||||
|
@ -444,7 +443,6 @@ static void hvc_hangup(struct tty_struct *tty)
|
|||
return;
|
||||
}
|
||||
|
||||
temp_open_count = hp->port.count;
|
||||
hp->port.count = 0;
|
||||
spin_unlock_irqrestore(&hp->port.lock, flags);
|
||||
tty_port_tty_set(&hp->port, NULL);
|
||||
|
@ -453,11 +451,6 @@ static void hvc_hangup(struct tty_struct *tty)
|
|||
|
||||
if (hp->ops->notifier_hangup)
|
||||
hp->ops->notifier_hangup(hp, hp->data);
|
||||
|
||||
while(temp_open_count) {
|
||||
--temp_open_count;
|
||||
tty_port_put(&hp->port);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue