mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 02:44:41 +01:00
pinctrl: rockchip: Fix configuring a deferred pin
Commite2c58cbe3a("pinctrl: rockchip: Simplify locking with scoped_guard()") added a scoped_guard() over existing code containing a "break" instruction. That "break" was for the outer (existing) for-loop, which now exits inner, scoped_guard() loop. If GPIO driver did not probe, then driver will not bail out, but instead continue to configure the pin. Fix the issue by simplifying the code - the break in original code was leading directly to end of the function returning 0, thus we can simply return here rockchip_pinconf_defer_pin status. Reported-by: David Lechner <dlechner@baylibre.com> Closes: https://lore.kernel.org/r/f5b38942-a584-4e78-a893-de4a219070b2@baylibre.com/ Fixes:e2c58cbe3a("pinctrl: rockchip: Simplify locking with scoped_guard()") Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
parent
fd5bed798f
commit
45fe459245
1 changed files with 4 additions and 8 deletions
|
|
@ -3640,14 +3640,10 @@ static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
|
|||
* or the gpio driver hasn't probed yet.
|
||||
*/
|
||||
scoped_guard(mutex, &bank->deferred_lock) {
|
||||
if (!gpio || !gpio->direction_output) {
|
||||
rc = rockchip_pinconf_defer_pin(bank,
|
||||
pin - bank->pin_base,
|
||||
param, arg);
|
||||
if (rc)
|
||||
return rc;
|
||||
break;
|
||||
}
|
||||
if (!gpio || !gpio->direction_output)
|
||||
return rockchip_pinconf_defer_pin(bank,
|
||||
pin - bank->pin_base,
|
||||
param, arg);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue