aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@virtuousgeek.org>2009-12-04 15:18:01 -0800
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-12-04 15:18:01 -0800
commit5c788a695ab5740413d9f9c0035d0d7aeef1c708 (patch)
tree8cfa260d86f7c122a501e20723394eeef1b8e3f5 /drivers/pci
parentx86/PCI: MMCONFIG: add lookup function (diff)
downloadlinux-dev-5c788a695ab5740413d9f9c0035d0d7aeef1c708.tar.xz
linux-dev-5c788a695ab5740413d9f9c0035d0d7aeef1c708.zip
PCI: ibmphp_hpc: don't release hw sem twice if kthread stops
If we stop the kthread, we may end up up'ing the sem twice, which seems unintended. Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/hotplug/ibmphp_hpc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/pci/hotplug/ibmphp_hpc.c b/drivers/pci/hotplug/ibmphp_hpc.c
index 83f337c891a9..c7084f0eca5a 100644
--- a/drivers/pci/hotplug/ibmphp_hpc.c
+++ b/drivers/pci/hotplug/ibmphp_hpc.c
@@ -890,7 +890,7 @@ static int poll_hpc(void *data)
msleep(POLL_INTERVAL_SEC * 1000);
if (kthread_should_stop())
- break;
+ goto out_sleep;
down (&semOperations);
@@ -904,6 +904,7 @@ static int poll_hpc(void *data)
/* give up the hardware semaphore */
up (&semOperations);
/* sleep for a short time just for good measure */
+out_sleep:
msleep(100);
}
up (&sem_exit);