From: Dirk Opfer Date: Wed, 6 Sep 2006 17:53:32 +0000 (+0200) Subject: [PATCH] Fix dm9000 release_resource X-Git-Tag: v2.6.18-rc7~11^2 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=519854876c66bd04b0c12d3cead6e0e5fc5a1167;p=linux-2.6 [PATCH] Fix dm9000 release_resource 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 Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index 3d76fa144c..a860ebbbf8 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c @@ -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); } }