linux-stable/drivers/pinctrl/qcom
Krzysztof Kozlowski c8befdc411 pinctrl: qcom: lpass-lpi: fix concurrent register updates
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: 6e261d1090 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver")
Cc: stable@vger.kernel.org
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231013145705.219954-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2023-10-16 14:56:49 +02:00
..
Kconfig pinctrl: qcom: Introduce SM6115 LPI pinctrl driver 2023-08-07 10:51:45 +02:00
Kconfig.msm pinctrl: qcom: organize main SoC drivers in new Kconfig.msm 2023-06-09 09:10:13 +02:00
Makefile pinctrl: qcom: Introduce SM6115 LPI pinctrl driver 2023-08-07 10:51:45 +02:00
pinctrl-apq8064.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-apq8084.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-ipq4019.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-ipq5018.c pinctrl: qcom: Remove the unused _groups variable build warning 2023-08-07 11:01:31 +02:00
pinctrl-ipq5332.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-ipq6018.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-ipq8064.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-ipq8074.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-ipq9574.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-lpass-lpi.c pinctrl: qcom: lpass-lpi: fix concurrent register updates 2023-10-16 14:56:49 +02:00
pinctrl-lpass-lpi.h
pinctrl-mdm9607.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-mdm9615.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm.c pinctrl: qcom: Add intr_target_width field to support increased number of interrupt targets 2023-08-10 10:48:15 +02:00
pinctrl-msm.h pinctrl: qcom: Add intr_target_width field to support increased number of interrupt targets 2023-08-10 10:48:15 +02:00
pinctrl-msm8x74.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8226.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8660.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8909.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8916.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8953.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8960.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8976.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8994.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8996.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-msm8998.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-qcm2290.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-qcs404.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-qdf2xxx.c pinctrl: qcom: qdf2xxx: drop ACPI_PTR 2023-06-09 09:05:08 +02:00
pinctrl-qdu1000.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sa8775p.c pinctrl: qcom: Add intr_target_width field to support increased number of interrupt targets 2023-08-10 10:48:15 +02:00
pinctrl-sc7180.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sc7280-lpass-lpi.c
pinctrl-sc7280.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sc8180x.c pinctrl: qcom: sc8180x: gracefully handle missing IO memory resource 2023-05-16 15:25:57 +02:00
pinctrl-sc8280xp-lpass-lpi.c
pinctrl-sc8280xp.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sdm660.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sdm670.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sdm845.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sdx55.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sdx65.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sdx75.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-sm6115-lpass-lpi.c pinctrl: qcom: Introduce SM6115 LPI pinctrl driver 2023-08-07 10:51:45 +02:00
pinctrl-sm6115.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm6125.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm6350.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm6375.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm7150.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm8150.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm8250-lpass-lpi.c
pinctrl-sm8250.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm8350-lpass-lpi.c pinctrl: qcom: sm8350-lpass-lpi: add SM8350 LPASS TLMM 2023-07-24 21:07:04 +02:00
pinctrl-sm8350.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm8450-lpass-lpi.c
pinctrl-sm8450.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-sm8550-lpass-lpi.c
pinctrl-sm8550.c pinctrl: qcom: Refactor generic qcom pinctrl driver 2023-05-16 15:03:37 +02:00
pinctrl-spmi-gpio.c pinctrl: qcom-pmic-gpio: Add support for pmx75 2023-07-16 23:05:57 +02:00
pinctrl-spmi-mpp.c
pinctrl-ssbi-gpio.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-ssbi-mpp.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00