linux/drivers/firmware/qcom
Krzysztof Kozlowski fee921e3c6 firmware: qcom: scm: Fix missing read barrier in qcom_scm_get_tzmem_pool()
commit b628510397 upstream.

Commit 2e4955167e ("firmware: qcom: scm: Fix __scm and waitq
completion variable initialization") introduced a write barrier in probe
function to store global '__scm' variable.  We all known barriers are
paired (see memory-barriers.txt: "Note that write barriers should
normally be paired with read or address-dependency barriers"), therefore
accessing it from concurrent contexts requires read barrier.  Previous
commit added such barrier in qcom_scm_is_available(), so let's use that
directly.

Lack of this read barrier can result in fetching stale '__scm' variable
value, NULL, and dereferencing it.

Note that barrier in qcom_scm_is_available() satisfies here the control
dependency.

Fixes: ca61d6836e ("firmware: qcom: scm: fix a NULL-pointer dereference")
Fixes: 449d0d84bc ("firmware: qcom: scm: smc: switch to using the SCM allocator")
Cc: stable@vger.kernel.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20241209-qcom-scm-missing-barriers-and-all-sort-of-srap-v2-2-9061013c8d92@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-02-17 10:05:20 +01:00
..
Kconfig firmware: qcom: scm: Refactor code to support multiple dload mode 2024-08-14 22:14:42 -05:00
Makefile firmware: qcom: add a dedicated TrustZone buffer allocator 2024-06-23 16:08:04 -05:00
qcom_qseecom.c firmware: qcom: move Qualcomm code into its own directory 2023-10-22 09:14:54 -07:00
qcom_qseecom_uefisecapp.c firmware: qcom: uefisecapp: Fix deadlock in qcuefi_acquire() 2024-08-30 22:17:50 -05:00
qcom_scm-legacy.c firmware: qcom: move Qualcomm code into its own directory 2023-10-22 09:14:54 -07:00
qcom_scm-smc.c firmware: qcom: scm: Mark get_wq_ctx() as atomic call 2024-08-14 22:08:28 -05:00
qcom_scm.c firmware: qcom: scm: Fix missing read barrier in qcom_scm_get_tzmem_pool() 2025-02-17 10:05:20 +01:00
qcom_scm.h firmware: qcom: scm: add support for SHM bridge operations 2024-06-23 16:08:20 -05:00
qcom_tzmem.c firmware: qcom: tzmem: disable sdm670 platform 2024-08-21 08:37:37 -05:00
qcom_tzmem.h firmware: qcom: add a dedicated TrustZone buffer allocator 2024-06-23 16:08:04 -05:00