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

Commit f418f2ec authored by Daniel Vetter's avatar Daniel Vetter
Browse files

vt: Don't ignore unbind errors in vt_unbind



Otherwise the loop will never stop since we don't make any
forward progress. Noticed while breaking this accidentally
in a painful attempt to make vga_con unregistering work.

With this patch we'll bail out on the first attempt, which
at least leaves a useful enough system behind for debugging.
Livelocks on console_lock just aren't fun.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <jslaby@suse.cz>
Reviewed-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent d9c660e7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -3260,6 +3260,7 @@ static int vt_unbind(struct con_driver *con)
{
	const struct consw *csw = NULL;
	int i, more = 1, first = -1, last = -1, deflt = 0;
	int ret;

 	if (!con->con || !(con->flag & CON_DRIVER_FLAG_MODULE) ||
	    con_is_graphics(con->con, con->first, con->last))
@@ -3285,8 +3286,10 @@ static int vt_unbind(struct con_driver *con)

		if (first != -1) {
			console_lock();
			do_unbind_con_driver(csw, first, last, deflt);
			ret = do_unbind_con_driver(csw, first, last, deflt);
			console_unlock();
			if (ret != 0)
				return ret;
		}

		first = -1;