pinctrl: Protect the pinctrl_maps in pinctrl_register_map
The pinctrl_maps_mutex didn't take affect in pinctrl_register_map sometimes. Now the change make it to protect the pinctrl_maps list operation all the time. CRs-Fixed: 649599 Change-Id: I5e4ce53b84375e4b1cf08f362bb26cbbe8acc07e Signed-off-by: Pan Fang <fangpan@codeaurora.org>
This commit is contained in:
parent
1cd71605ba
commit
28ce3cd64e
|
@ -1077,7 +1077,7 @@ void devm_pinctrl_put(struct pinctrl *p)
|
|||
EXPORT_SYMBOL_GPL(devm_pinctrl_put);
|
||||
|
||||
int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
|
||||
bool dup, bool locked)
|
||||
bool dup)
|
||||
{
|
||||
int i, ret;
|
||||
struct pinctrl_maps *maps_node;
|
||||
|
@ -1145,11 +1145,9 @@ int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
|
|||
maps_node->maps = maps;
|
||||
}
|
||||
|
||||
if (!locked)
|
||||
mutex_lock(&pinctrl_maps_mutex);
|
||||
mutex_lock(&pinctrl_maps_mutex);
|
||||
list_add_tail(&maps_node->node, &pinctrl_maps);
|
||||
if (!locked)
|
||||
mutex_unlock(&pinctrl_maps_mutex);
|
||||
mutex_unlock(&pinctrl_maps_mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1164,7 +1162,7 @@ int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
|
|||
int pinctrl_register_mappings(struct pinctrl_map const *maps,
|
||||
unsigned num_maps)
|
||||
{
|
||||
return pinctrl_register_map(maps, num_maps, true, false);
|
||||
return pinctrl_register_map(maps, num_maps, true);
|
||||
}
|
||||
|
||||
void pinctrl_unregister_map(struct pinctrl_map const *map)
|
||||
|
|
|
@ -183,7 +183,7 @@ static inline struct pin_desc *pin_desc_get(struct pinctrl_dev *pctldev,
|
|||
}
|
||||
|
||||
int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
|
||||
bool dup, bool locked);
|
||||
bool dup);
|
||||
void pinctrl_unregister_map(struct pinctrl_map const *map);
|
||||
|
||||
extern int pinctrl_force_sleep(struct pinctrl_dev *pctldev);
|
||||
|
|
|
@ -92,7 +92,7 @@ static int dt_remember_or_free_map(struct pinctrl *p, const char *statename,
|
|||
dt_map->num_maps = num_maps;
|
||||
list_add_tail(&dt_map->node, &p->dt_maps);
|
||||
|
||||
return pinctrl_register_map(map, num_maps, false, true);
|
||||
return pinctrl_register_map(map, num_maps, false);
|
||||
}
|
||||
|
||||
struct pinctrl_dev *of_pinctrl_get(struct device_node *np)
|
||||
|
|
Loading…
Reference in New Issue