kernel_samsung_a53x/kernel/time
Thomas Gleixner 3c41b7bd0d tick/broadcast: Move per CPU pointer access into the atomic section
commit 6881e75237a84093d0986f56223db3724619f26e upstream.

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
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-23 23:20:28 +01:00
..
alarmtimer.c alarmtimer: Minimize wakeup time 2024-11-19 18:05:33 +01:00
clockevents.c
clocksource.c
hrtimer.c hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range() 2024-11-18 12:13:34 +01:00
itimer.c
jiffies.c
Kconfig
Makefile
namespace.c
ntp.c kernel: time: reduce ntp wakeups 2024-11-19 18:05:11 +01:00
ntp_internal.h
posix-clock.c
posix-cpu-timers.c
posix-stubs.c
posix-timers.c
posix-timers.h
sched_clock.c
test_udelay.c
tick-broadcast-hrtimer.c
tick-broadcast.c tick/broadcast: Move per CPU pointer access into the atomic section 2024-11-23 23:20:28 +01:00
tick-common.c tick/nohz_full: Don't abuse smp_call_function_single() in tick_setup_device() 2024-11-19 14:19:05 +01:00
tick-internal.h
tick-oneshot.c
tick-sched.c
tick-sched.h
time.c
timeconst.bc
timeconv.c
timecounter.c
timekeeping.c timekeeping: Fix cross-timestamp interpolation for non-x86 2024-11-19 08:44:37 +01:00
timekeeping.h
timekeeping_debug.c
timekeeping_internal.h
timer.c timers: Rename del_timer_sync() to timer_delete_sync() 2024-11-19 09:22:14 +01:00
timer_list.c
vsyscall.c