• Linus Torvalds's avatar
    do_sigaltstack: avoid copying 'stack_t' as a structure to user space · 0083fc2c
    Linus Torvalds authored
    Ulrich Drepper correctly points out that there is generally padding in
    the structure on 64-bit hosts, and that copying the structure from
    kernel to user space can leak information from the kernel stack in those
    padding bytes.
    
    Avoid the whole issue by just copying the three members one by one
    instead, which also means that the function also can avoid the need for
    a stack frame.  This also happens to match how we copy the new structure
    from user space, so it all even makes sense.
    
    [ The obvious solution of adding a memset() generates horrid code, gcc
      does really stupid things. ]
    Reported-by: default avatarUlrich Drepper <drepper@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0083fc2c
signal.c 67.5 KB