Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1490281
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH RT 1/9] timers: wakeup all timer waiters |
| Date | 2016-09-23 17:40 +0200 |
| Message-ID | <skAJY-5CZ-47@gated-at.bofh.it> (permalink) |
| References | <skAAh-5zK-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
3.12.63-rt85-rc2 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
The base lock is dropped during the invocation if the timer. That means
it is possible that we have one waiter while timer1 is running and once
this one finished, we get another waiter while timer2 is running. Since
we wake up only one waiter it is possible that we miss the other one.
This will probably heal itself over time because most of the time we
complete timers without an active wake up.
To avoid the scenario where we don't wake up all waiters at once,
wake_up_all() is used.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/timer.c b/kernel/timer.c
index 400ef0bde253..13d87cffb33e 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1009,7 +1009,7 @@ static void wait_for_running_timer(struct timer_list *timer)
base->running_timer != timer);
}
-# define wakeup_timer_waiters(b) wake_up(&(b)->wait_for_running_timer)
+# define wakeup_timer_waiters(b) wake_up_all(&(b)->wait_for_running_timer)
#else
static inline void wait_for_running_timer(struct timer_list *timer)
{
--
2.8.1
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH RT 0/9] Linux 3.12.63-rt85-rc2 Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:30 +0200 [PATCH RT 8/9] fs/dcache: incremental fixup of the retry routine Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:30 +0200 [PATCH RT 6/9] net: add a lock around icmp_sk() Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:30 +0200 [PATCH RT 4/9] scsi/fcoe: Fix get_cpu()/put_cpu_light() imbalance in fcoe_recv_frame() Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:30 +0200 [PATCH RT 3/9] sched: lazy_preempt: avoid a warning in the !RT case Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:30 +0200 Re: [PATCH RT 0/9] Linux 3.12.63-rt85-rc2 Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:40 +0200 [PATCH RT 2/9] timers: wakeup all timer waiters without holding the base lock Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:40 +0200 [PATCH RT 5/9] net: add back the missing serialization in ip_send_unicast_reply() Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:40 +0200 [PATCH RT 7/9] fs/dcache: resched/chill only if we make no progress Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:40 +0200 [PATCH RT 1/9] timers: wakeup all timer waiters Steven Rostedt <rostedt@goodmis.org> - 2016-09-23 17:40 +0200
csiph-web