public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, Swapnil Jakhade <sjakhade@cadence.com>
Cc: lkp@intel.com, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org,
	Kishon Vijay Abraham I <kishon@ti.com>,
	Yuti Amonkar <yamonkar@cadence.com>
Subject: drivers/phy/cadence/phy-cadence-torrent.c:326 cdns_torrent_dp_init() warn: 'cdns_phy->clk' not released on lines: 280.
Date: Thu, 17 Sep 2020 12:50:11 +0300	[thread overview]
Message-ID: <20200917095011.GM4282@kadam> (raw)

[-- Attachment #1: Type: text/plain, Size: 10217 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   5925fa68fe8244651b3f78a88c4af99190a88f0d
commit: e4b496a376f1ad83d708628e31e90c4e1093a867 phy: cadence-torrent: Add 19.2 MHz reference clock support
config: i386-randconfig-m021-20200916 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/phy/cadence/phy-cadence-torrent.c:326 cdns_torrent_dp_init() warn: 'cdns_phy->clk' not released on lines: 280.

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e4b496a376f1ad83d708628e31e90c4e1093a867
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout e4b496a376f1ad83d708628e31e90c4e1093a867
vim +326 drivers/phy/cadence/phy-cadence-torrent.c

92e9ccc6dc2249 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  253  static int cdns_torrent_dp_init(struct phy *phy)
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  254  {
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  255  	unsigned char lane_bits;
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  256  	int ret;
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  257  
92e9ccc6dc2249 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  258  	struct cdns_torrent_phy *cdns_phy = phy_get_drvdata(phy);
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  259  
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  260  	ret = clk_prepare_enable(cdns_phy->clk);
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  261  	if (ret) {
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  262  		dev_err(cdns_phy->dev, "Failed to prepare ref clock\n");
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  263  		return ret;
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  264  	}
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  265  
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  266  	cdns_phy->ref_clk_rate = clk_get_rate(cdns_phy->clk);
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  267  	if (!(cdns_phy->ref_clk_rate)) {
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  268  		dev_err(cdns_phy->dev, "Failed to get ref clock rate\n");
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  269  		clk_disable_unprepare(cdns_phy->clk);
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  270  		return -EINVAL;
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  271  	}
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  272  
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  273  	switch (cdns_phy->ref_clk_rate) {
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  274  	case REF_CLK_19_2MHz:
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  275  	case REF_CLK_25MHz:
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  276  		/* Valid Ref Clock Rate */
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  277  		break;
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  278  	default:
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  279  		dev_err(cdns_phy->dev, "Unsupported Ref Clock Rate\n");
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  280  		return -EINVAL;

This error path should probably call clk_disable_unprepare(cdns_phy->clk);
The same for the other error paths below?  The check is only complaining
when the return is definitely negative, but it should probably updated
to say that the other non-zero returns are errors as well.

e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  281  	}
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  282  
f61b3aed20003e drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  283  	cdns_torrent_dp_write(cdns_phy, PHY_AUX_CTRL, 0x0003); /* enable AUX */
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  284  
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  285  	/* PHY PMA registers configuration function */
92e9ccc6dc2249 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  286  	cdns_torrent_dp_pma_cfg(cdns_phy);
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  287  
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  288  	/*
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  289  	 * Set lines power state to A0
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  290  	 * Set lines pll clk enable to 0
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  291  	 */
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  292  	cdns_torrent_dp_set_a0_pll(cdns_phy, cdns_phy->num_lanes);
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  293  
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  294  	/*
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  295  	 * release phy_l0*_reset_n and pma_tx_elec_idle_ln_* based on
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  296  	 * used lanes
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  297  	 */
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  298  	lane_bits = (1 << cdns_phy->num_lanes) - 1;
f61b3aed20003e drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  299  	cdns_torrent_dp_write(cdns_phy, PHY_RESET,
f61b3aed20003e drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  300  			      ((0xF & ~lane_bits) << 4) | (0xF & lane_bits));
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  301  
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  302  	/* release pma_xcvr_pllclk_en_ln_*, only for the master lane */
f61b3aed20003e drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  303  	cdns_torrent_dp_write(cdns_phy, PHY_PMA_XCVR_PLLCLK_EN, 0x0001);
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  304  
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  305  	/* PHY PMA registers configuration functions */
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  306  	/* Initialize PHY with max supported link rate, without SSC. */
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  307  	if (cdns_phy->ref_clk_rate == REF_CLK_19_2MHz)
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  308  		cdns_torrent_dp_pma_cmn_vco_cfg_19_2mhz(cdns_phy,
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  309  							cdns_phy->max_bit_rate,
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  310  							false);
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  311  	else if (cdns_phy->ref_clk_rate == REF_CLK_25MHz)
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  312  		cdns_torrent_dp_pma_cmn_vco_cfg_25mhz(cdns_phy,
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  313  						      cdns_phy->max_bit_rate,
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  314  						      false);
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  315  	cdns_torrent_dp_pma_cmn_rate(cdns_phy, cdns_phy->max_bit_rate,
e4b496a376f1ad drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  316  				     cdns_phy->num_lanes);
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  317  
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  318  	/* take out of reset */
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  319  	cdns_dp_phy_write_field(cdns_phy, PHY_RESET, 8, 1, 1);
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  320  	ret = cdns_torrent_dp_wait_pma_cmn_ready(cdns_phy);
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  321  	if (ret)
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  322  		return ret;
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  323  
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  324  	ret = cdns_torrent_dp_run(cdns_phy);
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06  325  
21c79146a1bbc6 drivers/phy/cadence/phy-cadence-torrent.c Swapnil Jakhade 2020-02-06 @326  	return ret;
c8b427edc7378f drivers/phy/cadence/phy-cadence-dp.c      Scott Telford   2018-08-09  327  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 30273 bytes --]

                 reply	other threads:[~2020-09-17  9:51 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20200917095011.GM4282@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kbuild@lists.01.org \
    --cc=kishon@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=sjakhade@cadence.com \
    --cc=yamonkar@cadence.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox