• Paul Mackerras's avatar
    powerpc: Fix incorrect might_sleep in __get_user/__put_user on kernel addresses · 6bfd93c3
    Paul Mackerras authored
    We have a case where __get_user and __put_user can validly be used
    on kernel addresses in interrupt context - namely, the alignment
    exception handler, as our get/put_unaligned just do a single access
    and rely on the alignment exception handler to fix things up in the
    rare cases where the cpu can't handle it in hardware.  Thus we can
    get alignment exceptions in the network stack at interrupt level.
    The alignment exception handler does a __get_user to read the
    instruction and blows up in might_sleep().
    
    Since a __get_user on a kernel address won't actually ever sleep,
    this makes the might_sleep conditional on the address being less
    than PAGE_OFFSET.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    6bfd93c3
uaccess.h 13.3 KB