Odebrany

CVE-2026-98515

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

drm/nouveau: napraw podwójnie bezpłatne w nvif_vmm_dtor

W przypadku niepowodzenia funkcja nouveau_cli_init() wywołuje funkcję nouveau_cli_fini() w celu rozdarcia
klient w dół. Następnie nouveau_drm_open() również wchodzi w jego skład
ścieżkę czyszczenia i PONOWNIE wywołuje funkcję nouveau_cli_fini(). nouveau_cli_fini()
wywołuje nouveau_vmm_fini():

pustka
nouveau_vmm_fini(struktura nouveau_vmm *vmm)
{
nouveau_svmm_fini(&vmm->svmm);
nvif_vmm_dtor(&vmm->vmm);
vmm->cli = NULL;
}

Wewnątrz nvif_vmm_dtor() strona vmm->jest zwalniana bezwarunkowo:

pustka
nvif_vmm_dtor(struktura nvif_vmm *vmm)
{
kfree(vmm->strona);
nvif_object_dtor(&vmm->obiekt);
}

vmm->page nigdy nie jest czyszczony po zwolnieniu, więc drugie wywołanie
nvif_vmm_dtor() spowoduje podwójne zwolnienie.

Znalezione przez fuzzowanie sterownika nouveau zmodyfikowanym Syzkallerem:

BŁĄD: KASAN: double-free w sterownikach nvif_vmm_dtor+0x31/0x50/gpu/drm/nouveau/nvif/vmm.c:194
Wolny od adresu ffff888010fcdc30 według zadania syz.0.173/2567

Procesor: 1 UID: 0 PID: 2567 Comm: syz.0.173 Nieskażony 7.2.0 #24 PREEMPT (leniwy)
Nazwa sprzętu: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 01.04.2014
Zadzwoń do śledzenia:
<ZADANIE>
__dump_stack lib/dump_stack.c:94 [w linii]
dump_stack_lvl+0x95/0xe0 lib/dump_stack.c:120
print_address_description mm/kasan/report.c:378 [inline]
print_report+0xcb/0x5a0 mm/kasan/report.c:482
kasan_report_invalid_free+0xaa/0xd0 mm/kasan/report.c:557
check_slab_allocation+0xe4/0x110 mm/kasan/common.c:235
kasan_slab_pre_free include/linux/kasan.h:199 [w linii]
płyta_free_hook mm/slub.c:2622 [w linii]
płyta_free mm/slub.c:6377 [w linii]
kfree+0x192/0x590 mm/slub.c:6692
nvif_vmm_dtor+0x31/0x50 sterowniki/gpu/drm/nouveau/nvif/vmm.c:194
nouveau_vmm_fini+0x16/0x50 sterowniki/gpu/drm/nouveau/nouveau_vmm.c:127
sterowniki nouveau_cli_fini+0x10e/0x210/gpu/drm/nouveau/nouveau_drm.c:225
nouveau_drm_open+0x24e/0x740 sterowniki/gpu/drm/nouveau/nouveau_drm.c:1255
drm_file_alloc+0x5f2/0xad0 sterowniki/gpu/drm/drm_file.c:176
drm_open_helper+0x1d7/0x4a0 sterowniki/gpu/drm/drm_file.c:335
drm_open+0x190/0x3d0 sterowniki/gpu/drm/drm_file.c:388
drm_stub_open+0x1f2/0x460 sterowniki/gpu/drm/drm_drv.c:1211
chrdev_open+0x21c/0x660 fs/char_dev.c:411
do_dentry_open+0x59d/0x12b0 fs/open.c:947
vfs_open+0x82/0x390 fs/open.c:1052
do_open fs/namei.c:4700 [w linii]
ścieżka_openat+0x2345/0x3420 fs/namei.c:4863
do_file_open+0x207/0x460 fs/namei.c:4892
do_sys_openat2+0xd1/0x1d0 fs/open.c:1368
do_sys_open fs/open.c:1374 [w linii]
__do_sys_openat fs/open.c:1390 [w linii]
__se_sys_openat fs/open.c:1385 [w linii]
__x64_sys_openat+0x144/0x200 fs/open.c:1385
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [wbudowane]
do_syscall_64+0x115/0x690 arch/x86/entry/syscall_64.c:94
wpis_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fc6d687594d
Kod: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fc6d5295008 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
RAX: ffffffffffffffda RBX: 00007fc6d6b06180 RCX: 00007fc6d687594d
RDX: 0000000000022501 RSI: 0000200000000000 RDI: ffffffffffffff9c
RBP: 00007fc6d691c303 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007fc6d6b06218 R14: 00007fc6d6b06180 R15: 00007ffd9451d760
</ZADANIE>

Przydzielone przez zadanie 2567 na procesorze 1 o godzinie 163,593900:
kasan_save_stack+0x24/0x50 mm/kasan/common.c:57
kasan_save_track+0x17/0x60 mm/kasan/common.c:78
trucizna_kmalloc_redzone mm/kasan/common.c:398 [w linii]
__kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:415
kasan_kmalloc include/linux/kasan.h:263 [w linii]
__do_kmalloc_node mm/slub.c:5334 [w linii]
__kmalloc_noprof+0x304/0x7c0 mm/slub.c:5359
_kmalloc_noprof include/linux/slab.h:992 [w linii]
nvif_vmm_ctor+0x3c0/0x7e0 sterowniki/gpu/drm/nouveau/nvif/vmm.c:237
nouveau_vmm_init+0x40/0x90 sterowniki/gpu/drm/nouveau/nouveau_vmm.c:134
nouveau_cli_init+0x7b9/0
---obcięty---

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org