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

Commit c65be6ad authored by Chunyan Zhang's avatar Chunyan Zhang Committed by Greg Kroah-Hartman
Browse files

serial: sprd: Fix DMA buffer leak issue



[ Upstream commit cd119fdc3ee1450fbf7f78862b5de44c42b6e47f ]

Release DMA buffer when _probe() returns failure to avoid memory leak.

Fixes: f4487db5 ("serial: sprd: Add DMA mode support")
Signed-off-by: default avatarChunyan Zhang <chunyan.zhang@unisoc.com>
Reviewed-by: default avatarBaolin Wang <baolin.wang@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230725064053.235448-2-chunyan.zhang@unisoc.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 730d1b7e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -371,7 +371,7 @@ static void sprd_rx_free_buf(struct sprd_uart_port *sp)
	if (sp->rx_dma.virt)
		dma_free_coherent(sp->port.dev, SPRD_UART_RX_SIZE,
				  sp->rx_dma.virt, sp->rx_dma.phys_addr);

	sp->rx_dma.virt = NULL;
}

static int sprd_rx_dma_config(struct uart_port *port, u32 burst)
@@ -1199,7 +1199,7 @@ static int sprd_probe(struct platform_device *pdev)
		ret = uart_register_driver(&sprd_uart_driver);
		if (ret < 0) {
			pr_err("Failed to register SPRD-UART driver\n");
			return ret;
			goto free_rx_buf;
		}
	}

@@ -1218,6 +1218,7 @@ static int sprd_probe(struct platform_device *pdev)
	sprd_port[index] = NULL;
	if (--sprd_ports_num == 0)
		uart_unregister_driver(&sprd_uart_driver);
free_rx_buf:
	sprd_rx_free_buf(sport);
	return ret;
}