• Chen Gang's avatar
    arch: tile: kernel: signal.c: Use __copy_from/to_user() instead of __get/put_user() · 01f7ae05
    Chen Gang authored
    setup/restore_sigcontext() want to copy all related registers between
    user and kernel. So use block copy instead of each registers copy. Then
    can let code simple and clearer (which can avoid compiler's warning):
    
    The related warning (with allmodconfig under tile):
    
        CC      arch/tile/kernel/signal.o
      In file included from include/linux/poll.h:11:0,
                       from include/linux/ring_buffer.h:7,
                       from include/linux/ftrace_event.h:5,
                       from include/trace/syscall.h:6,
                       from include/linux/syscalls.h:81,
                       from arch/tile/kernel/signal.c:30:
      arch/tile/kernel/signal.c: In function 'setup_sigcontext':
      arch/tile/kernel/signal.c:116:31: warning: iteration 53u invokes undefined behavior [-Waggressive-loop-optimizations]
         err |= __put_user(regs->regs[i], &sc->gregs[i]);
                                     ^
      ./arch/tile/include/asm/uaccess.h:236:26: note: in definition of macro '__put_user_asm'
              : "r" (ptr), "r" (x), "i" (-EFAULT))
                                ^
      ./arch/tile/include/asm/uaccess.h:297:10: note: in expansion of macro '__put_user_8'
        case 8: __put_user_8(x, ptr, __ret); break;   \
                ^
      arch/tile/kernel/signal.c:116:10: note: in expansion of macro '__put_user'
         err |= __put_user(regs->regs[i], &sc->gregs[i]);
                ^
      arch/tile/kernel/signal.c:115:2: note: containing loop
        for (i = 0; i < sizeof(struct pt_regs)/sizeof(long); ++i)
        ^
    Signed-off-by: default avatarChen Gang <gang.chen.5i5j@gmail.com>
    Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
    01f7ae05
signal.c 10.7 KB