diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-12-04 18:18:01 -0500 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-12-04 18:18:01 -0500 |
commit | 5c788a695ab5740413d9f9c0035d0d7aeef1c708 (patch) | |
tree | 8cfa260d86f7c122a501e20723394eeef1b8e3f5 /drivers/pci/hotplug | |
parent | f6e1d8cc38b3776038fb15d3acc82ed8bb552f82 (diff) |
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/hotplug')
-rw-r--r-- | drivers/pci/hotplug/ibmphp_hpc.c | 3 |
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) | |||
890 | msleep(POLL_INTERVAL_SEC * 1000); | 890 | msleep(POLL_INTERVAL_SEC * 1000); |
891 | 891 | ||
892 | if (kthread_should_stop()) | 892 | if (kthread_should_stop()) |
893 | break; | 893 | goto out_sleep; |
894 | 894 | ||
895 | down (&semOperations); | 895 | down (&semOperations); |
896 | 896 | ||
@@ -904,6 +904,7 @@ static int poll_hpc(void *data) | |||
904 | /* give up the hardware semaphore */ | 904 | /* give up the hardware semaphore */ |
905 | up (&semOperations); | 905 | up (&semOperations); |
906 | /* sleep for a short time just for good measure */ | 906 | /* sleep for a short time just for good measure */ |
907 | out_sleep: | ||
907 | msleep(100); | 908 | msleep(100); |
908 | } | 909 | } |
909 | up (&sem_exit); | 910 | up (&sem_exit); |