Commit 13ae6645 authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds
Browse files

[PATCH] VT binding: Make VT binding a Kconfig option



To enable this feature, CONFIG_VT_HW_CONSOLE_BINDING must be set to 'y'.  This
feature will default to 'n' to minimize users accidentally corrupting their
virtual terminals.

Signed-off-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6db4063c
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -62,6 +62,23 @@ config HW_CONSOLE
	depends on VT && !S390 && !UML
	default y

config VT_HW_CONSOLE_BINDING
       bool "Support for binding and unbinding console drivers"
       depends on HW_CONSOLE
       default n
       ---help---
         The virtual terminal is the device that interacts with the physical
         terminal through console drivers. On these systems, at least one
         console driver is loaded. In other configurations, additional console
         drivers may be enabled, such as the framebuffer console. If more than
         1 console driver is enabled, setting this to 'y' will allow you to
         select the console driver that will serve as the backend for the
         virtual terminals.

	 See <file:Documentation/console/console.txt> for more
	 information. For framebuffer console users, please refer to
	 <file:Documentation/fb/fbcon.txt>.

config SERIAL_NONSTANDARD
	bool "Non-standard serial port support"
	---help---
+27 −16
Original line number Diff line number Diff line
@@ -2691,22 +2691,6 @@ int __init vty_init(void)

static struct class *vtconsole_class;

static int con_is_graphics(const struct consw *csw, int first, int last)
{
	int i, retval = 0;

	for (i = first; i <= last; i++) {
		struct vc_data *vc = vc_cons[i].d;

		if (vc && vc->vc_mode == KD_GRAPHICS) {
			retval = 1;
			break;
		}
	}

	return retval;
}

static int bind_con_driver(const struct consw *csw, int first, int last,
			   int deflt)
{
@@ -2808,6 +2792,23 @@ err:
	return retval;
};

#ifdef CONFIG_VT_HW_CONSOLE_BINDING
static int con_is_graphics(const struct consw *csw, int first, int last)
{
	int i, retval = 0;

	for (i = first; i <= last; i++) {
		struct vc_data *vc = vc_cons[i].d;

		if (vc && vc->vc_mode == KD_GRAPHICS) {
			retval = 1;
			break;
		}
	}

	return retval;
}

static int unbind_con_driver(const struct consw *csw, int first, int last,
			     int deflt)
{
@@ -2984,6 +2985,16 @@ static int vt_unbind(struct con_driver *con)
err:
	return 0;
}
#else
static inline int vt_bind(struct con_driver *con)
{
	return 0;
}
static inline int vt_unbind(struct con_driver *con)
{
	return 0;
}
#endif /* CONFIG_VT_HW_CONSOLE_BINDING */

static ssize_t store_bind(struct class_device *class_device,
			  const char *buf, size_t count)