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-11T12:44:34.906664Z
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
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49834.json"
}
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"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.34
Fixed
4.9.334
Type
ECOSYSTEM
Events
Introduced
4.10.0
Fixed
4.14.300
Type
ECOSYSTEM
Events
Introduced
4.15.0
Fixed
4.19.267
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.225
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.155
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.79
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.0.9

Database specific

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