All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Praveen Talari" <praveen.talari@oss.qualcomm.com>
Cc: linux-serial@vger.kernel.org
Subject: Re: [PATCH v2 9/9] i2c: qcom-geni: Use geni_se_set_rate() for setting source clock frequency
Date: Thu, 27 Aug 2026 18:25:08 +0000	[thread overview]
Message-ID: <20260827182508.906AE1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260827-derive_clk_perf_tbl_from_perf_domain_opp_table-v2-9-091697dbeb02@oss.qualcomm.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

Pre-existing issues:
- [High] Missing pm_runtime_put() on error path in geni_i2c_xfer() causes PM resource leak.
- [High] Memory leak of `dma_buf` and `dma_addr` arrays on initialization error paths in multi-descriptor GPI transfers.
--

commit 94f912454825d4e32acc9ffbdaf4425dd413984d
Author: Praveen Talari <praveen.talari@oss.qualcomm.com>

i2c: qcom-geni: Use geni_se_set_rate() for setting source clock frequency

This patch refactors the GENI I2C driver to use geni_se_set_rate() for
source clock programming rather than relying on platform-specific callbacks.
This allows the GENI core to abstract resource-management mechanisms and
enables a common code path.

> diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
> index 0b178701e1d1e..deb0d822290c3 100644
> --- a/drivers/i2c/busses/i2c-qcom-geni.c
> +++ b/drivers/i2c/busses/i2c-qcom-geni.c
[ ... ]
> @@ -985,7 +984,7 @@ static int geni_i2c_xfer(struct i2c_adapter *adap,
>  		return ret;
>  	}
>  
> -	ret = gi2c->dev_data->set_rate(&gi2c->se, gi2c->clk_freq_out);
> +	ret = qcom_geni_i2c_conf(&gi2c->se);
>  	if (ret)
>  		return ret;

[Severity: High]
This isn't a bug introduced by this patch, but does the error path here
permanently leak the PM runtime reference?

Earlier in geni_i2c_xfer(), we acquire a reference:

	ret = pm_runtime_get_sync(gi2c->se.dev);
	if (ret < 0) {
		...
	}

If qcom_geni_i2c_conf() fails, the code returns directly without dropping the 
PM usage counter or restoring the suspended state, which keeps the device and 
its parent power domains awake indefinitely. Should there be a 
pm_runtime_put() call before returning here?

[ ... ]


While reviewing the driver, I also noticed a pre-existing issue in 
geni_i2c_gpi_xfer() and geni_i2c_gpi_multi_desc_unmap().

[Severity: High]
This is a pre-existing issue, but does geni_i2c_gpi_multi_desc_unmap() 
leak the dma_buf and dma_addr arrays on initialization error paths?

In geni_i2c_gpi_xfer(), the arrays are allocated:

	tx_multi_xfer->dma_buf = kcalloc(num, sizeof(void *), GFP_KERNEL);
	tx_multi_xfer->dma_addr = kzalloc_objs(dma_addr_t, num);
	if (!tx_multi_xfer->dma_buf || !tx_multi_xfer->dma_addr) {
		ret = -ENOMEM;
		goto err;
	}

If the dma_addr allocation fails (or if an early mapping call fails), 
the function jumps to the err label and calls geni_i2c_gpi_multi_desc_unmap() 
with msg_xfer_cnt evaluated to 0. 

Inside geni_i2c_gpi_multi_desc_unmap():

	for (; tx_multi_xfer->unmap_msg_cnt < msg_xfer_cnt; tx_multi_xfer->unmap_msg_cnt++) {
		wr_idx = tx_multi_xfer->unmap_msg_cnt;
		...
		if (tx_multi_xfer->unmap_msg_cnt == gi2c->num_msgs - 1) {
			kfree(tx_multi_xfer->dma_buf);
			kfree(tx_multi_xfer->dma_addr);
			break;
		}
	}

Because msg_xfer_cnt is 0, the loop condition evaluates to false immediately, 
and the kfree statements are skipped. Does this permanently leak the 
allocated dma_buf array under memory pressure or DMA mapping exhaustion?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260827-derive_clk_perf_tbl_from_perf_domain_opp_table-v2-0-091697dbeb02@oss.qualcomm.com?part=9

  reply	other threads:[~2026-08-27 18:25 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-27 17:59 [PATCH v2 0/9] soc: qcom: geni: Derive SE clock configuration from OPP table on SA8255P Praveen Talari
2026-08-27 17:59 ` [PATCH v2 1/9] pmdomain: arm: Fix -EINVAL from scmi_pd_set_perf_state() on state 0 Praveen Talari
2026-08-27 18:16   ` sashiko-bot
2026-09-01 14:31   ` Ulf Hansson
2026-08-27 17:59 ` [PATCH v2 2/9] soc: qcom: geni-se: Populate clk_perf_tbl with SE source clock frequencies from perf OPP table Praveen Talari
2026-08-27 18:16   ` sashiko-bot
2026-10-07  7:24   ` Mukesh Savaliya
2026-08-27 17:59 ` [PATCH v2 3/9] soc: qcom: geni-se: Add helper to set SE clock rate via OPP Praveen Talari
2026-08-27 18:14   ` sashiko-bot
2026-09-04  9:01   ` Konrad Dybcio
2026-08-27 17:59 ` [PATCH v2 4/9] soc: qcom: geni-se: Remove OPP rate reset from resource deactivation Praveen Talari
2026-08-27 18:14   ` sashiko-bot
2026-09-04  8:49   ` Konrad Dybcio
2026-09-11 17:13     ` Praveen Talari
2026-10-07  8:51   ` Mukesh Savaliya
2026-08-27 17:59 ` [PATCH v2 5/9] serial: qcom-geni: Use geni_se_set_rate() for source clock configuration Praveen Talari
2026-08-27 18:12   ` sashiko-bot
2026-10-08  7:35   ` Mukesh Savaliya
2026-08-27 17:59 ` [PATCH v2 6/9] spi: qcom-geni: Use geni_se_set_rate() for setting source clock frequency Praveen Talari
2026-08-27 18:12   ` sashiko-bot
2026-10-08 19:45   ` Mukesh Savaliya
2026-08-27 17:59 ` [PATCH v2 7/9] i2c: qcom-geni: Vote for SE clock rate using OPP Praveen Talari
2026-08-27 18:11   ` sashiko-bot
2026-09-04  8:52   ` Konrad Dybcio
2026-09-11 17:42     ` Praveen Talari
2026-08-27 17:59 ` [PATCH v2 8/9] i2c: qcom-geni: Use common GENI resource initialization helper Praveen Talari
2026-08-27 18:16   ` sashiko-bot
2026-08-27 17:59 ` [PATCH v2 9/9] i2c: qcom-geni: Use geni_se_set_rate() for setting source clock frequency Praveen Talari
2026-08-27 18:25   ` sashiko-bot [this message]
2026-09-01 14:52 ` [PATCH v2 0/9] soc: qcom: geni: Derive SE clock configuration from OPP table on SA8255P Ulf Hansson
2026-09-01 16:48   ` Praveen Talari
2026-09-04  7:56     ` Ulf Hansson
2026-09-04  9:00       ` Konrad Dybcio
2026-09-11 17:33         ` Praveen Talari
2026-09-22 13:06           ` Konrad Dybcio
2026-09-28  8:59             ` Praveen Talari
2026-09-09  6:32       ` Praveen Talari

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260827182508.906AE1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=praveen.talari@oss.qualcomm.com \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.