CVE-2022-48818
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
16/07/2024
Last modified:
06/10/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: dsa: mv88e6xxx: don&#39;t use devres for mdiobus<br />
<br />
As explained in commits:<br />
74b6d7d13307 ("net: dsa: realtek: register the MDIO bus under devres")<br />
5135e96a3dd2 ("net: dsa: don&#39;t allocate the slave_mii_bus using devres")<br />
<br />
mdiobus_free() will panic when called from devm_mdiobus_free() shutdown) do not apply. But there is one more which applies here.<br />
<br />
If the DSA master itself is on a bus that calls ->remove from ->shutdown<br />
(like dpaa2-eth, which is on the fsl-mc bus), there is a device link<br />
between the switch and the DSA master, and device_links_unbind_consumers()<br />
will unbind the Marvell switch driver on shutdown.<br />
<br />
systemd-shutdown[1]: Powering off.<br />
mv88e6085 0x0000000008b96000:00 sw_gl0: Link is Down<br />
fsl-mc dpbp.9: Removing from iommu group 7<br />
fsl-mc dpbp.8: Removing from iommu group 7<br />
------------[ cut here ]------------<br />
kernel BUG at drivers/net/phy/mdio_bus.c:677!<br />
Internal error: Oops - BUG: 0 [#1] PREEMPT SMP<br />
Modules linked in:<br />
CPU: 0 PID: 1 Comm: systemd-shutdow Not tainted 5.16.5-00040-gdc05f73788e5 #15<br />
pc : mdiobus_free+0x44/0x50<br />
lr : devm_mdiobus_free+0x10/0x20<br />
Call trace:<br />
mdiobus_free+0x44/0x50<br />
devm_mdiobus_free+0x10/0x20<br />
devres_release_all+0xa0/0x100<br />
__device_release_driver+0x190/0x220<br />
device_release_driver_internal+0xac/0xb0<br />
device_links_unbind_consumers+0xd4/0x100<br />
__device_release_driver+0x4c/0x220<br />
device_release_driver_internal+0xac/0xb0<br />
device_links_unbind_consumers+0xd4/0x100<br />
__device_release_driver+0x94/0x220<br />
device_release_driver+0x28/0x40<br />
bus_remove_device+0x118/0x124<br />
device_del+0x174/0x420<br />
fsl_mc_device_remove+0x24/0x40<br />
__fsl_mc_device_remove+0xc/0x20<br />
device_for_each_child+0x58/0xa0<br />
dprc_remove+0x90/0xb0<br />
fsl_mc_driver_remove+0x20/0x5c<br />
__device_release_driver+0x21c/0x220<br />
device_release_driver+0x28/0x40<br />
bus_remove_device+0x118/0x124<br />
device_del+0x174/0x420<br />
fsl_mc_bus_remove+0x80/0x100<br />
fsl_mc_bus_shutdown+0xc/0x1c<br />
platform_shutdown+0x20/0x30<br />
device_shutdown+0x154/0x330<br />
kernel_power_off+0x34/0x6c<br />
__do_sys_reboot+0x15c/0x250<br />
__arm64_sys_reboot+0x20/0x30<br />
invoke_syscall.constprop.0+0x4c/0xe0<br />
do_el0_svc+0x4c/0x150<br />
el0_svc+0x24/0xb0<br />
el0t_64_sync_handler+0xa8/0xb0<br />
el0t_64_sync+0x178/0x17c<br />
<br />
So the same treatment must be applied to all DSA switch drivers, which<br />
is: either use devres for both the mdiobus allocation and registration,<br />
or don&#39;t use devres at all.<br />
<br />
The Marvell driver already has a good structure for mdiobus removal, so<br />
just plug in mdiobus_free and get rid of devres.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9 (including) | 5.10.101 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.24 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 5.16.10 (excluding) |
| cpe:2.3:o:linux:linux_kernel:5.17:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.17:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.17:rc3:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/1b451c3994a2d322f8e55032c62c8b47b7d95900
- https://git.kernel.org/stable/c/8b626d45127d6f5ada7d815b83cfdc09e8cb1394
- https://git.kernel.org/stable/c/8ccebe77df6e0d88c72ba5e69cf1835927e53b6c
- https://git.kernel.org/stable/c/f53a2ce893b2c7884ef94471f170839170a4eba0
- https://git.kernel.org/stable/c/1b451c3994a2d322f8e55032c62c8b47b7d95900
- https://git.kernel.org/stable/c/8b626d45127d6f5ada7d815b83cfdc09e8cb1394
- https://git.kernel.org/stable/c/8ccebe77df6e0d88c72ba5e69cf1835927e53b6c
- https://git.kernel.org/stable/c/f53a2ce893b2c7884ef94471f170839170a4eba0



