CVE-2026-64447 in Linux
Sumário
de VulDB • 25/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
staging: media: ipu7: corrige double-free e use-after-free em caminhos de erro
Tanto em `ipu7_isys_init()` quanto em `ipu7_psys_init()`, `pdata` é alocado e depois passado para `ipu7_bus_initialize_device()`, que o armazena em `adev->pdata`. A função `ipu7_bus_release()` libera `adev->pdata` quando a contagem de referência do dispositivo cai para zero.
Dois caminhos de erro chamam incorretamente `kfree(pdata)` após o teardown (descarte) do dispositivo já ter liberado esse recurso:
1. Quando `ipu7_mmu_init()` falha: `put_device()` é chamado, o que reduz a contagem de referência para zero e aciona `ipu7_bus_release()` -> `kfree(pdata)`. O subsequente `kfree(pdata)` constitui um double-free (liberação dupla).
2. Quando `ipu7_bus_add_device()` falha: ele chama internamente `auxiliary_device_uninit()`, que por sua vez invoca `put_device()` -> `ipu7_bus_release()` -> `kfree(pdata)`. O subsequente `kfree(pdata)` é novamente um double-free (liberação dupla).
Observe que o `kfree(pdata)` quando a própria função `ipu7_bus_initialize_device()` falha está correto, pois nesse caso `auxiliary_device_init()` falhou e a função de liberação nunca foi configurada, portanto `pdata` deve ser liberado manualmente.
Além disso, o código de erro não era salvo antes de chamar `put_device()`, fazendo com que `ERR_CAST()` desreferenciasse o ponteiro `adev` já liberado ao construir o valor de retorno. Corrija isso salvando o erro retornado por `dev_err_probe()` antes de `put_device()` e retornando `ERR_PTR()` em vez disso.
Remova as chamadas redundantes a `kfree(pdata)` e corrija o use-after-free nos valores de retorno dos dois caminhos de erro afetados.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.