Thread (16 messages) 16 messages, 4 authors, 2012-06-21

Re: [PATCH] driver core: fix shutdown races with probe/remove(v2)

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2012-06-11 14:16:19
Also in: lkml

On Mon, 11 Jun 2012, Ming Lei wrote:
quoted hunk ↗ jump to hunk
@@ -1820,6 +1833,18 @@ void device_shutdown(void)
 		list_del_init(&dev->kobj.entry);
 		spin_unlock(&devices_kset->list_lock);
 
+		/* hold lock to avoid race with .probe/.release */
+		if (dev->parent && !__try_lock(dev->parent))
+			nonlocked = 2;
+		else if (!__try_lock(dev))
+			nonlocked = 1;
+		else
+			nonlocked = 0;
+
+		if (nonlocked)
+			dev_err(dev, "can't hold %slock for shutdown\n",
+					nonlocked == 1 ? "" : "parent ");
Even if the parent can't be locked, you should still try to lock the 
device.

Alan Stern
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help