| Message ID | 20260916070631.1965713-1-vulab@iscas.ac.cn |
|---|---|
| State | Accepted |
| Delegated to: | Andi Shyti |
| Headers | show |
| Series | None | expand |
On Wed, Sep 16, 2026 at 11:07 AM Wentao Liang <vulab@iscas.ac.cn> wrote: > > In wmt_i2c_probe(), i2c->clk is acquired using of_clk_get(). If any > subsequent operation fails or when the module is unloaded, the clock > reference count is never decremented via clk_put(), leading to a > resource leak. > > Switch to devm_clk_get() so that the clock is automatically managed > and released. > > Fixes: 560746eb79d3 ("i2c: vt8500: Add support for I2C bus on Wondermedia SoCs") > Cc: stable@vger.kernel.org > Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> > --- > drivers/i2c/busses/i2c-viai2c-wmt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/i2c/busses/i2c-viai2c-wmt.c b/drivers/i2c/busses/i2c-viai2c-wmt.c > index 2cf3cc0165fb..74ca93b44347 100644 > --- a/drivers/i2c/busses/i2c-viai2c-wmt.c > +++ b/drivers/i2c/busses/i2c-viai2c-wmt.c > @@ -117,7 +117,7 @@ static int wmt_i2c_probe(struct platform_device *pdev) > return dev_err_probe(&pdev->dev, err, > "failed to request irq %i\n", i2c->irq); > > - i2c->clk = of_clk_get(np, 0); > + i2c->clk = devm_clk_get(&pdev->dev, NULL); Maybe we could go for devm_clk_get_enabled and drop some more boilerplate which follows in wmt_i2c_reset_hardware, while at it? Backporting this to stable seems like a stretch to me, though (it's quite old code, so there would be quite a lot of backporting for a rarely hit resource leak). Best regards, Alexey
Hi Wentao, On Wed, Sep 16, 2026 at 11:17:49AM +0400, Alexey Charkov wrote: > On Wed, Sep 16, 2026 at 11:07 AM Wentao Liang <vulab@iscas.ac.cn> wrote: > > > > In wmt_i2c_probe(), i2c->clk is acquired using of_clk_get(). If any > > subsequent operation fails or when the module is unloaded, the clock > > reference count is never decremented via clk_put(), leading to a > > resource leak. > > > > Switch to devm_clk_get() so that the clock is automatically managed > > and released. > > > > Fixes: 560746eb79d3 ("i2c: vt8500: Add support for I2C bus on Wondermedia SoCs") > > Cc: stable@vger.kernel.org > > Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> this is 4/20 but where are the rest of the patches? > > --- > > drivers/i2c/busses/i2c-viai2c-wmt.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/i2c/busses/i2c-viai2c-wmt.c b/drivers/i2c/busses/i2c-viai2c-wmt.c > > index 2cf3cc0165fb..74ca93b44347 100644 > > --- a/drivers/i2c/busses/i2c-viai2c-wmt.c > > +++ b/drivers/i2c/busses/i2c-viai2c-wmt.c > > @@ -117,7 +117,7 @@ static int wmt_i2c_probe(struct platform_device *pdev) > > return dev_err_probe(&pdev->dev, err, > > "failed to request irq %i\n", i2c->irq); > > > > - i2c->clk = of_clk_get(np, 0); > > + i2c->clk = devm_clk_get(&pdev->dev, NULL); > > Maybe we could go for devm_clk_get_enabled and drop some more > boilerplate which follows in wmt_i2c_reset_hardware, while at it? > > Backporting this to stable seems like a stretch to me, though (it's > quite old code, so there would be quite a lot of backporting for a > rarely hit resource leak). Alexey asked a question. Wouldn't it be good to follow up? Unfortunately, this is becoming quite common with LLM generated patches, where questions are often left unanswered, perhaps because the patches are not fully understood by committers. I think the patch is correct, though, and Alexey's suggestions can be addressed after this is merged. With some disappointment, I'm pushing this patch to i2c/i2c-fixes-2. Andi
diff --git a/drivers/i2c/busses/i2c-viai2c-wmt.c b/drivers/i2c/busses/i2c-viai2c-wmt.c index 2cf3cc0165fb..74ca93b44347 100644 --- a/drivers/i2c/busses/i2c-viai2c-wmt.c +++ b/drivers/i2c/busses/i2c-viai2c-wmt.c @@ -117,7 +117,7 @@ static int wmt_i2c_probe(struct platform_device *pdev) return dev_err_probe(&pdev->dev, err, "failed to request irq %i\n", i2c->irq); - i2c->clk = of_clk_get(np, 0); + i2c->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(i2c->clk)) return dev_err_probe(&pdev->dev, PTR_ERR(i2c->clk), "unable to request clock\n");
In wmt_i2c_probe(), i2c->clk is acquired using of_clk_get(). If any subsequent operation fails or when the module is unloaded, the clock reference count is never decremented via clk_put(), leading to a resource leak. Switch to devm_clk_get() so that the clock is automatically managed and released. Fixes: 560746eb79d3 ("i2c: vt8500: Add support for I2C bus on Wondermedia SoCs") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> --- drivers/i2c/busses/i2c-viai2c-wmt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)