• Linus Torvalds's avatar
    uio: we cannot mmap unaligned page contents · b6550287
    Linus Torvalds authored
    In commit 7314e613 ("Fix a few incorrectly checked
    [io_]remap_pfn_range() calls") the uio driver started more properly
    checking the passed-in user mapping arguments against the size of the
    actual uio driver data.
    
    That in turn exposed that some driver authors apparently didn't realize
    that mmap can only work on a page granularity, and had tried to use it
    with smaller mappings, with the new size check catching that out.
    
    So since it's not just the user mmap() arguments that can be confused,
    make the uio mmap code also verify that the uio driver has the memory
    allocated at page boundaries in order for mmap to work.  If the device
    memory isn't properly aligned, we return
    
      [ENODEV]
        The fildes argument refers to a file whose type is not supported by mmap().
    
    as per the open group documentation on mmap.
    Reported-by: default avatarHolger Brunck <holger.brunck@keymile.com>
    Acked-by: default avatarGreg KH <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b6550287
uio.c 19.5 KB