All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND] driver core: always handle dpm_order
@ 2012-04-23  7:16 Linus Walleij
  2012-04-23 11:47 ` Rafael J. Wysocki
  2012-04-23 15:43 ` Greg Kroah-Hartman
  0 siblings, 2 replies; 9+ messages in thread
From: Linus Walleij @ 2012-04-23  7:16 UTC (permalink / raw)
  To: linux-kernel, Greg Kroah-Hartman, Rafael J. Wysocki
  Cc: Rabin Vincent, Linus Walleij

From: Rabin Vincent <rabin.vincent@stericsson.com>

If !dev->class, device_move() does not respect the dpm_order.
Fix it to do so.

Cc: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
[Fixed a small dangling label compile warning]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/base/core.c |   36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index e28ce98..f428321 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1753,25 +1753,25 @@ int device_move(struct device *dev, struct device *new_parent,
 		set_dev_node(dev, dev_to_node(new_parent));
 	}
 
-	if (!dev->class)
-		goto out_put;
-	error = device_move_class_links(dev, old_parent, new_parent);
-	if (error) {
-		/* We ignore errors on cleanup since we're hosed anyway... */
-		device_move_class_links(dev, new_parent, old_parent);
-		if (!kobject_move(&dev->kobj, &old_parent->kobj)) {
-			if (new_parent)
-				klist_remove(&dev->p->knode_parent);
-			dev->parent = old_parent;
-			if (old_parent) {
-				klist_add_tail(&dev->p->knode_parent,
-					       &old_parent->p->klist_children);
-				set_dev_node(dev, dev_to_node(old_parent));
+	if (dev->class) {
+		error = device_move_class_links(dev, old_parent, new_parent);
+		if (error) {
+			/* We ignore errors on cleanup since we're hosed anyway... */
+			device_move_class_links(dev, new_parent, old_parent);
+			if (!kobject_move(&dev->kobj, &old_parent->kobj)) {
+				if (new_parent)
+					klist_remove(&dev->p->knode_parent);
+				dev->parent = old_parent;
+				if (old_parent) {
+					klist_add_tail(&dev->p->knode_parent,
+						       &old_parent->p->klist_children);
+					set_dev_node(dev, dev_to_node(old_parent));
+				}
 			}
+			cleanup_glue_dir(dev, new_parent_kobj);
+			put_device(new_parent);
+			goto out;
 		}
-		cleanup_glue_dir(dev, new_parent_kobj);
-		put_device(new_parent);
-		goto out;
 	}
 	switch (dpm_order) {
 	case DPM_ORDER_NONE:
@@ -1786,7 +1786,7 @@ int device_move(struct device *dev, struct device *new_parent,
 		device_pm_move_last(dev);
 		break;
 	}
-out_put:
+
 	put_device(old_parent);
 out:
 	device_pm_unlock();
-- 
1.7.9.2


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

end of thread, other threads:[~2012-06-11 16:30 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-23  7:16 [PATCH RESEND] driver core: always handle dpm_order Linus Walleij
2012-04-23 11:47 ` Rafael J. Wysocki
2012-04-23 15:43 ` Greg Kroah-Hartman
2012-04-24 12:11   ` Linus Walleij
2012-04-24 14:36     ` Greg Kroah-Hartman
2012-05-28  6:38       ` Linus Walleij
2012-05-28  7:14         ` Greg Kroah-Hartman
2012-05-28  9:33           ` Linus Walleij
2012-06-11 16:30             ` Linus Walleij

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.