)]}'
{
  "commit": "58229a18994215bbfe0bcd1c99d2e039f30b076b",
  "tree": "c910efcef828d1bc5dd3e43a9575a8164504779c",
  "parents": [
    "b9bae3402572dc50a1e084c5b1ae5117918ef0f0"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Thu Jun 21 20:45:15 2007 +0000"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Thu Jun 21 15:57:04 2007 -0700"
  },
  "message": "posix-timers: Prevent softirq starvation by small intervals and SIG_IGN\n\nposix-timers which deliver an ignored signal are currently rearmed in\nthe timer softirq: This is necessary because the timer needs to be\ndelivered again when SIG_IGN is removed. This is not a problem, when\nthe interval is reasonable.\n\nWith high resolution timers enabled one might arm a posix timer with a\nvery small interval and ignore the signal. This might lead to a\nsoftirq starvation when the interval is so small that the timer is\nrequeued onto the softirq pending list right away.\n\nThis problem was pointed out by Jan Kiszka. Thanks Jan !\n\nThe correct solution would be to stop the timer, when the signal is\nignored and rearm it when SIG_IGN is removed. Unfortunately this\nrequires modification in sigaction and involves non trivial sighand\nlocking. It\u0027s too late in the release cycle for such a change.\n\nFor now we just keep the timer running and enforce that the timer only\nfires every jiffie. This does not break anything as we keep the\noverrun counter correct. It adds a little inaccuracy to the\ntimer_gettime() interface, but...\n\nThe more complex change is necessary anyway to fix another short\ncoming of the current implementation, which I discovered while looking\nat this problem: A pending signal is discarded when SIG_IGN is set. In\ncase that a posixtimer signal is pending then it is discarded as well,\nbut when SIG_IGN is removed later nothing rearms the timer. This is\nnot new, it\u0027s that way since posix timers have been merged. So nothing\nto worry about right now.\n\nI have a working solution to fix all of this, but the impact is too\nlarge for both stable and 2.6.22. I\u0027m going to send it out for review\nin the next days.\n\nThis should go into 2.6.21.stable as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Stable Team \u003cstable@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "588c99da030792babb3c643b89e645c8abebdb2b",
      "old_mode": 33188,
      "old_path": "kernel/posix-timers.c",
      "new_id": "329ce0172074a8270b662e3850118d08d42c0dc0",
      "new_mode": 33188,
      "new_path": "kernel/posix-timers.c"
    }
  ]
}
