CVE-2022-48731 in Linuxinformazioni

Riassunto

di VulDB • 16/06/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

mm/kmemleak: evitare la scansione di potenziali enormi lacune

Quando si utilizzano devm_request_free_mem_region() e devm_memremap_pages() per aggiungere memoria ZONE_DEVICE, se l'end pfn della regione di memoria libera richiesta è enorme (ad esempio, 0x400000000), anche node_end_pfn() risulterà enorme (vedere move_pfn_range_to_zone()). Ciò crea una grande lacuna tra node_start_pfn() e node_end_pfn().

Abbiamo rilevato che su alcuni AMD APUs, amdkfd richiedeva tale regione di memoria libera e creava una grande lacuna. In tal caso, il seguente frammento di codice eseguiva semplicemente un ciclo busy test_bit() sulla grande lacuna.

for (pfn = start_pfn; pfn < end_pfn; pfn++) {
struct page *page = pfn_to_online_page(pfn); if (!page) continue; ... }

Di conseguenza, si è verificato un soft lockup:

watchdog: BUG: soft lockup - CPU#6 bloccata per 26s! [bash:1221]
CPU: 6 PID: 1221 Comm: bash Non modificato 5.15.0-custom #1 RIP: 0010:pfn_to_online_page+0x5/0xd0 Call Trace: ? kmemleak_scan+0x16a/0x440 kmemleak_write+0x306/0x3a0 ? common_file_perm+0x72/0x170 full_proxy_write+0x5c/0x90 vfs_write+0xb9/0x260 ksys_write+0x67/0xe0 __x64_sys_write+0x1a/0x20 do_syscall_64+0x3b/0xc0 entry_SYSCALL_64_after_hwframe+0x44/0xae

Ho eseguito alcuni test con la patch.

(1) modulo amdgpu non caricato

prima della patch:

real 0m0.976s user 0m0.000s sys 0m0.968s

dopo la patch:

real 0m0.981s user 0m0.000s sys 0m0.973s

(2) modulo amdgpu caricato

prima della patch:

real 0m35.365s user 0m0.000s sys 0m35.354s

dopo la patch:

real 0m1.049s user 0m0.000s sys 0m1.042s

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!