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]
Message-ID: <20210225065958.GU2087@kadam>
Date:   Thu, 25 Feb 2021 09:59:58 +0300
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     kbuild@...ts.01.org, Tong Zhang <ztong0001@...il.com>
Cc:     lkp@...el.com, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org
Subject: drivers/net/wan/lmc/lmc_main.c:947 lmc_init_one() warn: 'dev' not
 released on lines: 903.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   29c395c77a9a514c5857c45ceae2665e9bd99ac7
commit: 62e69bc419772638369eff8ff81340bde8aceb61 net: wan/lmc: unregister device when no matching device is found
config: i386-randconfig-m021-20210225 (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/net/wan/lmc/lmc_main.c:947 lmc_init_one() warn: 'dev' not released on lines: 903.

Old smatch warnings:
drivers/net/wan/lmc/lmc_main.c:721 lmc_watchdog() warn: inconsistent indenting
drivers/net/wan/lmc/lmc_main.c:867 lmc_init_one() warn: inconsistent indenting
drivers/net/wan/lmc/lmc_main.c:947 lmc_init_one() warn: 'pdev' not released on lines: 822,827,903.

vim +/dev +947 drivers/net/wan/lmc/lmc_main.c

1dd06ae8db716e Greg Kroah-Hartman 2012-12-06  796  static int lmc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
^1da177e4c3f41 Linus Torvalds     2005-04-16  797  {
^1da177e4c3f41 Linus Torvalds     2005-04-16  798  	lmc_softc_t *sc;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  799  	struct net_device *dev;
^1da177e4c3f41 Linus Torvalds     2005-04-16  800  	u16 subdevice;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  801  	u16 AdapModelNum;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  802  	int err;
^1da177e4c3f41 Linus Torvalds     2005-04-16  803  	static int cards_found;
^1da177e4c3f41 Linus Torvalds     2005-04-16  804  
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  805  	err = pcim_enable_device(pdev);
^1da177e4c3f41 Linus Torvalds     2005-04-16  806  	if (err) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  807  		printk(KERN_ERR "lmc: pci enable failed: %d\n", err);
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  808  		return err;
^1da177e4c3f41 Linus Torvalds     2005-04-16  809  	}
^1da177e4c3f41 Linus Torvalds     2005-04-16  810  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  811  	err = pci_request_regions(pdev, "lmc");
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  812  	if (err) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  813  		printk(KERN_ERR "lmc: pci_request_region failed\n");
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  814  		return err;
^1da177e4c3f41 Linus Torvalds     2005-04-16  815  	}
^1da177e4c3f41 Linus Torvalds     2005-04-16  816  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  817  	/*
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  818  	 * Allocate our own device structure
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  819  	 */
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  820  	sc = devm_kzalloc(&pdev->dev, sizeof(lmc_softc_t), GFP_KERNEL);
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  821  	if (!sc)
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  822  		return -ENOMEM;
^1da177e4c3f41 Linus Torvalds     2005-04-16  823  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  824  	dev = alloc_hdlcdev(sc);
                                                        ^^^^^^^^^^^^^^^^^^^^^^^
The "dev" is allocated here.

64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  825  	if (!dev) {
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  826  		printk(KERN_ERR "lmc:alloc_netdev for device failed\n");
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  827  		return -ENOMEM;
^1da177e4c3f41 Linus Torvalds     2005-04-16  828  	}
^1da177e4c3f41 Linus Torvalds     2005-04-16  829  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  830  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  831  	dev->type = ARPHRD_HDLC;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  832  	dev_to_hdlc(dev)->xmit = lmc_start_xmit;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  833  	dev_to_hdlc(dev)->attach = lmc_attach;
991990a12de422 Krzysztof Hałasa   2009-01-08  834  	dev->netdev_ops = &lmc_ops;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  835  	dev->watchdog_timeo = HZ; /* 1 second */
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  836  	dev->tx_queue_len = 100;
^1da177e4c3f41 Linus Torvalds     2005-04-16  837  	sc->lmc_device = dev;
^1da177e4c3f41 Linus Torvalds     2005-04-16  838  	sc->name = dev->name;
^1da177e4c3f41 Linus Torvalds     2005-04-16  839  	sc->if_type = LMC_PPP;
^1da177e4c3f41 Linus Torvalds     2005-04-16  840  	sc->check = 0xBEAFCAFE;
^1da177e4c3f41 Linus Torvalds     2005-04-16  841  	dev->base_addr = pci_resource_start(pdev, 0);
^1da177e4c3f41 Linus Torvalds     2005-04-16  842  	dev->irq = pdev->irq;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  843  	pci_set_drvdata(pdev, dev);
^1da177e4c3f41 Linus Torvalds     2005-04-16  844  	SET_NETDEV_DEV(dev, &pdev->dev);
^1da177e4c3f41 Linus Torvalds     2005-04-16  845  
^1da177e4c3f41 Linus Torvalds     2005-04-16  846  	/*
^1da177e4c3f41 Linus Torvalds     2005-04-16  847  	 * This will get the protocol layer ready and do any 1 time init's
^1da177e4c3f41 Linus Torvalds     2005-04-16  848  	 * Must have a valid sc and dev structure
^1da177e4c3f41 Linus Torvalds     2005-04-16  849  	 */
^1da177e4c3f41 Linus Torvalds     2005-04-16  850  	lmc_proto_attach(sc);
^1da177e4c3f41 Linus Torvalds     2005-04-16  851  
^1da177e4c3f41 Linus Torvalds     2005-04-16  852  	/* Init the spin lock so can call it latter */
^1da177e4c3f41 Linus Torvalds     2005-04-16  853  
^1da177e4c3f41 Linus Torvalds     2005-04-16  854  	spin_lock_init(&sc->lmc_lock);
^1da177e4c3f41 Linus Torvalds     2005-04-16  855  	pci_set_master(pdev);
^1da177e4c3f41 Linus Torvalds     2005-04-16  856  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  857  	printk(KERN_INFO "%s: detected at %lx, irq %d\n", dev->name,
^1da177e4c3f41 Linus Torvalds     2005-04-16  858  	       dev->base_addr, dev->irq);
^1da177e4c3f41 Linus Torvalds     2005-04-16  859  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  860  	err = register_hdlc_device(dev);
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  861  	if (err) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  862  		printk(KERN_ERR "%s: register_netdev failed.\n", dev->name);
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  863  		free_netdev(dev);
7cb43bebab52d8 Amitoj Kaur Chawla 2016-02-27  864  		return err;
^1da177e4c3f41 Linus Torvalds     2005-04-16  865  	}
^1da177e4c3f41 Linus Torvalds     2005-04-16  866  
^1da177e4c3f41 Linus Torvalds     2005-04-16  867      sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN;
^1da177e4c3f41 Linus Torvalds     2005-04-16  868      sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
^1da177e4c3f41 Linus Torvalds     2005-04-16  869  
^1da177e4c3f41 Linus Torvalds     2005-04-16  870      /*
^1da177e4c3f41 Linus Torvalds     2005-04-16  871       *
^1da177e4c3f41 Linus Torvalds     2005-04-16  872       * Check either the subvendor or the subdevice, some systems reverse
^1da177e4c3f41 Linus Torvalds     2005-04-16  873       * the setting in the bois, seems to be version and arch dependent?
^1da177e4c3f41 Linus Torvalds     2005-04-16  874       * Fix the error, exchange the two values 
^1da177e4c3f41 Linus Torvalds     2005-04-16  875       */
^1da177e4c3f41 Linus Torvalds     2005-04-16  876      if ((subdevice = pdev->subsystem_device) == PCI_VENDOR_ID_LMC)
^1da177e4c3f41 Linus Torvalds     2005-04-16  877  	    subdevice = pdev->subsystem_vendor;
^1da177e4c3f41 Linus Torvalds     2005-04-16  878  
^1da177e4c3f41 Linus Torvalds     2005-04-16  879      switch (subdevice) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  880      case PCI_DEVICE_ID_LMC_HSSI:
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  881  	printk(KERN_INFO "%s: LMC HSSI\n", dev->name);
^1da177e4c3f41 Linus Torvalds     2005-04-16  882          sc->lmc_cardtype = LMC_CARDTYPE_HSSI;
^1da177e4c3f41 Linus Torvalds     2005-04-16  883          sc->lmc_media = &lmc_hssi_media;
^1da177e4c3f41 Linus Torvalds     2005-04-16  884          break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  885      case PCI_DEVICE_ID_LMC_DS3:
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  886  	printk(KERN_INFO "%s: LMC DS3\n", dev->name);
^1da177e4c3f41 Linus Torvalds     2005-04-16  887          sc->lmc_cardtype = LMC_CARDTYPE_DS3;
^1da177e4c3f41 Linus Torvalds     2005-04-16  888          sc->lmc_media = &lmc_ds3_media;
^1da177e4c3f41 Linus Torvalds     2005-04-16  889          break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  890      case PCI_DEVICE_ID_LMC_SSI:
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  891  	printk(KERN_INFO "%s: LMC SSI\n", dev->name);
^1da177e4c3f41 Linus Torvalds     2005-04-16  892          sc->lmc_cardtype = LMC_CARDTYPE_SSI;
^1da177e4c3f41 Linus Torvalds     2005-04-16  893          sc->lmc_media = &lmc_ssi_media;
^1da177e4c3f41 Linus Torvalds     2005-04-16  894          break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  895      case PCI_DEVICE_ID_LMC_T1:
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  896  	printk(KERN_INFO "%s: LMC T1\n", dev->name);
^1da177e4c3f41 Linus Torvalds     2005-04-16  897          sc->lmc_cardtype = LMC_CARDTYPE_T1;
^1da177e4c3f41 Linus Torvalds     2005-04-16  898          sc->lmc_media = &lmc_t1_media;
^1da177e4c3f41 Linus Torvalds     2005-04-16  899          break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  900      default:
af901ca181d92a André Goddard Rosa 2009-11-14  901  	printk(KERN_WARNING "%s: LMC UNKNOWN CARD!\n", dev->name);
62e69bc4197726 Tong Zhang         2021-02-15  902  	unregister_hdlc_device(dev);

We need a free_netdev(dev) like there is in lmc_remove_one().

62e69bc4197726 Tong Zhang         2021-02-15  903  	return -EIO;
^1da177e4c3f41 Linus Torvalds     2005-04-16  904          break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  905      }
^1da177e4c3f41 Linus Torvalds     2005-04-16  906  
^1da177e4c3f41 Linus Torvalds     2005-04-16  907      lmc_initcsrs (sc, dev->base_addr, 8);
^1da177e4c3f41 Linus Torvalds     2005-04-16  908  
^1da177e4c3f41 Linus Torvalds     2005-04-16  909      lmc_gpio_mkinput (sc, 0xff);
^1da177e4c3f41 Linus Torvalds     2005-04-16  910      sc->lmc_gpio = 0;		/* drive no signals yet */
^1da177e4c3f41 Linus Torvalds     2005-04-16  911  
^1da177e4c3f41 Linus Torvalds     2005-04-16  912      sc->lmc_media->defaults (sc);
^1da177e4c3f41 Linus Torvalds     2005-04-16  913  
^1da177e4c3f41 Linus Torvalds     2005-04-16  914      sc->lmc_media->set_link_status (sc, LMC_LINK_UP);
^1da177e4c3f41 Linus Torvalds     2005-04-16  915  
^1da177e4c3f41 Linus Torvalds     2005-04-16  916      /* verify that the PCI Sub System ID matches the Adapter Model number
^1da177e4c3f41 Linus Torvalds     2005-04-16  917       * from the MII register
^1da177e4c3f41 Linus Torvalds     2005-04-16  918       */
^1da177e4c3f41 Linus Torvalds     2005-04-16  919      AdapModelNum = (lmc_mii_readreg (sc, 0, 3) & 0x3f0) >> 4;
^1da177e4c3f41 Linus Torvalds     2005-04-16  920  
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  921      if ((AdapModelNum != LMC_ADAP_T1 || /* detect LMC1200 */
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  922  	 subdevice != PCI_DEVICE_ID_LMC_T1) &&
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  923  	(AdapModelNum != LMC_ADAP_SSI || /* detect LMC1000 */
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  924  	 subdevice != PCI_DEVICE_ID_LMC_SSI) &&
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  925  	(AdapModelNum != LMC_ADAP_DS3 || /* detect LMC5245 */
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  926  	 subdevice != PCI_DEVICE_ID_LMC_DS3) &&
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  927  	(AdapModelNum != LMC_ADAP_HSSI || /* detect LMC5200 */
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  928  	 subdevice != PCI_DEVICE_ID_LMC_HSSI))
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  929  	    printk(KERN_WARNING "%s: Model number (%d) miscompare for PCI"
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  930  		   " Subsystem ID = 0x%04x\n",
^1da177e4c3f41 Linus Torvalds     2005-04-16  931  		   dev->name, AdapModelNum, subdevice);
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  932  
^1da177e4c3f41 Linus Torvalds     2005-04-16  933      /*
^1da177e4c3f41 Linus Torvalds     2005-04-16  934       * reset clock
^1da177e4c3f41 Linus Torvalds     2005-04-16  935       */
^1da177e4c3f41 Linus Torvalds     2005-04-16  936      LMC_CSR_WRITE (sc, csr_gp_timer, 0xFFFFFFFFUL);
^1da177e4c3f41 Linus Torvalds     2005-04-16  937  
^1da177e4c3f41 Linus Torvalds     2005-04-16  938      sc->board_idx = cards_found++;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  939      sc->extra_stats.check = STATCHECK;
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  940      sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  941  	    sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
64bef7630ad5b0 Krzysztof Hałasa   2008-07-02  942      sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
^1da177e4c3f41 Linus Torvalds     2005-04-16  943  
^1da177e4c3f41 Linus Torvalds     2005-04-16  944      sc->lmc_ok = 0;
^1da177e4c3f41 Linus Torvalds     2005-04-16  945      sc->last_link_status = 0;
^1da177e4c3f41 Linus Torvalds     2005-04-16  946  
^1da177e4c3f41 Linus Torvalds     2005-04-16 @947      return 0;
^1da177e4c3f41 Linus Torvalds     2005-04-16  948  }

---
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" (37263 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ