Re: [PATCH v2 10/11] pinctrl: rockchip: Simplify locking with scoped_guard()
David Lechner <[email protected]>
| Newsgroups | dev.linux.lists.sophgo,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel,org.kernel.vger.linux-tegra,org.ozlabs.lists.linux-aspeed,org.ozlabs.lists.openbmc |
|---|---|
| Message-ID | <[email protected]> |
On 1/18/26 12:09 PM, Krzysztof Kozlowski wrote: > Simplify error handling by removing two mutex_unlock() calls with > scoped_guard(). > > Reviewed-by: Heiko Stuebner <[email protected]> > Signed-off-by: Krzysztof Kozlowski <[email protected]> > --- > drivers/pinctrl/pinctrl-rockchip.c | 19 +++++++++---------- > 1 file changed, 9 insertions(+), 10 deletions(-) > > diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c > index e44ef262beec..bbe1cf712965 100644 > --- a/drivers/pinctrl/pinctrl-rockchip.c > +++ b/drivers/pinctrl/pinctrl-rockchip.c > @@ -3640,17 +3640,16 @@ static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin, Filling in some context from the existing code... for (i = 0; i < num_configs; i++) { param = pinconf_to_config_param(configs[i]); arg = pinconf_to_config_argument(configs[i]); if (param == PIN_CONFIG_LEVEL || param == PIN_CONFIG_INPUT_ENABLE) { /* * Check for gpio driver not being probed yet. > * The lock makes sure that either gpio-probe has completed > * or the gpio driver hasn't probed yet. > */ > - mutex_lock(&bank->deferred_lock); > - if (!gpio || !gpio->direction_output) { > - rc = rockchip_pinconf_defer_pin(bank, pin - bank->pin_base, param, > - arg); > - mutex_unlock(&bank->deferred_lock); > - if (rc) > - return rc; > - > - break; > + 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; I think there is an unintentional change here. scoped_guard() is implemented by a for loop. So the break statement is now breaking out of the scoped_guard() scope rather than breaking out of the outer for loop. > + } > } > - mutex_unlock(&bank->deferred_lock); > } > > switch (param) { >