diff options
author | Soren Brinkmann <soren.brinkmann@xilinx.com> | 2013-10-17 14:08:05 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-19 19:47:37 -0700 |
commit | c03cae1791407f4f4f9bc6b0354ecaeb50df787f (patch) | |
tree | 694af24bc92d91ea9ff08247351eb82b1182e009 | |
parent | 991fc259361eb812ebf6c4527343d60ab4b2e1a6 (diff) | |
download | blackbird-op-linux-c03cae1791407f4f4f9bc6b0354ecaeb50df787f.tar.gz blackbird-op-linux-c03cae1791407f4f4f9bc6b0354ecaeb50df787f.zip |
tty: xuartps: Use devm_kzalloc
Use the device managed interface for memory allocation, simplifying
error paths.
Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/tty/serial/xilinx_uartps.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index 103ba8826d06..8c0745951605 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -949,27 +949,26 @@ static int xuartps_probe(struct platform_device *pdev) struct resource *res, *res2; struct xuartps *xuartps_data; - xuartps_data = kzalloc(sizeof(*xuartps_data), GFP_KERNEL); + xuartps_data = devm_kzalloc(&pdev->dev, sizeof(*xuartps_data), + GFP_KERNEL); if (!xuartps_data) return -ENOMEM; xuartps_data->aperclk = devm_clk_get(&pdev->dev, "aper_clk"); if (IS_ERR(xuartps_data->aperclk)) { dev_err(&pdev->dev, "aper_clk clock not found.\n"); - rc = PTR_ERR(xuartps_data->aperclk); - goto err_out_free; + return PTR_ERR(xuartps_data->aperclk); } xuartps_data->refclk = devm_clk_get(&pdev->dev, "ref_clk"); if (IS_ERR(xuartps_data->refclk)) { dev_err(&pdev->dev, "ref_clk clock not found.\n"); - rc = PTR_ERR(xuartps_data->refclk); - goto err_out_free; + return PTR_ERR(xuartps_data->refclk); } rc = clk_prepare_enable(xuartps_data->aperclk); if (rc) { dev_err(&pdev->dev, "Unable to enable APER clock.\n"); - goto err_out_free; + return rc; } rc = clk_prepare_enable(xuartps_data->refclk); if (rc) { @@ -1020,8 +1019,6 @@ err_out_clk_disable: clk_disable_unprepare(xuartps_data->refclk); err_out_clk_dis_aper: clk_disable_unprepare(xuartps_data->aperclk); -err_out_free: - kfree(xuartps_data); return rc; } @@ -1043,7 +1040,6 @@ static int xuartps_remove(struct platform_device *pdev) port->mapbase = 0; clk_disable_unprepare(xuartps_data->refclk); clk_disable_unprepare(xuartps_data->aperclk); - kfree(xuartps_data); return rc; } |