]> Git Repo - linux.git/commit
sh/intc: Fix race in installing chained IRQ handler
authorThomas Gleixner <[email protected]>
Sun, 21 Jun 2015 18:16:21 +0000 (20:16 +0200)
committerThomas Gleixner <[email protected]>
Thu, 25 Jun 2015 09:57:50 +0000 (11:57 +0200)
commit51b971b1b93ab5d1d2e9205c9752c8ffbbcfe303
treeda82f311d261ec81cf4922e3eeea28ffecc89971
parentbeab99fe835be1d9ef1112dabdae3aa417126430
sh/intc: Fix race in installing chained IRQ handler

Fix a race where a pending interrupt could be received and the handler
called before the handler's data has been setup, by converting to
irq_set_chained_handler_and_data().

Search and conversion was done with coccinelle:

@@
expression E1, E2, E3;
@@
(
-if (irq_set_chained_handler(E1, E3) != 0)
-   BUG();
|
-irq_set_chained_handler(E1, E3);
)
-irq_set_handler_data(E1, E2);
+irq_set_chained_handler_and_data(E1, E3, E2);

@@
expression E1, E2, E3;
@@
(
-if (irq_set_chained_handler(E1, E3) != 0)
-   BUG();
...
|
-irq_set_chained_handler(E1, E3);
...
)
-irq_set_handler_data(E1, E2);
+irq_set_chained_handler_and_data(E1, E3, E2);

Reported-by: Russell King <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: Julia Lawall <[email protected]>
Cc: Simon Horman <[email protected]>
Cc: Magnus Damm <[email protected]>
Cc: [email protected]
drivers/sh/intc/core.c
This page took 0.055249 seconds and 4 git commands to generate.