]> git.baikalelectronics.ru Git - kernel.git/commit
parisc: Fix flush_dcache_page() for usage from irq context
authorHelge Deller <deller@gmx.de>
Wed, 24 May 2023 15:07:07 +0000 (17:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 May 2023 13:03:18 +0000 (14:03 +0100)
commit1db173a35bc4802de240a11133ba0862489ba8b9
tree89c4d7e175f11380cc8b1a41a0f8f6cdc1da670d
parent7f5b0cb142b0f4faff9e3ce021d1957ea946a180
parisc: Fix flush_dcache_page() for usage from irq context

commit 61e150fb310729c98227a5edf6e4a3619edc3702 upstream.

Since at least kernel 6.1, flush_dcache_page() is called with IRQs
disabled, e.g. from aio_complete().

But the current implementation for flush_dcache_page() on parisc
unintentionally re-enables IRQs, which may lead to deadlocks.

Fix it by using xa_lock_irqsave() and xa_unlock_irqrestore()
for the flush_dcache_mmap_*lock() macros instead.

Cc: linux-parisc@vger.kernel.org
Cc: stable@kernel.org # 5.18+
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/include/asm/cacheflush.h
arch/parisc/kernel/cache.c