From: Jeff Garzik Date: Sat, 24 Feb 2007 22:02:16 +0000 (-0500) Subject: [netdrvr] tc35815: fix obvious bugs X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=420e85241e41fc84b8f5b26c811beb03c472b679;p=linux-beck.git [netdrvr] tc35815: fix obvious bugs * clear_page() use is wrong. We might have multiple pages. Use memset() instead. * Call pci_unregister_driver() in module exit. Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c index 81ed82f0b520..eae2b63951f1 100644 --- a/drivers/net/tc35815.c +++ b/drivers/net/tc35815.c @@ -657,7 +657,7 @@ tc35815_init_queues(struct net_device *dev) dma_cache_wback_inv((unsigned long)lp->fd_buf, PAGE_SIZE * FD_PAGE_NUM); #endif } else { - clear_page(lp->fd_buf); + memset(lp->fd_buf, 0, PAGE_SIZE * FD_PAGE_NUM); #ifdef __mips__ dma_cache_wback_inv((unsigned long)lp->fd_buf, PAGE_SIZE * FD_PAGE_NUM); #endif @@ -1732,6 +1732,11 @@ static void __exit tc35815_cleanup_module(void) { struct net_device *next_dev; + /* + * TODO: implement a tc35815_driver.remove hook, and + * move this code into that function. Then, delete + * all root_tc35815_dev list handling code. + */ while (root_tc35815_dev) { struct net_device *dev = root_tc35815_dev; next_dev = ((struct tc35815_local *)dev->priv)->next_module; @@ -1740,6 +1745,9 @@ static void __exit tc35815_cleanup_module(void) free_netdev(dev); root_tc35815_dev = next_dev; } + + pci_unregister_driver(&tc35815_driver); } + module_init(tc35815_init_module); module_exit(tc35815_cleanup_module);