• Anton Blanchard's avatar
    powerpc: Never handle VSX alignment exceptions from kernel · 5c2e0823
    Anton Blanchard authored
    The VSX alignment handler needs to write out the existing VSX
    state to memory before operating on it (flush_vsx_to_thread()).
    If we take a VSX alignment exception in the kernel bad things
    will happen. It looks like we could write the kernel state out
    to the user process, or we could handle the kernel exception
    using data from the user process (depending if MSR_VSX is set
    or not).
    
    Worse still, if the code to read or write the VSX state causes an
    alignment exception, we will recurse forever. I ended up with
    hundreds of megabytes of kernel stack to look through as a result.
    
    Floating point and SPE code have similar issues but already include
    a user check. Add the same check to emulate_vsx().
    
    With this patch any unaligned VSX loads and stores in the kernel
    will show up as a clear oops rather than silent corruption of
    kernel or userspace VSX state, or worse, corruption of a potentially
    unlimited amount of kernel memory.
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    5c2e0823
align.c 24.8 KB