]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
blktap/blkback: Tear down sysfs nodes before freeing blkdev structures.
authorkfraser <kfraser@localhost.localdomain>
Mon, 2 Jul 2007 12:05:39 +0000 (13:05 +0100)
committerkfraser <kfraser@localhost.localdomain>
Mon, 2 Jul 2007 12:05:39 +0000 (13:05 +0100)
Signed-off-by: Keir Fraser <keir@xensource.com>
drivers/xen/blkback/xenbus.c
drivers/xen/blktap/xenbus.c

index 9192d57300d8a4170e8162f75f21ee8466d94cca..a9564b996c99d3f1c4f79939feb5dabb24d39c1b 100644 (file)
@@ -173,6 +173,9 @@ static int blkback_remove(struct xenbus_device *dev)
 
        DPRINTK("");
 
+       if (be->major || be->minor)
+               xenvbd_sysfs_delif(dev);
+
        if (be->backend_watch.node) {
                unregister_xenbus_watch(&be->backend_watch);
                kfree(be->backend_watch.node);
@@ -186,9 +189,6 @@ static int blkback_remove(struct xenbus_device *dev)
                be->blkif = NULL;
        }
 
-       if (be->major || be->minor)
-               xenvbd_sysfs_delif(dev);
-
        kfree(be);
        dev->dev.driver_data = NULL;
        return 0;
index 253954a0e4fb9ea1ff74eb99392abc0213f079c7..9c5420c90ab5566134955cd5cfab589efa8065fe 100644 (file)
@@ -170,6 +170,8 @@ static int blktap_remove(struct xenbus_device *dev)
 {
        struct backend_info *be = dev->dev.driver_data;
 
+       if (be->group_added)
+               xentap_sysfs_delif(be->dev);
        if (be->backend_watch.node) {
                unregister_xenbus_watch(&be->backend_watch);
                kfree(be->backend_watch.node);
@@ -182,8 +184,6 @@ static int blktap_remove(struct xenbus_device *dev)
                tap_blkif_free(be->blkif);
                be->blkif = NULL;
        }
-       if (be->group_added)
-               xentap_sysfs_delif(be->dev);
        kfree(be);
        dev->dev.driver_data = NULL;
        return 0;