CVE-2024-39276

ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find()

State
Published
Severity
5.5 Medium
Published
Jun 25, 2024
Updated
May 23, 2026
Reserved
Jun 24, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find()

Syzbot reports a warning as follows:

============================================ WARNING: CPU: 0 PID: 5075 at fs/mbcache.c:419 mb_cache_destroy+0x224/0x290 Modules linked in: CPU: 0 PID: 5075 Comm: syz-executor199 Not tainted 6.9.0-rc6-gb947cc5bf6d7 RIP: 0010:mb_cache_destroy+0x224/0x290 fs/mbcache.c:419 Call Trace: <TASK> ext4_put_super+0x6d4/0xcd0 fs/ext4/super.c:1375 generic_shutdown_super+0x136/0x2d0 fs/super.c:641 kill_block_super+0x44/0x90 fs/super.c:1675 ext4_kill_sb+0x68/0xa0 fs/ext4/super.c:7327 [...] ============================================

This is because when finding an entry in ext4_xattr_block_cache_find(), if ext4_sb_bread() returns -ENOMEM, the ce's e_refcnt, which has already grown in the __entry_find(), won't be put away, and eventually trigger the above issue in mb_cache_destroy() due to reference count leakage.

So call mb_cache_entry_put() on the -ENOMEM error branch as a quick fix.

Scores

CVSSScoreVectorSource
3.15.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NCISA-ADP

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b878c8a7f08f0c225b6a46ba1ac867e9c5d17807 to before 9ad75e78747b5a50dc5a52f0f8e92e920a653f16Affected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before 896a7e7d0d555ad8b2b46af0c2fa7de7467f9483Affected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before 76dc776153a47372719d664e0fc50d6355791abbAffected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before 681ff9a09accd8a4379f8bd30b7a1641ee19bb3eAffected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before e941b712e758f615d311946bf98216e79145ccd9Affected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before a95df6f04f2c37291adf26a74205cde0314d4577Affected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before b37c0edef4e66fb21a2fbc211471195a383e5ab8Affected
  • fb265c9cb49e2074ddcdd4de99728aefdd3b3592 to before 0c0b4a49d3e7f49690a6827a41faeffad5df7e21Affected
  • 9da1f6d06b7a6d068e68fcfd7cbbf6b586d888e1Affected
  • 81313ed2c705d958744882a269bf4a5e3ddec95eAffected
  • 4.19.14 to before 4.19.316Affected
  • 4.14.92 to before 4.15Affected
  • 4.20.1 to before 4.21Affected
LinuxLinux
  • 5.0Affected
  • before 5.0Not affected
  • 4.19.316 through 4.19.*Not affected
  • 5.4.278 through 5.4.*Not affected
  • 5.10.219 through 5.10.*Not affected
  • 5.15.161 through 5.15.*Not affected
  • 6.1.94 through 6.1.*Not affected
  • 6.6.34 through 6.6.*Not affected
  • 6.9.5 through 6.9.*Not affected
  • 6.10 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.