• Bjorn Helgaas's avatar
    [PATCH] /dev/mem: validate mmap requests · 80851ef2
    Bjorn Helgaas authored
    Add a hook so architectures can validate /dev/mem mmap requests.
    
    This is analogous to validation we already perform in the read/write
    paths.
    
    The identity mapping scheme used on ia64 requires that each 16MB or
    64MB granule be accessed with exactly one attribute (write-back or
    uncacheable).  This avoids "attribute aliasing", which can cause a
    machine check.
    
    Sample problem scenario:
      - Machine supports VGA, so it has uncacheable (UC) MMIO at 640K-768K
      - efi_memmap_init() discards any write-back (WB) memory in the first granule
      - Application (e.g., "hwinfo") mmaps /dev/mem, offset 0
      - hwinfo receives UC mapping (the default, since memmap says "no WB here")
      - Machine check abort (on chipsets that don't support UC access to WB
        memory, e.g., sx1000)
    
    In the scenario above, the only choices are
      - Use WB for hwinfo mmap.  Can't do this because it causes attribute
        aliasing with the UC mapping for the VGA MMIO space.
      - Use UC for hwinfo mmap.  Can't do this because the chipset may not
        support UC for that region.
      - Disallow the hwinfo mmap with -EINVAL.  That's what this patch does.
    Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
    Cc: Hugh Dickins <hugh@veritas.com>
    Cc: "Luck, Tony" <tony.luck@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    80851ef2
efi.c 29.6 KB