)]}'
{
  "commit": "a99ce697ea5e27b867c9ba4ee55fa5ba3b8d1188",
  "tree": "f86959e63b3f1b063f2473d41fb77af053eda596",
  "parents": [
    "6935f0496c2eb74dd3f57228a799d2db1a8a9ac8"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Mon Jun 01 08:56:04 2026 -1000"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Tue Jun 02 08:25:29 2026 -1000"
  },
  "message": "cgroup: Migrate tasks to the root css when a controller is rebound\n\ncgroup_apply_control_disable() defers kill_css_finish() while a css is\nstill populated, relying on css_update_populated() to fire the deferred\nkill once the populated count reaches zero.\n\nThis deadlocks when a controller is rebound out of a hierarchy. Mounting\nan implicit_on_dfl controller such as perf_event as a v1 hierarchy steals\nit off the default hierarchy, and rebind_subsystems() kills its\nper-cgroup csses while they are still populated. The migration run in the\nsame step keeps the old css for a controller no longer in the hierarchy\u0027s\nmask, so no task is migrated off the dying csses. Their populated count\nnever reaches zero, the deferred kill_css_finish() never fires, and the\nnext cgroup_lock_and_drain_offline() hangs forever under cgroup_mutex.\n\nThat migration is already a no-op pass over the rebound subtree. Add\ncgroup_rebind_ss_mask so find_existing_css_set() resolves the leaving\ncontrollers to the root css. Their tasks are migrated there, the\nper-cgroup csses depopulate, and cgroup_apply_control_disable() kills\nthem synchronously. The deferral stays correct for the rmdir and\ncontroller-disable paths it was meant for.\n\nFixes: 1dffd95575eb (\"cgroup: Defer kill_css_finish() in cgroup_apply_control_disable()\")\nReported-by: Mark Brown \u003cbroonie@kernel.org\u003e\nCloses: https://lore.kernel.org/all/41cd159c-54e5-45e0-81df-eaf36a6c028e@sirena.org.uk/\nReported-by: Bert Karwatzki \u003cspasswolf@web.de\u003e\nCloses: https://lore.kernel.org/all/4e986b4ed7e16547805d54b6e67d09120bc4d2f2.camel@web.de/\nTested-by: Mark Brown \u003cbroonie@kernel.org\u003e\nTested-by: Bert Karwatzki \u003cspasswolf@web.de\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6e92791d279edec740df1dd938731bb928e124cd",
      "old_mode": 33188,
      "old_path": "kernel/cgroup/cgroup.c",
      "new_id": "4d442c224bf5229cfc46e6d20da50a17db79f072",
      "new_mode": 33188,
      "new_path": "kernel/cgroup/cgroup.c"
    }
  ]
}
