Commit 00fd7cfa authored by Lucas De Marchi's avatar Lucas De Marchi Committed by Takashi Iwai

ALSA: hda/i915: Fix one too many pci_dev_put()

pci_get_class() will already unref the pci device passed as argument.
So if it's unconditionally unref'ed, even if the loop is not stopped,
there will be one too many unref for each device not matched.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5701
Fixes: c9db8a30 ("ALSA: hda/i915 - skip acomp init if no matching display")
Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20220416064418.2364582-1-lucas.demarchi@intel.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 6624fb41
...@@ -127,11 +127,10 @@ static int i915_gfx_present(struct pci_dev *hdac_pci) ...@@ -127,11 +127,10 @@ static int i915_gfx_present(struct pci_dev *hdac_pci)
display_dev = pci_get_class(class, display_dev); display_dev = pci_get_class(class, display_dev);
if (display_dev && display_dev->vendor == PCI_VENDOR_ID_INTEL && if (display_dev && display_dev->vendor == PCI_VENDOR_ID_INTEL &&
connectivity_check(display_dev, hdac_pci)) connectivity_check(display_dev, hdac_pci)) {
match = true;
pci_dev_put(display_dev); pci_dev_put(display_dev);
match = true;
}
} while (!match && display_dev); } while (!match && display_dev);
return match; return match;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment