CVE-2026-31606Linux内核USB Gadget f_hid驱动存在安全漏洞。在设备文件/dev/hidg*仍被打开的情况下,若执行unbind与bind操作,会错误地重新初始化正在使用的cdev结构体,导致内核崩溃及系统拒绝服务。
该漏洞位于Linux内核的`drivers/usb/gadget/function/f_hid.c`驱动中。原代码使用静态分配的cdev结构体,当unbind后立即bind时,`cdev_init`会被再次调用。此时如果用户空间进程仍持有对`/dev/hidg*`的文件描述符,旧的cdev引用计数未归零,导致结构体被不安全地重用,破坏内核内存管理结构。修复方案采用`cdev_alloc`在堆上动态分配cdev,确保每次bind操作使用全新的内存区域,从而避免竞态条件和内存破坏引发的内核Oops。