drivers/net/wan/lmc/lmc_main.c:947 lmc_init_one() warn: 'dev' not released on lines: 903.
From: Dan Carpenter
Date: Thu Feb 25 2021 - 02:01:32 EST
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@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
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@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip