)]}'
{
  "commit": "cd570a4418f37a9617a19d73cf37d3610594a4c2",
  "tree": "9403d8e522e5d9db9cf0a2de4c6e212b29f6dad4",
  "parents": [
    "abe3951dcc3f6cd43d633e312ac01c00592f6367"
  ],
  "author": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Wed Aug 23 12:12:16 2017 +0800"
  },
  "committer": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Wed Aug 23 18:30:44 2017 +0800"
  },
  "message": "lockdep: Print proper scenario if cross deadlock detected at acquisition time\n\nFor a potential deadlock about CROSSRELEASE as follow:\n\n\tP1\t\tP2\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\tlock(A)\n\tlock(X)\n\t\t\tlock(A)\n\t\t\tcommit(X)\n\n\tA: normal lock, X: cross lock\n\n, we could detect it at two places:\n\n1. commit time:\n\n\tWe have run P1 first, and have dependency A --\u003e X in graph, and\n\tthen we run P2, and find the deadlock.\n\n2. acquisition time:\n\n\tWe have run P2 first, and have dependency X --\u003e A, in\n\tgraph(because another P3 may run previously and is acquiring for\n\tlock X), and then we run P1 and find the deadlock.\n\nIn current print_circular_lock_scenario(), for 1) we could print the\nright scenario and note that\u0027s a deadlock related to CROSSRELEASE,\nhowever for 2) we print the scenario as a normal lockdep deadlock.\n\nIt\u0027s better to print a proper scenario related to CROSSRELEASE to help\nusers find their bugs more easily, so improve this.\n\nSigned-off-by: Boqun Feng \u003cboqun.feng@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "48440f1ec1bbb9478d4d59a9f20ddac5118b30cd",
      "old_mode": 33188,
      "old_path": "kernel/locking/lockdep.c",
      "new_id": "4a60b4135edc7c24781f6548dbc962498b3767ad",
      "new_mode": 33188,
      "new_path": "kernel/locking/lockdep.c"
    }
  ]
}
