mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
pinctrl: meson: amlogic-a4: fix deadlock issue
Accessing the pinconf-pins sysfs node may deadlock.
pinconf_pins_show() holds pctldev->mutex, and the platform driver
calls pinctrl_find_gpio_range_from_pin(), which tries to acquire
the same mutex again, leading to a deadlock.
Use pinctrl_find_gpio_range_from_pin_nolock() to fix this issue.
Fixes: 6e9be3abb7 ("pinctrl: Add driver support for Amlogic SoCs")
Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
parent
d743c1ba6c
commit
e72ce02981
|
|
@ -292,7 +292,7 @@ static int aml_calc_reg_and_bit(struct pinctrl_gpio_range *range,
|
|||
static int aml_pinconf_get_pull(struct aml_pinctrl *info, unsigned int pin)
|
||||
{
|
||||
struct pinctrl_gpio_range *range =
|
||||
pinctrl_find_gpio_range_from_pin(info->pctl, pin);
|
||||
pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
|
||||
struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
|
||||
unsigned int reg, bit, val;
|
||||
int ret, conf;
|
||||
|
|
@ -326,7 +326,7 @@ static int aml_pinconf_get_drive_strength(struct aml_pinctrl *info,
|
|||
u16 *drive_strength_ua)
|
||||
{
|
||||
struct pinctrl_gpio_range *range =
|
||||
pinctrl_find_gpio_range_from_pin(info->pctl, pin);
|
||||
pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
|
||||
struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
|
||||
unsigned int reg, bit;
|
||||
unsigned int val;
|
||||
|
|
@ -365,7 +365,7 @@ static int aml_pinconf_get_gpio_bit(struct aml_pinctrl *info,
|
|||
unsigned int reg_type)
|
||||
{
|
||||
struct pinctrl_gpio_range *range =
|
||||
pinctrl_find_gpio_range_from_pin(info->pctl, pin);
|
||||
pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
|
||||
struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
|
||||
unsigned int reg, bit, val;
|
||||
int ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user