From: Adam Belay The serial driver currently fails to unregister its pnp driver upon module unload. This patch corrects the problem by calling pnp_unregister_driver and implementing a proper remove function. --- drivers/serial/8250_pnp.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff -puN drivers/serial/8250_pnp.c~pnp-8250_pnp-fix drivers/serial/8250_pnp.c --- 25/drivers/serial/8250_pnp.c~pnp-8250_pnp-fix 2004-01-29 22:40:18.000000000 -0800 +++ 25-akpm/drivers/serial/8250_pnp.c 2004-01-29 22:40:18.000000000 -0800 @@ -420,7 +420,9 @@ serial_pnp_probe(struct pnp_dev * dev, c static void serial_pnp_remove(struct pnp_dev * dev) { - return; + int line = (int)pnp_get_drvdata(dev); + if (line) + unregister_serial(line - 1); } static struct pnp_driver serial_pnp_driver = { @@ -437,7 +439,7 @@ static int __init serial8250_pnp_init(vo static void __exit serial8250_pnp_exit(void) { - /* FIXME */ + pnp_unregister_driver(&serial_pnp_driver); } module_init(serial8250_pnp_init); _