)]}'
{
  "commit": "551d55a944b143ef26fbd482d1c463199d6f65cf",
  "tree": "6911d3f8e8719ba5ca43c83acdf87cbc8276d7d1",
  "parents": [
    "875352c94224c88f5aa28cb77206f993bd31b7a2"
  ],
  "author": {
    "name": "Mathieu Desnoyers",
    "email": "mathieu.desnoyers@efficios.com",
    "time": "Sat Apr 17 08:48:42 2010 -0400"
  },
  "committer": {
    "name": "Paul E. McKenney",
    "email": "paulmck@linux.vnet.ibm.com",
    "time": "Mon Jun 14 16:37:26 2010 -0700"
  },
  "message": "tree/tiny rcu: Add debug RCU head objects\n\nHelps finding racy users of call_rcu(), which results in hangs because list\nentries are overwritten and/or skipped.\n\nChangelog since v4:\n- Bissectability is now OK\n- Now generate a WARN_ON_ONCE() for non-initialized rcu_head passed to\n  call_rcu(). Statically initialized objects are detected with\n  object_is_static().\n- Rename rcu_head_init_on_stack to init_rcu_head_on_stack.\n- Remove init_rcu_head() completely.\n\nChangelog since v3:\n- Include comments from Lai Jiangshan\n\nThis new patch version is based on the debugobjects with the newly introduced\n\"active state\" tracker.\n\nNon-initialized entries are all considered as \"statically initialized\". An\nactivation fixup (triggered by call_rcu()) takes care of performing the debug\nobject initialization without issuing any warning. Since we cannot increase the\nsize of struct rcu_head, I don\u0027t see much room to put an identifier for\nstatically initialized rcu_head structures. So for now, we have to live without\n\"activation without explicit init\" detection. But the main purpose of this debug\noption is to detect double-activations (double call_rcu() use of a rcu_head\nbefore the callback is executed), which is correctly addressed here.\n\nThis also detects potential internal RCU callback corruption, which would cause\nthe callbacks to be executed twice.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: akpm@linux-foundation.org\nCC: mingo@elte.hu\nCC: laijs@cn.fujitsu.com\nCC: dipankar@in.ibm.com\nCC: josh@joshtriplett.org\nCC: dvhltc@us.ibm.com\nCC: niv@us.ibm.com\nCC: tglx@linutronix.de\nCC: peterz@infradead.org\nCC: rostedt@goodmis.org\nCC: Valdis.Kletnieks@vt.edu\nCC: dhowells@redhat.com\nCC: eric.dumazet@gmail.com\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b653b4aaa8a6332c8d783f2cd9afb7c8882028b4",
      "old_mode": 33188,
      "old_path": "include/linux/rcupdate.h",
      "new_id": "2b7fc506e479a3a4ea19d9226c6733a72156a3f4",
      "new_mode": 33188,
      "new_path": "include/linux/rcupdate.h"
    },
    {
      "type": "modify",
      "old_id": "72a8dc9567f5825ee24bb52174b67953ca372b63",
      "old_mode": 33188,
      "old_path": "kernel/rcupdate.c",
      "new_id": "4d169835fb362dcd6eb52a916a0d8e85e48c8fb8",
      "new_mode": 33188,
      "new_path": "kernel/rcupdate.c"
    },
    {
      "type": "modify",
      "old_id": "38729d3cd23692887afac015b442c052a150f38c",
      "old_mode": 33188,
      "old_path": "kernel/rcutiny.c",
      "new_id": "196ec02f8be0c1ad884b7d69599005a6fc3a4429",
      "new_mode": 33188,
      "new_path": "kernel/rcutiny.c"
    },
    {
      "type": "modify",
      "old_id": "d4437345706f8a539eee6dba201662fd791978ef",
      "old_mode": 33188,
      "old_path": "kernel/rcutree.c",
      "new_id": "d5bc43976c5ad202fa41be0456797d40bdde0c0d",
      "new_mode": 33188,
      "new_path": "kernel/rcutree.c"
    },
    {
      "type": "modify",
      "old_id": "e722e9d62221d40560176b5f8d2cabdcf74a5e2d",
      "old_mode": 33188,
      "old_path": "lib/Kconfig.debug",
      "new_id": "142faa2ec6658b2943ee1a771355eb22d73429d0",
      "new_mode": 33188,
      "new_path": "lib/Kconfig.debug"
    }
  ]
}
