CVE 9.1 CRITICAL

dcache: Limit the minimal number of bucket to two_CVE-2026-43071

9.1 / 10
CRITICAL
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

Description

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

dcache: Limit the minimal number of bucket to two

There is an OOB read problem on dentry_hashtable when user sets
'dhash_entries=1':
BUG: unable to handle page fault for address: ffff888b30b774b0
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
Oops: Oops: 0000 [#1] SMP PTI
RIP: 0010:__d_lookup+0x56/0x120
Call Trace:
d_lookup.cold+0x16/0x5d
lookup_dcache+0x27/0xf0
lookup_one_qstr_excl+0x2a/0x180
start_dirop+0x55/0xa0
simple_start_creating+0x8d/0xa0
debugfs_start_creating+0x8c/0x180
debugfs_create_dir+0x1d/0x1c0
pinctrl_init+0x6d/0x140
do_one_initcall+0x6d/0x3d0
kernel_init_freeable+0x39f/0x460
kernel_init+0x2a/0x260

There will be only one bucket in dentry_hashtable when dhash_entries is
set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then,
following process will access more than one buckets(which memory region
is not allocated) in dentry_hashtable:
d_lookup
b = d_hash(hash)
dentry_hashtable + ((u32)hashlen >> d_hash_shift)
// The C standard defines the behavior of right shift amounts
// exceeding the bit width of the operand as undefined. The
// result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',
// so 'b' will point to an unallocated memory region.
hlist_bl_for_each_entry_rcu(b)
hlist_bl_first_rcu(head)
h->first // read OOB!

Fix it by limiting the minimal number of dentry_hashtable bucket to two,
so that 'd_hash_shift' won't exceeds the bit width of type u32.

AI Analysis

AI processing failed - invalid JSON response

Basic Information

ID CVE-2026-43071
Source Linux
Published May 5, 2026 at 15:29
Modified May 8, 2026 at 12:40

Affected Product

Vendor Linux
Product Linux
Version 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Affected Versions Linux Linux 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Linux Linux 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Linux Linux 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Linux Linux 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Linux Linux 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Linux Linux 99d263d4c5b2f541dfacb5391e22e8c91ea982a6
Linux Linux d4c96061fddd129778ce8b70fb093aa532f422d0
Linux Linux be2378cbffe50ce0161f0fdee914adee98af53dc
Linux Linux a8be8af18485f9fade90e1743d940252a39eec84
Linux Linux b5cf3193759f7cd1cfbeef11f5cf067bbce22e55
Linux Linux 3.17

References

💭 Join the Security Discussion

🔒 Your email address will not be published. Required fields are marked *

⚠️ Please be respectful and constructive in your comments. Security discussions should remain professional.