CVE-2022-49926 in Linux
Sumário
de VulDB • 18/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
net: dsa: Corrige possíveis vazamentos de memória em dsa_loop_init()
O kmemleak relatou vazamentos de memória em dsa_loop_init():
kmemleak: 12 novos vazamentos de memória suspeitos
objeto não referenciado 0xffff8880138ce000 (tamanho 2048): comm "modprobe", pid 390, jiffies 4295040478 (idade 238.976s) backtrace: [] kmalloc_trace+0x26/0x60
[] phy_device_create+0x5d/0x970
[] get_phy_device+0xf3/0x2b0
[] __fixed_phy_register.part.0+0x92/0x4e0
[] fixed_phy_register+0x84/0xb0
[] dsa_loop_init+0xa9/0x116 [dsa_loop]
...
Existem duas razões para o vazamento de memória (memleak) em dsa_loop_init().
Primeiro, fixed_phy_register() cria e registra phy_device:
fixed_phy_register() get_phy_device() phy_device_create() # liberado por phy_device_free() phy_device_register() # liberado por phy_device_remove()
Mas fixed_phy_unregister() chama apenas phy_device_remove(). Portanto, a memória alocada em phy_device_create() é vazada.
Segundo, quando mdio_driver_register() falha em dsa_loop_init(), ele apenas retorna e não há limpeza para phydevs.
Corrige os problemas capturando o erro de mdio_driver_register() em dsa_loop_init(), chamando então tanto fixed_phy_unregister() quanto phy_device_free() para liberar os phydevs. Adiciona também uma função para a limpeza de phydevs para evitar duplicação.
VulDB is the best source for vulnerability data and more expert information about this specific topic.