CVE-2026-23036: btrfs: release path before iget_failed() in btrfs_read_locked_inode()

Published Jan 31, 2026
·
Updated

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

btrfs: release path before igetfailed() in btrfsreadlockedinode()

In btrfsreadlockedinode() if we fail to lookup the inode, we jump to the 'out' label with a path that has a read locked leaf and then we call igetfailed(). This can result in a ABBA deadlock, since igetfailed() triggers inode eviction and that causes the release of the delayed inode, which must lock the delayed inode's mutex, and a task updating a delayed inode starts by taking the node's mutex and then modifying the inode's subvolume btree.

Syzbot reported the following lockdep splat for this:

====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Not tainted ------------------------------------------------------ btrfs-cleaner/8725 is trying to acquire lock: ffff0000d6826a48 (&delayednode->mutex){+.+.}-{4:4}, at: btrfsreleasedelayednode+0xa0/0x9b0 fs/btrfs/delayed-inode.c:290

but task is already holding lock: ffff0000dbeba878 (btrfs-tree-00){++++}-{4:4}, at: btrfstreereadlocknested+0x44/0x2ec fs/btrfs/locking.c:145

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #1 (btrfs-tree-00){++++}-{4:4}: lockrelease kernel/locking/lockdep.c:5574 [inline] lockrelease+0x198/0x39c kernel/locking/lockdep.c:5889 upread+0x24/0x3c kernel/locking/rwsem.c:1632 btrfstreereadunlock+0xdc/0x298 fs/btrfs/locking.c:169 btrfstreeunlockrw fs/btrfs/locking.h:218 [inline] btrfssearchslot+0xa6c/0x223c fs/btrfs/ctree.c:2133 btrfslookupinode+0xd8/0x38c fs/btrfs/inode-item.c:395 btrfsupdatedelayedinode+0x124/0xed0 fs/btrfs/delayed-inode.c:1032 btrfsupdatedelayedinode fs/btrfs/delayed-inode.c:1118 [inline] btrfscommitinodedelayeditems+0x15f8/0x1748 fs/btrfs/delayed-inode.c:1141 btrfsrundelayeditems+0x1ac/0x514 fs/btrfs/delayed-inode.c:1176 btrfsrundelayeditemsnr+0x28/0x38 fs/btrfs/delayed-inode.c:1219 flushspace+0x26c/0xb68 fs/btrfs/space-info.c:828 doasyncreclaimmetadataspace+0x110/0x364 fs/btrfs/space-info.c:1158 btrfsasyncreclaimmetadataspace+0x90/0xd8 fs/btrfs/space-info.c:1226 processonework+0x7e8/0x155c kernel/workqueue.c:3263 processscheduledworks kernel/workqueue.c:3346 [inline] workerthread+0x958/0xed8 kernel/workqueue.c:3427 kthread+0x5fc/0x75c kernel/kthread.c:463 retfromfork+0x10/0x20 arch/arm64/kernel/entry.S:844

-> #0 (&delayednode->mutex){+.+.}-{4:4}: checkprevadd kernel/locking/lockdep.c:3165 [inline] checkprevsadd kernel/locking/lockdep.c:3284 [inline] validatechain kernel/locking/lockdep.c:3908 [inline] lockacquire+0x1774/0x30a4 kernel/locking/lockdep.c:5237 lockacquire+0x14c/0x2e0 kernel/locking/lockdep.c:5868 mutexlockcommon+0x1d0/0x2678 kernel/locking/mutex.c:598 mutexlock kernel/locking/mutex.c:760 [inline] mutexlocknested+0x2c/0x38 kernel/locking/mutex.c:812 btrfsreleasedelayednode+0xa0/0x9b0 fs/btrfs/delayed-inode.c:290 btrfsreleasedelayednode fs/btrfs/delayed-inode.c:315 [inline] btrfsremovedelayednode+0x68/0x84 fs/btrfs/delayed-inode.c:1326 btrfsevictinode+0x578/0xe28 fs/btrfs/inode.c:5587 evict+0x414/0x928 fs/inode.c:810 iputfinal fs/inode.c:1914 [inline] iput+0x95c/0xad4 fs/inode.c:1966 igetfailed+0xec/0x134 fs/badinode.c:248 btrfsreadlockedinode+0xe1c/0x1234 fs/btrfs/inode.c:4101 btrfsiget+0x1b0/0x264 fs/btrfs/inode.c:5837 btrfsrundefraginode fs/btrfs/defrag.c:237 [inline] btrfsrundefraginodes+0x520/0xdc4 fs/btrf ---truncated---

Affected Software

1 affected component
Linux Linux kernel

Event History

Jan 31, 2026
CVE Published
via MITRE·11:42 AM
Data Sourced
via MITRE·11:42 AM
Description
Data Sourced
via NVD·12:16 PM
Description

Frequently Asked Questions

1

What is the severity of CVE-2026-23036?

CVE-2026-23036 has been classified as a high severity vulnerability in the Linux kernel.

2

How do I fix CVE-2026-23036?

To fix CVE-2026-23036, update your Linux kernel to the latest stable version where the vulnerability is patched.

3

What systems are affected by CVE-2026-23036?

CVE-2026-23036 affects the Linux kernel, specifically the Btrfs file system.

4

What exploitation impact does CVE-2026-23036 have?

CVE-2026-23036 may lead to information disclosure or system instability if exploited.

5

How can I determine if CVE-2026-23036 impacts my system?

You can determine if CVE-2026-23036 impacts your system by checking your current Linux kernel version and comparing it with the fixed versions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203