Linux · Linux Kernel · CVE-2024-56687
**Nome do software vulnerável e versões afetadas**
Kernel do Linux (versões afetadas não especificadas)
**Descrição**
Foi identificado um problema de travamento de hardware no kernel do Linux, especificamente no driver MUSB (Media Universal Serial Bus). Esse problema pode ocorrer quando a chamada de retorno de uma solicitação é invocada a partir da função `usb ep queue()`, o que pode criar situações de impasse. O problema surge quando o dispositivo é inicializado e um pacote chega, definindo o sinalizador RXPKTRDY e gerando uma interrupção. Se as IRQs (solicitações de interrupção) estiverem habilitadas durante o callback completo, o endpoint pode travar, impedindo que novos pacotes sejam recebidos. Esse problema é particularmente relevante para o dispositivo USB Ethernet, onde o callback `rx complete()` chama `netif rx()`, o que pode desabilitar e, em seguida, reabilitar as IRQs. A situação é complexa, envolvendo vários componentes e possíveis soluções alternativas.
**Recomendações**
Para resolver este problema, considere as seguintes abordagens:
1. Certifique-se de que as callbacks nunca habilitem IRQs, embora isso possa ser difícil de garantir devido à complexidade das interações entre `netif rx()` e as interrupções.
2. Desative as interrupções MUSB em `musb g giveback()` antes de chamar o callback e reative-as posteriormente para evitar que as interrupções MUSB sejam tratadas durante o callback.
3. Modifique o manipulador de interrupção para limpar o sinalizador RXPKTRDY se a fila de solicitações estiver vazia, embora essa abordagem possa desperdiçar tempo de CPU.
4. Esvazie o FIFO de recepção em vez de chamar