CC: kbuild-...@lists.01.org
CC: linux-ker...@vger.kernel.org
TO: Pawel Laszczak <paw...@cadence.com>
CC: Peter Chen <peter.c...@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   c500bee1c5b2f1d59b1081ac879d73268ab0ff17
commit: 3d82904559f4f5a2622db1b21de3edf2eded7664 usb: cdnsp: cdns3 Add main 
part of Cadence USBSSP DRD Driver
date:   7 months ago
:::::: branch date: 28 hours ago
:::::: commit date: 7 months ago
config: x86_64-randconfig-m001-20210803 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

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

smatch warnings:
drivers/usb/cdns3/cdnsp-pci.c:181 cdnsp_pci_probe() warn: possible memory leak 
of 'cdnsp'

vim +/cdnsp +181 drivers/usb/cdns3/cdnsp-pci.c

3d82904559f4f5 Pawel Laszczak 2020-12-07   57  
3d82904559f4f5 Pawel Laszczak 2020-12-07   58  static int 
cdnsp_pci_probe(struct pci_dev *pdev,
3d82904559f4f5 Pawel Laszczak 2020-12-07   59                      const struct 
pci_device_id *id)
3d82904559f4f5 Pawel Laszczak 2020-12-07   60  {
3d82904559f4f5 Pawel Laszczak 2020-12-07   61   struct device *dev = &pdev->dev;
3d82904559f4f5 Pawel Laszczak 2020-12-07   62   struct pci_dev *func;
3d82904559f4f5 Pawel Laszczak 2020-12-07   63   struct resource *res;
3d82904559f4f5 Pawel Laszczak 2020-12-07   64   struct cdns *cdnsp;
3d82904559f4f5 Pawel Laszczak 2020-12-07   65   int ret;
3d82904559f4f5 Pawel Laszczak 2020-12-07   66  
3d82904559f4f5 Pawel Laszczak 2020-12-07   67   /*
3d82904559f4f5 Pawel Laszczak 2020-12-07   68    * For GADGET/HOST PCI (devfn) 
function number is 0,
3d82904559f4f5 Pawel Laszczak 2020-12-07   69    * for OTG PCI (devfn) function 
number is 1.
3d82904559f4f5 Pawel Laszczak 2020-12-07   70    */
3d82904559f4f5 Pawel Laszczak 2020-12-07   71   if (!id || (pdev->devfn != 
PCI_DEV_FN_HOST_DEVICE &&
3d82904559f4f5 Pawel Laszczak 2020-12-07   72               pdev->devfn != 
PCI_DEV_FN_OTG))
3d82904559f4f5 Pawel Laszczak 2020-12-07   73           return -EINVAL;
3d82904559f4f5 Pawel Laszczak 2020-12-07   74  
3d82904559f4f5 Pawel Laszczak 2020-12-07   75   func = 
cdnsp_get_second_fun(pdev);
3d82904559f4f5 Pawel Laszczak 2020-12-07   76   if (!func)
3d82904559f4f5 Pawel Laszczak 2020-12-07   77           return -EINVAL;
3d82904559f4f5 Pawel Laszczak 2020-12-07   78  
3d82904559f4f5 Pawel Laszczak 2020-12-07   79   if (func->class == 
PCI_CLASS_SERIAL_USB_XHCI ||
3d82904559f4f5 Pawel Laszczak 2020-12-07   80       pdev->class == 
PCI_CLASS_SERIAL_USB_XHCI) {
3d82904559f4f5 Pawel Laszczak 2020-12-07   81           ret = -EINVAL;
3d82904559f4f5 Pawel Laszczak 2020-12-07   82           goto put_pci;
3d82904559f4f5 Pawel Laszczak 2020-12-07   83   }
3d82904559f4f5 Pawel Laszczak 2020-12-07   84  
3d82904559f4f5 Pawel Laszczak 2020-12-07   85   ret = pcim_enable_device(pdev);
3d82904559f4f5 Pawel Laszczak 2020-12-07   86   if (ret) {
3d82904559f4f5 Pawel Laszczak 2020-12-07   87           dev_err(&pdev->dev, 
"Enabling PCI device has failed %d\n", ret);
3d82904559f4f5 Pawel Laszczak 2020-12-07   88           goto put_pci;
3d82904559f4f5 Pawel Laszczak 2020-12-07   89   }
3d82904559f4f5 Pawel Laszczak 2020-12-07   90  
3d82904559f4f5 Pawel Laszczak 2020-12-07   91   pci_set_master(pdev);
3d82904559f4f5 Pawel Laszczak 2020-12-07   92   if (pci_is_enabled(func)) {
3d82904559f4f5 Pawel Laszczak 2020-12-07   93           cdnsp = 
pci_get_drvdata(func);
3d82904559f4f5 Pawel Laszczak 2020-12-07   94   } else {
3d82904559f4f5 Pawel Laszczak 2020-12-07   95           cdnsp = 
kzalloc(sizeof(*cdnsp), GFP_KERNEL);
3d82904559f4f5 Pawel Laszczak 2020-12-07   96           if (!cdnsp) {
3d82904559f4f5 Pawel Laszczak 2020-12-07   97                   ret = -ENOMEM;
3d82904559f4f5 Pawel Laszczak 2020-12-07   98                   goto 
disable_pci;
3d82904559f4f5 Pawel Laszczak 2020-12-07   99           }
3d82904559f4f5 Pawel Laszczak 2020-12-07  100   }
3d82904559f4f5 Pawel Laszczak 2020-12-07  101  
3d82904559f4f5 Pawel Laszczak 2020-12-07  102   /* For GADGET device function 
number is 0. */
3d82904559f4f5 Pawel Laszczak 2020-12-07  103   if (pdev->devfn == 0) {
3d82904559f4f5 Pawel Laszczak 2020-12-07  104           resource_size_t 
rsrc_start, rsrc_len;
3d82904559f4f5 Pawel Laszczak 2020-12-07  105  
3d82904559f4f5 Pawel Laszczak 2020-12-07  106           /* Function 0: 
host(BAR_0) + device(BAR_1).*/
3d82904559f4f5 Pawel Laszczak 2020-12-07  107           dev_dbg(dev, 
"Initialize resources\n");
3d82904559f4f5 Pawel Laszczak 2020-12-07  108           rsrc_start = 
pci_resource_start(pdev, PCI_BAR_DEV);
3d82904559f4f5 Pawel Laszczak 2020-12-07  109           rsrc_len = 
pci_resource_len(pdev, PCI_BAR_DEV);
3d82904559f4f5 Pawel Laszczak 2020-12-07  110           res = 
devm_request_mem_region(dev, rsrc_start, rsrc_len, "dev");
3d82904559f4f5 Pawel Laszczak 2020-12-07  111           if (!res) {
3d82904559f4f5 Pawel Laszczak 2020-12-07  112                   dev_dbg(dev, 
"controller already in use\n");
3d82904559f4f5 Pawel Laszczak 2020-12-07  113                   ret = -EBUSY;
3d82904559f4f5 Pawel Laszczak 2020-12-07  114                   goto free_cdnsp;
3d82904559f4f5 Pawel Laszczak 2020-12-07  115           }
3d82904559f4f5 Pawel Laszczak 2020-12-07  116  
3d82904559f4f5 Pawel Laszczak 2020-12-07  117           cdnsp->dev_regs = 
devm_ioremap(dev, rsrc_start, rsrc_len);
3d82904559f4f5 Pawel Laszczak 2020-12-07  118           if (!cdnsp->dev_regs) {
3d82904559f4f5 Pawel Laszczak 2020-12-07  119                   dev_dbg(dev, 
"error mapping memory\n");
3d82904559f4f5 Pawel Laszczak 2020-12-07  120                   ret = -EFAULT;
3d82904559f4f5 Pawel Laszczak 2020-12-07  121                   goto free_cdnsp;
3d82904559f4f5 Pawel Laszczak 2020-12-07  122           }
3d82904559f4f5 Pawel Laszczak 2020-12-07  123  
3d82904559f4f5 Pawel Laszczak 2020-12-07  124           cdnsp->dev_irq = 
pdev->irq;
3d82904559f4f5 Pawel Laszczak 2020-12-07  125           dev_dbg(dev, "USBSS-DEV 
physical base addr: %pa\n",
3d82904559f4f5 Pawel Laszczak 2020-12-07  126                   &rsrc_start);
3d82904559f4f5 Pawel Laszczak 2020-12-07  127  
3d82904559f4f5 Pawel Laszczak 2020-12-07  128           res = 
&cdnsp->xhci_res[0];
3d82904559f4f5 Pawel Laszczak 2020-12-07  129           res->start = 
pci_resource_start(pdev, PCI_BAR_HOST);
3d82904559f4f5 Pawel Laszczak 2020-12-07  130           res->end = 
pci_resource_end(pdev, PCI_BAR_HOST);
3d82904559f4f5 Pawel Laszczak 2020-12-07  131           res->name = "xhci";
3d82904559f4f5 Pawel Laszczak 2020-12-07  132           res->flags = 
IORESOURCE_MEM;
3d82904559f4f5 Pawel Laszczak 2020-12-07  133           dev_dbg(dev, 
"USBSS-XHCI physical base addr: %pa\n",
3d82904559f4f5 Pawel Laszczak 2020-12-07  134                   &res->start);
3d82904559f4f5 Pawel Laszczak 2020-12-07  135  
3d82904559f4f5 Pawel Laszczak 2020-12-07  136           /* Interrupt for XHCI, 
*/
3d82904559f4f5 Pawel Laszczak 2020-12-07  137           res = 
&cdnsp->xhci_res[1];
3d82904559f4f5 Pawel Laszczak 2020-12-07  138           res->start = pdev->irq;
3d82904559f4f5 Pawel Laszczak 2020-12-07  139           res->name = "host";
3d82904559f4f5 Pawel Laszczak 2020-12-07  140           res->flags = 
IORESOURCE_IRQ;
3d82904559f4f5 Pawel Laszczak 2020-12-07  141   } else {
3d82904559f4f5 Pawel Laszczak 2020-12-07  142           res = &cdnsp->otg_res;
3d82904559f4f5 Pawel Laszczak 2020-12-07  143           res->start = 
pci_resource_start(pdev, PCI_BAR_OTG);
3d82904559f4f5 Pawel Laszczak 2020-12-07  144           res->end =   
pci_resource_end(pdev, PCI_BAR_OTG);
3d82904559f4f5 Pawel Laszczak 2020-12-07  145           res->name = "otg";
3d82904559f4f5 Pawel Laszczak 2020-12-07  146           res->flags = 
IORESOURCE_MEM;
3d82904559f4f5 Pawel Laszczak 2020-12-07  147           dev_dbg(dev, "CDNSP-DRD 
physical base addr: %pa\n",
3d82904559f4f5 Pawel Laszczak 2020-12-07  148                   &res->start);
3d82904559f4f5 Pawel Laszczak 2020-12-07  149  
3d82904559f4f5 Pawel Laszczak 2020-12-07  150           /* Interrupt for 
OTG/DRD. */
3d82904559f4f5 Pawel Laszczak 2020-12-07  151           cdnsp->otg_irq = 
pdev->irq;
3d82904559f4f5 Pawel Laszczak 2020-12-07  152   }
3d82904559f4f5 Pawel Laszczak 2020-12-07  153  
3d82904559f4f5 Pawel Laszczak 2020-12-07  154   if (pci_is_enabled(func)) {
3d82904559f4f5 Pawel Laszczak 2020-12-07  155           cdnsp->dev = dev;
3d82904559f4f5 Pawel Laszczak 2020-12-07  156           cdnsp->gadget_init = 
cdnsp_gadget_init;
3d82904559f4f5 Pawel Laszczak 2020-12-07  157  
3d82904559f4f5 Pawel Laszczak 2020-12-07  158           ret = cdns_init(cdnsp);
3d82904559f4f5 Pawel Laszczak 2020-12-07  159           if (ret)
3d82904559f4f5 Pawel Laszczak 2020-12-07  160                   goto free_cdnsp;
3d82904559f4f5 Pawel Laszczak 2020-12-07  161   }
3d82904559f4f5 Pawel Laszczak 2020-12-07  162  
3d82904559f4f5 Pawel Laszczak 2020-12-07  163   pci_set_drvdata(pdev, cdnsp);
3d82904559f4f5 Pawel Laszczak 2020-12-07  164  
3d82904559f4f5 Pawel Laszczak 2020-12-07  165   
device_wakeup_enable(&pdev->dev);
3d82904559f4f5 Pawel Laszczak 2020-12-07  166   if (pci_dev_run_wake(pdev))
3d82904559f4f5 Pawel Laszczak 2020-12-07  167           
pm_runtime_put_noidle(&pdev->dev);
3d82904559f4f5 Pawel Laszczak 2020-12-07  168  
3d82904559f4f5 Pawel Laszczak 2020-12-07  169   return 0;
3d82904559f4f5 Pawel Laszczak 2020-12-07  170  
3d82904559f4f5 Pawel Laszczak 2020-12-07  171  free_cdnsp:
3d82904559f4f5 Pawel Laszczak 2020-12-07  172   if (!pci_is_enabled(func))
3d82904559f4f5 Pawel Laszczak 2020-12-07  173           kfree(cdnsp);
3d82904559f4f5 Pawel Laszczak 2020-12-07  174  
3d82904559f4f5 Pawel Laszczak 2020-12-07  175  disable_pci:
3d82904559f4f5 Pawel Laszczak 2020-12-07  176   pci_disable_device(pdev);
3d82904559f4f5 Pawel Laszczak 2020-12-07  177  
3d82904559f4f5 Pawel Laszczak 2020-12-07  178  put_pci:
3d82904559f4f5 Pawel Laszczak 2020-12-07  179   pci_dev_put(func);
3d82904559f4f5 Pawel Laszczak 2020-12-07  180  
3d82904559f4f5 Pawel Laszczak 2020-12-07 @181   return ret;
3d82904559f4f5 Pawel Laszczak 2020-12-07  182  }
3d82904559f4f5 Pawel Laszczak 2020-12-07  183  

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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to