From: Adam Belay <ambx1@neo.rr.com>

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);

_