CVE-2026-43245Linux内核中的NTFS文件系统驱动存在一个安全漏洞。问题在于`d_compare()`函数以及`ntfs_d_hash()`函数中使用了`__getname()`进行内存分配,而在这些上下文中不应执行阻塞操作。这可能导致内核死锁或拒绝服务。该补丁通过将内存分配方式替换为`kmalloc(PATH_MAX, GFP_NOWAIT)`来修复此问题,确保操作不会阻塞。
该漏洞源于Linux内核NTFS驱动程序在VFS(虚拟文件系统)层回调函数中的错误内存分配行为。具体而言,`d_compare()` 和 `ntfs_d_hash()` 这些回调函数可能在持有自旋锁或处于不可睡眠上下文(如RCU读锁)中被内核调用。原代码使用了`__getname()`,该函数最终会调用带有`GFP_KERNEL`标志的内存分配函数,这允许进程进入睡眠状态等待内存。如果在持有锁或原子操作期间发生睡眠,将导致内核死锁、系统挂起或崩溃。攻击者可以通过构造特定的文件系统操作或目录遍历请求,触发该路径下的内存分配压力,从而诱发阻塞,导致本地拒绝服务。