Miscellaneous timer fixes:
- Fix the arch_inlined_clockevent_set_next_coupled() prototype
in the !CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST case
(Naveen Kumar Chaudhary)
- Fix an off-by-1 bug in the sys_settimeofday() usecs validation
code (Naveen Kumar Chaudhary)
- Mark vdso_k_*_data pointers as __ro_after_init
(Thomas Weißschuh)
- Fix livelock race in tmigr_handle_remote_up()
(Amit Matityahu)
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-----BEGIN PGP SIGNATURE-----
iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmok/CQRHG1pbmdvQGtl
cm5lbC5vcmcACgkQEnMQ0APhK1hpFw//US/OxvhU9WBdRsaULcezejwAkq+bUMHe
hrmGtdHSztO+6SsSMaRei9IaJz3YsZCNOYX2bMO3TwMBTtFBAmq5NVGWT6tYcnam
uHpH7qkt8n2HAsRHprBKzyM4Vo9ecYqVKXwd/lLyZyhs04q6iqmu8A99tIHb4e4C
tsNFxWJfhT+bjR/gwvU7uGSkQ1FUqlVNeRtN939/sPlXsRLKBOCHXTSnZ4JOTfL0
+QLae7LemYDxMT9M4fej3fJjoDGNQM0gb7K7FkOjwOHB8tHw2NJ9lRnD5MMh/oFx
Mq2BDfEQMum+LHjS3A/QhiymQQzbghnb6CVf4ae/hcBEdC7athoxJ1AzRDoqsD/N
EfFMaFVEaD3IZkNvU1u4BYDjQpNnnoK/TnYxa5fDoSD/VjVTknlr7gbfkUsJpwR5
cZ4EPk/zmilOJ8xWYlCJi9NHGMc+zsWT3FNdsOXiBt/GGOcu3lTQr8sjHBjm5cFi
coCbokGi6TRj9PA//oEds2JWTYIqXMADte7bleC0qmTfWPsJSHKECn+uOnUOyvg+
rlI8pRIo8uWo20MPjpwF+P4Dc5XGiR3TpvJ8iuXJvQNObItAjfBnJxbgo5fAM13d
VxfzZV2F++6ua/hsd8luAuMcdrFILTaiOEuXT9uyOPoMoBtORE+0CEQKTOgU0Z4e
rvoO+R992e8=
=Sp9X
-----END PGP SIGNATURE-----
Merge tag 'timers-urgent-2026-06-07' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Ingo Molnar:
- Fix the arch_inlined_clockevent_set_next_coupled() prototype in the
!CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST case (Naveen Kumar Chaudhary)
- Fix an off-by-1 bug in the sys_settimeofday() usecs validation code
(Naveen Kumar Chaudhary)
- Mark vdso_k_*_data pointers as __ro_after_init (Thomas Weißschuh)
- Fix livelock race in tmigr_handle_remote_up() (Amit Matityahu)
* tag 'timers-urgent-2026-06-07' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
timers/migration: Fix livelock in tmigr_handle_remote_up()
vdso/datastore: Mark vdso_k_*_data pointers as __ro_after_init
time: Fix off-by-one in settimeofday() usec validation
clockevents: Fix duplicate type specifier in stub function parameter
This commit is contained in:
commit
09feffa073
4 changed files with 11 additions and 7 deletions
|
|
@ -301,7 +301,7 @@ static int clockevents_program_min_delta(struct clock_event_device *dev)
|
|||
#include <asm/clock_inlined.h>
|
||||
#else
|
||||
static __always_inline void
|
||||
arch_inlined_clockevent_set_next_coupled(u64 u64 cycles, struct clock_event_device *dev) { }
|
||||
arch_inlined_clockevent_set_next_coupled(u64 cycles, struct clock_event_device *dev) { }
|
||||
#endif
|
||||
|
||||
static inline bool clockevent_set_next_coupled(struct clock_event_device *dev, ktime_t expires)
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ SYSCALL_DEFINE2(settimeofday, struct __kernel_old_timeval __user *, tv,
|
|||
get_user(new_ts.tv_nsec, &tv->tv_usec))
|
||||
return -EFAULT;
|
||||
|
||||
if (new_ts.tv_nsec > USEC_PER_SEC || new_ts.tv_nsec < 0)
|
||||
if (new_ts.tv_nsec >= USEC_PER_SEC || new_ts.tv_nsec < 0)
|
||||
return -EINVAL;
|
||||
|
||||
new_ts.tv_nsec *= NSEC_PER_USEC;
|
||||
|
|
|
|||
|
|
@ -978,8 +978,12 @@ static void tmigr_handle_remote_cpu(unsigned int cpu, u64 now,
|
|||
/* Drop the lock to allow the remote CPU to exit idle */
|
||||
raw_spin_unlock_irq(&tmc->lock);
|
||||
|
||||
if (cpu != smp_processor_id())
|
||||
timer_expire_remote(cpu);
|
||||
/*
|
||||
* This can't exclude the local CPU because jiffies might have advanced
|
||||
* after the timer softirq invoked run_timer_base(BASE_GLOBAL) and the
|
||||
* point where the jiffies snapshot @jif was taken in tmigr_handle_remote().
|
||||
*/
|
||||
timer_expire_remote(cpu);
|
||||
|
||||
/*
|
||||
* Lock ordering needs to be preserved - timer_base locks before tmigr
|
||||
|
|
|
|||
|
|
@ -11,21 +11,21 @@
|
|||
static u8 vdso_initdata[VDSO_NR_PAGES * PAGE_SIZE] __aligned(PAGE_SIZE) __initdata = {};
|
||||
|
||||
#ifdef CONFIG_GENERIC_GETTIMEOFDAY
|
||||
struct vdso_time_data *vdso_k_time_data __refdata =
|
||||
struct vdso_time_data *vdso_k_time_data __ro_after_init =
|
||||
(void *)&vdso_initdata[VDSO_TIME_PAGE_OFFSET * PAGE_SIZE];
|
||||
|
||||
static_assert(sizeof(struct vdso_time_data) <= PAGE_SIZE);
|
||||
#endif /* CONFIG_GENERIC_GETTIMEOFDAY */
|
||||
|
||||
#ifdef CONFIG_VDSO_GETRANDOM
|
||||
struct vdso_rng_data *vdso_k_rng_data __refdata =
|
||||
struct vdso_rng_data *vdso_k_rng_data __ro_after_init =
|
||||
(void *)&vdso_initdata[VDSO_RNG_PAGE_OFFSET * PAGE_SIZE];
|
||||
|
||||
static_assert(sizeof(struct vdso_rng_data) <= PAGE_SIZE);
|
||||
#endif /* CONFIG_VDSO_GETRANDOM */
|
||||
|
||||
#ifdef CONFIG_ARCH_HAS_VDSO_ARCH_DATA
|
||||
struct vdso_arch_data *vdso_k_arch_data __refdata =
|
||||
struct vdso_arch_data *vdso_k_arch_data __ro_after_init =
|
||||
(void *)&vdso_initdata[VDSO_ARCH_PAGES_START * PAGE_SIZE];
|
||||
#endif /* CONFIG_ARCH_HAS_VDSO_ARCH_DATA */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue