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-next>] [day] [month] [year] [list]
Message-ID: <20201012144916.GB10602@alley>
Date:   Mon, 12 Oct 2020 16:49:16 +0200
From:   Petr Mladek <pmladek@...e.com>
To:     Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     Sergey Senozhatsky <sergey.senozhatsky@...il.com>,
        Steven Rostedt <rostedt@...dmis.org>,
        John Ogness <john.ogness@...utronix.de>,
        Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
        Rasmus Villemoes <linux@...musvillemoes.dk>,
        Peter Zijlstra <peterz@...radead.org>,
        linux-kernel@...r.kernel.org,
        Daniel Thompson <daniel.thompson@...aro.org>
Subject: [GIT PULL] printk for 5.10 (includes lockless ringbuffer)

Linus,

please pull the latest printk changes from

  git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux tags/printk-for-5.10

============================

- Fully lockless ringbuffer implementation, including the support for
  continuous lines. It will allow to store and read messages in any
  situation wihtout the risk of deadlocks and without the need
  of temporary per-CPU buffers.

  The access is still serialized by logbuf_lock. It synchronizes few more
  operations, for example, temporary buffer for formatting the message,
  syslog and kmsg_dump operations. The lock removal is being discussed
  and should be ready for the next release.

  The continuous lines are handled exactly the same way as before
  to avoid regressions in user space. It means that they are appended
  to the last message when the caller is the same. Only the last
  message can be extended.

  The data ring includes plain text of the messages. Except for
  an integer at the beginning of each message that points back
  to the descriptor ring with other metadata.

  The dictionary has to stay. journalctl uses it to filter the log.
  It allows to show messages related to a given device. The dictionary
  values are stored in the descriptor ring with the other metadata.

  This is the first part of the printk rework as discussed at Plumbers 2019,
  see https://lore.kernel.org/r/87k1acz5rx.fsf@linutronix.de. The next
  big step will be handling consoles by kthreads during the normal
  system operation. It will require special handling of situations
  when the kthreads could not get scheduled, for example, early boot,
  suspend, panic.


Other changes:

+ Add John Ogness as a reviewer for printk subsystem. He is author of
  the rework and is familiar with the code and history.

+ Fix locking in serial8250_do_startup() to prevent lockdep report.

+ Few code cleanups.


=========================

The fully lockless ringbuffer code has been tested in linux-next
since Jul 10. The pr_cont() handling has been pushed in Sep 15.
I am not aware of any regression at the moment. But of course,
there will be some. And we are ready to work on the fixes.

----------------------------------------------------------------
Andy Shevchenko (1):
      kernel.h: Move oops_in_progress to printk.h

Gustavo A. R. Silva (1):
      printk: Use fallthrough pseudo-keyword

John Ogness (22):
      crash: add VMCOREINFO macro to define offset in a struct declared by typedef
      printk: add lockless ringbuffer
      Revert "printk: lock/unlock console only for new logbuf entries"
      printk: use the lockless ringbuffer
      printk: ringbuffer: support dataless records
      printk: reduce LOG_BUF_SHIFT range for H8300
      docs: vmcoreinfo: add lockless printk ringbuffer vmcoreinfo
      scripts/gdb: add utils.read_ulong()
      scripts/gdb: update for lockless printk ringbuffer
      printk: ringbuffer: fix setting state in desc_read()
      printk: ringbuffer: avoid memcpy() on state_var
      printk: ringbuffer: relocate get_data()
      printk: ringbuffer: add BLK_DATALESS() macro
      printk: ringbuffer: clear initial reserved fields
      printk: ringbuffer: change representation of states
      printk: ringbuffer: add finalization/extension support
      printk: reimplement log_cont using record extension
      printk: move printk_info into separate array
      printk: move dictionary keys to dev_printk_info
      printk: remove dict ring
      printk: avoid and/or handle record truncation
      printk: reduce setup_text_buf size to LOG_LINE_MAX

Petr Mladek (2):
      MAINTAIERS: Add John Ogness as printk reviewer
      Merge branch 'printk-rework' into for-linus

Randy Dunlap (1):
      kernel: printk: delete repeated words in comments

Sergey Senozhatsky (1):
      serial: 8250: change lock order in serial8250_do_startup()

 Documentation/admin-guide/kdump/gdbmacros.txt  |  159 +-
 Documentation/admin-guide/kdump/vmcoreinfo.rst |  131 +-
 MAINTAINERS                                    |    1 +
 drivers/base/core.c                            |   46 +-
 drivers/tty/serial/8250/8250_port.c            |    9 +-
 include/linux/crash_core.h                     |    3 +
 include/linux/debug_locks.h                    |    2 +-
 include/linux/dev_printk.h                     |    8 +
 include/linux/kernel.h                         |    1 -
 include/linux/printk.h                         |    8 +-
 init/Kconfig                                   |    3 +-
 kernel/printk/Makefile                         |    1 +
 kernel/printk/internal.h                       |    4 +-
 kernel/printk/printk.c                         | 1153 +++++++------
 kernel/printk/printk_ringbuffer.c              | 2083 ++++++++++++++++++++++++
 kernel/printk/printk_ringbuffer.h              |  382 +++++
 kernel/printk/printk_safe.c                    |    2 +-
 scripts/gdb/linux/dmesg.py                     |  147 +-
 scripts/gdb/linux/utils.py                     |    7 +
 19 files changed, 3416 insertions(+), 734 deletions(-)
 create mode 100644 kernel/printk/printk_ringbuffer.c
 create mode 100644 kernel/printk/printk_ringbuffer.h

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ