)]}'
{
  "commit": "657e9649e745b06675aa5063c84430986cdc3afa",
  "tree": "2db388ddc152c1deb4903467d9012c56b5ba8b41",
  "parents": [
    "7c64b9f3f584008000cf3b960f25cd6a68fce191"
  ],
  "author": {
    "name": "Robert Varga",
    "email": "nite@hq.alert.sk",
    "time": "Tue Sep 15 23:49:21 2009 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Tue Sep 15 23:49:21 2009 -0700"
  },
  "message": "tcp: fix CONFIG_TCP_MD5SIG + CONFIG_PREEMPT timer BUG()\n\nI have recently came across a preemption imbalance detected by:\n\n\u003c4\u003ehuh, entered ffffffff80644630 with preempt_count 00000102, exited with 00000101?\n\u003c0\u003e------------[ cut here ]------------\n\u003c2\u003ekernel BUG at /usr/src/linux/kernel/timer.c:664!\n\u003c0\u003einvalid opcode: 0000 [1] PREEMPT SMP\n\nwith ffffffff80644630 being inet_twdr_hangman().\n\nThis appeared after I enabled CONFIG_TCP_MD5SIG and played with it a\nbit, so I looked at what might have caused it.\n\nOne thing that struck me as strange is tcp_twsk_destructor(), as it\ncalls tcp_put_md5sig_pool() -- which entails a put_cpu(), causing the\ndetected imbalance. Found on 2.6.23.9, but 2.6.31 is affected as well,\nas far as I can tell.\n\nSigned-off-by: Robert Varga \u003cnite@hq.alert.sk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "045bcfd3f2884d309031ce898732d2a8035274f3",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_minisocks.c",
      "new_id": "624c3c9b3c2bbe33a37f53b105d041b08ce490ef",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_minisocks.c"
    }
  ]
}
