• Vineet Gupta's avatar
    ARC: Fix 32-bit wrap around in access_ok() · 0752adfd
    Vineet Gupta authored
    Anton reported
    
     | LTP tests syscalls/process_vm_readv01 and process_vm_writev01 fail
     | similarly in one testcase test_iov_invalid -> lvec->iov_base.
     | Testcase expects errno EFAULT and return code -1,
     | but it gets return code 1 and ERRNO is 0 what means success.
    
    Essentially test case was passing a pointer of -1 which access_ok()
    was not catching. It was doing [@addr + @sz <= TASK_SIZE] which would
    pass for @addr == -1
    
    Fixed that by rewriting as [@addr <= TASK_SIZE - @sz]
    Reported-by: default avatarAnton Kolesov <Anton.Kolesov@synopsys.com>
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    0752adfd
uaccess.h 18.9 KB