linux/drivers
Bjorn Helgaas 80851ef2a5 [PATCH] /dev/mem: validate mmap requests
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: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-08 20:14:02 -08:00
..
acorn [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
acpi [PATCH] tpm: add bios measurement log 2006-01-08 20:13:55 -08:00
amba [ARM] Move AMBA bus code to drivers/amba/ 2006-01-07 14:54:15 +00:00
atm [PATCH] frv: fix uninitialised variable in atm nicstar driver 2006-01-08 20:13:38 -08:00
base [PATCH] memhotplug: register_memory should be global 2006-01-06 08:33:22 -08:00
block [PATCH] cciss: adds MSI and MSI-X support 2006-01-08 20:14:00 -08:00
bluetooth [PATCH] pcmcia: add some IDs for ide-cs and dtl1_cs 2006-01-06 00:31:07 +01:00
cdrom [BLOCK] add @uptodate to end_that_request_last() and @error to rq_end_io_fn() 2006-01-06 09:49:03 +01:00
char [PATCH] /dev/mem: validate mmap requests 2006-01-08 20:14:02 -08:00
connector [PATCH] drivers/connector/cn_proc.c typos 2006-01-08 20:13:58 -08:00
cpufreq [CPUFREQ] CPU frequency display in /proc/cpuinfo 2005-12-06 19:35:11 -08:00
crypto
dio [PATCH] drivers/dio: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
eisa [PATCH] drivers/eisa: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
fc4 [SPARC]: introduce a SPARC Kconfig symbol 2005-12-22 23:09:54 -08:00
firmware [PATCH] dell_rbu: NULL noise removal 2005-12-15 10:04:30 -08:00
hwmon [PATCH] hwmon: it87 use u8 for vrm 2006-01-05 22:16:26 -08:00
i2c [PATCH] IRQ type flags 2006-01-08 20:13:46 -08:00
ide [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
ieee1394 [PATCH] don't freeze firewire on suspend. 2006-01-06 08:33:43 -08:00
infiniband [PATCH] fix more missing includes 2006-01-08 20:13:45 -08:00
input [PATCH] IRQ type flags 2006-01-08 20:13:46 -08:00
isdn [PATCH] drivers/isdn/: "extern inline" -> "static inline" 2006-01-08 20:13:48 -08:00
macintosh [PATCH] fix more missing includes 2006-01-08 20:13:45 -08:00
mca
md [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
media [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
message [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
mfd [PATCH] drivers/mfd: header included twice 2006-01-08 20:13:59 -08:00
misc Input: ibmasm - convert to dynamic input_dev allocation 2006-01-07 11:35:05 -05:00
mmc [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
mtd [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
net [PATCH] IRQ type flags 2006-01-08 20:13:46 -08:00
nubus
oprofile [PATCH] oprofile: Use vmalloc_node() in alloc_cpu_buffers() 2006-01-08 20:13:56 -08:00
parisc [PARISC] Make superio.c initialize before any driver needs it 2005-11-17 16:44:57 -05:00
parport [PATCH] frv: suppress configuration of certain features for FRV 2006-01-08 20:13:36 -08:00
pci [PATCH] fix more missing includes 2006-01-08 20:13:45 -08:00
pcmcia Merge with Linus' kernel. 2006-01-07 14:40:05 +00:00
pnp [PATCH] x86: Fixed pnp bios limits 2006-01-06 08:33:35 -08:00
rapidio [PATCH] fix more missing includes 2006-01-08 20:13:45 -08:00
s390 [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
sbus [PATCH] sbus/char/uctrl: missing prototypes and NULL noise removal 2005-12-15 10:01:28 -08:00
scsi [PATCH] Add block_device_operations.getgeo block device method 2006-01-08 20:13:54 -08:00
serial Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-01-07 10:45:22 -08:00
sh [PATCH] superhyway: multiple block support and VCR rework 2005-11-07 07:53:28 -08:00
sn
tc [MIPS] zs.c: Resurrect the deceased zs.c for now. 2005-11-17 16:23:39 +00:00
telephony [PATCH] pcmcia: unify attach, EVENT_CARD_INSERTION handlers into one probe callback 2006-01-06 00:03:24 +01:00
usb [PATCH] shrink dentry struct 2006-01-08 20:13:58 -08:00
video [PATCH] vgacon: Workaround for resize bug in some chipsets 2006-01-08 20:13:51 -08:00
w1 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6 2006-01-04 18:44:12 -08:00
zorro
Kconfig
Makefile [ARM] Move AMBA bus code to drivers/amba/ 2006-01-07 14:54:15 +00:00