• Frans Pop's avatar
    printk: Restore previous console_loglevel when re-enabling logging · 1aaad49e
    Frans Pop authored
    When logging to console is disabled from userspace using klogctl()
    and later re-enabled, console_loglevel gets set to the default
    log level instead to the previous value.
    
    This means that if the kernel was booted with 'quiet', the boot is
    suddenly no longer quiet after logging to console gets re-enabled.
    
    Save the current console_loglevel when logging is disabled and
    restore to that value. If the log level is set to a specific value
    while disabled, this is interpreted as an implicit re-enabling of
    the logging.
    
    The problem that prompted this patch is described in:
    
        http://lkml.org/lkml/2009/6/28/234
    
    There are two variations possible on the patch below:
    
     1) If klogctl(7) is called while logging is not disabled, then set level
        to default (partially preserving current functionality):
      	case 7:		/* Enable logging to console */
     -		console_loglevel = default_console_loglevel;
     +		if (saved_console_loglevel == -1)
     +			console_loglevel = default_console_loglevel;
     +		else {
     +			console_loglevel = saved_console_loglevel;
     +			saved_console_loglevel = -1;
     +		}
    
     2) If klogctl(8) is called while logging is disabled, then don't enable
        logging, but remember the requested value for when logging does get
        enabled again:
      	case 8:		/* Set level of messages printed to console */
     [...]
     - 		console_loglevel = len;
     +		if (saved_console_loglevel == -1)
     +			console_loglevel = len;
     +		else
     +			saved_console_loglevel = len;
    
    Yet another option would be to ignore the request.
    Signed-off-by: default avatarFrans Pop <elendil@planet.nl>
    Cc: cryptsetup@packages.debian.org
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    LKML-Reference: <200907061331.49930.elendil@planet.nl>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    1aaad49e
printk.c 34.7 KB