Merge tag 'uninit-macro-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull uninitialized_var() macro removal from Kees Cook: "This is long overdue, and has hidden too many bugs over the years. The series has several "by hand" fixes, and then a trivial treewide replacement. - Clean up non-trivial uses of uninitialized_var() - Update documentation and checkpatch for uninitialized_var() removal - Treewide removal of uninitialized_var()" * tag 'uninit-macro-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: compiler: Remove uninitialized_var() macro treewide: Remove uninitialized_var() usage checkpatch: Remove awareness of uninitialized_var() macro mm/debug_vm_pgtable: Remove uninitialized_var() usage f2fs: Eliminate usage of uninitialized_var() macro media: sur40: Remove uninitialized_var() usage KVM: PPC: Book3S PR: Remove uninitialized_var() usage clk: spear: Remove uninitialized_var() usage clk: st: Remove uninitialized_var() usage spi: davinci: Remove uninitialized_var() usage ide: Remove uninitialized_var() usage rtlwifi: rtl8192cu: Remove uninitialized_var() usage b43: Remove uninitialized_var() usage drbd: Remove uninitialized_var() usage x86/mm/numa: Remove uninitialized_var() usage docs: deprecated.rst: Add uninitialized_var()
This commit is contained in:
@@ -51,6 +51,24 @@ 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>`_.)
|
||||
|
||||
uninitialized_var()
|
||||
-------------------
|
||||
For any compiler warnings about uninitialized variables, just add
|
||||
an initializer. Using the uninitialized_var() macro (or similar
|
||||
warning-silencing tricks) is dangerous as it papers over `real bugs
|
||||
<https://lore.kernel.org/lkml/20200603174714.192027-1-glider@google.com/>`_
|
||||
(or can in the future), and suppresses unrelated compiler warnings
|
||||
(e.g. "unused variable"). If the compiler thinks it is uninitialized,
|
||||
either simply initialize the variable or make compiler changes. Keep in
|
||||
mind that in most cases, if an initialization is obviously redundant,
|
||||
the compiler's dead-store elimination pass will make sure there are no
|
||||
needless variable writes.
|
||||
|
||||
As Linus has said, this macro
|
||||
`must <https://lore.kernel.org/lkml/CA+55aFw+Vbj0i=1TGqCR5vQkCzWJ0QxK6CernOU6eedsudAixw@mail.gmail.com/>`_
|
||||
`be <https://lore.kernel.org/lkml/CA+55aFwgbgqhbp1fkxvRKEpzyR5J8n1vKT1VZdz9knmPuXhOeg@mail.gmail.com/>`_
|
||||
`removed <https://lore.kernel.org/lkml/CA+55aFz2500WfbKXAx8s67wrm9=yVJu65TpLgN_ybYNv0VEOKA@mail.gmail.com/>`_.
|
||||
|
||||
open-coded arithmetic in allocator arguments
|
||||
--------------------------------------------
|
||||
Dynamic size calculations (especially multiplication) should not be
|
||||
|
Reference in New Issue
Block a user