)]}'
{
  "commit": "1e9877902dc7e11d2be038371c6fbf2dfcd469d7",
  "tree": "715a45eca4c79168f0351421a7584c95212331f8",
  "parents": [
    "1fe3f29e4a908461be16a9388e73837157cc7942"
  ],
  "author": {
    "name": "Dave Hansen",
    "email": "dave.hansen@linux.intel.com",
    "time": "Fri Feb 12 13:01:54 2016 -0800"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Tue Feb 16 10:04:09 2016 +0100"
  },
  "message": "mm/gup: Introduce get_user_pages_remote()\n\nFor protection keys, we need to understand whether protections\nshould be enforced in software or not.  In general, we enforce\nprotections when working on our own task, but not when on others.\nWe call these \"current\" and \"remote\" operations.\n\nThis patch introduces a new get_user_pages() variant:\n\n        get_user_pages_remote()\n\nWhich is a replacement for when get_user_pages() is called on\nnon-current tsk/mm.\n\nWe also introduce a new gup flag: FOLL_REMOTE which can be used\nfor the \"__\" gup variants to get this new behavior.\n\nThe uprobes is_trap_at_addr() location holds mmap_sem and\ncalls get_user_pages(current-\u003emm) on an instruction address.  This\nmakes it a pretty unique gup caller.  Being an instruction access\nand also really originating from the kernel (vs. the app), I opted\nto consider this a \u0027remote\u0027 access where protection keys will not\nbe enforced.\n\nWithout protection keys, this patch should not change any behavior.\n\nSigned-off-by: Dave Hansen \u003cdave.hansen@linux.intel.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: Borislav Petkov \u003cbp@alien8.de\u003e\nCc: Brian Gerst \u003cbrgerst@gmail.com\u003e\nCc: Dave Hansen \u003cdave@sr71.net\u003e\nCc: Denys Vlasenko \u003cdvlasenk@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: jack@suse.cz\nCc: linux-mm@kvack.org\nLink: http://lkml.kernel.org/r/20160212210154.3F0E51EA@viggo.jf.intel.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4b519e4309b28edb1a1a9f56c40fb00153c87036",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/etnaviv/etnaviv_gem.c",
      "new_id": "97d4457be8d260dcac159afff7758b4cbfa9551d",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/etnaviv/etnaviv_gem.c"
    },
    {
      "type": "modify",
      "old_id": "59e45b3a69379a0e892fbd85d7a17ba3f85913eb",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/i915/i915_gem_userptr.c",
      "new_id": "90dbf8121210934d16338bfe48466c1e4aacdaae",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/i915/i915_gem_userptr.c"
    },
    {
      "type": "modify",
      "old_id": "e69bf266049d0117830577167c2987c83cd8ac62",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/umem_odp.c",
      "new_id": "75077a018675e1aa77c7955878250ad521c9d25d",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/umem_odp.c"
    },
    {
      "type": "modify",
      "old_id": "dcd4ac7d3f1e77b45fde8a84585150a4862b84d9",
      "old_mode": 33188,
      "old_path": "fs/exec.c",
      "new_id": "d885b98b6a000546911f1fa28da47e7bb45cd977",
      "new_mode": 33188,
      "new_path": "fs/exec.c"
    },
    {
      "type": "modify",
      "old_id": "b1d4b8c7f7cdcddb4b2513f11bc4231c546baf25",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "faf3b709eeadda3cc23dc585a8139c089fa52952",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "0167679182c08dae79cf54e0b3830fc626866ee2",
      "old_mode": 33188,
      "old_path": "kernel/events/uprobes.c",
      "new_id": "8eef5f55d3f0ede648b5f4170a28886f27224935",
      "new_mode": 33188,
      "new_path": "kernel/events/uprobes.c"
    },
    {
      "type": "modify",
      "old_id": "7bf19ffa21999c13fa1f24dc01a6bda77217688c",
      "old_mode": 33188,
      "old_path": "mm/gup.c",
      "new_id": "36ca850936c9ff3515db2fd7b8b1b1348a490037",
      "new_mode": 33188,
      "new_path": "mm/gup.c"
    },
    {
      "type": "modify",
      "old_id": "38090ca37a08b256ae83633e8709953f842fcbfe",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "8bfbad0cca8ceb77fa206308b709affc4a4c6e25",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    },
    {
      "type": "modify",
      "old_id": "5d453e58ddbf7504e78869b4de406aa360fc2a01",
      "old_mode": 33188,
      "old_path": "mm/process_vm_access.c",
      "new_id": "07514d41ebcc1623b789fc93e09794058ecdc6ca",
      "new_mode": 33188,
      "new_path": "mm/process_vm_access.c"
    },
    {
      "type": "modify",
      "old_id": "38651454ed08a5d0ae7479dda87a41bead18c7a1",
      "old_mode": 33188,
      "old_path": "security/tomoyo/domain.c",
      "new_id": "ade7c6cad172a13833a3b41799a142ebf4cb4f46",
      "new_mode": 33188,
      "new_path": "security/tomoyo/domain.c"
    },
    {
      "type": "modify",
      "old_id": "35315992245600a418874fd371e641ef336a0a22",
      "old_mode": 33188,
      "old_path": "virt/kvm/async_pf.c",
      "new_id": "d604e87a510af7b4ec6fa43276cf05d594b8e072",
      "new_mode": 33188,
      "new_path": "virt/kvm/async_pf.c"
    }
  ]
}
