Capítulo 6. O verificador eBPF
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
Já mencionei o passo de verificação algumas vezes, por isso já sabes que quando carregas um programa eBPF no kernel, este processo de verificação assegura que o programa é seguro. Neste capítulo, vamos ver como o verificador funciona para atingir este objetivo.
A verificação envolve a verificação de todos os caminhos de execução possíveis através do programa e a garantia de que todas as instruções são seguras. O verificador também faz algumas atualizações no bytecode para prepará-lo para execução. Neste capítulo, mostrarei alguns exemplos de falhas de verificação, partindo de um exemplo que funciona e fazendo modificações que tornam esse código inválido para o verificador.
Nota
O código de exemplo para este capítulo encontra-se no diretório chapter6 do repositório em github.com/lizrice/learning-ebpf.
Este capítulo não tenta cobrir todas as verificações possíveis que o verificador faz. Pretende-se que seja uma visão geral, com exemplos ilustrativos que te ajudarão a lidar com erros de verificação que possas encontrar ao escrever o teu próprio código eBPF.
Uma coisa a ter em conta é que o verificador trabalha no bytecode do eBPF, não diretamente no código fonte. Esse bytecode depende da saída do compilador. Por causa de coisas como a otimização do compilador, uma alteração no código-fonte pode nem sempre resultar exatamente no que ...