提交 00fd7cfa 编写于 作者: L Lucas De Marchi 提交者: 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: NLucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: NKai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20220416064418.2364582-1-lucas.demarchi@intel.comSigned-off-by: NTakashi Iwai <tiwai@suse.de>
上级 6624fb41
......@@ -127,11 +127,10 @@ static int i915_gfx_present(struct pci_dev *hdac_pci)
display_dev = pci_get_class(class, display_dev);
if (display_dev && display_dev->vendor == PCI_VENDOR_ID_INTEL &&
connectivity_check(display_dev, hdac_pci))
connectivity_check(display_dev, hdac_pci)) {
pci_dev_put(display_dev);
match = true;
pci_dev_put(display_dev);
}
} while (!match && display_dev);
return match;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册