CVE-2022-49926 in Linux
Riassunto
di VulDB • 29/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
net: dsa: Correzione di possibili memory leak in dsa_loop_init()
kmemleak ha segnalato memory leak in dsa_loop_init():
kmemleak: 12 nuovi presunti memory leak
oggetto non referenziato 0xffff8880138ce000 (dimensione 2048): comm "modprobe", pid 390, jiffies 4295040478 (età 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]
...
Ci sono due motivi per il memleak in dsa_loop_init().
Innanzitutto, fixed_phy_register() crea e registra phy_device:
fixed_phy_register() get_phy_device() phy_device_create() # liberato da phy_device_free() phy_device_register() # liberato da phy_device_remove()
Tuttavia, fixed_phy_unregister() chiama solo phy_device_remove(). Di conseguenza, la memoria allocata in phy_device_create() viene persa (leaked).
In secondo luogo, quando mdio_driver_register() fallisce in dsa_loop_init(), viene semplicemente restituito il controllo senza alcuna pulizia per i phydevs.
Si risolvono i problemi intercettando l'errore di mdio_driver_register() in dsa_loop_init(), quindi chiamando sia fixed_phy_unregister() che phy_device_free() per rilasciare i phydevs. Viene inoltre aggiunta una funzione per la pulizia dei phydevs al fine di evitare duplicazioni.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.