)]}'
{
  "commit": "6ea24f9ad18c65cc179593b5cc2a88cdadf8cc0c",
  "tree": "7a47cc8e18a6f25b4af0560282d8a0315f72241d",
  "parents": [
    "be6b5a3505fa0cd54c3b5959a39293f47c648980"
  ],
  "author": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Sun Jul 30 03:03:38 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Mon Jul 31 13:28:40 2006 -0700"
  },
  "message": "[PATCH] fix bad macro param in timer.c\n\nWe have\n\n#define INDEX(N) (base-\u003etimer_jiffies \u003e\u003e (TVR_BITS + N * TVN_BITS)) \u0026 TVN_MASK\n\nand it\u0027s used via\n\n\tlist \u003d varray[i + 1]-\u003evec + (INDEX(i + 1));\n\nSo, due to underparenthesisation, this INDEX(i+1) is now a ...  (TVR_BITS + i\n+ 1 * TVN_BITS)) ...\n\nSo this bugfix changes behaviour.  It worked before by sheer luck:\n\n  \"If i was anything but 0, it was broken.  But this was only used by\n   s390 and arm.  Since it was for the next interrupt, could that next\n   interrupt be a problem (going into the second cascade)? But it was\n   probably seldom wrong.  That is, this would fail if the next\n   interrupt was in the second cascade, and was wrapped.  Which may\n   never of happened.  Also if it did happen, it would have just missed\n   the interrupt.\n\n   If an interrupt was missed, and no one was there to miss it, was it\n   really missed :-)\"\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\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": "ee319fc69f40d7a2818485f8e76dde37d1eda76c",
      "old_mode": 33188,
      "old_path": "kernel/timer.c",
      "new_id": "726caf9a0a69ca90642804d419db4229c28ba9b3",
      "new_mode": 33188,
      "new_path": "kernel/timer.c"
    }
  ]
}
