Hi,
At backend driver blkback and blktap, when checking statistics information,
at the time vbd device remove, kernel will crash.
Below patch will fix it, please review and apply.
Signed-off-by: Joe Jin <joe.jin@xxxxxxxxxx>
blkback/xenbus.c | 5 ++++-
blktap/xenbus.c | 5 ++++-
2 files changed, 8 insertions(+), 2 deletions(-)
---
diff -r 6061d5615522 drivers/xen/blkback/xenbus.c
--- a/drivers/xen/blkback/xenbus.c Fri Jan 08 13:07:17 2010 +0000
+++ b/drivers/xen/blkback/xenbus.c Tue Jan 19 17:37:32 2010 +0800
@@ -104,10 +104,13 @@
struct device_attribute *attr, \
char *buf) \
{ \
+ ssize_t ret = -ENODEV; \
struct xenbus_device *dev = to_xenbus_device(_dev); \
struct backend_info *be = dev->dev.driver_data; \
\
- return sprintf(buf, format, ##args); \
+ if (be && be->blkif) \
+ ret = sprintf(buf, format, ##args); \
+ return ret; \
} \
static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL)
diff -r 6061d5615522 drivers/xen/blktap/xenbus.c
--- a/drivers/xen/blktap/xenbus.c Fri Jan 08 13:07:17 2010 +0000
+++ b/drivers/xen/blktap/xenbus.c Tue Jan 19 17:37:32 2010 +0800
@@ -122,10 +122,13 @@
struct device_attribute *attr, \
char *buf) \
{ \
+ ssize_t ret = -ENODEV; \
struct xenbus_device *dev = to_xenbus_device(_dev); \
struct backend_info *be = dev->dev.driver_data; \
\
- return sprintf(buf, format, ##args); \
+ if (be && be->blkif) \
+ ret = sprintf(buf, format, ##args); \
+ return ret; \
} \
static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|