On 15 August 2016 at 09:12, Liang, Kan <kan.li...@intel.com> wrote: > > >> > diff --git a/arch/x86/events/intel/uncore_snbep.c >> > b/arch/x86/events/intel/uncore_snbep.c >> > index 3719af5..55a081e 100644 >> > --- a/arch/x86/events/intel/uncore_snbep.c >> > +++ b/arch/x86/events/intel/uncore_snbep.c >> > + >> > +static int skx_count_chabox(void) >> > +{ >> > + struct pci_dev *chabox_dev = NULL; >> > + int bus, count = 0; >> > + >> > + while (1) { >> > + chabox_dev = pci_get_device(PCI_VENDOR_ID_INTEL, 0x208d, >> chabox_dev); >> > + if (!chabox_dev) >> > + break; >> > + if (count == 0) >> > + bus = chabox_dev->bus->number; >> > + if (bus != chabox_dev->bus->number) >> > + break; >> > + count++; >> > + } >> > + >> > + pci_dev_put(chabox_dev); >> > + return count; >> > +} >> >> Kan, do we not need to call pci_dev_put() each time we call >> pci_get_device()? > > The pci_get_device will always decrease the reference count for chabox_dev, if > it is not NULL. > So I think it's OK to only pci_dev_put it at last. >
Yup, you are right. I was not aware that pci_dev_put() gets called automatically when pci_dev argument is not NULL. Thanks for the info. -- Nilay