Linus Torvalds
2d860ad76f
genirq: prevent wakeup of freed irq thread
...
free_irq() can remove an irqaction while the corresponding interrupt
is in progress, but free_irq() sets action->thread to NULL
unconditionally, which might lead to a NULL pointer dereference in
handle_IRQ_event() when the hard interrupt context tries to wake up
the handler thread.
Prevent this by moving the thread stop after synchronize_irq(). No
need to set action->thread to NULL either as action is going to be
freed anyway.
This fixes a boot crash reported against preempt-rt which uses the
mainline irq threads code to implement full irq threading.
[ tglx: removed local irqthread variable ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2009-08-13 23:09:27 +02:00
..
2009-06-18 13:03:58 -07:00
2009-08-13 23:09:27 +02:00
2009-07-12 12:22:34 -07:00
2009-07-19 17:15:54 +02:00
2009-08-12 18:50:08 +02:00
2009-06-30 18:56:00 -07:00
2009-06-08 12:31:53 -07:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:00:52 -04:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:00:52 -04:00
2009-06-24 00:02:38 -04:00
2009-01-14 14:15:19 +01:00
2009-04-02 19:04:54 -07:00
2008-11-12 17:17:16 -08:00
2009-07-29 19:10:35 -07:00
2009-04-30 19:24:24 +02:00
2008-10-20 08:52:34 -07:00
2009-06-22 21:18:12 -07:00
2009-06-16 19:47:31 -07:00
2008-11-14 10:39:23 +11:00
2009-05-11 08:15:36 +10:00
2008-12-18 13:54:01 +01:00
2009-01-21 18:51:53 +09:00
2008-10-16 11:21:30 -07:00
2009-03-31 23:00:27 -04:00
2009-07-08 09:31:56 -07:00
2009-04-05 11:04:19 -07:00
2009-08-07 10:39:56 -07:00
2009-07-18 14:19:53 +02:00
2009-08-10 15:41:12 +02:00
2009-08-10 20:38:11 +02:00
2009-06-16 19:47:48 -07:00
2009-07-10 17:32:55 +02:00
2009-02-11 11:04:16 +01:00
2009-02-05 13:04:33 +01:00
2009-06-09 22:37:52 +02:00
2008-10-20 08:52:34 -07:00
2008-12-25 09:31:28 +01:00
2009-07-29 19:10:34 -07:00
2009-06-16 19:47:47 -07:00
2009-05-15 07:56:24 -05:00
2009-07-08 09:31:56 -07:00
2009-07-30 16:44:06 -07:00
2009-01-06 10:44:31 -08:00
2009-07-27 12:15:46 -07:00
2009-02-11 10:18:04 +01:00
2009-05-12 19:59:52 +02:00
2009-08-07 11:58:38 +02:00
2009-02-14 23:27:59 +01:00
2009-05-07 11:17:34 +02:00
2009-06-28 11:05:04 -07:00
2008-11-16 09:52:03 +01:00
2009-07-27 12:15:45 -07:00
2009-01-14 18:09:02 +01:00
2009-01-14 18:09:02 +01:00
2009-06-11 17:55:42 +02:00
2009-01-14 18:09:02 +01:00
2008-11-26 08:22:50 +01:00
2009-04-02 19:04:53 -07:00
2009-06-18 13:03:56 -07:00
2009-07-24 15:30:45 -04:00
2009-06-12 21:46:58 +09:30
2009-08-13 16:17:15 +02:00
2009-06-18 13:03:55 -07:00
2009-07-09 17:07:02 +01:00
2008-09-02 19:21:40 -07:00
2009-08-08 18:30:25 +02:00
2009-08-04 10:16:41 +02:00
2009-06-16 11:02:28 -07:00
2009-07-29 19:10:36 -07:00
2009-07-06 13:57:04 -07:00
2009-04-03 12:23:02 +02:00
2009-04-15 13:55:14 -07:00
2008-12-18 21:56:04 +01:00
2009-05-05 20:28:05 +02:00
2009-03-30 22:05:16 +10:30
2009-04-14 11:33:43 +02:00
2009-06-24 15:02:48 +02:00
2009-04-03 12:23:03 +02:00
2009-04-05 11:04:19 -07:00
2009-06-18 13:03:48 -07:00
2009-06-30 18:56:00 -07:00
2009-04-06 11:14:02 +02:00
2009-08-06 05:50:21 +02:00
2009-05-09 10:08:19 +02:00
2009-08-02 14:23:29 +02:00
2009-03-30 22:05:17 +10:30
2009-06-17 18:29:42 +02:00
2009-08-02 14:10:12 +02:00
2009-03-30 17:17:35 -07:00
2009-05-15 15:32:45 +02:00
2009-07-10 10:43:29 +02:00
2009-03-24 23:16:51 +01:00
2009-07-18 14:19:52 +02:00
2009-03-02 15:41:30 -08:00
2009-08-01 11:18:56 -07:00
2009-06-16 19:47:49 -07:00
2009-08-07 10:39:55 -07:00
2009-07-22 17:01:17 +02:00
2009-01-16 14:06:04 +01:00
2009-04-02 19:05:11 -07:00
2008-12-25 11:44:43 +01:00
2009-03-30 22:05:17 +10:30
2009-01-21 16:37:27 +01:00
2009-06-16 19:47:48 -07:00
2009-02-01 01:04:33 -08:00
2009-06-28 11:05:28 -07:00
2009-01-01 10:12:28 +10:30
2009-01-06 15:59:20 -08:00
2009-01-14 14:15:18 +01:00
2009-07-18 23:11:43 +02:00
2009-03-18 19:55:00 +01:00
2009-03-09 08:13:35 -07:00
2009-01-14 14:15:26 +01:00
2009-01-12 16:04:37 +01:00
2009-02-27 16:26:21 -08:00
2009-06-15 21:30:23 -07:00
2009-04-02 19:05:01 -07:00
2009-06-18 13:03:55 -07:00
2009-08-10 14:43:09 +02:00
2009-06-02 01:10:40 +02:00