Thread (5 messages) 5 messages, 2 authors, 2026-02-26

Re: [PATCH v5 1/2] ARM: mm: fault: Enable interrupts before invoking __do_user_fault()

From: "Russell King (Oracle)" <linux@armlinux.org.uk>
Date: 2026-02-26 12:30:07
Also in: linux-rt-devel

On Thu, Feb 26, 2026 at 12:17:41PM +0100, Sebastian Andrzej Siewior wrote:
From: "Yadi.hu" <redacted>

A page fault from userland for a kernel address originates from from
do_sect_fault() (!LPAE) or do_page_fault() and ends in __do_user_fault()
by sending a signal.

Sending a signal requires to acquire sighand_struct::siglock which is a
spinlock_t. On PREEMPT_RT spinlock_t becomes a sleeping spin lock which
requires interrupts to be enabled. Since the calling context is user
land, interrupts must have been enabled so it is fine to enable them in
this case.

Enable interrupts in do_kernel_address_page_fault() unconditional in the
user_mode case().
Enable interrupts in do_sect_fault() if they were previously enabled.

[bigeasy: Initial patch/ report by Yadi. Maintained the patch and redid
          the patch description since]

Signed-off-by: Yadi.hu <redacted>
Acked-by: Linus Walleij <redacted>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Sorry, I've been swamped with stmmac for ages, which has become a
millstone.

I need to push out these patches:

ARM: provide individual is_translation_fault() and is_permission_fault()
ARM: move FSR fault status definitions before fsr_fs()
ARM: use BIT() and GENMASK() for fault status register fields
ARM: move is_permission_fault() and is_translation_fault() to fault.h
ARM: move vmalloc() lazy-page table population
ARM: ensure interrupts are enabled in __do_user_fault()

which will address some of your issues, and clean up the fault handling
code. These patches all date from 5th December. :/

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help