CVE-2025-40190

Summary

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 Software

VendorProductVersion RangeStatus
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < ea39e712c2f5ae148ee5515798ae03523673e002affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 1cfb3e4ddbdc8e02e637b8852540bd4718bf4814affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 505e69f76ac497e788f4ea0267826ec7266b40c8affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 3d6269028246f4484bfed403c947a114bb583631affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 79ea7f3e11effe1bd9e753172981d9029133a278affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 6b879c4c6bbaab03c0ad2a983953bd1410bb165eaffected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 440b003f449a4ff2a00b08c8eab9ba5cd28f3943affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 57295e835408d8d425bef58da5253465db3d6888affected
LinuxLinux0 < 5.4.301affected
LinuxLinux0 < 5.10.246affected
LinuxLinux0 < 5.15.195affected
LinuxLinux0 < 6.1.157affected
LinuxLinux0 < 6.6.113affected
LinuxLinux0 < 6.12.54affected
LinuxLinux0 < 6.17.4affected
LinuxLinux5.4.301 <= 5.4.*unaffected
LinuxLinux5.10.246 <= 5.10.*unaffected
LinuxLinux5.15.195 <= 5.15.*unaffected
LinuxLinux6.1.157 <= 6.1.*unaffected
LinuxLinux6.6.113 <= 6.6.*unaffected
LinuxLinux6.12.54 <= 6.12.*unaffected
LinuxLinux6.17.4 <= 6.17.*unaffected
LinuxLinux6.18 <= *unaffected

Weaknesses

References