)]}'
{
  "commit": "1b9e01fcc47aff00d2fd64693c5dcd620eff5865",
  "tree": "999018e40020b468e914cb7002505a6cd4c287cd",
  "parents": [
    "aa63c0df79920f6abe1b66e1f8b6443ad2d62d0e"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Tue Sep 15 13:09:33 2026 +0200"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Fri Nov 06 11:16:14 2026 +0100"
  },
  "message": "locking/osq: Switch osq_wait_next()/atomic_cmpxchg() ordering\n\nThe atomic_cmpxchg() in osq_wait_next() removes the current CPU\u0027s node\nfrom the tail of the queue and puts @old_cpu back.\n\nThis is very much like an \u0027unlock\u0027, which is RELEASE, rather than\nACQUIRE.\n\nAdditionally, on success (the only case where the ordering is\neffective), this returns NULL which means both callsites will do nothing\nmore, there are no subsequent operations to order against.\n\nFurthermore, the osq_lock() caller will then return false, indicating\nfailure to acquire -- the mutex must go block. Again, not making a case\nfor ACQUIRE.  Neither atomics nor locks provide ordering on failure.\n\nSince ACQUIRE makes no sense, while RELEASE makes it more symmetric with\nosq_unlock(), switch the ordering. This then makes osq_unlock()\nconsistently RELEASE.\n\nFixes: c55a6ffa6285 (\"locking/osq: Relax atomic semantics\")\nSuggested-by: David Laight \u003cdavid.laight.linux@gmail.com\u003e\nSigned-off-by: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nCc: linux-kernel@vger.kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b4233dc2c2b04c13add7d5ac1395705307ea9383",
      "old_mode": 33188,
      "old_path": "kernel/locking/osq_lock.c",
      "new_id": "98b12d7b799647e2b3751d21527a46766eb49c00",
      "new_mode": 33188,
      "new_path": "kernel/locking/osq_lock.c"
    }
  ]
}
