sexta-feira, 29 de novembro de 2019
O problema de bug / Golang do Linux 5.2+ "Register Corruption" era um problema de armazenamento em cache de uma linha do kernel
Confira !!
Juntando-se há pouco mais de um dia, o pessoal do Google que trabalhava na Golang descobriu que muitos problemas do Go surgiam de um bug no kernel Linux 5.2 e mais recente, que foi elaborado para ser algum tipo de problema de corrupção de registro. Agora, esse problema está resolvido e, felizmente, é uma correção de kernel de uma linha e resume-se a ser um problema de cache.
O desenvolvedor do kernel Sebastian Andrzej Siewior descobriu o bug - desde que confirmado para abordar o caso de teste C e os problemas de Golang - desde o acesso em cache ao contexto fpu_fpregs_owner_ctx. O contexto estava sendo armazenado em cache, mas como o kernel adiou o carregamento dos registros da FPU ao retornar à terra do usuário, o fpu_fpregs_owner_ctx pode mudar durante a preempção e não deve ser armazenado em cache, de acordo com o patch desenvolvido para corrigir o problema.
Simplesmente passando fpu_fpregs_owner_ctx para this_cpu_read () em vez de this_cpu_read_stable () , onde, como este último permite que o valor seja armazenado em cache, em vez de fazer com que o GCC carregue a variável por CPU sempre que for acessado, corrige o problema do Kernel Linux 5.2+ criado pelos principais líderes do GCC9 aos problemas que atingem Golang e outros bugs.
Esta alteração de uma linha é confirmada para resolver o problema, portanto, esperamos que seja lançada na série estável do kernel em breve.
Fonte
Até a próxima !!
Marcadores: Linux, Android, Segurança
dev linux,
Kernel Linux,
Linux,
Linux Kernel,
Notícia
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário