- O autor estava lidando com um problema de depuração em um projeto que incluía
gdbserver e aplicações multithread executadas na arquitetura PowerPC32.
- O problema era que a conexão com o
gdbserver era interrompida e já não era mais possível controlar a sessão de depuração.
- Após pesquisa e investigação, o autor encontrou uma thread de e-mails que apontava para o commit exato que causou esse problema.
- O autor passou 3 a 4 dias lendo descrições de commits relacionadas à arquitetura PowerPC e às mudanças em torno de
task_struct, tentando descobrir se esse problema havia sido resolvido em versões posteriores do kernel.
- O autor usou várias ferramentas e técnicas, como mover a thread
thread_struct, inspecionar o layout de task_struct com pahole e usar ftrace para descobrir quando as threads do processo depurado eram escalonadas.
- O autor descobriu que o problema poderia ser de corrupção de memória, já que a thread travada era escalonada apenas uma vez, ao contrário das outras.
- O autor implementou um módulo do kernel Linux para usar breakpoints de hardware no Linux e colocou um breakpoint de hardware no campo
__state para descobrir quem estava escrevendo nele.
- O autor descobriu que o problema era um buffer overflow em
ptrace_put_fpr (usado pela API POKEUSER), que sobrescrevia campos críticos de task_struct, como __state.
- Como esse problema poderia causar uma vulnerabilidade de segurança, o autor enviou um patch para a equipe de segurança do kernel Linux (
security@kernel.org) para corrigi-lo.
- Em vez de aceitar o patch do autor, o mantenedor de PowerPC, Michael Ellerman, implementou sua própria versão da correção.
- O autor sentiu que seu trabalho não foi devidamente reconhecido, ficou com a sensação de ter sido desvalorizado e irritado. Ele recebeu apenas a tag
Reported-by.
- A primeira contribuição do autor para o kernel foi uma experiência cheia de frustração e desânimo, marcada por conversas com pessoas que aparentemente não acham importante que os outros recebam o devido reconhecimento pelo próprio trabalho.
1 comentários
Comentários do Hacker News