Embora hoje em dia Linus Torvalds esteja lidando principalmente com o agrupamento de novos códigos no kernel do Linux e sendo um guardião do portão, em vez de desenvolver ativamente o novo código do kernel, para o Linux 6.4 em desenvolvimento, ele se viu fazendo um pouco de codificação. Assim, Linus Torvalds limpa o código Intel LAM no Linux 6.4.
Conforme observado na semana passada, ele pessoalmente limpou o código de cópia de memória x86 para o Linux 6.4. Esta semana, ele fundiu mais de seu próprio código, pois teve problemas com parte do código mesclado pelos engenheiros da Intel como parte da habilitação do Linear Address Masking .
Durante os dias do Linux 6.2 no final do ano passado, Linus rejeitou o código Intel LAM na época por vários problemas técnicos. A Intel então o retrabalhou para o Linux 6.4.
Desta vez, Linus fundiu o Intel LAM no Linux 6.4 como esse novo recurso de CPU para permitir que o espaço do usuário armazene metadados em alguns bits de ponteiros sem mascará-los antes do uso. O Intel LAM – como o Arm TBI – pode ser útil para máquinas virtuais, criação de perfil/desinfetantes/marcação e outros aplicativos. Mas desta vez havia um código abaixo do ideal que ele pessoalmente levou para enfeitar.
Linus escreveu em uma nova mesclagem na sexta-feira:
Mescle minha ramificação de atualizações x86 uaccess.
As atualizações do LAM (“Linear Address Masking”) nesta versão me deixaram insatisfeito com a forma como “access_ok()” foi feito e, na verdade, ele também continha alguns pequenos bugs. Esta é a minha limpeza do código:
- use o bit de sinal do ponteiro __user em vez de mascarar o endereço e compará-lo com o intervalo TASK_SIZE.
Já fizemos essa parte para o lado get/put_user(), mas ‘access_ok()’ fez a coisa ingênua de “mask and range check”, que não apenas gera código desagradável, mas também acabou significando que o próprio __access_ok não fez um bom trabalho e, portanto, copy_from_user_nmi () não acertou a verificação.
- mova todo o código que é de 64 bits apenas para a versão de 64 bits do arquivo de cabeçalho, para não poluir desnecessariamente o código x86 compartilhado e fazer parecer que o LAM também pode funcionar em 32 bits.
- corrigir um bug no mascaramento de endereço (isso acaba não importando: neste caso, a correção foi apenas remover o código com bugs por completo).
- algumas limpezas triviais e comentários adicionados sobre as regras access_ok().
Linus Torvalds limpa o código Intel LAM no Linux 6.4
Portanto, o Intel LAM continua pronto para o Linux 6.4 e Torvalds retrabalhou cerca de cem linhas de código para limpá-lo.
Agora, o espaço do usuário do Linux se prepara para usar o Intel LAM.