summaryrefslogtreecommitdiff
blob: 7c5899de17c8de26239a577d63dc0e784df219e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# HG changeset 80 patch
# User kfraser@localhost.localdomain
# Date 1183377939 -3600
# Node ID 4a284f968015fa4cd50d9d4c7695534c87c7bce6
# Parent  57ab8dd47580c2f726556fe1c46b5401f2bddb1e
Subject: blktap/blkback: Tear down sysfs nodes before freeing blkdev structures.
Signed-off-by: Keir Fraser <keir@xensource.com>

Acked-by: jbeulich@novell.com

---
 drivers/xen/blkback/xenbus.c |    6 +++---
 drivers/xen/blktap/xenbus.c  |    4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

--- a/drivers/xen/blkback/xenbus.c	2007-08-27 14:01:25.000000000 -0400
+++ b/drivers/xen/blkback/xenbus.c	2007-08-27 14:01:50.000000000 -0400
@@ -173,6 +173,9 @@ static int blkback_remove(struct xenbus_
 
 	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_
 		be->blkif = NULL;
 	}
 
-	if (be->major || be->minor)
-		xenvbd_sysfs_delif(dev);
-
 	kfree(be);
 	dev->dev.driver_data = NULL;
 	return 0;
--- a/drivers/xen/blktap/xenbus.c	2007-08-27 14:01:25.000000000 -0400
+++ b/drivers/xen/blktap/xenbus.c	2007-08-27 14:01:50.000000000 -0400
@@ -168,6 +168,8 @@ static int blktap_remove(struct xenbus_d
 {
 	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);
@@ -180,8 +182,6 @@ static int blktap_remove(struct xenbus_d
 		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;