pinctrl: berlin: fix the dt_free_map function
The berlin_pinctrl_dt_free_map function tries to free memory allocated and handled by the of subsystem. This is wrong and already handled by pinctrl_dt_free_maps() which calls of_node_put(). This patch fixes the Berlin pinctrl way of freeing its maps, avoiding a kernel BUG(), by using the common pinctrl_utils_dt_free_map function instead. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
3d78427397
commit
6064b1474e
@ -99,30 +99,11 @@ static int berlin_pinctrl_dt_node_to_map(struct pinctrl_dev *pctrl_dev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void berlin_pinctrl_dt_free_map(struct pinctrl_dev *pctrl_dev,
|
|
||||||
struct pinctrl_map *map,
|
|
||||||
unsigned nmaps)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < nmaps; i++) {
|
|
||||||
if (map[i].type == PIN_MAP_TYPE_MUX_GROUP) {
|
|
||||||
kfree(map[i].data.mux.group);
|
|
||||||
|
|
||||||
/* a function can be applied to multiple groups */
|
|
||||||
if (i == 0)
|
|
||||||
kfree(map[i].data.mux.function);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
kfree(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct pinctrl_ops berlin_pinctrl_ops = {
|
static const struct pinctrl_ops berlin_pinctrl_ops = {
|
||||||
.get_groups_count = &berlin_pinctrl_get_group_count,
|
.get_groups_count = &berlin_pinctrl_get_group_count,
|
||||||
.get_group_name = &berlin_pinctrl_get_group_name,
|
.get_group_name = &berlin_pinctrl_get_group_name,
|
||||||
.dt_node_to_map = &berlin_pinctrl_dt_node_to_map,
|
.dt_node_to_map = &berlin_pinctrl_dt_node_to_map,
|
||||||
.dt_free_map = &berlin_pinctrl_dt_free_map,
|
.dt_free_map = &pinctrl_utils_dt_free_map,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int berlin_pinmux_get_functions_count(struct pinctrl_dev *pctrl_dev)
|
static int berlin_pinmux_get_functions_count(struct pinctrl_dev *pctrl_dev)
|
||||||
|
Loading…
Reference in New Issue
Block a user