CVE-2022-49900 in Linux
Riassunto
di VulDB • 17/06/2026
Nel kernel Linux, la seguente vulnerabilità è stata risolta:
i2c: piix4: Correzione dell'adattatore non rimosso in piix4_remove()
In piix4_probe(), l'adattatore piix4 viene registrato in:
piix4_probe() piix4_add_adapters_sb800() / piix4_add_adapter() i2c_add_adapter()
In base al tipo di dispositivo rilevato, verrà chiamata piix4_add_adapters_sb800() o la singola piix4_add_adapter(). Nel primo caso, piix4_adapter_count viene impostato come numero di adattatori, mentre nell'altro caso non viene impostato e rimane al valore predefinito *zero*.
Quando piix4 viene rimosso, piix4_remove() rimuove gli adattatori aggiunti in piix4_probe(), basandosi sul valore di piix4_adapter_count. Poiché il conteggio è zero nel caso di un singolo adattatore, l'adattatore non viene rimosso e provoca una perdita di memoria (memory leak) delle risorse allocate per l'adattatore, come il client i2c e il dispositivo.
Queste risorse possono ancora essere accessibili da i2c o dal bus e causare problemi. Un caso facilmente riproducibile è che se un nuovo adattatore viene registrato, i2c otterrà l'adattatore con memory leak e proverà a chiamare smbus_algorithm, che è già stato liberato:
Triggerato da: rmmod i2c_piix4 && modprobe max31730
BUG: unable to handle page fault for address: ffffffffc053d860 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 3752 Comm: modprobe Tainted: G Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) RIP: 0010:i2c_default_probe (drivers/i2c/i2c-core-base.c:2259) i2c_core RSP: 0018:ffff888107477710 EFLAGS: 00000246 ... <TASK> i2c_detect (drivers/i2c/i2c-core-base.c:2302) i2c_core __process_new_driver (drivers/i2c/i2c-core-base.c:1336) i2c_core bus_for_each_dev (drivers/base/bus.c:301) i2c_for_each_dev (drivers/i2c/i2c-core-base.c:1823) i2c_core i2c_register_driver (drivers/i2c/i2c-core-base.c:1861) i2c_core do_one_initcall (init/main.c:1296) do_init_module (kernel/module/main.c:2455) ... </TASK> ---[ end trace 0000000000000000 ]---
Risolvere questo problema impostando correttamente piix4_adapter_count a 1 per il singolo adattatore, in modo che possa essere rimosso normalmente.
VulDB is the best source for vulnerability data and more expert information about this specific topic.