Skip to content
  • Jeff Moyer's avatar
    aio: check for multiplication overflow in do_io_submit · 75e1c70f
    Jeff Moyer authored
    
    
    Tavis Ormandy pointed out that do_io_submit does not do proper bounds
    checking on the passed-in iocb array:
    
           if (unlikely(nr < 0))
                   return -EINVAL;
    
           if (unlikely(!access_ok(VERIFY_READ, iocbpp, (nr*sizeof(iocbpp)))))
                   return -EFAULT;                      ^^^^^^^^^^^^^^^^^^
    
    The attached patch checks for overflow, and if it is detected, the
    number of iocbs submitted is scaled down to a number that will fit in
    the long.  This is an ok thing to do, as sys_io_submit is documented as
    returning the number of iocbs submitted, so callers should handle a
    return value of less than the 'nr' argument passed in.
    
    Reported-by: default avatarTavis Ormandy <taviso@cmpxchg8b.com>
    Signed-off-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    75e1c70f