All of lore.kernel.org
 help / color / mirror / Atom feed
* [lm-sensors] [PATCH] x86/hwmon: avoid deadlock on CPU removal in
@ 2010-09-13 10:11 ` Jan Beulich
  0 siblings, 0 replies; 8+ messages in thread
From: Jan Beulich @ 2010-09-13 10:11 UTC (permalink / raw)
  To: khali; +Cc: fenghua.yu, lm-sensors, linux-kernel

pkgtemp_device_remove(), holding the list protecting mutex, calls
pkgtemp_device_add(), which itself wants to acquire the same mutex.
Holding the mutex over the entire loop body in pkgtemp_device_remove()
isn't really necessary, as long as the loop gets exited after
processing the matched CPU.

Once exiting the loop after removing an eventual match, there's no
need for using the "safe" list iterator anymore.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>

---
 drivers/hwmon/pkgtemp.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- linux-2.6.36-rc4/drivers/hwmon/pkgtemp.c	2010-09-13 08:45:03.000000000 +0200
+++ 2.6.36-rc4-x86-pkgtemp-remove-deadlock/drivers/hwmon/pkgtemp.c	2010-09-03 17:54:30.000000000 +0200
@@ -339,17 +339,18 @@ exit:
 #ifdef CONFIG_HOTPLUG_CPU
 static void pkgtemp_device_remove(unsigned int cpu)
 {
-	struct pdev_entry *p, *n;
+	struct pdev_entry *p;
 	unsigned int i;
 	int err;
 
 	mutex_lock(&pdev_list_mutex);
-	list_for_each_entry_safe(p, n, &pdev_list, list) {
+	list_for_each_entry(p, &pdev_list, list) {
 		if (p->cpu != cpu)
 			continue;
 
 		platform_device_unregister(p->pdev);
 		list_del(&p->list);
+		mutex_unlock(&pdev_list_mutex);
 		kfree(p);
 		for_each_cpu(i, cpu_core_mask(cpu)) {
 			if (i != cpu) {
@@ -358,7 +359,7 @@ static void pkgtemp_device_remove(unsign
 					break;
 			}
 		}
-		break;
+		return;
 	}
 	mutex_unlock(&pdev_list_mutex);
 }




_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-09-15  7:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-13 10:11 [lm-sensors] [PATCH] x86/hwmon: avoid deadlock on CPU removal in Jan Beulich
2010-09-13 10:11 ` [PATCH] x86/hwmon: avoid deadlock on CPU removal in pkgtemp Jan Beulich
2010-09-15  0:13 ` [lm-sensors] [PATCH] x86/hwmon: avoid deadlock on CPU removal Fenghua Yu
2010-09-15  0:13   ` [PATCH] x86/hwmon: avoid deadlock on CPU removal in pkgtemp Fenghua Yu
2010-09-15  1:59   ` [lm-sensors] [PATCH] x86/hwmon: avoid deadlock on CPU removal Guenter Roeck
2010-09-15  1:59     ` [lm-sensors] [PATCH] x86/hwmon: avoid deadlock on CPU removal in pkgtemp Guenter Roeck
2010-09-15  7:35   ` [lm-sensors] [PATCH] x86/hwmon: avoid deadlock on CPU removal Jan Beulich
2010-09-15  7:35     ` [PATCH] x86/hwmon: avoid deadlock on CPU removal in pkgtemp Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.