• Eric W. Biederman's avatar
    signal/unicore32: Use FPE_FLTUNK instead of 0 in ucf64_raise_sigfpe · d8f7f322
    Eric W. Biederman authored
    The si_code of 0 (aka SI_USER) has fields si_pid and si_uid not
    si_addr so it so only by luck would the appropriate fields by copied
    to userspace by copy_siginfo_to_user.
    
    This is just broken and wrong.
    
    Make it obvious what is happening by moving the si_code from a
    parameter of the one call to ucf64_raise_sigfpe to a constant value
    that info.si_code gets set to.
    
    Explicitly set the si_code to FPE_FLTUNK the newly reserved floating
    point si_code for an unknown floating point exception.
    
    It looks like there is a fair chance that this is a code path that has
    never been used in real life on unicore32.  The bad si_code and the
    print statement that calls it an unhandled exception.  So I really
    don't expect anyone will mind if this just gets fixed.
    
    In similar situations on more popular architectures the conclusion was
    just fix it.
    
    Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Fixes: d9bc1579 ("unicore32 additional architecture files: float point handling")
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    d8f7f322
fpu-ucf64.c 2.89 KB