CVE-2026-99207
NieznaneStreszczenie
W jądrze Linux w podsystemie scsi: target funkcja target_do_delayed_work() pobierała blokadę delayed_cmd_lock za pomocą zwykłego spin_lock(), nie wyłączając przerwań, podczas gdy wszystkie inne miejsca używają spin_lock_irqsave(). Odkąd komendy mogą być kończone w kontekście przerwania (complete_type=1 z direct_compl_supp), może to prowadzić do zakleszczenia, gdy ukończenie komendy trafi na ten sam CPU, na którym work item trzyma blokadę.
Ocena ryzyka
Wystąpienie zakleszczenia może zawiesić wątek jądra i zablokować obsługę urządzeń SCSI target, powodując niedostępność usługi. Wymaga jednak niestandardowej konfiguracji (complete_type=1, backend kończący I/O z kontekstu przerwania oraz komendy ORDERED), więc ryzyko w typowych wdrożeniach jest ograniczone.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która zamienia spin_lock() na spin_lock_irq() w target_do_delayed_work(). Do czasu aktualizacji unikaj włączania complete_type=1 na tkaninach obsługujących direct_compl_supp, jeśli nie jest to konieczne.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-99216Nieznane
W jądrze Linux w sterowniku Hyper-V (hv) występuje błąd polegający na wymuszaniu stanu DISCONNECTED przed wywołaniem vmbus_disconnect(). Powoduje to, że vmbus_initiate_unload() nie odłącza połączenia VMBus, ponieważ sprawdza on stan CONNECTED, w wyniku czego host Hyper-V może nadal wysyłać komunikaty lub przerwania VMBus.
- CVE-2026-99215Nieznane
W jądrze Linux w podsystemie power supply występuje luka use-after-free. Jeśli zasilacz zostanie wyrejestrowany (power_supply_unregister) w trakcie wykonywania callbacku external_power_changed(), sterownik może zwolnić dane, do których callback nadal próbuje uzyskać dostęp, co prowadzi do awarii jądra (NULL pointer dereference).
- CVE-2026-99214Nieznane
W jądrze Linux w sterowniku drm/vc4 dla HDMI występuje problem z kolejnością włączania Packet RAM. Gdy dźwięk jest wyzwalany przez obsługę HPD przed przywróceniem obrazu, funkcja vc4_hdmi_write_infoframe() może próbować zapisać infoframe przy wyłączonym Packet RAM, co powoduje ostrzeżenie jądra (splat). Poprawka przenosi włączanie/wyłączanie Packet RAM do hooków Runtime PM.
- CVE-2026-99213Nieznane
W podsystemie vsock jądra Linux przejście ze stanu TCP_ESTABLISHED do TCP_CLOSING przy odebraniu OP_RST może wyścignąć się z pętlą connect. Reset gniazda wciąż obecnego w connected_table może prowadzić do uszkodzenia pamięci, w tym podwójnego dodania do listy i błędu jądra.
- CVE-2026-99212Nieznane
W module net/rds jądra Linux funkcja rds_rdma_cm_event_handler_cmn() zwraca wynik rdma_resolve_route() bezpośrednio do rdma_cm przy zdarzeniu RDMA_CM_EVENT_ADDR_RESOLVED. Synchroniczny błąd powoduje zniszczenie identyfikatora ic->i_cm_id, który nadal jest używany przez RDS, co prowadzi do użycia zwolnionego identyfikatora przy zamykaniu połączenia.
- CVE-2026-99211Nieznane
W podsystemie netlink jądra Linux filtry gniazd mogą używać SKF_NET_OFF i SKF_LL_OFF do odczytu względem nagłówków sieciowych i MAC skb. Producenci netlink mogą rezerwować headroom bez resetowania tych nagłówków, co pozwala filtrowi odbierającego gniazda odczytać dane sprzed zainicjowanej wiadomości i ujawnić zawartość pamięci.
- CVE-2026-99210Nieznane
W sterowniku accel/rocket jądra Linux funkcja rocket_probe() zapisuje wynik rocket_device_init() w globalnym wskaźniku rdev przed sprawdzeniem, czy jest to wskaźnik błędu. Przy niepowodzeniu rdev pozostaje jako ERR_PTR, a późniejsza próba może pominąć inicjalizację i wyłuskać wskaźnik błędu przy odczycie rdev->num_cores.
- CVE-2026-99209Nieznane
W sterowniku drm/xe jądra Linux funkcja xe_evict_flags() odczytuje tbo->resource->mem_type, ale bufor BO może trafić do eksmisji bez ttm.resource, np. importowany dma-buf, którego zasób zwolniono podczas rozbierania. Prowadzi to do wyłuskania wskaźnika NULL i błędu jądra.
- CVE-2026-99208Nieznane
W sterowniku drm/xe/oa jądra Linux bufory BO typu ttm_bo_type_kernel nie są gwarantowanie zerowane przy alokacji i mogą zawierać dane z wcześniej zwolnionych stron. Ponieważ bufor OA jest mapowalny przez przestrzeń użytkownika, może to ujawnić nieaktualną zawartość pamięci jądra.
- CVE-2026-99206Nieznane
W jądrze Linux w podsystemie scsi target iscsi występuje wyścig przy aktualizacji parametru uwierzytelniania discovery. Równoczesne otwarcia configfs mogą zwolnić tę samą wartość w iscsi_update_param_value(), powodując podwójne zwolnienie pamięci (double-free).
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: scsi: target: Disable interrupts while holding delayed_cmd_lock target_do_delayed_work() takes dev->delayed_cmd_lock with a plain spin_lock(). It runs from system_percpu_wq, so interrupts stay enabled while the lock is held. Every other acquisition of that lock uses spin_lock_irqsave(): target_handle_task_attr() and transport_complete_ordered_sync() in target_core_transport.c, and target_non_ordered_release() in target_core_device.c. That was safe while every caller of transport_complete_task_attr() ran in process context: target_complete_ok_work() from target_completion_wq, transport_complete_qf() from dev->qf_work_queue, and transport_generic_request_failure() from the submit and execute paths. Since commit 06933066d88a ("scsi: target: Add support for completing commands from backend context") that is no longer true. With complete_type=1 on a fabric that sets direct_compl_supp, target_complete() runs target_complete_ok_work() inline in the backend's completion context, which target_complete_cmd_with_sense() documents as "May be called from interrupt context". For iblock that is the bio end_io. target_complete_ok_work() starts with transport_complete_task_attr(), which takes delayed_cmd_lock in two ways: - Every ORDERED command is put on dev->delayed_cmd_list by target_handle_task_attr() and dispatched from there by target_do_delayed_work(), which marks it SCF_TASK_ORDERED_SYNC. Its completion therefore goes through transport_complete_ordered_sync(). - A SIMPLE command that completes while an ORDERED command is pending drops the last reference to the killed dev->non_ordered, and percpu_ref_put() then runs target_non_ordered_release() in the completing context. Both take the lock and, if commands are waiting, call schedule_work(&dev->delayed_cmd_work), which queues on system_percpu_wq, i.e. on the CPU that took the completion. Further completions for the same queue are typically delivered there too, so one arriving while the work holds the lock spins on it forever. Reaching this needs complete_type=1, which is not the default (vhost-scsi, the only fabric with direct_compl_supp, defaults to TARGET_QUEUE_COMPL), a backend whose I/O completes from interrupt context, and ORDERED commands from the initiator. Linux virtio_scsi guests send only VIRTIO_SCSI_S_SIMPLE and never take the ordered path; any guest that uses the ORDERED task attribute, which vhost-scsi accepts, does. target_do_delayed_work() is a work item and always runs in process context, so spin_lock_irq() is sufficient. Found by inspection; no runtime report. A single ORDERED command goes through both acquisitions, so with CONFIG_PROVE_LOCKING the first one completed through direct completion should produce an inconsistent lock state report on delayed_cmd_lock (hardirq or softirq, depending on where the backend completes).
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

