)]}'
{
  "commit": "ceb73c12047b8d543570b23353e7848eb7c540a1",
  "tree": "a637dc88d418be1b705a66bea375af955bd14e22",
  "parents": [
    "f5c66d70ac2a9016a7ad481bd37e39afd7dd7369"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Tue Jan 25 16:34:28 2011 +0000"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Jan 26 08:58:20 2011 +1000"
  },
  "message": "KEYS: Fix __key_link_end() quota fixup on error\n\nFix __key_link_end()\u0027s attempt to fix up the quota if an error occurs.\n\nThere are two erroneous cases: Firstly, we always decrease the quota if\nthe preallocated replacement keyring needs cleaning up, irrespective of\nwhether or not we should (we may have replaced a pointer rather than\nadding another pointer).\n\nSecondly, we never clean up the quota if we added a pointer without the\nkeyring storage being extended (we allocate multiple pointers at a time,\neven if we\u0027re not going to use them all immediately).\n\nWe handle this by setting the bottom bit of the preallocation pointer in\n__key_link_begin() to indicate that the quota needs fixing up, which is\nthen passed to __key_link() (which clears the whole thing) and\n__key_link_end().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "edfa50dbd6f575c2b5018aac543c0117208b040e",
      "old_mode": 33188,
      "old_path": "security/keys/internal.h",
      "new_id": "a52aa7c88b41b48170791abd5eb06c839910dc84",
      "new_mode": 33188,
      "new_path": "security/keys/internal.h"
    },
    {
      "type": "modify",
      "old_id": "84d4eb568b087873d918dafa905b30576e850a73",
      "old_mode": 33188,
      "old_path": "security/keys/key.c",
      "new_id": "1c2d43dc5107ecbe66bb8a5077876147ab785719",
      "new_mode": 33188,
      "new_path": "security/keys/key.c"
    },
    {
      "type": "modify",
      "old_id": "92024ed12e0a22157bca33d69a465b5bede0d7b2",
      "old_mode": 33188,
      "old_path": "security/keys/keyring.c",
      "new_id": "5620f084dede47a8887977fe10554b2f32f73b4e",
      "new_mode": 33188,
      "new_path": "security/keys/keyring.c"
    },
    {
      "type": "modify",
      "old_id": "9a7fb3914b27536a5ed047209659af920db310a3",
      "old_mode": 33188,
      "old_path": "security/keys/request_key.c",
      "new_id": "a3dc0d460def505eb2dc053866f0cc457d448c9f",
      "new_mode": 33188,
      "new_path": "security/keys/request_key.c"
    }
  ]
}
