]> www.infradead.org Git - users/dwmw2/linux.git/commit
tick/broadcast: Move per CPU pointer access into the atomic section
authorThomas Gleixner <tglx@linutronix.de>
Wed, 31 Jul 2024 10:23:51 +0000 (12:23 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 31 Jul 2024 10:37:43 +0000 (12:37 +0200)
commit6881e75237a84093d0986f56223db3724619f26e
tree7c26f5503345ef2af599e60b7c173dd925a35c8c
parent8400291e289ee6b2bf9779ff1c83a291501f017b
tick/broadcast: Move per CPU pointer access into the atomic section

The recent fix for making the take over of the broadcast timer more
reliable retrieves a per CPU pointer in preemptible context.

This went unnoticed as compilers hoist the access into the non-preemptible
region where the pointer is actually used. But of course it's valid that
the compiler keeps it at the place where the code puts it which rightfully
triggers:

  BUG: using smp_processor_id() in preemptible [00000000] code:
       caller is hotplug_cpu__broadcast_tick_pull+0x1c/0xc0

Move it to the actual usage site which is in a non-preemptible region.

Fixes: f7d43dd206e7 ("tick/broadcast: Make takeover of broadcast hrtimer reliable")
Reported-by: David Wang <00107082@163.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Yu Liao <liaoyu15@huawei.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/87ttg56ers.ffs@tglx
kernel/time/tick-broadcast.c