CVE-2022-48813

In the Linux kernel, the following vulnerability has been resolved: net: dsa: felix: don't use devres for mdiobus As explained in commits: 74b6d7d13307 ("net: dsa: realtek: register the MDIO bus under devres") 5135e96a3dd2 ("net: dsa: don't allocate the slave_mii_bus using devres") mdiobus_free() will panic when called from devm_mdiobus_free() <- devres_release_all() <- __device_release_driver(), and that mdiobus was not previously unregistered. The Felix VSC9959 switch is a PCI device, so the initial set of constraints that I thought would cause this (I2C or SPI buses which call ->remove on ->shutdown) do not apply. But there is one more which applies here. If the DSA master itself is on a bus that calls ->remove from ->shutdown (like dpaa2-eth, which is on the fsl-mc bus), there is a device link between the switch and the DSA master, and device_links_unbind_consumers() will unbind the felix switch driver on shutdown. So the same treatment must be applied to all DSA switch drivers, which is: either use devres for both the mdiobus allocation and registration, or don't use devres at all. The felix driver has the code structure in place for orderly mdiobus removal, so just replace devm_mdiobus_alloc_size() with the non-devres variant, and add manual free where necessary, to ensure that we don't let devres free a still-registered bus.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
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:*:*:*:*:*:*

History

03 Oct 2025, 14:20

Type Values Removed Values Added
First Time Linux linux Kernel
Linux
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CWE NVD-CWE-noinfo
References () https://git.kernel.org/stable/c/209bdb7ec6a28c7cdf580a0a98afbc9fc3b98932 - () https://git.kernel.org/stable/c/209bdb7ec6a28c7cdf580a0a98afbc9fc3b98932 - Patch
References () https://git.kernel.org/stable/c/8cda7577a0b4018572f31e0caadfabd305ea2786 - () https://git.kernel.org/stable/c/8cda7577a0b4018572f31e0caadfabd305ea2786 - Patch
References () https://git.kernel.org/stable/c/95e5402f9430b3c7d885dd3ec4c8c02c17936923 - () https://git.kernel.org/stable/c/95e5402f9430b3c7d885dd3ec4c8c02c17936923 - Patch
References () https://git.kernel.org/stable/c/9db6f056efd089e80d81c774c01b639adf30c097 - () https://git.kernel.org/stable/c/9db6f056efd089e80d81c774c01b639adf30c097 - Patch
CPE cpe:2.3:o:linux:linux_kernel:5.17:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.17:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.17:rc2:*:*:*:*:*:*

21 Nov 2024, 07:34

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/209bdb7ec6a28c7cdf580a0a98afbc9fc3b98932 - () https://git.kernel.org/stable/c/209bdb7ec6a28c7cdf580a0a98afbc9fc3b98932 -
References () https://git.kernel.org/stable/c/8cda7577a0b4018572f31e0caadfabd305ea2786 - () https://git.kernel.org/stable/c/8cda7577a0b4018572f31e0caadfabd305ea2786 -
References () https://git.kernel.org/stable/c/95e5402f9430b3c7d885dd3ec4c8c02c17936923 - () https://git.kernel.org/stable/c/95e5402f9430b3c7d885dd3ec4c8c02c17936923 -
References () https://git.kernel.org/stable/c/9db6f056efd089e80d81c774c01b639adf30c097 - () https://git.kernel.org/stable/c/9db6f056efd089e80d81c774c01b639adf30c097 -
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: dsa: felix: don't use devres for mdiobus Como se explica en los commits: 74b6d7d13307 ("net: dsa: realtek: registre el bus MDIO en devres") 5135e96a3dd2 (" net: dsa: no asigne el esclavo_mii_bus usando devres") mdiobus_free() entrará en pánico cuando se llame desde devm_mdiobus_free() &lt;- devres_release_all() &lt;- __device_release_driver(), y ese mdiobus no fue anulado previamente. El conmutador Felix VSC9959 es un dispositivo PCI, por lo que el conjunto inicial de restricciones que pensé que causarían esto (buses I2C o SPI que llaman -&gt;eliminar activado -&gt;apagar) no se aplican. Pero hay algo más que se aplica aquí. Si el maestro DSA está en un bus que llama -&gt;remove from -&gt;shutdown (como dpaa2-eth, que está en el bus fsl-mc), hay un enlace de dispositivo entre el conmutador y el maestro DSA, y device_links_unbind_consumers( ) desvinculará el controlador del interruptor Felix al apagarlo. Por lo tanto, se debe aplicar el mismo tratamiento a todos los controladores de conmutador DSA, que es: usar devres tanto para la asignación como para el registro de mdiobus, o no usar devres en absoluto. El controlador Felix tiene la estructura de código implementada para la eliminación ordenada de mdiobus, así que simplemente reemplace devm_mdiobus_alloc_size() con la variante que no es devres y agregue manual free cuando sea necesario, para garantizar que no permitamos que devres libere un bus aún registrado.

16 Jul 2024, 12:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-07-16 12:15

Updated : 2025-10-03 14:20


NVD link : CVE-2022-48813

Mitre link : CVE-2022-48813

CVE.ORG link : CVE-2022-48813


JSON object : View

Products Affected

linux

  • linux_kernel