Linux: xfs: initialise error in xfs_defer_finish_one()
What fixes it
- 30748a24b9f04f9a83599ba907cc8fbff0729f3cLinuxCVE List
- 6b507c239884f7d4bf8339f6e9eb8bfcb540afdeLinuxCVE List
- 6176d21d7bd609632c5b7e87a3adb9be29ec1e72LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
xfs: initialise error in xfs_defer_finish_one()
xfs_defer_finish_one() declares error without an initialiser and only assigns it inside the loop over dfp->dfp_work. When that list is empty the loop body never runs, control falls through to the "Done with the dfp, free it" path, and the function returns an indeterminate value.
An item-less pending item reaches this through xfs_defer_add_barrier(), which xfs_reap_ag_blocks() uses on any CONFIG_XFS_ONLINE_REPAIR kernel. xfs_defer_finish_noroll() treats any non-EAGAIN return as fatal, so a non-zero stack value turns a successful barrier into a SHUTDOWN_CORRUPT_INCORE in the middle of a repair. Zero is the correct result: reaching the free path means the item loop drained without a non-zero error.
Text from CVE List
Affected versions 10
- Linuxaffected: 3f3cec031099c37513727efc978a12b6346e326d before 30748a24b9f04f9a83599ba907cc8fbff0729f3cCVE List
- Linuxaffected: 3f3cec031099c37513727efc978a12b6346e326d before ba949a14446b7346e92e676ee3fe2bb79d9ce450CVE List
- Linuxaffected: 3f3cec031099c37513727efc978a12b6346e326d before 6b507c239884f7d4bf8339f6e9eb8bfcb540afdeCVE List
- Linuxaffected: 3f3cec031099c37513727efc978a12b6346e326d before 6176d21d7bd609632c5b7e87a3adb9be29ec1e72CVE List
- Linuxaffected: 6.8CVE List
- Linuxunaffected: all versions before 6.8CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 4
- git.kernel.org/stable/c/30748a24b9f04f9a83599ba907cc8fbff0729f3cReferencevia CVE List
- git.kernel.org/stable/c/ba949a14446b7346e92e676ee3fe2bb79d9ce450Referencevia CVE List
- git.kernel.org/stable/c/6b507c239884f7d4bf8339f6e9eb8bfcb540afdeReferencevia CVE List
- git.kernel.org/stable/c/6176d21d7bd609632c5b7e87a3adb9be29ec1e72Referencevia CVE List