)]}'
{
  "commit": "b778c95c529faba19efffaf688deab99b45cee0a",
  "tree": "9d4f1ecda408dcbb34642d530bdd9837f877abcc",
  "parents": [
    "8755f50ce5ff3bc644332b7c235da12cf942a24f"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Thu Jul 19 17:14:54 2018 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Thu Jul 19 17:21:52 2018 -0400"
  },
  "message": "rcu: Panic if a call_rcu() CB blocks\n\nRCU callbacks are not allowed to block.  Here\u0027s what Linux has to say:\n\n\t... the callback function must be written to be called from softirq\n\tcontext.  In particular, it cannot block.\n\nSame goes for us.  If a CB blocks, then all further CBs will be blocked\ntoo, and the code that will wake up the first CB could also be blocked on a\nlater CB.\n\nNote the distinction between RCU callbacks and RCU threads.  The threads\nare critical parts of implementing RCU; they are never allowed to block on\nRCU primitives.  Yes, any RCU callback will be run by an RCU thread, but\nthe problem is slightly different.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ab26759d19bc445daf475593c33e10ca9d90030f",
      "old_mode": 33188,
      "old_path": "kern/include/trap.h",
      "new_id": "2a7f081fc4e4f3f43e2d1d4fabb50284337fc9b9",
      "new_mode": 33188,
      "new_path": "kern/include/trap.h"
    },
    {
      "type": "modify",
      "old_id": "2aec4ac3f3f19bead981a8d911228c1301a40a9d",
      "old_mode": 33188,
      "old_path": "kern/src/rcu.c",
      "new_id": "84810259f273950d4b5372e3016f8826385a21f0",
      "new_mode": 33188,
      "new_path": "kern/src/rcu.c"
    }
  ]
}
