CVE-2026-43071Linux内核的dcache组件存在一个安全漏洞,该问题源于当用户将dhash_entries参数设置为1时,dentry_hashtable哈希表仅分配一个桶。此时计算得到的d_hash_shift为32,导致在计算哈希索引时执行右移操作出现未定义行为。这使得指针指向未分配的内存区域,随后的读取操作引发越界访问错误,进而导致系统内核崩溃(Kernel Oops)和拒绝服务。
该漏洞发生在Linux内核的目录缓存初始化及查找过程中。当dhash_entries被配置为1时,dcache_init函数计算d_hash_shift为32。在执行d_lookup函数时,代码通过(u32)hashlen >> d_hash_shift计算桶的位置。由于右移位数等于操作数位宽(32位),根据C语言标准这属于未定义行为,实际执行时结果可能仍为hashlen。这导致内存偏移量超出分配范围,指向非法内存。当hlist_bl_first_rcu尝试读取该内存时,触发页错误。攻击者可通过控制内核启动参数触发此漏洞,导致系统不稳定或崩溃。