for extern function uart_remove_one_port:
    need check pointer whether be NULL, before the main work.
    just like what the other extern function uart_add_one_port has done.
    uart_add_one_port and uart_remove_one_port are pair
  information:
    for the callers (such as drivers/tty/serial/jsm: jsm_tty.c, jsm_driver.c)
    they realy assume that:
      they still can call uart_remove_one_port, after uart_add_one_port failed
    we (as an extern function), have to understand it (just like kfree).
Signed-off-by: Chen Gang <gang.chen@asianux.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 {
        struct uart_state *state = drv->state + uport->line;
        struct tty_port *port = &state->port;
+       int ret = 0;
 
        BUG_ON(in_interrupt());
 
         * succeeding while we shut down the port.
         */
        mutex_lock(&port->mutex);
+       if (!state->uart_port) {
+               mutex_unlock(&port->mutex);
+               ret = -EINVAL;
+               goto out;
+       }
        uport->flags |= UPF_DEAD;
        mutex_unlock(&port->mutex);
 
        uport->type = PORT_UNKNOWN;
 
        state->uart_port = NULL;
+out:
        mutex_unlock(&port_mutex);
 
-       return 0;
+       return ret;
 }
 
 /*