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

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



>>> "Joe Jin" <joe.jin@xxxxxxxxxx> 20.01.10 03:06 >>>
>sysfs did not provide lock to handle this, not sure if developer
>think it is not necessary or they'd like to caller to handled it.

A lock is probably not the usual way to deal with this; ref-counting
would seem more common. Nevertheless I think adding a lock will
take care of the issue here.

>--- a/drivers/xen/blktap/xenbus.c      Fri Jan 08 13:07:17 2010 +0000
>+++ b/drivers/xen/blktap/xenbus.c      Wed Jan 20 10:00:53 2010 +0800
>...
>@@ -122,10 +123,15 @@
>                                  struct device_attribute *attr,       \
>                                  char *buf)                           \
>       {                                                               \
>+              ssize_t ret = -ENODEV;                                  \
>               struct xenbus_device *dev = to_xenbus_device(_dev);     \

The use of to_xenbus_device() here makes ...

>-              struct backend_info *be = dev->dev.driver_data;         \
>+              struct backend_info *be;                                \
>                                                                       \
>-              return sprintf(buf, format, ##args);                    \
>+              read_lock(&sysfs_read_lock);                            \
>+              if (dev && (be = dev->dev.driver_data) && be->blkif)    \

... the checking of dev here useless (and the blkback part of the patch
doesn't do the same).

>+                      ret = sprintf(buf, format, ##args);             \
>+              read_unlock(&sysfs_read_lock);                          \
>+              return ret;                                             \
>       }                                                               \
>       static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL)
> 

And btw., in both cases with the lock added there's no need to check
both 'be' and 'be->blkif', since be->blkif can't be NULL when be is
non-NULL.

Jan


_______________________________________________
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®.