Subject: CVE-2022-49002: iommu/vt-d: Fix PCI device refcount leak in dmar_dev_scope_init()

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

iommu/vt-d: Fix PCI device refcount leak in dmar_dev_scope_init()

for_each_pci_dev() is implemented by pci_get_device(). The comment of
pci_get_device() says that it will increase the reference count for the
returned pci_dev and also decrease the reference count for the input
pci_dev @from if it is not NULL.

If we break for_each_pci_dev() loop with pdev not NULL, we need to call
pci_dev_put() to decrease the reference count. Add the missing
pci_dev_put() for the error path to avoid reference count leak.

The Linux kernel CVE team has assigned CVE-2022-49002 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 4.9.335 with commit d47bc9d7bcdb
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 4.14.301 with commit 71c4a621985f
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 4.19.268 with commit 876d7bfb8927
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 5.4.226 with commit cbdd83bd2fd6
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 5.10.158 with commit a5c65cd56aed
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 5.15.82 with commit bdb613ef179a
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 6.0.12 with commit 2a8f7b906814
	Issue introduced in 3.15 with commit 2e4552893038 and fixed in 6.1 with commit 4bedbbd782eb

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2022-49002
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/iommu/intel/dmar.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/d47bc9d7bcdbb9adc9703513d964b514fee5b0bf
	https://git.kernel.org/stable/c/71c4a621985fc051ab86d3a86c749069a993fcb2
	https://git.kernel.org/stable/c/876d7bfb89273997056220029ff12b1c2cc4691d
	https://git.kernel.org/stable/c/cbdd83bd2fd67142b03ce9dbdd1eab322ff7321f
	https://git.kernel.org/stable/c/a5c65cd56aed027f8a97fda8b691caaeb66d115e
	https://git.kernel.org/stable/c/bdb613ef179ad4bb9d56a2533e9b30e434f1dfb7
	https://git.kernel.org/stable/c/2a8f7b90681472948de172dbbf5a54cd342870aa
	https://git.kernel.org/stable/c/4bedbbd782ebbe7287231fea862c158d4f08a9e3