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.
Como observado na semana passada, ele pessoalmente limpou o código de cópia de memória x86 para 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.
No Linux 6.2 dias 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 a Intel LAM no Linux 6.4 como este 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 merge na sexta-feira:
Mesclar 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 esta parte para o lado get/put_user(), mas’access_ok()’fez a coisa ingênua de”máscara e verificação de intervalo”, que não apenas gera código desagradável, mas também acabou significando que __access_ok em si não fez um bom trabalho e, portanto, copy_from_user_nmi() não acertou a verificação.
-mova todo o código 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 pode funcionar em 32 bits também.
-corrigir um bug no mascaramento de endereços (isso não importa: neste caso, a correção foi apenas remover completamente o código com bugs).
-algumas limpezas triviais e comentários adicionados sobre as regras access_ok().
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.