[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] Fix blkback/blktap sysfs read bug.



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.