Description
In the Linux kernel, the following vulnerability has been resolved: ext4: guard against EA inode refcount underflow in xattr update syzkaller found a path where ext4_xattr_inode_update_ref() reads an EA inode refcount that is already <= 0 and then applies ref_change (often -1). That lets the refcount underflow and we proceed with a bogus value, triggering errors like: EXT4-fs error: EA inode <n> ref underflow: ref_count=-1 ref_change=-1 EXT4-fs warning: ea_inode dec ref err=-117 Make the invariant explicit: if the current refcount is non-positive, treat this as on-disk corruption, emit ext4_error_inode(), and fail the operation with -EFSCORRUPTED instead of updating the refcount. Delete the WARN_ONCE() as negative refcounts are now impossible; keep error reporting in ext4_error_inode(). This prevents the underflow and the follow-on orphan/cleanup churn.
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
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < ea39e712c2f5ae148ee5515798ae03523673e002affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 1cfb3e4ddbdc8e02e637b8852540bd4718bf4814affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 505e69f76ac497e788f4ea0267826ec7266b40c8affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 3d6269028246f4484bfed403c947a114bb583631affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 79ea7f3e11effe1bd9e753172981d9029133a278affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 6b879c4c6bbaab03c0ad2a983953bd1410bb165eaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 440b003f449a4ff2a00b08c8eab9ba5cd28f3943affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 57295e835408d8d425bef58da5253465db3d6888affected0 to < 5.4.301affected0 to < 5.10.246affected0 to < 5.15.195affected0 to < 6.1.157affected0 to < 6.6.113affected0 to < 6.12.54affected0 to < 6.17.4affected
Linux Linux
Default version status: affected
5.4.301 to ≤ 5.4.*unaffected5.10.246 to ≤ 5.10.*unaffected5.15.195 to ≤ 5.15.*unaffected6.1.157 to ≤ 6.1.*unaffected6.6.113 to ≤ 6.6.*unaffected6.12.54 to ≤ 6.12.*unaffected6.17.4 to ≤ 6.17.*unaffected6.18 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/ea39e712c2f5ae148ee5515798ae03523673e002 ↗
- https://git.kernel.org/stable/c/1cfb3e4ddbdc8e02e637b8852540bd4718bf4814 ↗
- https://git.kernel.org/stable/c/505e69f76ac497e788f4ea0267826ec7266b40c8 ↗
- https://git.kernel.org/stable/c/3d6269028246f4484bfed403c947a114bb583631 ↗
- https://git.kernel.org/stable/c/79ea7f3e11effe1bd9e753172981d9029133a278 ↗
- https://git.kernel.org/stable/c/6b879c4c6bbaab03c0ad2a983953bd1410bb165e ↗
- https://git.kernel.org/stable/c/440b003f449a4ff2a00b08c8eab9ba5cd28f3943 ↗
- https://git.kernel.org/stable/c/57295e835408d8d425bef58da5253465db3d6888 ↗