From: Andrew Morton <akpm@osdl.org>
Date: Sun, 30 Oct 2005 23:02:24 +0000 (-0800)
Subject: [PATCH] add_timer() of a pending timer is illegal
X-Git-Tag: firefly_0821_release~39876^2~72^2~92
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=15d2bace5ec907530a3d0e0cf4bb1bd29f3ad7b7;p=firefly-linux-kernel-4.4.55.git

[PATCH] add_timer() of a pending timer is illegal

In the recent timer rework we lost the check for an add_timer() of an
already-pending timer.  That check was useful for networking, so put it back.

Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---

diff --git a/include/linux/timer.h b/include/linux/timer.h
index b1dc583bb4d4..72f3a7781106 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -78,8 +78,9 @@ extern unsigned long next_timer_interrupt(void);
  * Timers with an ->expired field in the past will be executed in the next
  * timer tick.
  */
-static inline void add_timer(struct timer_list * timer)
+static inline void add_timer(struct timer_list *timer)
 {
+	BUG_ON(timer_pending(timer));
 	__mod_timer(timer, timer->expires);
 }