summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2015-12-12 21:43:05 (GMT)
committerLinus Walleij <linus.walleij@linaro.org>2015-12-15 13:07:06 (GMT)
commite670b29815f301e47e81d42006c80be6b7aff01d (patch)
tree49da3135a383858cd55c8fc04b6f4d951f76af92 /drivers/pinctrl
parentfea0fe60527667282913cf9f2becb5f7c67d6185 (diff)
downloadlinux-e670b29815f301e47e81d42006c80be6b7aff01d.tar.xz
pinctrl: pxa: pxa2xx: add pin control skeleton
The wrong free functions were used to release temporary buffers. This didn't show up in the normal driver's life. Yet in suspend to RAM, the managed resource list is walked, and as memory was released, the list is corrupted and make the kernel Oops. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pxa/pinctrl-pxa2xx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/pinctrl/pxa/pinctrl-pxa2xx.c b/drivers/pinctrl/pxa/pinctrl-pxa2xx.c
index e019144..d90e205 100644
--- a/drivers/pinctrl/pxa/pinctrl-pxa2xx.c
+++ b/drivers/pinctrl/pxa/pinctrl-pxa2xx.c
@@ -292,7 +292,7 @@ static int pxa2xx_build_functions(struct pxa_pinctrl *pctl)
if (!pctl->functions)
return -ENOMEM;
- kfree(functions);
+ devm_kfree(pctl->dev, functions);
return 0;
}
@@ -328,7 +328,7 @@ static int pxa2xx_build_groups(struct pxa_pinctrl *pctl)
memcpy(func->groups, gtmp, ngroups * sizeof(*gtmp));
}
- kfree(gtmp);
+ devm_kfree(pctl->dev, gtmp);
return 0;
}