From: hugang 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-10 23:33:22.000000000 -0700 +++ 25-akpm/drivers/serial/core.c 2003-06-10 23:33:22.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) _