printk: nbcon: Add buffer management
authorThomas Gleixner <tglx@linutronix.de>
Sat, 16 Sep 2023 19:20:03 +0000 (21:26 +0206)
committerPetr Mladek <pmladek@suse.com>
Mon, 18 Sep 2023 15:03:45 +0000 (17:03 +0200)
commit5634c90fd8553de7cbafecd048d0273690a2e84e
treec5c9c0698e4b3a1d727fb8cc6067169aa89cebff
parentd818b56f77521ecc5e3eda71dc9b2beb3d6681e3
printk: nbcon: Add buffer management

In case of hostile takeovers it must be ensured that the previous
owner cannot scribble over the output buffer of the emergency/panic
context. This is achieved by:

 - Adding a global output buffer instance for the panic context.
   This is the only situation where hostile takeovers can occur and
   there is always at most 1 panic context.

 - Allocating an output buffer per non-boot console upon console
   registration. This buffer is used by the console owner when not
   in panic context. (For boot consoles, the existing shared global
   legacy output buffer is used instead. Boot console printing will
   be synchronized with legacy console printing.)

 - Choosing the appropriate buffer is handled in the acquire/release
   functions.

Co-developed-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: Thomas Gleixner (Intel) <tglx@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20230916192007.608398-5-john.ogness@linutronix.de
include/linux/console.h
kernel/printk/internal.h
kernel/printk/nbcon.c
kernel/printk/printk.c