]> git.ipfire.org Git - thirdparty/linux.git/commit
rseq: Protect event mask against membarrier IPI
authorThomas Gleixner <tglx@linutronix.de>
Wed, 13 Aug 2025 15:02:30 +0000 (17:02 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sat, 13 Sep 2025 17:51:59 +0000 (19:51 +0200)
commit6eb350a2233100a283f882c023e5ad426d0ed63b
treedb0fedfe420652a4ad1fd85fe69dfafb71a930db
parent76eeb9b8de9880ca38696b2fb56ac45ac0a25c6c
rseq: Protect event mask against membarrier IPI

rseq_need_restart() reads and clears task::rseq_event_mask with preemption
disabled to guard against the scheduler.

But membarrier() uses an IPI and sets the PREEMPT bit in the event mask
from the IPI, which leaves that RMW operation unprotected.

Use guard(irq) if CONFIG_MEMBARRIER is enabled to fix that.

Fixes: 2a36ab717e8f ("rseq/membarrier: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: stable@vger.kernel.org
include/linux/rseq.h
kernel/rseq.c