Subject: CVE-2022-48973: gpio: amd8111: Fix PCI device reference count leak

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

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

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

gpio: amd8111: Fix PCI device reference count leak

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() after the 'out' label. Since pci_dev_put() can handle NULL
input parameter, there is no problem for the 'Device not found' branch.
For the normal path, add pci_dev_put() in amd_gpio_exit().

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

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

	Issue introduced in 3.6 with commit f942a7de047d and fixed in 4.9.336 with commit 4749c5cc147c
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 4.14.302 with commit 71d591ef873f
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 4.19.269 with commit b2bc053ebbba
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 5.4.227 with commit 48bd5d3801f6
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 5.10.159 with commit 5ee6413d3dd9
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 5.15.83 with commit 4271515f189b
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 6.0.13 with commit e364ce04d8f8
	Issue introduced in 3.6 with commit f942a7de047d and fixed in 6.1 with commit 45fecdb9f658

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-48973
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/gpio/gpio-amd8111.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/4749c5cc147c9860b96db1e71cc36d1de1bd3f59
	https://git.kernel.org/stable/c/71d591ef873f9ebb86cd8d053b3caee785b2de6a
	https://git.kernel.org/stable/c/b2bc053ebbba57a06fa655db5ea796de2edce445
	https://git.kernel.org/stable/c/48bd5d3801f6b67cc144449d434abbd5043a6d37
	https://git.kernel.org/stable/c/5ee6413d3dd972930af787b2c0c7aaeb379fa521
	https://git.kernel.org/stable/c/4271515f189bd5fe2ec86b4089dab7cb804625d2
	https://git.kernel.org/stable/c/e364ce04d8f840478b09eee57b614de7cf1e743e
	https://git.kernel.org/stable/c/45fecdb9f658d9c82960c98240bc0770ade19aca