FERRAMENTAS LINUX: Obtida por Linus Torvalds a codificação para melhorar o User-Mode Stack Expansion

segunda-feira, 3 de julho de 2023

Obtida por Linus Torvalds a codificação para melhorar o User-Mode Stack Expansion

 


O criador do Linux, Linus Torvalds, não escreve tanto código de kernel atual como costumava fazer. Atualmente, ele está frequentemente ocupado supervisionando a comunidade de desenvolvimento do kernel upstream, revisando o código, gerenciando lançamentos e participando das discussões da lista de discussão. De vez em quando, porém, ele fica para baixo e sujo com alguns hackers de kernel de baixo nível, assim como ele fez agora para o Kernel Linux 6.5 com a melhoria do código de expansão de pilha do modo de usuário.

Apenas 500 linhas de retrabalho de código são para melhorar os bits de expansão de pilha do modo de usuário. Ele explicou na fusão:

Isso modifica nosso código de expansão de pilha do modo de usuário para sempre usar o mmap_lock para gravação antes de modificar o layout da VM.

Na verdade, é algo que tecnicamente sempre deveríamos ter feito, mas como não precisávamos estritamente disso, estávamos sendo preguiçosos ("oportunista" soa muito melhor, não é?) estenderia a pilha vma (vma stack) no local sem fazer o bloqueio adequado.

E funcionou bem. Nós só precisávamos mudar vm_start (ou, no caso de pilhas crescentes, vm_end) e junto com algum bloqueio ad-hoc especial usando o bloqueio anon_vma e o mm->page_table_lock, tudo foi bastante direto.

Ou seja, estava tudo bem até Ruihan Li apontar que agora que o layout vma usa o código maple tree, nós *realmente* não apenas mudamos vm_start e vm_end mais, e o bloqueio realmente está quebrado. Ops.

Na verdade, não é tão horrível consertar isso de uma vez por todas e fazer o bloqueio adequado, mas é um pouco doloroso. Temos basicamente três casos diferentes de expansão de pilha (user stack expansion) e todos eles funcionam de maneira um pouco diferente.

Para o Kernel Linux 6.5, isso agora deve ser resolvido graças a Linus Torvalds assumindo ele mesmo o desafio de codificação. Mais detalhes na mesclagem .

O criador do Linux, Linus Torvalds, não escreve tanto código de kernel como costumava, pois está ocupado supervisionando a comunidade de desenvolvimento do kernel upstream, revisando código, gerenciando lançamentos e participando de discussões na lista de discussão. No entanto, ocasionalmente, ele se envolve diretamente com alguns hackers de baixo nível no desenvolvimento do kernel, como fez recentemente para o Kernel Linux 6.5, ao melhorar o código de expansão de pilha do modo de usuário.

Foram feitas cerca de 500 linhas de retrabalho de código para melhorar os aspectos de expansão de pilha do modo de usuário. Linus explicou na mesclagem (merge):

"Essa alteração modifica nosso código de expansão de pilha do modo de usuário para sempre usar o mmap_lock para gravação antes de modificar o layout da VM.

Na verdade, tecnicamente, sempre deveríamos ter feito isso, mas como não era estritamente necessário, estávamos sendo preguiçosos (ou 'oportunista' soa melhor, não é mesmo?) e estendíamos o vma da pilha no local sem fazer o bloqueio adequado.

E funcionava bem. Só precisávamos alterar o vm_start (ou, no caso de pilhas crescentes, o vm_end) e, juntamente com algum bloqueio ad-hoc especial usando o bloqueio anon_vma e o mm->page_table_lock, tudo era bastante direto.

No entanto, Ruihan Li apontou que, agora que o layout do vma usa o código maple tree, na verdade, não estamos apenas alterando o vm_start e vm_end, e o bloqueio está realmente quebrado. Ops.

Na verdade, não é tão difícil corrigir isso de uma vez por todas e fazer o bloqueio adequado, mas é um pouco doloroso. Temos basicamente três casos diferentes de expansão de pilha (user stack expansion), e todos eles funcionam de maneiras um pouco diferentes."

Portanto, para o Kernel Linux 6.5, isso deverá ser resolvido graças à intervenção direta de Linus Torvalds no desafio de codificação. Mais detalhes podem ser encontrados na mesclagem.




Fonte

Até a próxima !!


Nenhum comentário:

Postar um comentário