virtio-mem: factor out fake-offlining into virtio_mem_fake_offline()
[linux-2.6-microblaze.git] / drivers / thunderbolt / icm.c
index 977ba91..82c46b2 100644 (file)
@@ -1976,7 +1976,9 @@ static int complete_rpm(struct device *dev, void *data)
 
 static void remove_unplugged_switch(struct tb_switch *sw)
 {
-       pm_runtime_get_sync(sw->dev.parent);
+       struct device *parent = get_device(sw->dev.parent);
+
+       pm_runtime_get_sync(parent);
 
        /*
         * Signal this and switches below for rpm_complete because
@@ -1987,8 +1989,10 @@ static void remove_unplugged_switch(struct tb_switch *sw)
        bus_for_each_dev(&tb_bus_type, &sw->dev, NULL, complete_rpm);
        tb_switch_remove(sw);
 
-       pm_runtime_mark_last_busy(sw->dev.parent);
-       pm_runtime_put_autosuspend(sw->dev.parent);
+       pm_runtime_mark_last_busy(parent);
+       pm_runtime_put_autosuspend(parent);
+
+       put_device(parent);
 }
 
 static void icm_free_unplugged_children(struct tb_switch *sw)