> -----Original Message----- > From: Jeff Kirsher [mailto:[email protected]] > Sent: Sunday, December 09, 2012 11:18 PM > To: Elena Gurevich > Cc: netdev; [email protected]; Rose, Gregory V; Skidmore, > Donald C > Subject: Re: ixgbe: pci_get_device() call without counterpart call of > pci_dev_put() > > On 12/09/2012 01:47 AM, Elena Gurevich wrote: > > Hi all, > > I am pioneer in linux device drivers here and using Intel 82599 NIC as > > reference model, During investigation to drivers sources I found the > > suspicious code: > > > > Is code sequence (1) and (2) the possible device reference count > leakage > > ??? > > > > > > Thanks a lot in advance > > Lena > > > > --------snipped from ixgbe_main.c file function > > ixgbe_io_error_detected() > > ----------- > > > > . . . > > /* Find the pci device of the offending VF */ > > vfdev = pci_get_device(PCI_VENDOR_ID_INTEL, device_id, NULL); > > while (vfdev) { > > if (vfdev->devfn == (req_id & 0xFF)) > > break; > > <------------------------------ (1) leaves the loop with successful > get > > call !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! > > > > vfdev = pci_get_device(PCI_VENDOR_ID_INTEL, > > device_id, vfdev); > > } > > /* > > * There's a slim chance the VF could have been hot plugged, > > * so if it is no longer present we don't need to issue the > > * VFLR. Just clean up the AER in that case. > > */ > > if (vfdev) { > > e_dev_err("Issuing VFLR to VF %d\n", vf); > > pci_write_config_dword(vfdev, 0xA8, 0x00008000); > > } > > > > pci_cleanup_aer_uncorrect_error_status(pdev); > > } > > > > /* > > * Even though the error may have occurred on the other port > > * we still need to increment the vf error reference count for > > * both ports because the I/O resume function will be called > > * for both of them. > > */ > > adapter->vferr_refcount++; > > > > return PCI_ERS_RESULT_RECOVERED; > > <-------------------------------------------- (2) leaves the function > > without put call !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! > > ---------------------------------- snipped > > ----------------------------------- > > > Added Greg Rose (ixgbevf maintainer) & Don Skidmore (ixgbe maintainer) > > Since the code you have questions about is dealing with the vf, Greg will > most likely be able to shed some light to your questions.
That's a bug. I'll generate a patch to add the necessary pci_dev_put(). - Greg ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
