All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Kees Cook <keescook@chromium.org>,
	Christophe Leroy <christophe.leroy@c-s.fr>,
	Drew Davenport <ddavenport@chromium.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	Feng Tang <feng.tang@intel.com>, Petr Mladek <pmladek@suse.com>,
	Mauro Carvalho Chehab <mchehab+samsung@kernel.org>,
	Borislav Petkov <bp@suse.de>, YueHaibing <yuehaibing@huawei.com>,
	linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 0/7] Clean up WARN() "cut here" handling
Date: Mon, 19 Aug 2019 16:41:04 -0700	[thread overview]
Message-ID: <20190819234111.9019-1-keescook@chromium.org> (raw)

Christophe Leroy noticed that the fix for missing "cut here" in the
WARN() case was adding explicit printk() calls instead of teaching the
exception handler to add it. This refactors the bug/warn infrastructure
to pass this information as a new BUGFLAG.

Longer details repeated from the last patch in the series:


bug: Move WARN_ON() "cut here" into exception handler

The original clean up of "cut here" missed the WARN_ON() case (that
does not have a printk message), which was fixed recently by adding
an explicit printk of "cut here". This had the downside of adding a
printk() to every WARN_ON() caller, which reduces the utility of using
an instruction exception to streamline the resulting code. By making
this a new BUGFLAG, all of these can be removed and "cut here" can be
handled by the exception handler.

This was very pronounced on PowerPC, but the effect can be seen on
x86 as well. The resulting text size of a defconfig build shows some
small savings from this patch:

   text    data     bss     dec     hex filename
19691167        5134320 1646664 26472151        193eed7 vmlinux.before
19676362        5134260 1663048 26473670        193f4c6 vmlinux.after

This change also opens the door for creating something like BUG_MSG(),
where a custom printk() before issuing BUG(), without confusing the "cut
here" line.

Reported-by: Christophe Leroy <christophe.leroy@c-s.fr>
Fixes: Fixes: 6b15f678fb7d ("include/asm-generic/bug.h: fix "cut here" for WARN_ON for __WARN_TAINT architectures")
Signed-off-by: Kees Cook <keescook@chromium.org>


-Kees

Kees Cook (7):
  bug: Refactor away warn_slowpath_fmt_taint()
  bug: Rename __WARN_printf_taint() to __WARN_printf()
  bug: Consolidate warn_slowpath_fmt() usage
  bug: Lift "cut here" out of __warn()
  bug: Clean up helper macros to remove __WARN_TAINT()
  bug: Consolidate __WARN_FLAGS usage
  bug: Move WARN_ON() "cut here" into exception handler

 include/asm-generic/bug.h | 53 ++++++++++++++++-----------------------
 kernel/panic.c            | 34 ++++++++-----------------
 lib/bug.c                 | 11 ++++++--
 3 files changed, 40 insertions(+), 58 deletions(-)

-- 
2.17.1


             reply	other threads:[~2019-08-19 23:41 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-19 23:41 Kees Cook [this message]
2019-08-19 23:41 ` [PATCH 1/7] bug: Refactor away warn_slowpath_fmt_taint() Kees Cook
2019-08-19 23:41 ` [PATCH 2/7] bug: Rename __WARN_printf_taint() to __WARN_printf() Kees Cook
2019-08-19 23:41 ` [PATCH 3/7] bug: Consolidate warn_slowpath_fmt() usage Kees Cook
2019-08-19 23:41 ` [PATCH 4/7] bug: Lift "cut here" out of __warn() Kees Cook
2019-08-19 23:41 ` [PATCH 5/7] bug: Clean up helper macros to remove __WARN_TAINT() Kees Cook
2019-08-19 23:41 ` [PATCH 6/7] bug: Consolidate __WARN_FLAGS usage Kees Cook
2019-08-19 23:41 ` [PATCH 7/7] bug: Move WARN_ON() "cut here" into exception handler Kees Cook
2019-08-20 10:06   ` Peter Zijlstra
2019-08-20 10:58     ` Christophe Leroy
2019-08-20 16:33       ` Kees Cook
2019-08-21  0:50         ` Steven Rostedt
2019-08-21  1:14       ` Steven Rostedt
2019-08-24 17:17         ` Kees Cook

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190819234111.9019-1-keescook@chromium.org \
    --to=keescook@chromium.org \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=bp@suse.de \
    --cc=christophe.leroy@c-s.fr \
    --cc=ddavenport@chromium.org \
    --cc=feng.tang@intel.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchehab+samsung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=yuehaibing@huawei.com \
    --subject='Re: [PATCH 0/7] Clean up WARN() "cut here" handling' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.