diff options
Diffstat (limited to 'kernel/irq/manage.c')
| -rw-r--r-- | kernel/irq/manage.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 0e2b179bc7b3..1da999f5e746 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -623,8 +623,9 @@ static irqreturn_t irq_nested_primary_handler(int irq, void *dev_id) | |||
| 623 | 623 | ||
| 624 | static int irq_wait_for_interrupt(struct irqaction *action) | 624 | static int irq_wait_for_interrupt(struct irqaction *action) |
| 625 | { | 625 | { |
| 626 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 627 | |||
| 626 | while (!kthread_should_stop()) { | 628 | while (!kthread_should_stop()) { |
| 627 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 628 | 629 | ||
| 629 | if (test_and_clear_bit(IRQTF_RUNTHREAD, | 630 | if (test_and_clear_bit(IRQTF_RUNTHREAD, |
| 630 | &action->thread_flags)) { | 631 | &action->thread_flags)) { |
| @@ -632,7 +633,9 @@ static int irq_wait_for_interrupt(struct irqaction *action) | |||
| 632 | return 0; | 633 | return 0; |
| 633 | } | 634 | } |
| 634 | schedule(); | 635 | schedule(); |
| 636 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 635 | } | 637 | } |
| 638 | __set_current_state(TASK_RUNNING); | ||
| 636 | return -1; | 639 | return -1; |
| 637 | } | 640 | } |
| 638 | 641 | ||
