Re: possible bug in net/tc35815.c in linux-2.6.19
From: Ralf Baechle <hidden>
Date: 2007-02-26 10:28:06
Also in:
linux-mips
On Sat, Feb 24, 2007 at 05:04:01PM -0500, Jeff Garzik wrote:
quoted
quoted
I am a graduate student working on finding bugs in Linux drivers using an automated research tool. I think I've found a possible bug in net/tc35815.c, and I'd appreciate it if you could confirm/disconfirm it. Thanks, Philip --- net/tc35815.c tc35815_driver is never unregistered in tc35815_cleanup_module() static int __init tc35815_init_module(void) { return pci_register_driver(&tc35815_driver); } static void __exit tc35815_cleanup_module(void) { struct net_device *next_dev; while (root_tc35815_dev) { struct net_device *dev = root_tc35815_dev; next_dev = ((struct tc35815_local *)dev->priv)->next_module; iounmap((void *)(dev->base_addr)); unregister_netdev(dev); free_netdev(dev); root_tc35815_dev = next_dev; } }I think that you are right, but I don't know this code. Jeff, what do you think about this? Regards, MichalI created my own patch for this (and one other bug), and checked it in. Really, though, someone in MIPS-land should give this driver some loving care. It is filled with bugs and 2.4-era anachronisms.
Took a look at it. It's sort of a non-bug because the driver cannot be compiled as module, so the module_exit function cannot possibly be executed. The board support code is calling into the driver which makes it impossible to build this driver as a module, yet it's possible to select building this driver as a module ... Oh yeah, that root_tc35815_dev stuff is also pretty ugly. Atsushi? Ralf