All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/pwm/pwm-atmel-tcb.c:490 atmel_tcb_pwm_probe() warn: 'tcbpwmc->clk' from clk_prepare_enable() not released on lines: 490.
@ 2026-05-14 13:02 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-05-14 13:02 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Sangyun Kim <sangyun.kim@snu.ac.kr>
CC: "Uwe Kleine-König" <ukleinek@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   e1914add2799225a87502051415fc5c32aeb02ae
commit: 68637b68afcc3cb4d56aca14a3a1d1b47b879369 pwm: atmel-tcb: Cache clock rates and mark chip as atomic
date:   3 weeks ago
:::::: branch date: 18 hours ago
:::::: commit date: 3 weeks ago
config: xtensa-randconfig-r073-20260514 (https://download.01.org/0day-ci/archive/20260514/202605142013.jjGU7bQe-lkp@intel.com/config)
compiler: xtensa-linux-gcc (GCC) 15.2.0
smatch: v0.5.0-9185-gbcc58b9c

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 68637b68afcc ("pwm: atmel-tcb: Cache clock rates and mark chip as atomic")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202605142013.jjGU7bQe-lkp@intel.com/

smatch warnings:
drivers/pwm/pwm-atmel-tcb.c:490 atmel_tcb_pwm_probe() warn: 'tcbpwmc->clk' from clk_prepare_enable() not released on lines: 490.

vim +490 drivers/pwm/pwm-atmel-tcb.c

061f8572a31c0d Alexandre Belloni 2020-10-30  382  
9421bade0765d8 Boris BREZILLON   2013-01-08  383  static int atmel_tcb_pwm_probe(struct platform_device *pdev)
9421bade0765d8 Boris BREZILLON   2013-01-08  384  {
dfab73eb282969 Uwe Kleine-König  2024-02-14  385  	struct pwm_chip *chip;
061f8572a31c0d Alexandre Belloni 2020-10-30  386  	const struct of_device_id *match;
c9a787b9456066 Uwe Kleine-König  2024-07-09  387  	struct atmel_tcb_pwm_chip *tcbpwmc;
061f8572a31c0d Alexandre Belloni 2020-10-30  388  	const struct atmel_tcb_config *config;
9421bade0765d8 Boris BREZILLON   2013-01-08  389  	struct device_node *np = pdev->dev.of_node;
061f8572a31c0d Alexandre Belloni 2020-10-30  390  	char clk_name[] = "t0_clk";
9421bade0765d8 Boris BREZILLON   2013-01-08  391  	int err;
061f8572a31c0d Alexandre Belloni 2020-10-30  392  	int channel;
9421bade0765d8 Boris BREZILLON   2013-01-08  393  
c9a787b9456066 Uwe Kleine-König  2024-07-09  394  	chip = devm_pwmchip_alloc(&pdev->dev, NPWM, sizeof(*tcbpwmc));
af184748c6807e Uwe Kleine-König  2024-02-14  395  	if (IS_ERR(chip))
af184748c6807e Uwe Kleine-König  2024-02-14  396  		return PTR_ERR(chip);
c9a787b9456066 Uwe Kleine-König  2024-07-09  397  	tcbpwmc = to_tcb_chip(chip);
0323e8fedd1ef2 Uwe Kleine-König  2023-07-19  398  
061f8572a31c0d Alexandre Belloni 2020-10-30  399  	err = of_property_read_u32(np, "reg", &channel);
9421bade0765d8 Boris BREZILLON   2013-01-08  400  	if (err < 0) {
9421bade0765d8 Boris BREZILLON   2013-01-08  401  		dev_err(&pdev->dev,
061f8572a31c0d Alexandre Belloni 2020-10-30  402  			"failed to get Timer Counter Block channel from device tree (error: %d)\n",
9421bade0765d8 Boris BREZILLON   2013-01-08  403  			err);
9421bade0765d8 Boris BREZILLON   2013-01-08  404  		return err;
9421bade0765d8 Boris BREZILLON   2013-01-08  405  	}
9421bade0765d8 Boris BREZILLON   2013-01-08  406  
c9a787b9456066 Uwe Kleine-König  2024-07-09  407  	tcbpwmc->regmap = syscon_node_to_regmap(np->parent);
c9a787b9456066 Uwe Kleine-König  2024-07-09  408  	if (IS_ERR(tcbpwmc->regmap))
c9a787b9456066 Uwe Kleine-König  2024-07-09  409  		return PTR_ERR(tcbpwmc->regmap);
061f8572a31c0d Alexandre Belloni 2020-10-30  410  
c9a787b9456066 Uwe Kleine-König  2024-07-09  411  	tcbpwmc->slow_clk = of_clk_get_by_name(np->parent, "slow_clk");
c9a787b9456066 Uwe Kleine-König  2024-07-09  412  	if (IS_ERR(tcbpwmc->slow_clk))
c9a787b9456066 Uwe Kleine-König  2024-07-09  413  		return PTR_ERR(tcbpwmc->slow_clk);
061f8572a31c0d Alexandre Belloni 2020-10-30  414  
061f8572a31c0d Alexandre Belloni 2020-10-30  415  	clk_name[1] += channel;
c9a787b9456066 Uwe Kleine-König  2024-07-09  416  	tcbpwmc->clk = of_clk_get_by_name(np->parent, clk_name);
c9a787b9456066 Uwe Kleine-König  2024-07-09  417  	if (IS_ERR(tcbpwmc->clk))
c9a787b9456066 Uwe Kleine-König  2024-07-09  418  		tcbpwmc->clk = of_clk_get_by_name(np->parent, "t0_clk");
c9a787b9456066 Uwe Kleine-König  2024-07-09  419  	if (IS_ERR(tcbpwmc->clk)) {
c9a787b9456066 Uwe Kleine-König  2024-07-09  420  		err = PTR_ERR(tcbpwmc->clk);
c11622324c0234 Uwe Kleine-König  2023-07-19  421  		goto err_slow_clk;
c11622324c0234 Uwe Kleine-König  2023-07-19  422  	}
061f8572a31c0d Alexandre Belloni 2020-10-30  423  
061f8572a31c0d Alexandre Belloni 2020-10-30  424  	match = of_match_node(atmel_tcb_of_match, np->parent);
061f8572a31c0d Alexandre Belloni 2020-10-30  425  	config = match->data;
9421bade0765d8 Boris BREZILLON   2013-01-08  426  
34cbcd72588f40 Alexandre Belloni 2020-10-30  427  	if (config->has_gclk) {
c9a787b9456066 Uwe Kleine-König  2024-07-09  428  		tcbpwmc->gclk = of_clk_get_by_name(np->parent, "gclk");
c9a787b9456066 Uwe Kleine-König  2024-07-09  429  		if (IS_ERR(tcbpwmc->gclk)) {
c9a787b9456066 Uwe Kleine-König  2024-07-09  430  			err = PTR_ERR(tcbpwmc->gclk);
c11622324c0234 Uwe Kleine-König  2023-07-19  431  			goto err_clk;
c11622324c0234 Uwe Kleine-König  2023-07-19  432  		}
9421bade0765d8 Boris BREZILLON   2013-01-08  433  	}
9421bade0765d8 Boris BREZILLON   2013-01-08  434  
dfab73eb282969 Uwe Kleine-König  2024-02-14  435  	chip->ops = &atmel_tcb_pwm_ops;
68637b68afcc3c Sangyun Kim       2026-04-19  436  	chip->atomic = true;
c9a787b9456066 Uwe Kleine-König  2024-07-09  437  	tcbpwmc->channel = channel;
c9a787b9456066 Uwe Kleine-König  2024-07-09  438  	tcbpwmc->width = config->counter_width;
9421bade0765d8 Boris BREZILLON   2013-01-08  439  
68637b68afcc3c Sangyun Kim       2026-04-19  440  	err = clk_prepare_enable(tcbpwmc->clk);
7d8d05d11473a1 Boris Brezillon   2015-08-16  441  	if (err)
c11622324c0234 Uwe Kleine-König  2023-07-19  442  		goto err_gclk;
7d8d05d11473a1 Boris Brezillon   2015-08-16  443  
68637b68afcc3c Sangyun Kim       2026-04-19  444  	err = clk_prepare_enable(tcbpwmc->slow_clk);
68637b68afcc3c Sangyun Kim       2026-04-19  445  	if (err)
68637b68afcc3c Sangyun Kim       2026-04-19  446  		goto err_disable_clk;;
68637b68afcc3c Sangyun Kim       2026-04-19  447  
68637b68afcc3c Sangyun Kim       2026-04-19  448  	err = clk_rate_exclusive_get(tcbpwmc->clk);
68637b68afcc3c Sangyun Kim       2026-04-19  449  	if (err)
68637b68afcc3c Sangyun Kim       2026-04-19  450  		goto err_disable_slow_clk;
68637b68afcc3c Sangyun Kim       2026-04-19  451  
68637b68afcc3c Sangyun Kim       2026-04-19  452  	err = clk_rate_exclusive_get(tcbpwmc->slow_clk);
68637b68afcc3c Sangyun Kim       2026-04-19  453  	if (err)
68637b68afcc3c Sangyun Kim       2026-04-19  454  		goto err_clk_unlock;
68637b68afcc3c Sangyun Kim       2026-04-19  455  
68637b68afcc3c Sangyun Kim       2026-04-19  456  	tcbpwmc->rate = clk_get_rate(tcbpwmc->clk);
68637b68afcc3c Sangyun Kim       2026-04-19  457  	tcbpwmc->slow_rate = clk_get_rate(tcbpwmc->slow_clk);
68637b68afcc3c Sangyun Kim       2026-04-19  458  
c9a787b9456066 Uwe Kleine-König  2024-07-09  459  	spin_lock_init(&tcbpwmc->lock);
9421bade0765d8 Boris BREZILLON   2013-01-08  460  
dfab73eb282969 Uwe Kleine-König  2024-02-14  461  	err = pwmchip_add(chip);
7d8d05d11473a1 Boris Brezillon   2015-08-16  462  	if (err < 0)
68637b68afcc3c Sangyun Kim       2026-04-19  463  		goto err_slow_clk_unlock;
9421bade0765d8 Boris BREZILLON   2013-01-08  464  
dfab73eb282969 Uwe Kleine-König  2024-02-14  465  	platform_set_drvdata(pdev, chip);
9421bade0765d8 Boris BREZILLON   2013-01-08  466  
9421bade0765d8 Boris BREZILLON   2013-01-08  467  	return 0;
7d8d05d11473a1 Boris Brezillon   2015-08-16  468  
68637b68afcc3c Sangyun Kim       2026-04-19  469  err_slow_clk_unlock:
68637b68afcc3c Sangyun Kim       2026-04-19  470  	clk_rate_exclusive_put(tcbpwmc->slow_clk);
68637b68afcc3c Sangyun Kim       2026-04-19  471  
68637b68afcc3c Sangyun Kim       2026-04-19  472  err_clk_unlock:
68637b68afcc3c Sangyun Kim       2026-04-19  473  	clk_rate_exclusive_put(tcbpwmc->clk);
68637b68afcc3c Sangyun Kim       2026-04-19  474  
7d8d05d11473a1 Boris Brezillon   2015-08-16  475  err_disable_clk:
68637b68afcc3c Sangyun Kim       2026-04-19  476  	clk_disable_unprepare(tcbpwmc->clk);
68637b68afcc3c Sangyun Kim       2026-04-19  477  
68637b68afcc3c Sangyun Kim       2026-04-19  478  err_disable_slow_clk:
c9a787b9456066 Uwe Kleine-König  2024-07-09  479  	clk_disable_unprepare(tcbpwmc->slow_clk);
7d8d05d11473a1 Boris Brezillon   2015-08-16  480  
c11622324c0234 Uwe Kleine-König  2023-07-19  481  err_gclk:
c9a787b9456066 Uwe Kleine-König  2024-07-09  482  	clk_put(tcbpwmc->gclk);
c11622324c0234 Uwe Kleine-König  2023-07-19  483  
c11622324c0234 Uwe Kleine-König  2023-07-19  484  err_clk:
c9a787b9456066 Uwe Kleine-König  2024-07-09  485  	clk_put(tcbpwmc->clk);
c11622324c0234 Uwe Kleine-König  2023-07-19  486  
061f8572a31c0d Alexandre Belloni 2020-10-30  487  err_slow_clk:
c9a787b9456066 Uwe Kleine-König  2024-07-09  488  	clk_put(tcbpwmc->slow_clk);
7d8d05d11473a1 Boris Brezillon   2015-08-16  489  
7d8d05d11473a1 Boris Brezillon   2015-08-16 @490  	return err;
9421bade0765d8 Boris BREZILLON   2013-01-08  491  }
9421bade0765d8 Boris BREZILLON   2013-01-08  492  

:::::: The code at line 490 was first introduced by commit
:::::: 7d8d05d11473a169ab4d53bc7fc23d1fe3f1959f misc: atmel_tclib: get and use slow clock

:::::: TO: Boris Brezillon <boris.brezillon@free-electrons.com>
:::::: CC: Alexandre Belloni <alexandre.belloni@free-electrons.com>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-14 13:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-14 13:02 drivers/pwm/pwm-atmel-tcb.c:490 atmel_tcb_pwm_probe() warn: 'tcbpwmc->clk' from clk_prepare_enable() not released on lines: 490 kernel test robot

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.