)]}'
{
  "commit": "1fabfa9f793bc72ae262e91166d7c5afa73b8ee6",
  "tree": "38bbf88be2e4a7691b7884526fdf6f7110c55172",
  "parents": [
    "980b2a9d8866e35368b4d12a0975369a49351d65"
  ],
  "author": {
    "name": "Zhiguo Niu",
    "email": "zhiguo.niu@unisoc.com",
    "time": "Thu Jun 20 22:54:34 2024 +0000"
  },
  "committer": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Wed Jun 26 15:05:34 2024 -0700"
  },
  "message": "lockdep: fix deadlock issue between lockdep and rcu\n\nThere is a deadlock scenario between lockdep and rcu when\nrcu nocb feature is enabled, just as following call stack:\n\n     rcuop/x\n-000|queued_spin_lock_slowpath(lock \u003d 0xFFFFFF817F2A8A80, val \u003d ?)\n-001|queued_spin_lock(inline) // try to hold nocb_gp_lock\n-001|do_raw_spin_lock(lock \u003d 0xFFFFFF817F2A8A80)\n-002|__raw_spin_lock_irqsave(inline)\n-002|_raw_spin_lock_irqsave(lock \u003d 0xFFFFFF817F2A8A80)\n-003|wake_nocb_gp_defer(inline)\n-003|__call_rcu_nocb_wake(rdp \u003d 0xFFFFFF817F30B680)\n-004|__call_rcu_common(inline)\n-004|call_rcu(head \u003d 0xFFFFFFC082EECC28, func \u003d ?)\n-005|call_rcu_zapped(inline)\n-005|free_zapped_rcu(ch \u003d ?)// hold graph lock\n-006|rcu_do_batch(rdp \u003d 0xFFFFFF817F245680)\n-007|nocb_cb_wait(inline)\n-007|rcu_nocb_cb_kthread(arg \u003d 0xFFFFFF817F245680)\n-008|kthread(_create \u003d 0xFFFFFF80803122C0)\n-009|ret_from_fork(asm)\n\n     rcuop/y\n-000|queued_spin_lock_slowpath(lock \u003d 0xFFFFFFC08291BBC8, val \u003d 0)\n-001|queued_spin_lock()\n-001|lockdep_lock()\n-001|graph_lock() // try to hold graph lock\n-002|lookup_chain_cache_add()\n-002|validate_chain()\n-003|lock_acquire\n-004|_raw_spin_lock_irqsave(lock \u003d 0xFFFFFF817F211D80)\n-005|lock_timer_base(inline)\n-006|mod_timer(inline)\n-006|wake_nocb_gp_defer(inline)// hold nocb_gp_lock\n-006|__call_rcu_nocb_wake(rdp \u003d 0xFFFFFF817F2A8680)\n-007|__call_rcu_common(inline)\n-007|call_rcu(head \u003d 0xFFFFFFC0822E0B58, func \u003d ?)\n-008|call_rcu_hurry(inline)\n-008|rcu_sync_call(inline)\n-008|rcu_sync_func(rhp \u003d 0xFFFFFFC0822E0B58)\n-009|rcu_do_batch(rdp \u003d 0xFFFFFF817F266680)\n-010|nocb_cb_wait(inline)\n-010|rcu_nocb_cb_kthread(arg \u003d 0xFFFFFF817F266680)\n-011|kthread(_create \u003d 0xFFFFFF8080363740)\n-012|ret_from_fork(asm)\n\nrcuop/x and rcuop/y are rcu nocb threads with the same nocb gp thread.\nThis patch release the graph lock before lockdep call_rcu.\n\nFixes: a0b0fd53e1e6 (\"locking/lockdep: Free lock classes that are no longer in use\")\nCc: stable@vger.kernel.org\nCc: Boqun Feng \u003cboqun.feng@gmail.com\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nCc: Carlos Llamas \u003ccmllamas@google.com\u003e\nCc: Bart Van Assche \u003cbvanassche@acm.org\u003e\nSigned-off-by: Zhiguo Niu \u003czhiguo.niu@unisoc.com\u003e\nSigned-off-by: Xuewen Yan \u003cxuewen.yan@unisoc.com\u003e\nReviewed-by: Waiman Long \u003clongman@redhat.com\u003e\nReviewed-by: Carlos Llamas \u003ccmllamas@google.com\u003e\nReviewed-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nSigned-off-by: Carlos Llamas \u003ccmllamas@google.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240620225436.3127927-1-cmllamas@google.com\nSigned-off-by: Boqun Feng \u003cboqun.feng@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "31d7720c9b8de0884b06a16edfc424c77d153eb1",
      "old_mode": 33188,
      "old_path": "kernel/locking/lockdep.c",
      "new_id": "6219072875820555f6d4708c11d870a0dc7301f7",
      "new_mode": 33188,
      "new_path": "kernel/locking/lockdep.c"
    }
  ]
}
