PT-2025-8087 · Linux+3 · Linux Kernel+3
Publicado
2022-01-01
·
Atualizado
2025-09-23
·
CVE-2022-49159
CVSS v3.1
5.5
Média
| Vetor | AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Nome do Software Vulnerável e Versões Afetadas
Kernel Linux (versões afetadas não especificadas)
Descrição
Existe uma condição de corrida entre o manipulador de timeout e a função done no módulo qla2xxx do Kernel Linux. Isso pode levar a um dereferenciamento de ponteiro NULL quando qla24xx async abort cmd() acessa um ponteiro sp->qpair já liberado. O problema surge porque qla24xx async gpsc sp done() libera o SRB incondicionalmente e, quando o manipulador de timeout é reagendado, ele tenta acessar o ponteiro já liberado. O problema pode ser resolvido introduzindo um contador de referências para serializar o acesso e prevenir a condição de corrida.
Recomendações
Para resolver este problema, introduza um contador de referências para o SRB no módulo qla2xxx. Adquira uma referência para o caminho de código normal e uma para o caminho de timeout, e use sincronização adequada via locks para garantir acesso exclusivo. Ao cancelar um timer, decremente com segurança o contador de referências em um se del timer retornar 1, indicando que nenhum tratamento de erro está em progresso. Se não for possível cancelar o timer, garanta que sp->done() seja chamado nos manipuladores de abort antes de chamar kref put().
Exploit
Correção
NULL Pointer Dereference
Memory Leak
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Astra Linux
Debian
Linux Kernel
Suse