)]}'
{
  "commit": "7b7422a566aa0dc1e582ce263d4c7ff4a772700a",
  "tree": "29cb2554e08df65a82afd46f2e034ee0e015ac80",
  "parents": [
    "9a3cbe3265c7714e8ee423feb6e27a080af79608"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Jan 26 12:51:10 2010 +0100"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Jan 26 14:53:16 2010 +0100"
  },
  "message": "clocksource: Prevent potential kgdb dead lock\n\ncommit 0f8e8ef7 (clocksource: Simplify clocksource watchdog resume\nlogic) introduced a potential kgdb dead lock. When the kernel is\nstopped by kgdb inside code which holds watchdog_lock then kgdb dead\nlocks in clocksource_resume_watchdog().\n\nclocksource_resume_watchdog() is called from kbdg via\nclocksource_touch_watchdog() to avoid that the clock source watchdog\nmarks TSC unstable after the kernel has been stopped.\n\nSolve this by replacing spin_lock with a spin_trylock and just return\nin case the lock is held. Not resetting the watchdog might result in\nTSC becoming marked unstable, but that\u0027s an acceptable penalty for\nusing kgdb.\n\nThe timekeeping is anyway easily screwed up by kgdb when the system\nuses either jiffies or a clock source which wraps in short intervals\n(e.g. pm_timer wraps about every 4.6s), so we really do not have to\nworry about that occasional TSC marked unstable side effect.\n\nThe second caller of clocksource_resume_watchdog() is\nclocksource_resume(). The trylock is safe here as well because the\nsystem is UP at this point, interrupts are disabled and nothing else\ncan hold watchdog_lock().\n\nReported-by: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nLKML-Reference: \u003c1264480000-6997-4-git-send-email-jason.wessel@windriver.com\u003e\nCc: kgdb-bugreport@lists.sourceforge.net\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e85c23404d34526acfc9359a530ec23044aa0b7e",
      "old_mode": 33188,
      "old_path": "kernel/time/clocksource.c",
      "new_id": "13700833c181755f0f5a60e6fe34d53edb96448d",
      "new_mode": 33188,
      "new_path": "kernel/time/clocksource.c"
    }
  ]
}
