[GTER] Correção / Atualização

Mauro Carvalho Chehab mauro_chehab at yahoo.com.br
Wed Jun 16 01:20:08 -03 2004


Christopher Giese (SkyWarrior) wrote:

>Saudações.... 
>
>para quem roda algum server linux em produção
>
>ler urgente 
>http://www.linuxreviews.org/news/2004-06-11_kernel_crash/index.html
>
>e boa sorte
>  
>
    Apesar de ter sido apontada a falha como grave, para sua exploração 
exige permissão para acesso à máquina (terminal, telnet ou ssh). Se 
explorada, os logs acesso provavelmente apontarão os responsáveis.
    Trata-se de uma "race condition", onde são geradas excessões de 
ponto flutuante em alta velocidade, dentro de um tratamento de sinal, 
saindo do código imediatamente após gerada a excessão - algo bastante 
incomum em um código real.
    De qualquer forma, já existe solução (bastante simples por sinal), 
que consiste na limpeza das excessões de ponto flutuante após o retorno 
ao kernel das rotinas de final de tratamento de excessão.
    Em todos os kernels afetados, a solução é, dentro do código i387.h 
(nas arquiteturas intel e AMD64), substituir, na rotina clear_fpu (ou 
__clear_fpu),  linha com "fwait" por "fnclex; fwait", conforme o patch 
abaixo (para i386, kernel 2.6):

diff -Nru a/include/asm-i386/i387.h b/include/asm-i386/i387.h

--- linux-2.6/include/asm-i386/i387.h   2004-05-06 12:26:10 -07:00
+++ linux-2.6/include/asm-i386/i387.h   2004-06-12 19:12:23 -07:00
@@ -51,7 +51,7 @@
 #define __clear_fpu( tsk )                                     \
 do {                                                           \
        if ((tsk)->thread_info->status & TS_USEDFPU) {          \
-               asm volatile("fwait");                          \
+               asm volatile("fnclex ; fwait");                         \
                (tsk)->thread_info->status &= ~TS_USEDFPU;      \
                stts();                                         \
        }                                                       \

    No site da linuxrevews existe o código "completo" do patch (que 
altera em âmbas as arquiteturas afetadas).

    Apliquei a solução com sucesso em um kernel 2.6.6, sem que fossem 
notados efeitos colaterais.



More information about the gter mailing list