From b7a8f766482fa5893ca95cbf83195e60e96e389e Mon Sep 17 00:00:00 2001 From: Wei Yongjun Date: Wed, 3 Jul 2019 05:59:08 +0000 Subject: [PATCH] serial: 8250: 8250_core: Fix missing unlock on error in serial8250_register_8250_port() Add the missing unlock before return from function serial8250_register_8250_port() in the error handling case. Signed-off-by: Wei Yongjun Link: https://lore.kernel.org/r/20190703055908.141294-1-weiyongjun1@huawei.com Signed-off-by: Greg Kroah-Hartman --- drivers/tty/serial/8250/8250_core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c index a4470771005f..df3bcc0b2d74 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -1026,8 +1026,10 @@ int serial8250_register_8250_port(struct uart_8250_port *up) if (!has_acpi_companion(uart->port.dev)) { gpios = mctrl_gpio_init(&uart->port, 0); if (IS_ERR(gpios)) { - if (PTR_ERR(gpios) != -ENOSYS) - return PTR_ERR(gpios); + if (PTR_ERR(gpios) != -ENOSYS) { + ret = PTR_ERR(gpios); + goto out_unlock; + } } else { uart->gpios = gpios; } @@ -1099,6 +1101,7 @@ int serial8250_register_8250_port(struct uart_8250_port *up) } } +out_unlock: mutex_unlock(&serial_mutex); return ret;