Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c019bc11 authored by Paul Mackerras's avatar Paul Mackerras Committed by Greg Kroah-Hartman
Browse files

TTY: hvc_console, fix port reference count going to zero prematurely



Commit bdb498c2 "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: default avatarPaul Mackerras <paulus@samba.org>
Acked-by: default avatarJiri Slaby <jslaby@suse.cz>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 77b67063
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -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);
	}
}

/*