CVE-2026-89798 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
rpcrdma: armazena rn_done antes de publicar a notificação
A função rpcrdma_rn_register() insere @rn em rd_xa com xa_alloc() antes de armazenar o callback do chamador em rn->rn_done. O xarray torna @rn acessível para rpcrdma_remove_one(), que percorre rd_xa e invoca rn->rn_done(rn) para cada notificação registrada. Uma remoção de dispositivo que concorra com um registro recente pode, portanto, observar @rn com rn_done ainda NULL, pois os objetos de notificação são alocados como zero por seus proprietários, chamando através de um ponteiro de função nulo.
Armazene rn->rn_done antes de xa_alloc() publicar @rn. A ordenação do lado da gravação e do lado da leitura do xarray garante então que qualquer CPU que encontre @rn em rd_xa também observe o callback armado.
A rpcrdma_rn_unregister() trata um rn_done não nulo como a sentinela para um registro concluído, portanto, a gravação antecipada não deve sobreviver a um registro com falha. Limpe rn_done novamente quando xa_alloc() falhar. Se fosse deixado definido, o caminho de limpeza da aceitação fracassada chamaria rpcrdma_rn_unregister() em um @rn que nunca foi inserido, apagando uma slot rd_xa não relacionada e causando underflow em rd_kref.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.