)]}'
{
  "commit": "27c9cd7e601632b3794e1c3344d37b86917ffb43",
  "tree": "dc6f3d9accdf9c7fd8fd80dd81ff2ed7e07304e7",
  "parents": [
    "d004e024058a0eaca097513ce62cbcf978913e0a"
  ],
  "author": {
    "name": "Jeff Ohlstein",
    "email": "johlstei@codeaurora.org",
    "time": "Fri Nov 18 15:47:10 2011 -0800"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Sat Nov 19 12:17:37 2011 +0100"
  },
  "message": "hrtimer: Fix extra wakeups from __remove_hrtimer()\n\n__remove_hrtimer() attempts to reprogram the clockevent device when\nthe timer being removed is the next to expire. However,\n__remove_hrtimer() reprograms the clockevent *before* removing the\ntimer from the timerqueue and thus when hrtimer_force_reprogram()\nfinds the next timer to expire it finds the timer we\u0027re trying to\nremove.\n\nThis is especially noticeable when the system switches to NOHz mode\nand the system tick is removed. The timer tick is removed from the\nsystem but the clockevent is programmed to wakeup in another HZ\nanyway.\n\nSilence the extra wakeup by removing the timer from the timerqueue\nbefore calling hrtimer_force_reprogram() so that we actually program\nthe clockevent for the next timer to expire.\n\nThis was broken by 998adc3 \"hrtimers: Convert hrtimers to use\ntimerlist infrastructure\".\n\nSigned-off-by: Jeff Ohlstein \u003cjohlstei@codeaurora.org\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/1321660030-8520-1-git-send-email-johlstei@codeaurora.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a9205e32a059cde761f924c498d2984b0aacb36c",
      "old_mode": 33188,
      "old_path": "kernel/hrtimer.c",
      "new_id": "2043c08d36c89d44731fb70ff01679816704f3a0",
      "new_mode": 33188,
      "new_path": "kernel/hrtimer.c"
    }
  ]
}
