Description
In the Linux kernel, the following vulnerability has been resolved: ocfs2: split transactions in dio completion to avoid credit exhaustion During ocfs2 dio operations, JBD2 may report warnings via following call trace: ocfs2_dio_end_io_write ocfs2_mark_extent_written ocfs2_change_extent_flag ocfs2_split_extent ocfs2_try_to_merge_extent ocfs2_extend_rotate_transaction ocfs2_extend_trans jbd2__journal_restart start_this_handle output: JBD2: kworker/6:2 wants too many credits credits:5450 rsv_credits:0 max:5449 To prevent exceeding the credits limit, modify ocfs2_dio_end_io_write() to handle extents in a batch of transaction. Additionally, relocate ocfs2_del_inode_from_orphan(). The orphan inode should only be removed from the orphan list after the extent tree update is complete. This ensures that if a crash occurs in the middle of extent tree updates, we won't leave stale blocks beyond EOF. This patch also changes the logic for updating the inode size and removing orphan, making it similar to ext4_dio_write_end_io(). Both operations are performed only when everything looks good. Finally, thanks to Jans and Joseph for providing the bug fix prototype and suggestions.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
c15471f79506830f80eca0e7fe09b8213953ab5f to < 97c03c0e9f73a5049794b3c69ee60fb5e8b0ebd8affectedc15471f79506830f80eca0e7fe09b8213953ab5f to < 1e99bb19994246514d63e656492904176f9d5eddaffectedc15471f79506830f80eca0e7fe09b8213953ab5f to < 91e05ac2336d00d5b99fc774be4bd50039084796affectedc15471f79506830f80eca0e7fe09b8213953ab5f to < 886f97fa59d0bbfa9859fb1a66dd9e014b522d89affectedc15471f79506830f80eca0e7fe09b8213953ab5f to < ea5bb1d20da756e4f41a48dad42b2e7d6e73f71eaffectedc15471f79506830f80eca0e7fe09b8213953ab5f to < 3c636a3edca9c3f180b3079f94fe7e115730d9c6affectedc15471f79506830f80eca0e7fe09b8213953ab5f to < 069c3fb310e9336cf48cfdf8748a32c29fd0193daffectedc15471f79506830f80eca0e7fe09b8213953ab5f to < d647c5b2fbf81560818dacade360abc8c00a9665affected
Linux Linux
Default version status: affected
4.6affected0 to < 4.6unaffected5.10.258 to ≤ 5.10.*unaffected5.15.209 to ≤ 5.15.*unaffected6.1.175 to ≤ 6.1.*unaffected6.6.140 to ≤ 6.6.*unaffected6.12.86 to ≤ 6.12.*unaffected6.18.27 to ≤ 6.18.*unaffected7.0.4 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/97c03c0e9f73a5049794b3c69ee60fb5e8b0ebd8 ↗
- https://git.kernel.org/stable/c/1e99bb19994246514d63e656492904176f9d5edd ↗
- https://git.kernel.org/stable/c/91e05ac2336d00d5b99fc774be4bd50039084796 ↗
- https://git.kernel.org/stable/c/886f97fa59d0bbfa9859fb1a66dd9e014b522d89 ↗
- https://git.kernel.org/stable/c/ea5bb1d20da756e4f41a48dad42b2e7d6e73f71e ↗
- https://git.kernel.org/stable/c/3c636a3edca9c3f180b3079f94fe7e115730d9c6 ↗
- https://git.kernel.org/stable/c/069c3fb310e9336cf48cfdf8748a32c29fd0193d ↗
- https://git.kernel.org/stable/c/d647c5b2fbf81560818dacade360abc8c00a9665 ↗