On Tue, Aug 15, 2023 at 1:06 PM Krzysztof Kozlowski krzysztof.kozlowski@linaro.org wrote:
The Qualcomm LPASS LPI pin controller driver uses one lock for guarding Read-Modify-Write code for slew rate registers. However the pin configuration and muxing registers have exactly the same RMW code but are not protected.
Pin controller framework does not provide locking here, thus it is possible to trigger simultaneous change of pin configuration registers resulting in non-atomic changes.
Protect from concurrent access by re-using the same lock used to cover the slew rate register. Using the same lock instead of adding second one will make more sense, once we add support for newer Qualcomm SoC, where slew rate is configured in the same register as pin configuration/muxing.
Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver") Cc: stable@vger.kernel.org Signed-off-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org
Reviewed-by: Linus Walleij linus.walleij@linaro.org
Here it would be nice if we took a sweep once this fix is in and switch over to scoped guards, like Bartosz does: https://lore.kernel.org/linux-gpio/20230812183635.5478-1-brgl@bgdev.pl/
Yours, Linus Walleij