)]}'
{
  "commit": "1bf66a30421ca772820f489d88c16d0c430d6a67",
  "tree": "b1ab223e6908d772bcad7f9bc3382c33ad5a4490",
  "parents": [
    "f7c6a7b5d59980b076abbf2ceeb8735591290285"
  ],
  "author": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Wed Apr 18 20:20:28 2007 -0700"
  },
  "committer": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Tue May 08 18:00:37 2007 -0700"
  },
  "message": "IB: Put rlimit accounting struct in struct ib_umem\n\nWhen memory pinned with ib_umem_get() is released, ib_umem_release()\nneeds to subtract the amount of memory being unpinned from\nmm-\u003elocked_vm.  However, ib_umem_release() may be called with\nmm-\u003emmap_sem already held for writing if the memory is being released\nas part of an munmap() call, so it is sometimes necessary to defer\nthis accounting into a workqueue.\n\nHowever, the work struct used to defer this accounting is dynamically\nallocated before it is queued, so there is the possibility of failing\nthat allocation.  If the allocation fails, then ib_umem_release has no\nchoice except to bail out and leave the process with a permanently\nelevated locked_vm.\n\nFix this by allocating the structure to defer accounting as part of\nthe original struct ib_umem, so there\u0027s no possibility of failing a\nlater allocation if creating the struct ib_umem and pinning memory\nsucceeds.\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "48e854cf416f4c273a0272d2972dc60fe9d78268",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/umem.c",
      "new_id": "f32ca5fbb26bcc56b02cd8c97bfa39bce1f3c63b",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/umem.c"
    },
    {
      "type": "modify",
      "old_id": "06307f7e43e0d0c9f8e5ca2458963279178e5dc4",
      "old_mode": 33188,
      "old_path": "include/rdma/ib_umem.h",
      "new_id": "b3a36f7d79e5ee76d68e3a54b7bb516a092f8bee",
      "new_mode": 33188,
      "new_path": "include/rdma/ib_umem.h"
    }
  ]
}
