)]}'
{
  "commit": "904b8eaf21a993852b97d086d8d7a21916090cb9",
  "tree": "1e5ad30d95b9bb2eb89b5dd7d4b3dd2f40a41992",
  "parents": [
    "f3d382f1e899f2f8f8c50c71d4c98ac8f387aaab"
  ],
  "author": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Sun Apr 13 23:00:55 2025 -0700"
  },
  "committer": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Mon Nov 17 07:33:01 2025 -0800"
  },
  "message": "locking/lockdep: Use shazptr to protect the key hashlist\n\nErik Lundgren and Breno Leitao reported [1] a case where\nlockdep_unregister_key() can be called from time critical code pathes\nwhere rntl_lock() may be held. And the synchronize_rcu() in it can slow\ndown operations such as using tc to replace a qdisc in a network device.\n\nIn fact the synchronize_rcu() in lockdep_unregister_key() is to wait for\nall is_dynamic_key() callers to finish so that removing a key from the\nkey hashlist, and we can use shazptr to protect the hashlist as well.\n\nCompared to the proposed solution which replaces synchronize_rcu() with\nsynchronize_rcu_expedited(), using shazptr here can achieve the\nsame/better synchronization time without the need to send IPI. Hence use\nshazptr here.\n\nReported-by: Erik Lundgren \u003celundgren@meta.com\u003e\nReported-by: Breno Leitao \u003cleitao@debian.org\u003e\nLink: https://lore.kernel.org/all/20250321-lockdep-v1-1-78b732d195fb@debian.org/ [1]\nTested-by: Breno Leitao \u003cleitao@debian.org\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\nSigned-off-by: Boqun Feng \u003cboqun.feng@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d4c5bab5af88743ed48098e1d4052ff745ddb1b",
      "old_mode": 33188,
      "old_path": "kernel/locking/lockdep.c",
      "new_id": "2013e416fce50fa912e584af86044fe6bbfe28d6",
      "new_mode": 33188,
      "new_path": "kernel/locking/lockdep.c"
    }
  ]
}
