)]}'
{
  "commit": "d09b62dfa336447c52a5ec9bb88adbc479b0f3b8",
  "tree": "70a002fed2e0471def01ea3c166137449cb1527d",
  "parents": [
    "281d150c5f8892f158747594ab49ce2823fd8b8c"
  ],
  "author": {
    "name": "Paul E. McKenney",
    "email": "paulmck@linux.vnet.ibm.com",
    "time": "Mon Nov 02 13:52:28 2009 -0800"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Tue Nov 10 04:11:54 2009 +0100"
  },
  "message": "rcu: Fix synchronization for rcu_process_gp_end() uses of -\u003ecompleted counter\n\nImpose a clear locking design on the rcu_process_gp_end()\nfunction\u0027s use of the -\u003ecompleted counter.  This is done by\ncreating a -\u003ecompleted field in the rcu_node structure, which\ncan safely be accessed under the protection of that structure\u0027s\nlock.  Performance and scalability are maintained by using a\nform of double-checked locking, so that rcu_process_gp_end()\nonly acquires the leaf rcu_node structure\u0027s -\u003elock if a grace\nperiod has recently ended.\n\nThis fix reduces rcutorture failure rate by at least two orders\nof magnitude under heavy stress with force_quiescent_state()\nbeing invoked artificially often.  Without this fix,\nunsynchronized access to the -\u003ecompleted field can cause\nrcu_process_gp_end() to advance callbacks whose grace period has\nnot yet expired.  (Bad idea!)\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: \u003cstable@kernel.org\u003e # .32.x\nLKML-Reference: \u003c12571987494069-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "26249abf24dcb59ae144215aa3366438b548ead3",
      "old_mode": 33188,
      "old_path": "kernel/rcutree.c",
      "new_id": "9e068d1121533cf81cecdbeea0654f0bed415e2e",
      "new_mode": 33188,
      "new_path": "kernel/rcutree.c"
    },
    {
      "type": "modify",
      "old_id": "8a4c1650ad8d9d22785f49c5c8e647b61f4ee006",
      "old_mode": 33188,
      "old_path": "kernel/rcutree.h",
      "new_id": "c1891c3cae63c0333438f8abac310ad94c598a5d",
      "new_mode": 33188,
      "new_path": "kernel/rcutree.h"
    }
  ]
}
