)]}'
{
  "commit": "80851ef2a5a404e6054211ca96ecd5ac4b06d297",
  "tree": "dcacd2a475adc28c540b6012b58f1af9783778c1",
  "parents": [
    "44ac8413901167589226abf824d994aa57e4fd28"
  ],
  "author": {
    "name": "Bjorn Helgaas",
    "email": "bjorn.helgaas@hp.com",
    "time": "Sun Jan 08 01:04:13 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sun Jan 08 20:14:02 2006 -0800"
  },
  "message": "[PATCH] /dev/mem: validate mmap requests\n\nAdd a hook so architectures can validate /dev/mem mmap requests.\n\nThis is analogous to validation we already perform in the read/write\npaths.\n\nThe identity mapping scheme used on ia64 requires that each 16MB or\n64MB granule be accessed with exactly one attribute (write-back or\nuncacheable).  This avoids \"attribute aliasing\", which can cause a\nmachine check.\n\nSample problem scenario:\n  - Machine supports VGA, so it has uncacheable (UC) MMIO at 640K-768K\n  - efi_memmap_init() discards any write-back (WB) memory in the first granule\n  - Application (e.g., \"hwinfo\") mmaps /dev/mem, offset 0\n  - hwinfo receives UC mapping (the default, since memmap says \"no WB here\")\n  - Machine check abort (on chipsets that don\u0027t support UC access to WB\n    memory, e.g., sx1000)\n\nIn the scenario above, the only choices are\n  - Use WB for hwinfo mmap.  Can\u0027t do this because it causes attribute\n    aliasing with the UC mapping for the VGA MMIO space.\n  - Use UC for hwinfo mmap.  Can\u0027t do this because the chipset may not\n    support UC for that region.\n  - Disallow the hwinfo mmap with -EINVAL.  That\u0027s what this patch does.\n\nSigned-off-by: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a3aa45cbcfa03e460dab2d8696259126688407fb",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/efi.c",
      "new_id": "c485a3b32ba8ba4a31ce380635441ab4e3ff1729",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/efi.c"
    },
    {
      "type": "modify",
      "old_id": "ce3ff8641191524c4deebfc0b03917e917c34445",
      "old_mode": 33188,
      "old_path": "drivers/char/mem.c",
      "new_id": "5b2d18035073311e0bf7b150d3cca0a75f7b48b7",
      "new_mode": 33188,
      "new_path": "drivers/char/mem.c"
    },
    {
      "type": "modify",
      "old_id": "cf772a67f858763719a615f03ea8b8d117501973",
      "old_mode": 33188,
      "old_path": "include/asm-ia64/io.h",
      "new_id": "b64fdb9854941cfcd816f003b99d3e66235dc34d",
      "new_mode": 33188,
      "new_path": "include/asm-ia64/io.h"
    }
  ]
}
