)]}'
{
  "commit": "d92adacdd8c2960be856e0b82acc5b7c5395fddb",
  "tree": "47f8d3e61bd87a9abe67ef44ad33a9ea3a87b2a3",
  "parents": [
    "43eb466041216d25dedaef1c383ad7bd89929cbc"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "edumazet@google.com",
    "time": "Wed Jun 11 11:15:14 2025 +0000"
  },
  "committer": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Thu Jun 12 08:05:50 2025 -0700"
  },
  "message": "net_sched: ets: fix a race in ets_qdisc_change()\n\nGerrard Tai reported a race condition in ETS, whenever SFQ perturb timer\nfires at the wrong time.\n\nThe race is as follows:\n\nCPU 0                                 CPU 1\n[1]: lock root\n[2]: qdisc_tree_flush_backlog()\n[3]: unlock root\n |\n |                                    [5]: lock root\n |                                    [6]: rehash\n |                                    [7]: qdisc_tree_reduce_backlog()\n |\n[4]: qdisc_put()\n\nThis can be abused to underflow a parent\u0027s qlen.\n\nCalling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()\nshould fix the race, because all packets will be purged from the qdisc\nbefore releasing the lock.\n\nFixes: b05972f01e7d (\"net: sched: tbf: don\u0027t call qdisc_put() while holding tree lock\")\nReported-by: Gerrard Tai \u003cgerrard.tai@starlabs.sg\u003e\nSuggested-by: Gerrard Tai \u003cgerrard.tai@starlabs.sg\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nLink: https://patch.msgid.link/20250611111515.1983366-5-edumazet@google.com\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c069f0181c62b5387118822dfb7a51fc1b3033a",
      "old_mode": 33188,
      "old_path": "net/sched/sch_ets.c",
      "new_id": "037f764822b96526329a4715bfcc22c502495f14",
      "new_mode": 33188,
      "new_path": "net/sched/sch_ets.c"
    }
  ]
}
