mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
Fix (well, cut in half) a futex performance regression on PowerPC.
Signed-off-by: Ingo Molnar <mingo@kernel.org> -----BEGIN PGP SIGNATURE----- iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmkPP2YRHG1pbmdvQGtl cm5lbC5vcmcACgkQEnMQ0APhK1hTlg//WBWA4717W46TetZJAYauc1rDeunhwoXQ nVQntZ4/jWrDroWhOC5iElaQGQlO974pEqt+z99IbnIFJ273vwgf03u6txcEOydu 2zmL067IC1TPNyrsnZ+yimeMEkpFKXYg00RhhSLr9HK6YPEbLh/SI8nYqSUvLcaJ eY60Ck8xgGf6oc4atiEPyUz6oX3EcEMVYUMXopsv8KksP6MUzbB6bbRMWklQn03s qFoDfrOF0aBlsMbjS5GsqeTMUTlYs/Py1L2IWMoKbSKhhVsT8eOazJZvcAKPCyhK OWrTZpW0vFcxS0dmLArGOejv8SyZsqQ35yOs5GfTa1qYOiQJ/trfi660tkglvddm DPXC2hPbR3XqLFmTKu1u2oJ46rfHYITWPilE3PfbaKOCVW1QEC2Q8p+cGPswvlFi CH6lU2UiiyiRIkvqGevEjAd9oVGyCQg01Pxce7WDRYmLYoFf3V3xrVwvC3IqoUM8 kLfUAxAGZN0CQFAwaIwi1hWSmCmEaHjIETZ321OsJYGSs/VbkM9TgXTs3J2fkz4i nY4FLCoxAwTvOrk9aW8fBKdGs51pUL/zWA3dGcrz3pJunYWnEiZ2Cvg+fEn6n46m fYT6KjOhqbap6V5Y7W7ny5qKiD3x7rEGX++nWHvL02TsPCe4fC/paob5RL/AmqNA D4S+6mpLwlQ= =ehm1 -----END PGP SIGNATURE----- Merge tag 'locking-urgent-2025-11-08' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull locking fix from Ingo Molnar: "Fix (well, cut in half) a futex performance regression on PowerPC" * tag 'locking-urgent-2025-11-08' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: futex: Optimize per-cpu reference counting
This commit is contained in:
commit
e6f55fe790
|
|
@ -1680,10 +1680,10 @@ static bool futex_ref_get(struct futex_private_hash *fph)
|
|||
{
|
||||
struct mm_struct *mm = fph->mm;
|
||||
|
||||
guard(rcu)();
|
||||
guard(preempt)();
|
||||
|
||||
if (smp_load_acquire(&fph->state) == FR_PERCPU) {
|
||||
this_cpu_inc(*mm->futex_ref);
|
||||
if (READ_ONCE(fph->state) == FR_PERCPU) {
|
||||
__this_cpu_inc(*mm->futex_ref);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1694,10 +1694,10 @@ static bool futex_ref_put(struct futex_private_hash *fph)
|
|||
{
|
||||
struct mm_struct *mm = fph->mm;
|
||||
|
||||
guard(rcu)();
|
||||
guard(preempt)();
|
||||
|
||||
if (smp_load_acquire(&fph->state) == FR_PERCPU) {
|
||||
this_cpu_dec(*mm->futex_ref);
|
||||
if (READ_ONCE(fph->state) == FR_PERCPU) {
|
||||
__this_cpu_dec(*mm->futex_ref);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user