]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/virtio/virtio.c
HID: fix a potential bug in pointer casting
[linux-2.6-omap-h63xx.git] / drivers / virtio / virtio.c
index 15d7787dea876c6548e0319789b0a8325b6a8475..69d7ea02cd489bac96c3e3051678b669547e0211 100644 (file)
@@ -96,10 +96,23 @@ static int virtio_dev_probe(struct device *_d)
        return err;
 }
 
+static int virtio_dev_remove(struct device *_d)
+{
+       struct virtio_device *dev = container_of(_d,struct virtio_device,dev);
+       struct virtio_driver *drv = container_of(dev->dev.driver,
+                                                struct virtio_driver, driver);
+
+       dev->config->set_status(dev, dev->config->get_status(dev)
+                               & ~VIRTIO_CONFIG_S_DRIVER);
+       drv->remove(dev);
+       return 0;
+}
+
 int register_virtio_driver(struct virtio_driver *driver)
 {
        driver->driver.bus = &virtio_bus;
        driver->driver.probe = virtio_dev_probe;
+       driver->driver.remove = virtio_dev_remove;
        return driver_register(&driver->driver);
 }
 EXPORT_SYMBOL_GPL(register_virtio_driver);