lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Wed, 16 Sep 2020 16:14:44 +0300
From:   kernel test robot <lkp@...el.com>
To:     kbuild@...ts.01.org,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc:     lkp@...el.com, Shubhrajyoti Datta <shubhrajyoti.datta@...inx.com>,
        Michal Simek <michal.simek@...inx.com>,
        Johan Hovold <johan@...nel.org>, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org
Subject: drivers/tty/serial/uartlite.c:810 ulite_probe() warn: 'pdata->clk'
 not released on lines: 802.

Hi Shubhrajyoti Datta,

[ The patch a revert so it blames the wrong person (Greg).  But it seems
  buggy.  See below.  -dan ]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   fc4f28bb3daf3265d6bc5f73b497306985bb23ab
commit: f4c47547b40a212f4eb017297f9d232ac09f7aaf Revert "serial-uartlite: Move the uart register"
config: x86_64-randconfig-m001-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@...el.com>
Reported-by: Dan Carpenter <dan.carpenter@...cle.com>

New smatch warnings:
drivers/tty/serial/uartlite.c:810 ulite_probe() warn: 'pdata->clk' not released on lines: 802.

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f4c47547b40a212f4eb017297f9d232ac09f7aaf
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout f4c47547b40a212f4eb017297f9d232ac09f7aaf
vim +810 drivers/tty/serial/uartlite.c

9671f09921d93e drivers/tty/serial/uartlite.c Bill Pemberton     2012-11-19  753  static int ulite_probe(struct platform_device *pdev)
238b8721a554a3 drivers/serial/uartlite.c     Peter Korsgaard    2006-12-06  754  {
5c90c07b98c021 drivers/tty/serial/uartlite.c Michal Simek       2015-04-13  755  	struct resource *res;
da7bf20e775804 drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  756  	struct uartlite_data *pdata;
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  757  	int irq, ret;
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  758  	int id = pdev->id;
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  759  #ifdef CONFIG_OF
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  760  	const __be32 *prop;
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  761  
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  762  	prop = of_get_property(pdev->dev.of_node, "port-number", NULL);
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  763  	if (prop)
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  764  		id = be32_to_cpup(prop);
e5263a517688b8 drivers/tty/serial/uartlite.c Grant Likely       2011-02-22  765  #endif
da7bf20e775804 drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  766  	pdata = devm_kzalloc(&pdev->dev, sizeof(struct uartlite_data),
da7bf20e775804 drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  767  			     GFP_KERNEL);
da7bf20e775804 drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  768  	if (!pdata)
da7bf20e775804 drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  769  		return -ENOMEM;
238b8721a554a3 drivers/serial/uartlite.c     Peter Korsgaard    2006-12-06  770  
8fa7b6100693e0 drivers/serial/uartlite.c     Grant Likely       2007-10-02  771  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
8fa7b6100693e0 drivers/serial/uartlite.c     Grant Likely       2007-10-02  772  	if (!res)
8fa7b6100693e0 drivers/serial/uartlite.c     Grant Likely       2007-10-02  773  		return -ENODEV;
238b8721a554a3 drivers/serial/uartlite.c     Peter Korsgaard    2006-12-06  774  
5c90c07b98c021 drivers/tty/serial/uartlite.c Michal Simek       2015-04-13  775  	irq = platform_get_irq(pdev, 0);
5c90c07b98c021 drivers/tty/serial/uartlite.c Michal Simek       2015-04-13  776  	if (irq <= 0)
5c90c07b98c021 drivers/tty/serial/uartlite.c Michal Simek       2015-04-13  777  		return -ENXIO;
238b8721a554a3 drivers/serial/uartlite.c     Peter Korsgaard    2006-12-06  778  
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  779  	pdata->clk = devm_clk_get(&pdev->dev, "s_axi_aclk");
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  780  	if (IS_ERR(pdata->clk)) {
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  781  		if (PTR_ERR(pdata->clk) != -ENOENT)
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  782  			return PTR_ERR(pdata->clk);
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  783  
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  784  		/*
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  785  		 * Clock framework support is optional, continue on
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  786  		 * anyways if we don't find a matching clock.
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  787  		 */
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  788  		pdata->clk = NULL;
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  789  	}
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  790  
ea42d7a67a9e2b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-08-06  791  	ret = clk_prepare_enable(pdata->clk);
                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  792  	if (ret) {
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  793  		dev_err(&pdev->dev, "Failed to prepare clock\n");
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  794  		return ret;
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  795  	}
14288befeb572b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-07-21  796  
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  797  	if (!ulite_uart_driver.state) {
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  798  		dev_dbg(&pdev->dev, "uartlite: calling uart_register_driver()\n");
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  799  		ret = uart_register_driver(&ulite_uart_driver);
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  800  		if (ret < 0) {
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  801  			dev_err(&pdev->dev, "Failed to register driver\n");
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  802  			return ret;
                                                                                                        ^^^^^^^^^^
clk_disable_unprepare(pdata->clk); on error path?

f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  803  		}
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  804  	}
f4c47547b40a21 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  805  
ea42d7a67a9e2b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-08-06  806  	ret = ulite_assign(&pdev->dev, id, res->start, irq, pdata);
ea42d7a67a9e2b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-08-06  807  
07e5d4ff125ad0 drivers/tty/serial/uartlite.c Greg Kroah-Hartman 2019-11-14  808  	clk_disable(pdata->clk);
                                                                                        ^^^^^^^^^^^^^^^^^^^^^^
This disables the clock on the success path and it comes from
commit ea42d7a67a9e ("tty: serial: uartlite: Enable clocks at probe")
We do a second disable in the ->remove() function so it just seems
very wrong.

ea42d7a67a9e2b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-08-06  809  
ea42d7a67a9e2b drivers/tty/serial/uartlite.c Shubhrajyoti Datta 2018-08-06 @810  	return ret;
8fa7b6100693e0 drivers/serial/uartlite.c     Grant Likely       2007-10-02  811  }

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

Download attachment ".config.gz" of type "application/gzip" (30662 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ