diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2012-03-28 12:20:58 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-02 14:31:19 +1000 |
commit | 9b218f63e50e590fe0c7724a0838d7eaa6dae5ce (patch) | |
tree | 2879a705de175bc7e956d90d72dee2bf1c38499c | |
parent | 37ef9bd48af6ab9a3d1fd28df4f929abc19f2cc3 (diff) | |
download | op-kernel-dev-9b218f63e50e590fe0c7724a0838d7eaa6dae5ce.zip op-kernel-dev-9b218f63e50e590fe0c7724a0838d7eaa6dae5ce.tar.gz |
powerpc/eeh: Fix use of set_current_state() in eeh event handling set_current_state() wart
That set_current_state() won't work very well: the subsequent mutex_lock()
might flip the task back into TASK_RUNNING.
Attempt to put it somewhere where it might have been meant to be, and
attempt to describe why it might have been added.
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh_event.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh_event.c b/arch/powerpc/platforms/pseries/eeh_event.c index 92dd84c..4cb375c 100644 --- a/arch/powerpc/platforms/pseries/eeh_event.c +++ b/arch/powerpc/platforms/pseries/eeh_event.c @@ -60,7 +60,6 @@ static int eeh_event_handler(void * dummy) struct eeh_dev *edev; set_task_comm(current, "eehd"); - set_current_state(TASK_INTERRUPTIBLE); spin_lock_irqsave(&eeh_eventlist_lock, flags); event = NULL; @@ -83,6 +82,7 @@ static int eeh_event_handler(void * dummy) printk(KERN_INFO "EEH: Detected PCI bus error on device %s\n", eeh_pci_name(edev->pdev)); + set_current_state(TASK_INTERRUPTIBLE); /* Don't add to load average */ edev = handle_eeh_events(event); eeh_clear_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING); |