CVE-2026-43324

In the Linux kernel, the following vulnerability has been resolved: USB: dummy-hcd: Fix interrupt synchronization error This fixes an error in synchronization in the dummy-hcd driver. The error has a somewhat involved history. The synchronization mechanism was introduced by commit 7dbd8f4cabd9 ("USB: dummy-hcd: Fix erroneous synchronization change"), which added an emulated "interrupts enabled" flag together with code emulating synchronize_irq() (it waits until all current handler callbacks have returned). But the emulated interrupt-disable occurred too late, after the driver containing the handler callback routines had been told that it was unbound and no more callbacks would occur. Commit 4a5d797a9f9c ("usb: gadget: dummy_hcd: fix gpf in gadget_setup") tried to fix this by moving the synchronize_irq() emulation code from dummy_stop() to dummy_pullup(), which runs before the unbind callback. There still were races, though, because the emulated interrupt-disable still occurred too late. It couldn't be moved to dummy_pullup(), because that routine can be called for reasons other than an impending unbind. Therefore commits 7dc0c55e9f30 ("USB: UDC core: Add udc_async_callbacks gadget op") and 04145a03db9d ("USB: UDC: Implement udc_async_callbacks in dummy-hcd") added an API allowing the UDC core to tell dummy-hcd exactly when emulated interrupts and their callbacks should be disabled. That brings us to the current state of things, which is still wrong because the emulated synchronize_irq() occurs before the emulated interrupt-disable! That's no good, beause it means that more emulated interrupts can occur after the synchronize_irq() emulation has run, leading to the possibility that a callback handler may be running when the gadget driver is unbound. To fix this, we have to move the synchronize_irq() emulation code yet again, to the dummy_udc_async_callbacks() routine, which takes care of enabling and disabling emulated interrupt requests. The synchronization will now run immediately after emulated interrupts are disabled, which is where it belongs.
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: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:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*

History

11 Nov 2026, 20:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: USB: dummy-hcd: Corrección de error de sincronización de interrupciones Esto corrige un error de sincronización en el controlador dummy-hcd. El error tiene una historia un tanto intrincada. El mecanismo de sincronización fue introducido por el commit 7dbd8f4cabd9 (’USB: dummy-hcd: Corrección de cambio de sincronización erróneo’), que añadió una bandera emulada de ’interrupciones habilitadas’ junto con código que emula synchronize_irq() (espera hasta que todas las devoluciones de llamada del gestor actuales hayan regresado). Pero la deshabilitación de interrupciones emulada ocurrió demasiado tarde, después de que al controlador que contenía las rutinas de devolución de llamada del gestor se le había informado que estaba desvinculado y que no ocurrirían más devoluciones de llamada. El commit 4a5d797a9f9c (’usb: gadget: dummy_hcd: corrección de gpf en gadget_setup’) intentó corregir esto moviendo el código de emulación de synchronize_irq() de dummy_stop() a dummy_pullup(), que se ejecuta antes de la devolución de llamada de desvinculación. Sin embargo, aún había condiciones de carrera, porque la deshabilitación de interrupciones emulada todavía ocurría demasiado tarde. No podía moverse a dummy_pullup(), porque esa rutina puede ser llamada por razones distintas a una desvinculación inminente. Por lo tanto, los commits 7dc0c55e9f30 (’USB: UDC core: Añadir operación de gadget udc_async_callbacks’) y 04145a03db9d (’USB: UDC: Implementar udc_async_callbacks en dummy-hcd’) añadieron una API permitiendo al núcleo UDC indicar a dummy-hcd exactamente cuándo las interrupciones emuladas y sus devoluciones de llamada deben ser deshabilitadas. Eso nos lleva al estado actual de las cosas, que sigue siendo incorrecto porque el synchronize_irq() emulado ocurre antes de la deshabilitación de interrupciones emulada. Eso no es bueno, porque significa que pueden ocurrir más interrupciones emuladas después de que la emulación de synchronize_irq() se haya ejecutado, lo que lleva a la posibilidad de que un gestor de devolución de llamada esté ejecutándose cuando el controlador del gadget está desvinculado. Para corregir esto, tenemos que mover el código de emulación de synchronize_irq() una vez más, a la rutina dummy_udc_async_callbacks(), que se encarga de habilitar y deshabilitar las solicitudes de interrupción emuladas. La sincronización ahora se ejecutará inmediatamente después de que las interrupciones emuladas sean deshabilitadas, que es donde debe estar.

Information

Published : 2026-05-08 14:16

Updated : 2026-11-11 20:10


NVD link : CVE-2026-43324

Mitre link : CVE-2026-43324

CVE.ORG link : CVE-2026-43324


JSON object : View

Products Affected

linux

  • linux_kernel