)]}'
{
  "commit": "f8af095d3a4c8300b4e63ee2c4bb198b565d9431",
  "tree": "8ca5c266790eb543706fd202d2d2f731466ad541",
  "parents": [
    "e72c8585e09f127a69a1608bb5ccd1e3fc0dd41e"
  ],
  "author": {
    "name": "Dave Jones",
    "email": "davej@redhat.com",
    "time": "Fri Jan 06 00:12:10 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Jan 06 08:33:38 2006 -0800"
  },
  "message": "[PATCH] x86: change_page_attr() fix\n\nThe \u0027make rodata read-only\u0027 patch in -mm exposes a latent bug in the 32-bit\nchange_page_attr() function, which causes certain CPUs (Those with NX\nbasically) to reboot instantly after pages are marked read-only.\n\nThe same bug got fixed a while back on x86-64, but never got propagated to\ni386.\n\nStuart Hayes from Dell also picked up on this last June, but it never got\nfixed, as the only thing affected by it aparently was the nvidia driver.\n\nBlatantly stealing description from his post..\n\n\"It doesn\u0027t appear to be fixed (in the i386 arch).  The\n change_page_attr()/split_large_page() code will still still set all the\n 4K PTEs to PAGE_KERNEL (setting the _PAGE_NX bit) when a large page\n needs to be split.\n\n This wouldn\u0027t be a problem for the bulk of the kernel memory, but there\n are pages in the lower 4MB of memory that\u0027s free, and are part of large\n executable pages that also contain kernel code.  If change_page_attr()\n is called on these, it will set the _PAGE_NX bit on the whole 2MB region\n that was covered by the large page, causing a large chunk of kernel code\n to be non-executable.\"\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: \u003cStuart_Hayes@Dell.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": "f600fc244f0284e67261e394de644705a67eb744",
      "old_mode": 33188,
      "old_path": "arch/i386/mm/pageattr.c",
      "new_id": "c30a16df6440d7c82af7df6c434295e07204cc54",
      "new_mode": 33188,
      "new_path": "arch/i386/mm/pageattr.c"
    }
  ]
}
