CVE-2022-49834

Source
https://cve.org/CVERecord?id=CVE-2022-49834
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49834.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2022-49834
Downstream
Related
Published
2025-05-01T14:09:52.076Z
Modified
2026-04-03T13:14:41.283504309Z
Summary
nilfs2: fix use-after-free bug of ns_writer on remount
Details

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 -------------------------------- ------------------------------ nilfsconstructsegment nilfssegctorsync initwait initwaitqueueentry addwaitqueue schedule nilfsremount (R/W remount case) nilfsattachlogwriter nilfsdetachlogwriter nilfssegctordestroy kfree finishwait rawspinlock_irqsave _rawspinlockirqsave dorawspinlock debugspinlockbefore <-- use-after-free

While Task1 is sleeping, nilfs->nswriter is freed by Task2. After Task1 waked up, Task1 accesses nilfs->nswriter 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->nswriter 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 nswriter pointer was used to check if the filesystem is read-only.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49834.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
fe5f171bb272946ce5fbf843ce2f8467d0d41b9a
Fixed
b2fbf10040216ef5ee270773755fc2f5da65b749
Fixed
39a3ed68270b079c6b874d4e4727a512b9b4882c
Fixed
b4736ab5542112fe0a40f140a0a0b072954f34da
Fixed
9b162e81045266a2d5b44df9dffdf05c54de9cca
Fixed
4feedde5486c07ea79787839153a71ca71329c7d
Fixed
afbd1188382a75f6cfe22c0b68533f7f9664f182
Fixed
b152300d5a1ba4258dacf9916bff20e6a8c7603b
Fixed
8cccf05fe857a18ee26e20d11a8455a73ffd4efd

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49834.json"