tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() in case of error

commit a9c09546e903f1068acfa38e1ee18bded7114b37 upstream.

If clk_get_rate() fails, the clk that has just been allocated needs to be
freed.

Cc: <[email protected]> # v3.3+
Reviewed-by: Krzysztof Kozlowski <[email protected]>
Reviewed-by: Andi Shyti <[email protected]>
Fixes: 5f5a7a5578 ("serial: samsung: switch to clkdev based clock lookup")
Signed-off-by: Christophe JAILLET <[email protected]>
Reviewed-by: Jiri Slaby <[email protected]>
Message-ID: <e4baf6039368f52e5a5453982ddcb9a330fc689e.1686412569.git.christophe.jaillet@wanadoo.fr>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
Christophe JAILLET 2023-06-10 17:59:25 +02:00 • committed by Greg Kroah-Hartman
commit 30962268fa

View file

@ -1199,8 +1199,12 @@ static unsigned int s3c24xx_serial_getclk(struct s3c24xx_uart_port *ourport,
continue;
rate = clk_get_rate(clk);
if (!rate)
if (!rate) {
dev_err(ourport->port.dev,
"Failed to get clock rate for %s.\n", clkname);
clk_put(clk);
continue;
}
if (ourport->info->has_divslot) {
unsigned long div = rate / req_baud;