)]}'
{
  "commit": "830ec0458c390f29c6c99e1ff7feab9e36368d12",
  "tree": "81a344892bd7696a42d87b76189b59f4e1af71ef",
  "parents": [
    "15365c108ea27598e265f8c13e7051d99ca5b0b9"
  ],
  "author": {
    "name": "John Stultz",
    "email": "johnstul@us.ibm.com",
    "time": "Thu Mar 18 14:47:30 2010 -0700"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Mar 23 16:41:01 2010 +0100"
  },
  "message": "time: Fix accumulation bug triggered by long delay.\n\nThe logarithmic accumulation done in the timekeeping has some overflow\nprotection that limits the max shift value. That means it will take\nmore then shift loops to accumulate all of the cycles. This causes\nthe shift decrement to underflow, which causes the loop to never exit.\n\nThe simplest fix would be simply to do a:\n\tif (shift)\n\t\tshift--;\n\nHowever that is not optimal, as we know the cycle offset is larger\nthen the interval \u003c\u003c shift, the above would make shift drop to zero,\nthen we would be spinning for quite awhile accumulating at interval\nchunks at a time.\n\nInstead, this patch only decreases shift if the offset is smaller\nthen cycle_interval \u003c\u003c shift.  This makes sure we accumulate using\nthe largest chunks possible without overflowing tick_length, and limits\nthe number of iterations through the loop.\n\nThis issue was found and reported by Sonic Zhang, who also tested the fix.\nMany thanks your explanation and testing!\n\nReported-by: Sonic Zhang \u003csonic.adi@gmail.com\u003e\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nTested-by: Sonic Zhang \u003csonic.adi@gmail.com\u003e\nLKML-Reference: \u003c1268948850-5225-1-git-send-email-johnstul@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "16736379a9caaba6320f32f3df6e94cb5a9abbda",
      "old_mode": 33188,
      "old_path": "kernel/time/timekeeping.c",
      "new_id": "39f6177fafac110d342d2cedcd093b7a736bfdc8",
      "new_mode": 33188,
      "new_path": "kernel/time/timekeeping.c"
    }
  ]
}
