In an rt-kernel with CONFIG_MISSED_TIMER_OFFSETS_HIST enabled, __hrtimer_start_range_ns() now crashes, as new_base is not assigned before it is used. Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> Tested-by: Carsten Emde <C.Emde@xxxxxxxxx> Cc: stable-rt@xxxxxxxxxxxxxxx --- --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c @@ -1106,6 +1106,11 @@ int __hrtimer_start_range_ns(struct hrti #endif } + hrtimer_set_expires_range_ns(timer, tim, delta_ns); + + /* Switch the timer base, if necessary: */ + new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED); + #ifdef CONFIG_MISSED_TIMER_OFFSETS_HIST { ktime_t now = new_base->get_time(); @@ -1117,11 +1122,6 @@ int __hrtimer_start_range_ns(struct hrti } #endif - hrtimer_set_expires_range_ns(timer, tim, delta_ns); - - /* Switch the timer base, if necessary: */ - new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED); - timer_stats_hrtimer_set_start_info(timer); leftmost = enqueue_hrtimer(timer, new_base);
Attachment:
signature.asc
Description: This is a digitally signed message part