v4.14.320-rt152-rc1 stable review patch. If anyone has any objections, please let me know. ----------- Commit 095ff4885a17 ("timers: Prepare support for PREEMPT_RT") had references to CONFIG_PREEMPT_RT, that does not exist in v4.14-rt. André Pribil reported that a tcdrain() call from userspace was spinning forever due to an endless loop in del_timer_sync(). He was able to fix the problem by Replacing CONFIG_PREEMPT_RT with CONFIG_PREEMPT_RT_FULL in that code. Reported-by: André Pribil <Andre.Pribil@xxxxxxxxxxxxxxxx> Fixes: 095ff4885a17 ("timers: Prepare support for PREEMPT_RT") Signed-off-by: Luis Claudio R. Goncalves <lgoncalv@xxxxxxxxxx> --- kernel/time/timer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/time/timer.c b/kernel/time/timer.c index a3f229dc75ec..e1b5dfa260a4 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -198,7 +198,7 @@ EXPORT_SYMBOL(jiffies_64); struct timer_base { raw_spinlock_t lock; struct timer_list *running_timer; -#ifdef CONFIG_PREEMPT_RT +#ifdef CONFIG_PREEMPT_RT_FULL spinlock_t expiry_lock; atomic_t timer_waiters; #endif @@ -1207,7 +1207,7 @@ int try_to_del_timer_sync(struct timer_list *timer) } EXPORT_SYMBOL(try_to_del_timer_sync); -#ifdef CONFIG_PREEMPT_RT +#ifdef CONFIG_PREEMPT_RT_FULL static __init void timer_base_init_expiry_lock(struct timer_base *base) { spin_lock_init(&base->expiry_lock); -- 2.41.0