When console_register() fails, the dynamically allocated
linux_earlycon_name string was not freed, leading to a memory leak.
Add a free_const() call on the error path to release it.

Also simplify the success path by returning 0 directly after
successful registration, making the code more readable.

Signed-off-by: Alexander Shiyan <[email protected]>
---
 drivers/serial/serial_ns16550.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index 72bf8e4647..2c6ddabf85 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -554,12 +554,11 @@ static int ns16550_probe(struct device *dev)
        devtype->init_port(cdev);
 
        ret = console_register(cdev);
-       if (ret)
-               goto clk_disable;
+       if (!ret)
+               return 0;
 
-       return 0;
+       free_const(cdev->linux_earlycon_name);
 
-clk_disable:
        clk_disable(priv->clk);
        clk_put(priv->clk);
 release_region:
-- 
2.52.0


Reply via email to