diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-01-30 12:50:08 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-01-31 08:50:15 +0100 |
commit | 1f15703458fbd3d3c4cc53f8b7b6ace2be5eca46 (patch) | |
tree | 7d911a0f64908bfc80ebc64054933d3bdcd0bed9 /drivers | |
parent | 83ff71fcee4daabfd74ff31e5612f74c4996ec5c (diff) | |
download | barebox-1f15703458fbd3d3c4cc53f8b7b6ace2be5eca46.tar.gz barebox-1f15703458fbd3d3c4cc53f8b7b6ace2be5eca46.tar.xz |
pinctrl: do not dereference a device tree property directly
Use of_get_property() rather than of_find_property() to avoid
dereferencing a struct property directly.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pinctrl/pinctrl.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/pinctrl/pinctrl.c b/drivers/pinctrl/pinctrl.c index bef4fcdba1..0e42a31474 100644 --- a/drivers/pinctrl/pinctrl.c +++ b/drivers/pinctrl/pinctrl.c @@ -99,8 +99,7 @@ static int pinctrl_config_one(struct device_node *np) int of_pinctrl_select_state(struct device_node *np, const char *name) { int state, ret; - char *propname; - struct property *prop; + char propname[sizeof("pinctrl-4294967295")]; const __be32 *list; int size, config; phandle phandle; @@ -113,18 +112,13 @@ int of_pinctrl_select_state(struct device_node *np, const char *name) /* For each defined state ID */ for (state = 0; ; state++) { /* Retrieve the pinctrl-* property */ - propname = basprintf("pinctrl-%d", state); - prop = of_find_property(np, propname, NULL); - free(propname); - - if (!prop) { + sprintf(propname, "pinctrl-%d", state); + list = of_get_property(np, propname, &size); + if (!list) { ret = -ENODEV; break; } - size = prop->length; - - list = prop->value; size /= sizeof(*list); /* Determine whether pinctrl-names property names the state */ @@ -137,7 +131,7 @@ int of_pinctrl_select_state(struct device_node *np, const char *name) */ if (ret < 0) { /* strlen("pinctrl-") == 8 */ - statename = prop->name + 8; + statename = &propname[8]; } if (strcmp(name, statename)) @@ -151,7 +145,7 @@ int of_pinctrl_select_state(struct device_node *np, const char *name) np_config = of_find_node_by_phandle(phandle); if (!np_config) { pr_err("prop %s %s index %i invalid phandle\n", - np->full_name, prop->name, config); + np->full_name, propname, config); ret = -EINVAL; goto err; } |