[PATCH v2 0/4] soc: qcom: ice: fix dev reference leaked through of_qcom_ice_get

Tudor Ambarus posted 4 patches 11 months ago
drivers/mmc/host/sdhci-msm.c |  2 +-
drivers/soc/qcom/ice.c       | 51 ++++++++++++++++++++++++++++++++++++++++++--
drivers/ufs/host/ufs-qcom.c  |  2 +-
include/soc/qcom/ice.h       |  3 ++-
4 files changed, 53 insertions(+), 5 deletions(-)
[PATCH v2 0/4] soc: qcom: ice: fix dev reference leaked through of_qcom_ice_get
Posted by Tudor Ambarus 11 months ago
Hi!

Recently I've been pointed to this driver for an example on how consumers
can get a pointer to the supplier's driver data and I noticed a leak.

Callers of of_qcom_ice_get() leak the device reference taken by
of_find_device_by_node(). Introduce devm_of_qcom_ice_get().
Exporting qcom_ice_put() is not done intentionally as the consumers need
the ICE intance for the entire life of their device. Update the consumers
to use the devm variant and make of_qcom_ice_get() static afterwards.

This set touches mmc and scsi subsystems. Since the fix is trivial for
them, I'd suggest taking everything through the SoC tree with Acked-by
tags if people consider this fine. Note that the mmc and scsi patches
depend on the first patch that introduces devm_of_qcom_ice_get().

Thanks!

Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
Changes in v2:
- add kernel doc for newly introduced devm_of_qcom_ice_get().
- update cover letter and commit message of first patch.
- collect R-b and A-b tags.
- Link to v1: https://lore.kernel.org/r/20250116-qcom-ice-fix-dev-leak-v1-0-84d937683790@linaro.org

---
Tudor Ambarus (4):
      soc: qcom: ice: introduce devm_of_qcom_ice_get
      mmc: sdhci-msm: fix dev reference leaked through of_qcom_ice_get
      scsi: ufs: qcom: fix dev reference leaked through of_qcom_ice_get
      soc: qcom: ice: make of_qcom_ice_get() static

 drivers/mmc/host/sdhci-msm.c |  2 +-
 drivers/soc/qcom/ice.c       | 51 ++++++++++++++++++++++++++++++++++++++++++--
 drivers/ufs/host/ufs-qcom.c  |  2 +-
 include/soc/qcom/ice.h       |  3 ++-
 4 files changed, 53 insertions(+), 5 deletions(-)
---
base-commit: b323d8e7bc03d27dec646bfdccb7d1a92411f189
change-id: 20250110-qcom-ice-fix-dev-leak-bbff59a964fb

Best regards,
-- 
Tudor Ambarus <tudor.ambarus@linaro.org>
Re: [PATCH v2 0/4] soc: qcom: ice: fix dev reference leaked through of_qcom_ice_get
Posted by Bjorn Andersson 10 months ago
On Fri, 17 Jan 2025 14:18:49 +0000, Tudor Ambarus wrote:
> Recently I've been pointed to this driver for an example on how consumers
> can get a pointer to the supplier's driver data and I noticed a leak.
> 
> Callers of of_qcom_ice_get() leak the device reference taken by
> of_find_device_by_node(). Introduce devm_of_qcom_ice_get().
> Exporting qcom_ice_put() is not done intentionally as the consumers need
> the ICE intance for the entire life of their device. Update the consumers
> to use the devm variant and make of_qcom_ice_get() static afterwards.
> 
> [...]

Applied, thanks!

[1/4] soc: qcom: ice: introduce devm_of_qcom_ice_get
      commit: 1c13d6060d612601a61423f2e8fbf9e48126acca
[2/4] mmc: sdhci-msm: fix dev reference leaked through of_qcom_ice_get
      commit: cbef7442fba510b7eb229dcc9f39d3dde4a159a4
[3/4] scsi: ufs: qcom: fix dev reference leaked through of_qcom_ice_get
      commit: ded40f32b55f7f2f4ed9627dd3c37a1fe89ed8c6
[4/4] soc: qcom: ice: make of_qcom_ice_get() static
      commit: 1e9e40fc6fb06d80fd9d834fab5eb5475f64787a

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>