[PATCH] Fix dm9000 release_resource
authorDirk Opfer <Dirk@Opfer-Online.de>
Wed, 6 Sep 2006 17:53:32 +0000 (19:53 +0200)
committerJeff Garzik <jeff@garzik.org>
Mon, 11 Sep 2006 13:08:38 +0000 (09:08 -0400)
dm9000_release_board calls release_resource with the platform resource
instead of the requested resource:

db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
db->addr_req = request_mem_region(db->addr_res->start, i, pdev->name);

dm9000_release_board:

if (db->addr_res != NULL) {
release_resource(db->addr_res);
kfree(db->addr_req);

With this behavior the kernel will crash on the second removal. The
attached patch fix this problem.

Signed-off-by: Dirk Opfer <Dirk@Opfer-Online.de>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/dm9000.c

index 3d76fa144c4f8448eb0dc004a47d0fad3bcee3d5..a860ebbbf815f34d3c70e0c4a0d0096d7e56c261 100644 (file)
@@ -377,8 +377,8 @@ dm9000_release_board(struct platform_device *pdev, struct board_info *db)
                kfree(db->data_req);
        }
 
-       if (db->addr_res != NULL) {
-               release_resource(db->addr_res);
+       if (db->addr_req != NULL) {
+               release_resource(db->addr_req);
                kfree(db->addr_req);
        }
 }