mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-10 15:58:47 +00:00
docs: deprecated.rst: Add BUG()-family
Linus continues to remind[1] people to stop using the BUG()-family of functions. We should have this better documented (even if checkpatch.pl has been warning[2] since 2015), so add more details to deprecated.rst, as a distinct place to point people to for guidance. [1] https://lore.kernel.org/lkml/CAHk-=whDHsbK3HTOpTF=ue_o04onRwTEaK_ZoJp_fjbqq4+=Jw@mail.gmail.com/ [2] https://git.kernel.org/linus/9d3e3c705eb395528fd8f17208c87581b134da48 Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/202003141524.59C619B51A@keescook Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
6735c208c1
commit
7af51678b6
@ -29,6 +29,28 @@ a header file, it isn't the full solution. Such interfaces must either
|
|||||||
be fully removed from the kernel, or added to this file to discourage
|
be fully removed from the kernel, or added to this file to discourage
|
||||||
others from using them in the future.
|
others from using them in the future.
|
||||||
|
|
||||||
|
BUG() and BUG_ON()
|
||||||
|
------------------
|
||||||
|
Use WARN() and WARN_ON() instead, and handle the "impossible"
|
||||||
|
error condition as gracefully as possible. While the BUG()-family
|
||||||
|
of APIs were originally designed to act as an "impossible situation"
|
||||||
|
assert and to kill a kernel thread "safely", they turn out to just be
|
||||||
|
too risky. (e.g. "In what order do locks need to be released? Have
|
||||||
|
various states been restored?") Very commonly, using BUG() will
|
||||||
|
destabilize a system or entirely break it, which makes it impossible
|
||||||
|
to debug or even get viable crash reports. Linus has `very strong
|
||||||
|
<https://lore.kernel.org/lkml/CA+55aFy6jNLsywVYdGp83AMrXBo_P-pkjkphPGrO=82SPKCpLQ@mail.gmail.com/>`_
|
||||||
|
feelings `about this
|
||||||
|
<https://lore.kernel.org/lkml/CAHk-=whDHsbK3HTOpTF=ue_o04onRwTEaK_ZoJp_fjbqq4+=Jw@mail.gmail.com/>`_.
|
||||||
|
|
||||||
|
Note that the WARN()-family should only be used for "expected to
|
||||||
|
be unreachable" situations. If you want to warn about "reachable
|
||||||
|
but undesirable" situations, please use the pr_warn()-family of
|
||||||
|
functions. System owners may have set the *panic_on_warn* sysctl,
|
||||||
|
to make sure their systems do not continue running in the face of
|
||||||
|
"unreachable" conditions. (For example, see commits like `this one
|
||||||
|
<https://git.kernel.org/linus/d4689846881d160a4d12a514e991a740bcb5d65a>`_.)
|
||||||
|
|
||||||
open-coded arithmetic in allocator arguments
|
open-coded arithmetic in allocator arguments
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
Dynamic size calculations (especially multiplication) should not be
|
Dynamic size calculations (especially multiplication) should not be
|
||||||
|
Loading…
x
Reference in New Issue
Block a user