Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 691a7ee6 authored by Chuhong Yuan's avatar Chuhong Yuan Committed by Greg Kroah-Hartman
Browse files

serial: mxs-auart: add missed iounmap() in probe failure and remove



commit d8edf8eb5f6e921fe6389f96d2cd05862730a6ff upstream.

This driver calls ioremap() in probe, but it misses calling iounmap() in
probe's error handler and remove.
Add the missed calls to fix it.

Fixes: 47d37d6f ("serial: Add auart driver for i.MX23/28")
Signed-off-by: default avatarChuhong Yuan <hslester96@gmail.com>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200709135608.68290-1-hslester96@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent eed95ec1
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1703,21 +1703,21 @@ static int mxs_auart_probe(struct platform_device *pdev)
	irq = platform_get_irq(pdev, 0);
	if (irq < 0) {
		ret = irq;
		goto out_disable_clks;
		goto out_iounmap;
	}

	s->port.irq = irq;
	ret = devm_request_irq(&pdev->dev, irq, mxs_auart_irq_handle, 0,
			       dev_name(&pdev->dev), s);
	if (ret)
		goto out_disable_clks;
		goto out_iounmap;

	platform_set_drvdata(pdev, s);

	ret = mxs_auart_init_gpios(s, &pdev->dev);
	if (ret) {
		dev_err(&pdev->dev, "Failed to initialize GPIOs.\n");
		goto out_disable_clks;
		goto out_iounmap;
	}

	/*
@@ -1725,7 +1725,7 @@ static int mxs_auart_probe(struct platform_device *pdev)
	 */
	ret = mxs_auart_request_gpio_irq(s);
	if (ret)
		goto out_disable_clks;
		goto out_iounmap;

	auart_port[s->port.line] = s;

@@ -1751,6 +1751,9 @@ static int mxs_auart_probe(struct platform_device *pdev)
	mxs_auart_free_gpio_irq(s);
	auart_port[pdev->id] = NULL;

out_iounmap:
	iounmap(s->port.membase);

out_disable_clks:
	if (is_asm9260_auart(s)) {
		clk_disable_unprepare(s->clk);
@@ -1766,6 +1769,7 @@ static int mxs_auart_remove(struct platform_device *pdev)
	uart_remove_one_port(&auart_driver, &s->port);
	auart_port[pdev->id] = NULL;
	mxs_auart_free_gpio_irq(s);
	iounmap(s->port.membase);
	if (is_asm9260_auart(s)) {
		clk_disable_unprepare(s->clk);
		clk_disable_unprepare(s->clk_ahb);