sst-linux/mm/kasan
Jared Kangas 74b6d260cb kasan: make report_lock a raw spinlock
[ Upstream commit e30a0361b8515d424c73c67de1a43e45a13b8ba2 ]

If PREEMPT_RT is enabled, report_lock is a sleeping spinlock and must not
be locked when IRQs are disabled.  However, KASAN reports may be triggered
in such contexts.  For example:

        char *s = kzalloc(1, GFP_KERNEL);
        kfree(s);
        local_irq_disable();
        char c = *s;  /* KASAN report here leads to spin_lock() */
        local_irq_enable();

Make report_spinlock a raw spinlock to prevent rescheduling when
PREEMPT_RT is enabled.

Link: https://lkml.kernel.org/r/20241119210234.1602529-1-jkangas@redhat.com
Fixes: 342a93247e ("locking/spinlock: Provide RT variant header: <linux/spinlock_rt.h>")
Signed-off-by: Jared Kangas <jkangas@redhat.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 19:54:50 +01:00
..
common.c kasan: fix Oops due to missing calls to kasan_arch_is_ready() 2023-02-22 12:59:46 +01:00
generic.c kasan: fix Oops due to missing calls to kasan_arch_is_ready() 2023-02-22 12:59:46 +01:00
hw_tags.c kasan: hw_tags: avoid invalid virt_to_page() 2023-05-11 23:03:39 +09:00
init.c kasan: use MAX_PTRS_PER_* for early shadow tables 2021-06-29 10:53:53 -07:00
kasan_test_module.c kasan: move tests to mm/kasan/ 2022-10-03 14:03:02 -07:00
kasan_test.c kasan: remove vmalloc_percpu test 2024-11-08 16:26:46 +01:00
kasan.h kasan: add kasan_tag_mismatch prototype 2023-07-23 13:49:32 +02:00
Makefile kasan: move tests to mm/kasan/ 2022-10-03 14:03:02 -07:00
quarantine.c kasan: give better names to shadow values 2022-05-13 07:20:19 -07:00
report_generic.c kasan: better invalid/double-free report header 2022-10-03 14:03:02 -07:00
report_hw_tags.c kasan: simplify kasan_find_first_bad_addr call sites 2022-03-24 19:06:49 -07:00
report_sw_tags.c kasan: simplify kasan_find_first_bad_addr call sites 2022-03-24 19:06:49 -07:00
report_tags.c kasan: better invalid/double-free report header 2022-10-03 14:03:02 -07:00
report.c kasan: make report_lock a raw spinlock 2024-12-14 19:54:50 +01:00
shadow.c kasan: fix Oops due to missing calls to kasan_arch_is_ready() 2023-02-22 12:59:46 +01:00
sw_tags.c kasan: support kasan.stacktrace for SW_TAGS 2022-10-03 14:03:01 -07:00
tags.c kasan: dynamically allocate stack ring entries 2022-10-03 14:03:02 -07:00