diff options
| author | Tony Lindgren <tony@atomide.com> | 2010-08-02 14:23:38 +0300 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2010-08-02 14:23:38 +0300 |
| commit | 055a1b8c9927bc587f293020a54c6cd8e24dfac0 (patch) | |
| tree | db7c8d00931180c4896c9e00d2cb506939592cda /drivers/serial/sunsu.c | |
| parent | 8a6f7e14fc3b3ea911838c3f4ce137cb8a3d134a (diff) | |
| parent | f535daed925c2d3c1db06b06a63c4955f2c51988 (diff) | |
Merge branch 'devel-misc' into omap-for-linus
Diffstat (limited to 'drivers/serial/sunsu.c')
| -rw-r--r-- | drivers/serial/sunsu.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 234459c2f01..ffbf4553f66 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c @@ -1500,20 +1500,25 @@ out_unmap: static int __devexit su_remove(struct of_device *op) { struct uart_sunsu_port *up = dev_get_drvdata(&op->dev); + bool kbdms = false; if (up->su_type == SU_PORT_MS || - up->su_type == SU_PORT_KBD) { + up->su_type == SU_PORT_KBD) + kbdms = true; + + if (kbdms) { #ifdef CONFIG_SERIO serio_unregister_port(&up->serio); #endif - kfree(up); - } else if (up->port.type != PORT_UNKNOWN) { + } else if (up->port.type != PORT_UNKNOWN) uart_remove_one_port(&sunsu_reg, &up->port); - } if (up->port.membase) of_iounmap(&op->resource[0], up->port.membase, up->reg_size); + if (kbdms) + kfree(up); + dev_set_drvdata(&op->dev, NULL); return 0; |
