lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <51250E86.1050908@windriver.com>
Date:	Wed, 20 Feb 2013 09:57:26 -0800
From:	Andy Ross <andy.ross@...driver.com>
To:	Greg Kroah-Hartman <gregkh@...uxfoundation.org>
CC:	"Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>,
	Jiri Slaby <jslaby@...e.cz>, Pavel Machek <pavel@....cz>,
	"Rafael J. Wysocki" <rjw@...k.pl>, Len Brown <len.brown@...el.com>,
	linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org
Subject: Re: [PATCH v3] vt: add init_hide parameter to suppress boot output

When vt.init_hide is set, suppress output on newly created consoles
until an affirmative switch to that console.  This prevents boot
output from displaying (and clobbering splash screens, etc...) without
disabling the console entirely.

Signed-off-by: Andy Ross <andy.ross@...driver.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@...ux.intel.com>
---
  Documentation/kernel-parameters.txt | 8 ++++++++
  drivers/tty/vt/vt.c                 | 7 +++++++
  include/linux/console_struct.h      | 3 ++-
  include/linux/vt.h                  | 2 ++
  kernel/power/console.c              | 2 --
  5 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 6c72381..56bd2be 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3149,6 +3149,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
  			            them quite hard to use for exploits but
  			            might break your system.

+	vt.init_hide=	[VT] Hide initial console
+			Format: <bool> (0 = visible (default), 1 = invisible)
+			When set, the console will be invisible initially.
+			This prevents mode switches, buffer clears, and screen
+			display from the console code during boot.  Switching
+			to a console device at runtime using the VT_ACTIVATE
+			ioctl will make its contents visible.
+
  	vt.cur_default=	[VT] Default cursor shape.
  			Format: 0xCCBBAA, where AA, BB, and CC are the same as
  			the parameters of the <Esc>[?A;B;Cc escape sequence;
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 8fd8968..c68322c 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -165,6 +165,9 @@ module_param(global_cursor_default, int, S_IRUGO | S_IWUSR);
  static int cur_default = CUR_DEFAULT;
  module_param(cur_default, int, S_IRUGO | S_IWUSR);

+static bool init_hide;
+module_param(init_hide, bool, S_IRUGO);
+
  /*
   * ignore_poke: don't unblank the screen when things are typed.  This is
   * mainly for the privacy of braille terminal users.
@@ -734,6 +737,7 @@ static void visual_init(struct vc_data *vc, int num, int init)
  	__module_get(vc->vc_sw->owner);
  	vc->vc_num = num;
  	vc->vc_display_fg = &master_display_fg;
+	vc->vc_hidden = init_hide;
  	vc->vc_uni_pagedir_loc = &vc->vc_uni_pagedir;
  	vc->vc_uni_pagedir = 0;
  	vc->vc_hi_font_mask = 0;
@@ -2336,6 +2340,9 @@ static void console_callback(struct work_struct *ignored)
  	if (want_console >= 0) {
  		if (want_console != fg_console &&
  		    vc_cons_allocated(want_console)) {
+			if (want_console != SUSPEND_CONSOLE &&
+					fg_console != SUSPEND_CONSOLE)
+				vc_cons[want_console].d->vc_hidden = 0;
  			hide_cursor(vc_cons[fg_console].d);
  			change_console(vc_cons[want_console].d);
  			/* we only changed when the console had already
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h
index 7f0c329..fc96691 100644
--- a/include/linux/console_struct.h
+++ b/include/linux/console_struct.h
@@ -91,6 +91,7 @@ struct vc_data {
  	unsigned int	vc_can_do_color	: 1;
  	unsigned int	vc_report_mouse : 2;
  	unsigned char	vc_utf		: 1;	/* Unicode UTF-8 encoding */
+	unsigned int    vc_hidden	: 1;    /* Set by vt.init_hide */
  	unsigned char	vc_utf_count;
  		 int	vc_utf_char;
  	unsigned int	vc_tab_stop[8];		/* Tab stops. 256 columns. */
@@ -134,6 +135,6 @@ extern void vc_SAK(struct work_struct *work);

  #define CUR_DEFAULT CUR_UNDERLINE

-#define CON_IS_VISIBLE(conp) (*conp->vc_display_fg == conp)
+#define CON_IS_VISIBLE(conp) (*conp->vc_display_fg == conp && !conp->vc_hidden)

  #endif /* _LINUX_CONSOLE_STRUCT_H */
diff --git a/include/linux/vt.h b/include/linux/vt.h
index b186e04..0dc3e89 100644
--- a/include/linux/vt.h
+++ b/include/linux/vt.h
@@ -11,6 +11,8 @@
  #define VT_UPDATE		0x0004 /* A bigger update occurred */
  #define VT_PREWRITE		0x0005 /* A char is about to be written to the console */

+#define SUSPEND_CONSOLE	(MAX_NR_CONSOLES-1)
+
  #ifdef CONFIG_VT_CONSOLE

  extern int vt_kmsg_redirect(int new);
diff --git a/kernel/power/console.c b/kernel/power/console.c
index b1dc456..b74bdb8 100644
--- a/kernel/power/console.c
+++ b/kernel/power/console.c
@@ -10,8 +10,6 @@
  #include <linux/module.h>
  #include "power.h"

-#define SUSPEND_CONSOLE	(MAX_NR_CONSOLES-1)
-
  static int orig_fgconsole, orig_kmsg;

  int pm_prepare_console(void)
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ