Thread (43 messages) 43 messages, 10 authors, 2013-03-01

[PATCH 2/5] gpio/omap: Use devm_ API and add request_mem_region

From: Grant Likely <hidden>
Date: 2012-02-16 06:35:33
Also in: linux-devicetree, linux-omap

On Thu, Feb 16, 2012 at 11:11:52AM +0530, DebBarma, Tarun Kanti wrote:
Hi Benoit,

On Wed, Feb 15, 2012 at 9:34 PM, Benoit Cousson [off-list ref] wrote:
quoted
Replace the regular kzalloc and ioremap with the devm_ equivalent
to simplify error handling.

Add the missing devm_request_mem_region to reserve the region used
by the driver.

Signed-off-by: Benoit Cousson <redacted>
Cc: Tarun Kanti DebBarma <redacted>
---
?drivers/gpio/gpio-omap.c | ? 35 +++++++++++++++--------------------
?1 files changed, 15 insertions(+), 20 deletions(-)
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index a0c3e03..c3a9dc8 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -19,7 +19,7 @@
?#include <linux/err.h>
?#include <linux/clk.h>
?#include <linux/io.h>
-#include <linux/slab.h>
+#include <linux/device.h>
?#include <linux/pm_runtime.h>
?#include <linux/pm.h>
@@ -1052,23 +1052,19 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
? ? ? ?struct gpio_bank *bank;
? ? ? ?int ret = 0;

- ? ? ? if (!dev->platform_data) {
- ? ? ? ? ? ? ? ret = -EINVAL;
- ? ? ? ? ? ? ? goto err_exit;
- ? ? ? }
+ ? ? ? if (!dev->platform_data)
+ ? ? ? ? ? ? ? return -EINVAL;

- ? ? ? bank = kzalloc(sizeof(struct gpio_bank), GFP_KERNEL);
+ ? ? ? bank = devm_kzalloc(&pdev->dev, sizeof(struct gpio_bank), GFP_KERNEL);
? ? ? ?if (!bank) {
? ? ? ? ? ? ? ?dev_err(dev, "Memory alloc failed\n");
- ? ? ? ? ? ? ? ret = -ENOMEM;
- ? ? ? ? ? ? ? goto err_exit;
+ ? ? ? ? ? ? ? return -ENOMEM;
? ? ? ?}

? ? ? ?res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
? ? ? ?if (unlikely(!res)) {
? ? ? ? ? ? ? ?dev_err(dev, "Invalid IRQ resource\n");
- ? ? ? ? ? ? ? ret = -ENODEV;
- ? ? ? ? ? ? ? goto err_free;
+ ? ? ? ? ? ? ? return -ENODEV;
How is the memory allocated to 'bank' getting freed before return -ENODEV?
The magic of devm_*() functions.  Anything allocated by those functions is
automatically freed on either probe failure or driver removal.

g.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help