In goldfish_tty_probe(), the port initialized through tty_port_init()
should be destroyed in error paths.In goldfish_tty_remove(), qtty->port
also should be destroyed or else might leak resources.
Fix the above by calling tty_port_destroy().
Fixes: 666b7793d4bf ("goldfish: tty driver")
Signed-off-by: Wang Weiyang <[email protected]>
---
drivers/tty/goldfish.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index ad13532e92fe..9e1168c39e77 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -405,6 +405,7 @@ static int goldfish_tty_probe(struct platform_device *pdev)
err_tty_register_device_failed:
free_irq(irq, qtty);
err_dec_line_count:
+ tty_port_destroy(&qtty->port);
goldfish_tty_current_line_count--;
if (goldfish_tty_current_line_count == 0)
goldfish_tty_delete_driver();
@@ -426,6 +427,7 @@ static int goldfish_tty_remove(struct platform_device *pdev)
iounmap(qtty->base);
qtty->base = NULL;
free_irq(qtty->irq, pdev);
+ tty_port_destroy(&qtty->port);
goldfish_tty_current_line_count--;
if (goldfish_tty_current_line_count == 0)
goldfish_tty_delete_driver();
--
2.17.1
On 28. 03. 22, 13:58, Wang Weiyang wrote:
> In goldfish_tty_probe(), the port initialized through tty_port_init()
> should be destroyed in error paths.In goldfish_tty_remove(), qtty->port
> also should be destroyed or else might leak resources.
>
> Fix the above by calling tty_port_destroy().
Reviewed-by: Jiri Slaby <[email protected]>
> Fixes: 666b7793d4bf ("goldfish: tty driver")
> Signed-off-by: Wang Weiyang <[email protected]>
> ---
> drivers/tty/goldfish.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
> index ad13532e92fe..9e1168c39e77 100644
> --- a/drivers/tty/goldfish.c
> +++ b/drivers/tty/goldfish.c
> @@ -405,6 +405,7 @@ static int goldfish_tty_probe(struct platform_device *pdev)
> err_tty_register_device_failed:
> free_irq(irq, qtty);
> err_dec_line_count:
> + tty_port_destroy(&qtty->port);
> goldfish_tty_current_line_count--;
> if (goldfish_tty_current_line_count == 0)
> goldfish_tty_delete_driver();
> @@ -426,6 +427,7 @@ static int goldfish_tty_remove(struct platform_device *pdev)
> iounmap(qtty->base);
> qtty->base = NULL;
> free_irq(qtty->irq, pdev);
> + tty_port_destroy(&qtty->port);
> goldfish_tty_current_line_count--;
> if (goldfish_tty_current_line_count == 0)
> goldfish_tty_delete_driver();
thanks,
--
js
suse labs