Amiga zorro bus: Add missing zorro_device_remove()
authorGeert Uytterhoeven <geert@linux-m68k.org>
Sun, 18 Nov 2007 10:10:04 +0000 (11:10 +0100)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 27 Nov 2007 03:15:31 +0000 (19:15 -0800)
Amiga zorro bus: Add missing zorro_device_remove(). Without this ifconfig and
/proc/net/dev oops after unloading a Zorro network device driver module.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/zorro/zorro-driver.c

index 067c07be928ce3a27512731799b14081a8cbd272..e6c4390d8bd68ff5df14056e1decb13c2435f88d 100644 (file)
@@ -60,6 +60,20 @@ static int zorro_device_probe(struct device *dev)
 }
 
 
+static int zorro_device_remove(struct device *dev)
+{
+       struct zorro_dev *z = to_zorro_dev(dev);
+       struct zorro_driver *drv = to_zorro_driver(dev->driver);
+
+       if (drv) {
+               if (drv->remove)
+                       drv->remove(z);
+               z->driver = NULL;
+       }
+       return 0;
+}
+
+
     /**
      *  zorro_register_driver - register a new Zorro driver
      *  @drv: the driver structure to register
@@ -128,6 +142,7 @@ struct bus_type zorro_bus_type = {
        .name   = "zorro",
        .match  = zorro_bus_match,
        .probe  = zorro_device_probe,
+       .remove = zorro_device_remove,
 };