CVE-2022-49834
CVE.org · Published
- Record status
- Published
- Identifier year (not publication year)
- 2022
- Source publication
- Source updated
- Imported by cveboard
- Source snapshot
- cve_2026-10-24_midnight_baseline ·
CNA source text (English)
nilfs2: fix use-after-free bug of ns_writer on remount
In the Linux kernel, the following vulnerability has been resolved: nilfs2: fix use-after-free bug of ns_writer on remount If a nilfs2 filesystem is downgraded to read-only due to metadata corruption on disk and is remounted read/write, or if emergency read-only remount is performed, detaching a log writer and synchronizing the filesystem can be done at the same time. In these cases, use-after-free of the log writer (hereinafter nilfs->ns_writer) can happen as shown in the scenario below: Task1 Task2 -------------------------------- ------------------------------ nilfs_construct_segment nilfs_segctor_sync init_wait init_waitqueue_entry add_wait_queue schedule nilfs_remount (R/W remount case) nilfs_attach_log_writer nilfs_detach_log_writer nilfs_segctor_destroy kfree finish_wait _raw_spin_lock_irqsave __raw_spin_lock_irqsave do_raw_spin_lock debug_spin_lock_before <-- use-after-free While Task1 is sleeping, nilfs->ns_writer is freed by Task2. After Task1 waked up, Task1 accesses nilfs->ns_writer which is already freed. This scenario diagram is based on the Shigeru Yoshida's post [1]. This patch fixes the issue by not detaching nilfs->ns_writer on remount so that this UAF race doesn't happen. Along with this change, this patch also inserts a few necessary read-only checks with superblock instance where only the ns_writer pointer was used to check if the filesystem is read-only.
Scoped product and version facts
Fix information unknown; no fixed version is derived here. Missing information does not prove that no fix exists.
Exploitation unknown; this catalogue does not assess exploitation.
Linux
- Vendor
- Linux
- Product
- Linux
- Platforms
- Unknown
- Default status
unaffected
| Version (version) | Status (status) | Version scheme (versionType) | Exclusive end (lessThan) | Inclusive end (lessThanOrEqual) | Status changes (at → status) |
|---|---|---|---|---|---|
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | b2fbf10040216ef5ee270773755fc2f5da65b749 | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | 39a3ed68270b079c6b874d4e4727a512b9b4882c | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | b4736ab5542112fe0a40f140a0a0b072954f34da | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | 9b162e81045266a2d5b44df9dffdf05c54de9cca | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | 4feedde5486c07ea79787839153a71ca71329c7d | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | afbd1188382a75f6cfe22c0b68533f7f9664f182 | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | b152300d5a1ba4258dacf9916bff20e6a8c7603b | Unavailable | None listed |
| fe5f171bb272946ce5fbf843ce2f8467d0d41b9a | affected | git | 8cccf05fe857a18ee26e20d11a8455a73ffd4efd | Unavailable | None listed |
Linux
- Vendor
- Linux
- Product
- Linux
- Platforms
- Unknown
- Default status
affected
| Version (version) | Status (status) | Version scheme (versionType) | Exclusive end (lessThan) | Inclusive end (lessThanOrEqual) | Status changes (at → status) |
|---|---|---|---|---|---|
| 2.6.34 | affected | Unavailable | Unavailable | Unavailable | None listed |
| 0 | unaffected | semver | 2.6.34 | Unavailable | None listed |
| 4.9.334 | unaffected | semver | Unavailable | 4.9.* | None listed |
| 4.14.300 | unaffected | semver | Unavailable | 4.14.* | None listed |
| 4.19.267 | unaffected | semver | Unavailable | 4.19.* | None listed |
| 5.4.225 | unaffected | semver | Unavailable | 5.4.* | None listed |
| 5.10.155 | unaffected | semver | Unavailable | 5.10.* | None listed |
| 5.15.79 | unaffected | semver | Unavailable | 5.15.* | None listed |
| 6.0.9 | unaffected | semver | Unavailable | 6.0.* | None listed |
| 6.1 | unaffected | original_commit_for_fix | Unavailable | * | None listed |