Skip to content

Commit dd5e90b

Browse files
jhovoldgregkh
authored andcommitted
serial: liteuart: fix minor-number leak on probe errors
Make sure to release the allocated minor number before returning on probe errors. Fixes: 1da81e5 ("drivers/tty/serial: add LiteUART driver") Cc: [email protected] # 5.11 Cc: Filip Kokosinski <[email protected]> Cc: Mateusz Holenko <[email protected]> Reviewed-by: Stafford Horne <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Johan Hovold <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 05f929b commit dd5e90b

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

drivers/tty/serial/liteuart.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,10 @@ static int liteuart_probe(struct platform_device *pdev)
270270

271271
/* get membase */
272272
port->membase = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
273-
if (IS_ERR(port->membase))
274-
return PTR_ERR(port->membase);
273+
if (IS_ERR(port->membase)) {
274+
ret = PTR_ERR(port->membase);
275+
goto err_erase_id;
276+
}
275277

276278
/* values not from device tree */
277279
port->dev = &pdev->dev;
@@ -287,7 +289,16 @@ static int liteuart_probe(struct platform_device *pdev)
287289

288290
platform_set_drvdata(pdev, port);
289291

290-
return uart_add_one_port(&liteuart_driver, &uart->port);
292+
ret = uart_add_one_port(&liteuart_driver, &uart->port);
293+
if (ret)
294+
goto err_erase_id;
295+
296+
return 0;
297+
298+
err_erase_id:
299+
xa_erase(&liteuart_array, uart->id);
300+
301+
return ret;
291302
}
292303

293304
static int liteuart_remove(struct platform_device *pdev)

0 commit comments

Comments
 (0)