ext4: fix i_data_sem unlock order in ext4_ind_migrate()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.19.323, 5.4.285, 5.10.227, 5.15.168, 6.1.113, and 3 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: ext4: fix i_data_sem unlock order in ext4_ind_migrate() Fuzzing reports a possible deadlock in jbd2_log_wait_commit. This issue is triggered when an EXT4_IOC_MIGRATE ioctl is set to require synchronous updates because the file descriptor is opened with O_SYNC. This can lead to the jbd2_journal_stop() function calling jbd2_might_wait_for_commit(), potentially causing a deadlock if the EXT4_IOC_MIGRATE call races with a write(2) system call. This problem only arises when CONFIG_PROVE_LOCKING is enabled. In this case, the jbd2_might_wait_for_commit macro locks jbd2_handle in the jbd2_journal_stop function while i_data_sem is locked. This triggers lockdep because the jbd2_journal_start function might also lock the same jbd2_handle simultaneously. Found by Linux Verification Center (linuxtesting.org) with syzkaller. Rule: add
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in 4192adefc9c570698821c5eb9873320eac2fcbf1; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in 3c46d6060d3e38de22196c1fe7706c5a3c696285; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in 53b1999cfd2c7addf2e581a32865fe8835467b44; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in ef05572da0c0eb89614ed01cc17d3c882bdbd1ff; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in 9fedf51ab8cf7b69bff08f37fe0989fec7f5d870; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in d43776b907659affef1de888525847d64b244194; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in 6252cb6bde7fc76cb8dcb49d1def7c326b190820; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in d58a00e981d3118b91d503da263e640b7cde6729; From e8238f9a8339b3578c85e4192a7a23bc2bdc0333 · fixed in cc749e61c011c255d81b192a822db650c68b313f
- Linux Linux
3.10
- KernelLinux
From 3.10.0 · fixed in 4.19.323; From 4.20.0 · fixed in 5.4.285; From 5.5.0 · fixed in 5.10.227; From 5.11.0 · fixed in 5.15.168; From 5.16.0 · fixed in 6.1.113; From 6.2.0 · fixed in 6.6.55; From 6.7.0 · fixed in 6.10.14; From 6.11.0 · fixed in 6.11.3
References 9
git.kernel.org
- stable/c/4192adefc9c570698821c5eb9873320eac2fcbf1
- stable/c/3c46d6060d3e38de22196c1fe7706c5a3c696285
- stable/c/53b1999cfd2c7addf2e581a32865fe8835467b44
- stable/c/ef05572da0c0eb89614ed01cc17d3c882bdbd1ff
- stable/c/9fedf51ab8cf7b69bff08f37fe0989fec7f5d870
- stable/c/d43776b907659affef1de888525847d64b244194
- stable/c/6252cb6bde7fc76cb8dcb49d1def7c326b190820
- stable/c/d58a00e981d3118b91d503da263e640b7cde6729
- stable/c/cc749e61c011c255d81b192a822db650c68b313f