CVE-2026-31581

In the Linux kernel, the following vulnerability has been resolved: ALSA: 6fire: fix use-after-free on disconnect In usb6fire_chip_abort(), the chip struct is allocated as the card's private data (via snd_card_new with sizeof(struct sfire_chip)). When snd_card_free_when_closed() is called and no file handles are open, the card and embedded chip are freed synchronously. The subsequent chip->card = NULL write then hits freed slab memory. Call trace: usb6fire_chip_abort sound/usb/6fire/chip.c:59 [inline] usb6fire_chip_disconnect+0x348/0x358 sound/usb/6fire/chip.c:182 usb_unbind_interface+0x1a8/0x88c drivers/usb/core/driver.c:458 ... hub_event+0x1a04/0x4518 drivers/usb/core/hub.c:5953 Fix by moving the card lifecycle out of usb6fire_chip_abort() and into usb6fire_chip_disconnect(). The card pointer is saved in a local before any teardown, snd_card_disconnect() is called first to prevent new opens, URBs are aborted while chip is still valid, and snd_card_free_when_closed() is called last so chip is never accessed after the card may be freed.
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:*:*:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: ALSA: 6fire: corregir uso después de liberación al desconectar En usb6fire_chip_abort(), la estructura chip se asigna como datos privados de la tarjeta (a través de snd_card_new con sizeof(struct sfire_chip)). Cuando se llama a snd_card_free_when_closed() y no hay descriptores de archivo abiertos, la tarjeta y el chip incrustado se liberan sincrónicamente. La escritura posterior de chip -> card = NULL entonces accede a memoria slab liberada. Traza de llamada: usb6fire_chip_abort sound/usb/6fire/chip.c:59 [inline] usb6fire_chip_disconnect+0x348/0x358 sound/usb/6fire/chip.c:182 usb_unbind_interface+0x1a8/0x88c drivers/usb/core/driver.c:458 ... hub_event+0x 1a04/0x 4518 drivers/usb/core/hub.c:5953 Solución moviendo el ciclo de vida de la tarjeta fuera de usb6fire_chip_abort() y hacia usb6fire_chip_disconnect(). El puntero de la tarjeta se guarda en una variable local antes de cualquier desmantelamiento, se llama primero a snd_card_disconnect() para evitar nuevas aperturas, los URB se abortan mientras el chip sigue siendo válido, y se llama a snd_card_free_when_closed() al final para que el chip nunca sea accedido después de que la tarjeta pueda ser liberada.

Information

Published : 2026-04-24 15:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31581

Mitre link : CVE-2026-31581

CVE.ORG link : CVE-2026-31581


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free