From: Andrew Morton Date: Wed, 28 Mar 2012 12:20:58 +0000 (+0000) Subject: powerpc/eeh: Fix use of set_current_state() in eeh event handling set_current_state... X-Git-Tag: MMI-PSA29.97-13-9~17080^2 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=9b218f63e50e590fe0c7724a0838d7eaa6dae5ce;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git 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 Signed-off-by: Benjamin Herrenschmidt --- diff --git a/arch/powerpc/platforms/pseries/eeh_event.c b/arch/powerpc/platforms/pseries/eeh_event.c index 92dd84c124f1..4cb375c0f8d1 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);