Files
android_kernel_xiaomi_sm8450/include/linux
Oleg Nesterov 4d1d61a6b2 genirq: reimplement exit_irq_thread() hook via task_work_add()
exit_irq_thread() and task->irq_thread are needed to handle the unexpected
(and unlikely) exit of irq-thread.

We can use task_work instead and make this all private to
kernel/irq/manage.c, cleanup plus micro-optimization.

1. rename exit_irq_thread() to irq_thread_dtor(), make it
   static, and move it up before irq_thread().

2. change irq_thread() to do task_work_add(irq_thread_dtor)
   at the start and task_work_cancel() before return.

   tracehook_notify_resume() can never play with kthreads,
   only do_exit()->exit_task_work() can call the callback
   and this is what we want.

3. remove task_struct->irq_thread and the special hook
   in do_exit().

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: David Howells <dhowells@redhat.com>
Cc: Richard Kuo <rkuo@codeaurora.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Alexander Gordeev <agordeev@redhat.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: David Smith <dsmith@redhat.com>
Cc: "Frank Ch. Eigler" <fche@redhat.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Larry Woodman <lwoodman@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-05-23 22:11:12 -04:00
..
2012-04-18 13:43:13 -07:00
2012-04-23 14:23:32 +03:00
2011-11-02 16:07:03 -07:00
2012-03-20 21:29:46 -04:00
2012-03-16 20:35:02 +00:00
2012-03-16 20:35:02 +00:00
2012-02-28 16:02:54 +01:00
2012-01-03 22:54:57 -05:00
2011-10-29 21:20:22 +02:00
2012-03-29 15:38:31 +10:30
2012-03-23 16:58:38 -07:00
2011-12-13 09:26:45 +00:00
2012-04-14 15:24:26 -04:00
2012-03-20 21:29:53 -04:00
2012-02-20 19:46:36 +11:00
2012-05-02 14:15:27 -05:00
2011-10-31 20:19:04 +00:00
2011-11-26 14:59:39 -05:00
2012-04-30 15:30:18 -07:00
2011-12-11 18:25:16 -05:00
2012-05-17 15:36:35 -04:00
2012-04-12 12:57:08 +02:00
2012-02-28 17:10:21 +00:00
2012-04-27 10:46:45 +08:00
2012-05-22 11:32:31 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-05-16 15:17:08 -04:00
2012-03-27 22:45:26 -04:00
2012-04-21 16:26:33 -04:00
2012-05-07 10:58:57 -06:00
2012-01-03 22:55:17 -05:00
2012-05-21 21:09:38 +02:00
2012-04-09 11:16:55 -07:00
2012-01-09 13:52:09 +01:00
2012-03-08 10:50:35 -08:00
2012-03-21 17:54:57 -07:00
2012-03-08 10:50:35 -08:00
2012-05-11 10:56:56 +01:00
2012-01-17 15:40:51 -08:00
2011-12-27 11:26:41 +02:00
2012-03-15 21:41:34 +01:00
2012-03-03 15:04:45 -05:00
2012-05-09 13:58:06 -07:00
2012-05-19 02:51:00 -04:00
2012-05-08 20:25:42 +02:00
2012-04-12 15:10:33 -04:00
2012-03-05 15:26:47 -05:00
2012-05-16 15:17:08 -04:00
2012-03-21 17:54:58 -07:00
2012-03-21 17:55:01 -07:00
2012-01-06 12:10:26 -08:00
2012-04-30 14:52:43 -06:00
2012-05-14 14:15:32 -07:00
2012-05-12 15:53:42 -04:00
2011-12-13 09:26:45 +00:00
2011-11-02 16:07:02 -07:00
2012-05-17 08:51:59 -07:00
2012-03-20 21:29:38 -04:00
2012-01-03 22:55:07 -05:00
2012-03-28 18:30:03 +01:00
2012-04-18 15:57:31 -07:00
2012-01-09 09:33:57 +09:00
2012-05-21 23:52:30 -04:00
2012-05-19 18:34:57 -04:00
2012-03-06 11:01:33 +02:00
2012-05-08 12:35:06 +02:00
2012-03-19 16:53:08 -04:00
2012-04-15 12:44:40 -04:00
2011-12-13 09:26:45 +00:00
2012-05-14 18:53:19 -04:00
2011-10-31 17:30:47 -07:00
2012-03-22 19:43:43 -07:00
2012-05-04 16:58:47 -07:00
2012-04-10 22:39:17 -06:00
2011-11-02 16:07:02 -07:00
2012-04-11 09:36:00 +01:00
2012-05-22 12:16:16 +09:30
2012-03-31 08:09:50 +05:30
2012-03-28 18:30:03 +01:00