VFIO: use ACCESS_ONCE() to guard access to dev->driver
authorJiang Liu <liuj97@gmail.com>
Fri, 7 Dec 2012 20:43:50 +0000 (13:43 -0700)
committerAlex Williamson <alex.williamson@redhat.com>
Fri, 7 Dec 2012 20:43:50 +0000 (13:43 -0700)
Comments from dev_driver_string(),
/* dev->driver can change to NULL underneath us because of unbinding,
 * so be careful about accessing it.
 */

So use ACCESS_ONCE() to guard access to dev->driver field.

Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/vfio.c

index 3b7fa79..12c264d 100644 (file)
@@ -465,8 +465,9 @@ static int vfio_dev_viable(struct device *dev, void *data)
 {
        struct vfio_group *group = data;
        struct vfio_device *device;
+       struct device_driver *drv = ACCESS_ONCE(dev->driver);
 
-       if (!dev->driver || vfio_whitelisted_driver(dev->driver))
+       if (!drv || vfio_whitelisted_driver(drv))
                return 0;
 
        device = vfio_group_get_device(group, dev);