* 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.