pinctrl: core: Hold pinctrldev_list_mutex mutex while traversing pinctrldev_list
PATCH 1/2 pinctrl: core: Hold pinctrldev_list_mutex mutex while traversing pinctrldev_list
This one is missed in commit 44d5f7bb "pinctrl: sink pinctrldev_list_mutex".
Signed-off-by Axel Lin <[email protected]>
--- drivers/pinctrl/core.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/pinctrl/core.c +5 -0
@@ -392,6 +392,8 @@ static int pinctrl_get_device_gpio_range(unsigned gpio, {struct pinctrl_dev *pctldev =NULL ; +mutex_lock (&pinctrldev_list_mutex); +/* Loop over the pin controllers */ list_for_each_entry (pctldev, &pinctrldev_list, node) {struct pinctrl_gpio_range *range;
@@ -400,10 +402,13 @@ static int pinctrl_get_device_gpio_range(unsigned gpio,if (range !=NULL ) { *outdev = pctldev; *outrange = range; +mutex_unlock (&pinctrldev_list_mutex);return 0 ; } } +mutex_unlock (&pinctrldev_list_mutex); +return -EPROBE_DEFER ; }
Signature · 1 line
1.8.1.2
PATCH 2/2 pinctrl: core: Hold pctldev->mutex mutex lock while traversing gpio_ranges list
Hold pctldev->mutex mutex_lock when traverse the list.
Signed-off-by Axel Lin <[email protected]>
--- drivers/pinctrl/core.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/pinctrl/core.c +3 -0
@@ -357,14 +357,17 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio)/* Loop over the pin controllers */ list_for_each_entry (pctldev, &pinctrldev_list, node) {/* Loop over the ranges */ +mutex_lock (&pctldev->mutex);list_for_each_entry (range, &pctldev->gpio_ranges, node) {/* Check if any gpio range overlapped with gpio chip */ if (range->base + range->npins -1 < chip->base || range->base > chip->base + chip->ngpio -1 )continue ; +mutex_unlock (&pctldev->mutex);mutex_unlock (&pinctrldev_list_mutex);return true; } +mutex_unlock (&pctldev->mutex); }mutex_unlock (&pinctrldev_list_mutex);
Signature · 1 line
1.8.1.2
Re: [PATCH 2/2] pinctrl: core: Hold pctldev->mutex mutex lock while traversing gpio_ranges list
Quoted 3 lines · Axel Lin
Hold
pctldev->mutexmutex_lockwhen traverse the list.Signed-off-by Axel Lin <[email protected]>
Patch applied.
Yours,
Linus Walleij
Quoted 3 lines · Axel Lin
This one is missed in commit
44d5f7bb"pinctrl: sinkpinctrldev_list_mutex".Signed-off-by Axel Lin <[email protected]>
Good catch Axel!
Patch applied.
Yours,
Linus Walleij