)]}'
{
  "commit": "5ac5f9d1ce8492163dbde5d357dc5d03becf7e36",
  "tree": "3ce7f36c074e37dd565b91490582c4a4902f2b18",
  "parents": [
    "7c8903f6373f9abecf060bad53ca36bc4ac037f2"
  ],
  "author": {
    "name": "Trond Myklebust",
    "email": "Trond.Myklebust@netapp.com",
    "time": "Tue Feb 14 13:53:04 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Tue Feb 14 16:09:34 2006 -0800"
  },
  "message": "[PATCH] NLM: Fix the NLM_GRANTED callback checks\n\nIf 2 threads attached to the same process are blocking on different locks on\ndifferent files (maybe even on different servers) but have the same lock\narguments (i.e.  same offset+length - actually quite common, since most\nprocesses try to lock the entire file) then the first GRANTED call that wakes\none up will also wake the other.\n\nCurrently when the NLM_GRANTED callback comes in, lockd walks the list of\nblocked locks in search of a match to the lock that the NLM server has\ngranted.  Although it checks the lock pid, start and end, it fails to check\nthe filehandle and the server address.\n\nBy checking the filehandle and server IP address, we ensure that this only\nhappens if the locks truly are referencing the same file.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.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": "3eaf6e70108781fec63c61a32141b435532faae3",
      "old_mode": 33188,
      "old_path": "fs/lockd/clntlock.c",
      "new_id": "da6354baa0b804b36d2778282b31bc5ae8e2d858",
      "new_mode": 33188,
      "new_path": "fs/lockd/clntlock.c"
    },
    {
      "type": "modify",
      "old_id": "4063095d849e0280ceecbeb4d510a600810b7797",
      "old_mode": 33188,
      "old_path": "fs/lockd/svc4proc.c",
      "new_id": "b10f913aa06ae44f7d797920ed9e981b610caa5d",
      "new_mode": 33188,
      "new_path": "fs/lockd/svc4proc.c"
    },
    {
      "type": "modify",
      "old_id": "3bc437e0cf5b6f0d6618c806fc9f835b084dbc52",
      "old_mode": 33188,
      "old_path": "fs/lockd/svcproc.c",
      "new_id": "35681d9cf1fcf52ca816249221a5b4c48b293c4e",
      "new_mode": 33188,
      "new_path": "fs/lockd/svcproc.c"
    },
    {
      "type": "modify",
      "old_id": "920766cea79cbc15634411e4c9633c27f6c8fd61",
      "old_mode": 33188,
      "old_path": "include/linux/lockd/lockd.h",
      "new_id": "ef21ed296039dc87527c3eb777992851e0774bcf",
      "new_mode": 33188,
      "new_path": "include/linux/lockd/lockd.h"
    }
  ]
}
