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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Yok0yjx0aKvlgoIL@kroah.com>
Date:   Sat, 21 May 2022 20:51:54 +0200
From:   Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To:     Chris Down <chris@...isdown.name>
Cc:     linux-kernel@...r.kernel.org, Petr Mladek <pmladek@...e.com>,
        Sergey Senozhatsky <senozhatsky@...omium.org>,
        Steven Rostedt <rostedt@...dmis.org>,
        John Ogness <john.ogness@...utronix.de>,
        Geert Uytterhoeven <geert@...ux-m68k.org>, kernel-team@...com
Subject: Re: [RFC PATCH v2] printk: console: Allow each console to have its
 own loglevel

On Fri, May 20, 2022 at 01:57:19PM +0100, Chris Down wrote:
> [Once the goals of this patch are generally agreed upon, it can be split
> out further with more detailed changelogs if desired.]
> 
> Consoles can have vastly different latencies and throughputs. For
> example, writing a message to the serial console can take on the order
> of tens of milliseconds to get the UART to successfully write a message.
> While this might be fine for a single, one-off message, this can cause
> significant application-level stalls in situations where the kernel
> writes large amounts of information to the console.
> 
> This means that while you might want to send at least INFO level
> messages to (for example) netconsole, which is relatively fast, you may
> only want to send at least WARN level messages to the serial console.
> Such an implementation would permit debugging using the serial console
> in cases that netconsole doesn't receive messages during particularly
> bad system issues, while still keeping the noise low enough to avoid
> inducing latency in userspace applications. This patch adds such an
> interface, extending the existing console loglevel controls to allow
> each console to have its own loglevel.
> 
> One can't just disable the serial console, because one may actually need
> it in situations where the machine is in a bad enough state that nothing
> is received on netconsole. One also can't just bump the loglevel at
> runtime after the issue, because usually the machine is already so
> wedged by this point that it isn't responsive to such requests.
> 
> In terms of technical implementation, this patch embeds a device pointer
> in the console struct, and registers each console using it so we can
> expose attributes in sysfs.
> 
> The lifecycle of this classdev looks like this on registration:
> 
>     register_console(con)/printk_late_init()
>       console_register_device(con)
>         device_initialize(con->classdev) # refcount++
>         device_add(con->classdev)        # refcount++
> 
> At stable state, the refcount is two.
> 
> Console unregistration looks like this:
> 
>     [con->classdev refcount drops to 0]
>         console_classdev_release(con->classdev)
>             kfree(con->classdev)
> 
>     unregister_console(con)
>         device_unregister(con->classdev)
>             device_del(con->classdev) # refcount--
>                 device_remove_class_symlinks()
>                     kernfs_remove_by_name_ns()
>                         kernfs_drain()
>                             kernfs_drain_open_files() # wait for close()
>             put_device(con->classdev) # refcount--
> 
> We also deprecate the kernel.printk sysctl as it doesn't know about
> per-console loglevels, and is generally pretty confusing.
> 
> For information on the precedence and application of the new controls,
> see Documentation/ABI/testing/sysfs-class-console and
> Documentation/admin-guide/per-console-loglevel.rst.
> 
> Signed-off-by: Chris Down <chris@...isdown.name>
> ---
>  Documentation/ABI/testing/sysfs-class-console |  50 +++
>  .../admin-guide/kernel-parameters.txt         |  18 +-
>  .../admin-guide/per-console-loglevel.rst      | 116 ++++++
>  Documentation/admin-guide/serial-console.rst  |  17 +-
>  Documentation/core-api/printk-basics.rst      |  34 +-
>  Documentation/networking/netconsole.rst       |  17 +
>  MAINTAINERS                                   |   3 +
>  include/linux/console.h                       |  23 ++
>  include/linux/kern_levels.h                   |   2 +
>  init/main.c                                   |   2 +-
>  kernel/printk/console_cmdline.h               |   2 +
>  kernel/printk/printk.c                        | 352 ++++++++++++++++--
>  kernel/printk/sysctl.c                        |  95 ++++-
>  13 files changed, 680 insertions(+), 51 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-class-console
>  create mode 100644 Documentation/admin-guide/per-console-loglevel.rst

You forgot what changed from v1 :(

Anyway, the driver model interaction looks good to me, nice work, no
objections at all.

gre gk-h

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ