)]}'
{
  "commit": "ba9f207c9f82115aba4ce04b22e0081af0ae300f",
  "tree": "469b255f597c4910306566d038496780a16e56a2",
  "parents": [
    "80d02085d99039b3b7f3a73c8896226b0cb1ba07"
  ],
  "author": {
    "name": "Frederic Weisbecker",
    "email": "fweisbec@gmail.com",
    "time": "Fri May 20 02:09:54 2011 +0200"
  },
  "committer": {
    "name": "Paul E. McKenney",
    "email": "paulmck@linux.vnet.ibm.com",
    "time": "Thu May 26 09:42:19 2011 -0700"
  },
  "message": "rcu: Fix unpaired rcu_irq_enter() from locking selftests\n\nHARDIRQ_ENTER() maps to irq_enter() which calls rcu_irq_enter().\nBut HARDIRQ_EXIT() maps to __irq_exit() which doesn\u0027t call\nrcu_irq_exit().\n\nSo for every locking selftest that simulates hardirq disabled,\nwe create an imbalance in the rcu extended quiescent state\ninternal state.\n\nAs a result, after the first missing rcu_irq_exit(), subsequent\nirqs won\u0027t exit dyntick-idle mode after leaving the interrupt\nhandler.  This means that RCU won\u0027t see the affected CPU as being\nin an extended quiescent state, resulting in long grace-period\ndelays (as in grace periods extending for hours).\n\nTo fix this, just use __irq_enter() to simulate the hardirq\ncontext. This is sufficient for the locking selftests as we\ndon\u0027t need to exit any extended quiescent state or perform\nany check that irqs normally do when they wake up from idle.\n\nAs a side effect, this patch makes it possible to restore\n\"rcu: Decrease memory-barrier usage based on semi-formal proof\",\nwhich eventually helped finding this bug.\n\nReported-and-tested-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Stable \u003cstable@kernel.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "619313ed6c46d78ef7b35a6ab870bfd764376486",
      "old_mode": 33188,
      "old_path": "lib/locking-selftest.c",
      "new_id": "507a22fab7380c120bcf45cb683051c2e4adb0da",
      "new_mode": 33188,
      "new_path": "lib/locking-selftest.c"
    }
  ]
}
