• Eric W. Biederman's avatar
    signal: Reduce copy_siginfo_to_user to just copy_to_user · c999b933
    Eric W. Biederman authored
    Now that every instance of struct siginfo is now initialized it is no
    longer necessary to copy struct siginfo piece by piece to userspace
    but instead the entire structure can be copied.
    
    As well as making the code simpler and more efficient this means that
    copy_sinfo_to_user no longer cares which union member of struct
    siginfo is in use.
    
    In practice this means that all 32bit architectures that define
    FPE_FIXME will handle properly send SI_USER when kill(SIGFPE) is sent.
    While still performing their historic architectural brokenness when 0
    is used a floating pointer signal.  This matches the current behavior
    of 64bit architectures that define FPE_FIXME who get lucky and an
    overloaded SI_USER has continuted to work through copy_siginfo_to_user
    because the 8 byte si_addr occupies the same bytes in struct siginfo
    as the 4 byte si_pid and the 4 byte si_uid.
    
    Problematic architectures still need to fix their ABI so that signalfd
    and 32bit compat code will work properly.
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    c999b933
signal.c 101 KB