From: hugang <hugang@soulinfo.com>

It has a rather blatant null pointer deref and attempted memory leak.


 drivers/serial/core.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff -puN drivers/serial/core.c~serial-core-oops-fix drivers/serial/core.c
--- 25/drivers/serial/core.c~serial-core-oops-fix	2003-06-08 22:04:13.000000000 -0700
+++ 25-akpm/drivers/serial/core.c	2003-06-08 23:55:42.000000000 -0700
@@ -2189,11 +2189,11 @@ int uart_register_driver(struct uart_dri
 void uart_unregister_driver(struct uart_driver *drv)
 {
 	struct tty_driver *p = drv->tty_driver;
-	drv->tty_driver = NULL;
 	tty_unregister_driver(p);
 	kfree(drv->state);
-	kfree(drv->tty_driver->termios);
-	kfree(drv->tty_driver);
+	kfree(p->termios);
+	kfree(p);
+	drv->tty_driver = NULL;
 }
 
 struct tty_driver *uart_console_device(struct console *co, int *index)

_