From f157945cd134e2cfa47ed9bb1f599632d112d94e Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Mon, 29 Jul 2013 19:39:20 +0200 Subject: [PATCH] tty: ar933x_uart: convert to use devm_* functions Use devm_* functions in order to simplify cleanup paths. Signed-off-by: Gabor Juhos --- drivers/tty/serial/ar933x_uart.c | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) --- a/drivers/tty/serial/ar933x_uart.c +++ b/drivers/tty/serial/ar933x_uart.c @@ -652,19 +652,18 @@ static int ar933x_uart_probe(struct plat return -EINVAL; } - up = kzalloc(sizeof(struct ar933x_uart_port), GFP_KERNEL); + up = devm_kzalloc(&pdev->dev, sizeof(struct ar933x_uart_port), + GFP_KERNEL); if (!up) return -ENOMEM; port = &up->port; - port->mapbase = mem_res->start; - port->membase = ioremap(mem_res->start, AR933X_UART_REGS_SIZE); - if (!port->membase) { - ret = -ENOMEM; - goto err_free_up; - } + port->membase = devm_ioremap_resource(&pdev->dev, mem_res); + if (IS_ERR(port->membase)) + return PTR_ERR(port->membase); + port->mapbase = mem_res->start; port->line = id; port->irq = irq_res->start; port->dev = &pdev->dev; @@ -686,16 +685,10 @@ static int ar933x_uart_probe(struct plat ret = uart_add_one_port(&ar933x_uart_driver, &up->port); if (ret) - goto err_unmap; + return ret; platform_set_drvdata(pdev, up); return 0; - -err_unmap: - iounmap(up->port.membase); -err_free_up: - kfree(up); - return ret; } static int ar933x_uart_remove(struct platform_device *pdev) @@ -705,11 +698,8 @@ static int ar933x_uart_remove(struct pla up = platform_get_drvdata(pdev); platform_set_drvdata(pdev, NULL); - if (up) { + if (up) uart_remove_one_port(&ar933x_uart_driver, &up->port); - iounmap(up->port.membase); - kfree(up); - } return 0; }