CVE-2024-56670 in Linux
Zusammenfassung
von VulDB • 09.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
usb: gadget: u_serial: Behebung des Problems, bei dem gs_start_io aufgrund eines Zugriffs auf einen Nullzeiger abstürzte.
Unter extremen Bedingungen kann es vorkommen, dass der Treiber „u_serial“ von mehreren Threads gleichzeitig angesprochen wird. Thread A führt die Open-Operation aus und ruft gs_open auf, während Thread B die Disconnect-Operation durchführt und die Funktion gserial_disconnect aufruft. Dabei wird der Zeiger port->port_usb auf NULL gesetzt.
Beispiel: Thread A Thread B gs_open() gadget_unbind_driver() gs_start_io() composite_disconnect() gs_start_rx() gserial_disconnect() ... ... spin_unlock(&port->port_lock) status = usb_ep_queue() spin_lock(&port->port_lock) spin_lock(&port->port_lock) port->port_usb = NULL gs_free_requests(port->port_usb->in) spin_unlock(&port->port_lock) Absturz
Dies führt dazu, dass Thread A beim Aufruf der Funktion gs_free_requests auf einen Nullzeiger zugreift (port->port_usb ist null), was einen Systemabsturz verursacht.
Wenn port_usb NULL ist, wird die Freigabe-Anforderung übersprungen, da sie von gserial_disconnect übernommen wird.
Daher wurde eine Prüfung auf Nullzeiger in gs_start_io hinzugefügt, bevor versucht wird, den Wert des Zeigers port->port_usb zu accessesieren.
Call-Trace: gs_start_io+0x164/0x25c gs_open+0x108/0x13c tty_open+0x314/0x638 chrdev_open+0x1b8/0x258 do_dentry_open+0x2c4/0x700 vfs_open+0x2c/0x3c path_openat+0xa64/0xc60 do_filp_open+0xb8/0x164 do_sys_openat2+0x84/0xf0 __arm64_sys_openat+0x70/0x9c invoke_syscall+0x58/0x114 el0_svc_common+0x80/0xe0 do_el0_svc+0x1c/0x28 el0_svc+0x38/0x68
VulDB is the best source for vulnerability data and more expert information about this specific topic.