CVE-2026-31721

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: f_hid: move list and spinlock inits from bind to alloc There was an issue when you did the following: - setup and bind an hid gadget - open /dev/hidg0 - use the resulting fd in EPOLL_CTL_ADD - unbind the UDC - bind the UDC - use the fd in EPOLL_CTL_DEL When CONFIG_DEBUG_LIST was enabled, a list_del corruption was reported within remove_wait_queue (via ep_remove_wait_queue). After some debugging I found out that the queues, which f_hid registers via poll_wait were the problem. These were initialized using init_waitqueue_head inside hidg_bind. So effectively, the bind function re-initialized the queues while there were still items in them. The solution is to move the initialization from hidg_bind to hidg_alloc to extend their lifetimes to the lifetime of the function instance. Additionally, I found many other possibly problematic init calls in the bind function, which I moved as well.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*

History

11 Nov 2026, 21:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: usb: gadget: f_hid: mover inicializaciones de lista y spinlock de bind a alloc Hubo un problema cuando se hizo lo siguiente: - configurar y enlazar un gadget hid - abrir /dev/hidg0 - usar el fd resultante en EPOLL_CTL_ADD - desenlazar el UDC - enlazar el UDC - usar el fd en EPOLL_CTL_DEL Cuando CONFIG_DEBUG_LIST estaba habilitado, se informó una corrupción de list_del dentro de remove_wait_queue (a través de ep_remove_wait_queue). Después de alguna depuración, descubrí que las colas, que f_hid registra a través de poll_wait, eran el problema. Estas se inicializaban usando init_waitqueue_head dentro de hidg_bind. Así que, efectivamente, la función bind reinicializaba las colas mientras todavía había elementos en ellas. La solución es mover la inicialización de hidg_bind a hidg_alloc para extender sus vidas útiles a la vida útil de la instancia de la función. Además, encontré muchas otras llamadas de inicialización posiblemente problemáticas en la función bind, las cuales también moví.

Information

Published : 2026-05-01 15:16

Updated : 2026-11-11 21:10


NVD link : CVE-2026-31721

Mitre link : CVE-2026-31721

CVE.ORG link : CVE-2026-31721


JSON object : View

Products Affected

linux

  • linux_kernel