ARM: vfp: Use vfp_lock() in vfp_entry().
vfp_entry() is invoked from exception handler and is fully preemptible. It uses local_bh_disable() to remain uninterrupted while checking the VFP state. This is not working on PREEMPT_RT because local_bh_disable() synchronizes the relevant section but the context remains fully preemptible. Use vfp_lock() for uninterrupted access. VFP_bounce() is invoked from within vfp_entry() and may send a signal. Sending a signal uses spinlock_t which becomes a sleeping lock on PREEMPT_RT and must not be acquired within a preempt-disabled section. Move the vfp_raise_sigfpe() block outside of the preempt-disabled section. Link: https://lore.kernel.org/r/20230519145731.574867-4-bigeasy@linutronix.de Signed-off-by:Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Loading
Please register or sign in to comment