CVE-2026-98924
NieznaneStreszczenie
W jądrze Linux naprawiono problem zawieszania zadań podczas odmontowywania systemu plików po usunięciu dysku. Funkcja evict_inodes() wielokrotnie skanowała te same inody z powodu restartu przechodzenia listy po zwolnieniu blokady, co długo utrzymywało s_umount i blokowało współbieżne odmontowania. Poprawka polega na zachowaniu bieżącej inody poza partią zwalniania do czasu ponownego uzyskania blokady i wznowieniu od niej przechodzenia.
Ocena ryzyka
Organizacja może doświadczyć zawieszenia zadań i niedostępności systemu plików podczas próby odmontowania po awarii lub odłączeniu dysku, co prowadzi do blokad operacji i raportów hung-task.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej tę poprawkę i przetestuj scenariusze odmontowania po usunięciu urządzenia w środowisku testowym.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-58942Wysokie
W funkcji do_fault_around pliku memory.c występuje możliwe użycie po zwolnieniu (use after free) spowodowane błędem logicznym w kodzie. Może to doprowadzić do lokalnej eskalacji uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58847Nieznane
W funkcji kvm_vfio_pviommu_attach w pliku vfio.c występuje możliwość podwójnego zwolnienia (double free) wynikająca z błędu logicznego w kodzie. Może to prowadzić do lokalnego podniesienia uprawnień bez konieczności posiadania dodatkowych uprawnień. Do wykorzystania nie jest wymagana interakcja użytkownika.
- CVE-2026-58829Wysokie
W funkcji fuse_backing_mmap pliku backing.c występuje możliwość uszkodzenia pamięci z powodu użycia po zwolnieniu (use after free). Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58828Wysokie
W wielu funkcjach pliku base.c występuje możliwość użycia po zwolnieniu (use after free) z powodu warunku wyścigu. Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58827Wysokie
W wielu funkcjach pliku dma-buf.c występuje możliwość użycia po zwolnieniu (use after free) z powodu warunku wyścigu. Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58826Wysokie
W funkcji ksys_unshare pliku fork.c występuje możliwość uszkodzenia pamięci z powodu użycia po zwolnieniu (use after free). Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58825Wysokie
W wielu funkcjach pliku fork.c występuje możliwość użycia po zwolnieniu (use after free) z powodu błędu logicznego w kodzie. Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-99242Nieznane
W jądrze Linux naprawiono wyścig w systemie plików NTFS między fallocate a odczytami przez mmap. Fallocate brał invalidate_lock tylko dla operacji punch hole, collapse range i insert range, a przy standardowej alokacji nowe klastry były mapowane przed wyzerowaniem, co pozwalało równoległym błędom stron mmap odczytać niezainicjalizowane dane z dysku.
- CVE-2026-99241Nieznane
W jądrze Linux naprawiono brak blokady w ntfs_filemap_page_mkwrite(), która wywoływała iomap_page_mkwrite() bez trzymania mapping->invalidate_lock. Równoległy truncate lub fallocate mógł w tym czasie unieważniać pagecache i przepisywać runlist, powodując wyścig z mapowaniem bloków i zabrudzaniem folio.
- CVE-2026-99240Nieznane
W jądrze Linux w podsystemie DAMON (mm/damon/core) występuje błąd dzielenia przez zero, gdy cel kwoty DAMOS (damos_quota_goal) ma wartość target_value równą zero. Poprawka przenosi obsługę tego przypadku do warstwy rdzeniowej, dodając walidację w funkcji damos_commit_quota_goal(), która teraz zwraca błąd przy zerowej wartości docelowej.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: fs: avoid repeated scans in evict_inodes() We observed hung tasks when users attempted to unmount a filesystem after its disk had been removed while still in use. During device removal, fs_bdev_mark_dead() calls evict_inodes() while holding s_umount. Each time evict_inodes() drops s_inode_list_lock to reschedule, it restarts the walk from the head of s_inodes. With many referenced inodes at the head of the list, these restarts repeatedly scan the same inodes without reclaiming them. This can keep s_umount held for a long time, blocking concurrent umount attempts and triggering hung-task reports. Keep the current inode, already marked I_FREEING, out of the disposal batch until s_inode_list_lock is reacquired. Resume the walk from this inode and dispose of it in a later batch or at the end of the walk. The zero-refcount and state checks under i_lock allow this walker to claim the inode by setting I_FREEING and removing it from the LRU. Other reclaimers skip the inode, leaving this walker responsible for eviction. Only evict() removes it from s_inodes, so keeping it out of the disposal batch ensures that it remains on the list while the lock is dropped. After reacquiring the lock, reading its current next pointer accounts for concurrent removal of following inodes. The existing inode lifetime rules prohibit acquiring a reference to an inode marked I_FREEING or I_WILL_FREE. __iget() requires its caller to hold i_lock and establish that taking a reference is valid. Inode lookup and igrab() check these flags under i_lock when acquiring a reference from zero. ihold() requires an existing reference, which would keep i_count nonzero and prevent this walker from claiming the inode. These rules already allow iput_final() and the inode shrinker to release i_lock after setting I_FREEING and before eviction completes. A temporary __iget() reference would also keep the inode on the list, but its release must preserve last-reference handling. Another user can acquire a reference, update lazy timestamps and drop its reference while the pin is held. If the pin becomes the last reference, dropping it with atomic_dec_and_test() and evicting directly bypasses iput()'s lazytime handling and can lose those timestamp updates. Releasing the pin with iput() preserves that handling, but does not guarantee eviction. fs_bdev_mark_dead() runs with SB_ACTIVE set, so iput() may retain the inode in cache, whereas evict_inodes() must evict eligible zero-reference inodes. The inode may also have been freed when iput() returns, so the walker cannot then use it to force eviction. Using I_FREEING preserves the existing eviction behavior without introducing an additional last-reference transition. The xfstests auto group passed on ext4 and XFS with known unrelated failures excluded. No new issues were observed, and the previously reproducible hung task no longer occurs with this patch.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

