1
0
Fork 0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-01-25 17:53:34 -05:00
No description
Find a file
Marco Elver f1bc96210c kcsan: Make KCSAN compatible with lockdep
We must avoid any recursion into lockdep if KCSAN is enabled on utilities
used by lockdep. One manifestation of this is corruption of lockdep's
IRQ trace state (if TRACE_IRQFLAGS), resulting in spurious warnings
(see below).  This commit fixes this by:

1. Using raw_local_irq{save,restore} in kcsan_setup_watchpoint().
2. Disabling lockdep in kcsan_report().

Tested with:

  CONFIG_LOCKDEP=y
  CONFIG_DEBUG_LOCKDEP=y
  CONFIG_TRACE_IRQFLAGS=y

This fix eliminates spurious warnings such as the following one:

    WARNING: CPU: 0 PID: 2 at kernel/locking/lockdep.c:4406 check_flags.part.0+0x101/0x220
    Modules linked in:
    CPU: 0 PID: 2 Comm: kthreadd Not tainted 5.5.0-rc1+ #11
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:check_flags.part.0+0x101/0x220
    <snip>
    Call Trace:
     lock_is_held_type+0x69/0x150
     freezer_fork+0x20b/0x370
     cgroup_post_fork+0x2c9/0x5c0
     copy_process+0x2675/0x3b40
     _do_fork+0xbe/0xa30
     ? _raw_spin_unlock_irqrestore+0x40/0x50
     ? match_held_lock+0x56/0x250
     ? kthread_park+0xf0/0xf0
     kernel_thread+0xa6/0xd0
     ? kthread_park+0xf0/0xf0
     kthreadd+0x321/0x3d0
     ? kthread_create_on_cpu+0x130/0x130
     ret_from_fork+0x3a/0x50
    irq event stamp: 64
    hardirqs last  enabled at (63): [<ffffffff9a7995d0>] _raw_spin_unlock_irqrestore+0x40/0x50
    hardirqs last disabled at (64): [<ffffffff992a96d2>] kcsan_setup_watchpoint+0x92/0x460
    softirqs last  enabled at (32): [<ffffffff990489b8>] fpu__copy+0xe8/0x470
    softirqs last disabled at (30): [<ffffffff99048939>] fpu__copy+0x69/0x470

Reported-by: Qian Cai <cai@lca.pw>
Signed-off-by: Marco Elver <elver@google.com>
Acked-by: Alexander Potapenko <glider@google.com>
Tested-by: Qian Cai <cai@lca.pw>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2020-03-21 09:41:16 +01:00
arch Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
block block: Fix partition support for host aware zoned block devices 2020-03-12 07:54:39 -06:00
certs
crypto
Documentation Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
drivers Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
fs three small smb3 fixes, 2 for stable 2020-03-19 10:19:11 -07:00
include Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
init Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
ipc
kernel kcsan: Make KCSAN compatible with lockdep 2020-03-21 09:41:16 +01:00
lib kcsan: Rate-limit reporting per data races 2020-03-21 09:40:52 +01:00
LICENSES
mm Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
net taprio: Fix sending packets without dequeueing them 2020-03-12 11:25:08 -07:00
samples
scripts Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
security
sound ALSA: hda/realtek - Enable the headset of Acer N50-600 with ALC662 2020-03-17 18:06:19 +01:00
tools Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
usr initramfs: restore default compression behavior 2020-03-17 09:50:37 +09:00
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
Makefile Merge branch 'linus' into locking/kcsan, to pick up fixes 2020-03-21 09:35:44 +01:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.