CVE-2026-64281 in Linuxinformação

Sumário

de VulDB • 25/07/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

svcrdma: acordar os waiters da fila de envio (sq) quando o transporte é encerrado

Os threads bloqueados em svc_rdma_sq_wait(), aguardando sc_sq_ticket_wait ou sc_send_wait, podem ficar pendurados indefinidamente no estado TASK_UNINTERRUPTIBLE durante a desmontagem do transporte, mantendo referências ao objeto svc_xprt e bloqueando svc_rdma_free().

O caminho de fechamento define XPT_CLOSE antes de invocar xpo_detach, e ambas as condições dos wait_event incluem um termo XPT_CLOSE; contudo, essas condições são reavaliadas apenas no momento do despertar. sc_sq_ticket_wait não possui um caminho de acionamento baseado em conclusão (completion-driven); ele é avançado exclusivamente pela transferência encadeada de tickets dentro da própria svc_rdma_sq_wait(). Sem um acionamento explícito durante o fechamento, os threads bloqueados nunca observam XPT_CLOSE, mantêm sua referência svc_xprt_get para sempre e svc_rdma_free() fica bloqueado aguardando que xpt_ref chegue a zero.

Dois pontos de entrada do caminho de fechamento atingem este transporte. A desmontagem local executa svc_rdma_detach() através de svc_handle_xprt() -> svc_delete_xprt() -> xpo_detach() em uma thread de trabalho (worker). Uma desconexão remota chega ao handler svc_rdma_cma_handler(), que chama svc_xprt_deferred_close(): isso define XPT_CLOSE e enfileira o transporte, mas não acessa nenhuma das filas de espera RDMA, fazendo com que um worker já bloqueado em svc_rdma_sq_wait() nunca reavalie sua condição. Com todos os workers bloqueados neste transporte, nenhuma thread está disponível para executar a desmontagem local também, tornando inacessível o ponto de acionamento ali presente.

Introduz-se svc_rdma_xprt_deferred_close(), um wrapper leve do svcrdma que chama svc_xprt_deferred_close() e em seguida desperta tanto sc_sq_ticket_wait quanto sc_send_wait. Convertem-se os produtores do svcrdma que chamavam svc_xprt_deferred_close() diretamente: svc_rdma_cma_handler(), qp_event_handler(), svc_rdma_post_send_err(), svc_rdma_wc_send(), o caminho de descarte sendto, os caminhos de erro de conclusão rw e os caminhos de erro de flush e lista de leitura recvfrom.

Acordam-se também ambas as filas de espera a partir de svc_rdma_detach(). O caminho síncrono svc_xprt_close() (ENOTCONN do backchannel, remoção de dispositivo via svc_rdma_xprt_done) atinge o detach sem passar por svc_xprt_deferred_close(), portanto não invoca o novo auxiliar.

[ cel: adiciona svc_rdma_xprt_deferred_close() para completar a correção ]

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsável

Linux

Reservar

19/07/2026

Divulgação

25/07/2026

Moderação

aceite

Entrada

VDB-383077

CPE

pronto

EPSS

0.00468

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!