)]}'
{
  "commit": "c367ce5b31ffd4d958f3f6c5fe1c9e820dc9f526",
  "tree": "681b39042b7aec350b7e081d873331019d67048c",
  "parents": [
    "67499cd07ba93dc643ca5624b7dc947f0354ace2"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Wed Sep 02 13:03:13 2026 -1000"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Tue Sep 08 09:28:48 2026 -1000"
  },
  "message": "cgroup: Make the offline drain interruptible\n\ncgroup_subtree_control_write() and cgroup_type_write() drain dying csses\nfrom the subtree before re-applying control, so that a controller being\nre-enabled gets a fresh css instead of adopting one that is still dying. The\ndrain waits for offline_css() in TASK_UNINTERRUPTIBLE.\n\nSince 1dffd95575eb (\"cgroup: Defer kill_css_finish() in\ncgroup_apply_control_disable()\"), a disabled css offlines only after every\ntask that still pins it has finished exiting. The root cause of the hang is\nan indefinite wait in a place where indefinite waits should not happen: a\ntask past exit_signals() can block in its exit path for as long as, say, a\nFUSE daemon takes to answer a flush, and nothing can interrupt it because\nprepare_signal() drops every signal for an exiting group. The drain then\nescalated that into an uninterruptible wait for the writer, which sits in D\nstate for as long as the exiting task does. That is the hang syzbot reports\nas \"task hung in cgroup_subtree_control_write\".\n\nMake the drain interruptible. Nothing has been modified when it runs, so the\nwrite restarts or fails with EINTR without side effects. cgroup1 mount and\nremount drain the same way and become interruptible too.\ncgroup_destroy_root() drains from a workqueue where no signal is ever\npending and keeps waiting as before.\n\nThis only stops the escalation. The write still waits for the exiting tasks,\nand the indefinite wait in the exit path remains a separate problem.\n\nFixes: 1dffd95575eb (\"cgroup: Defer kill_css_finish() in cgroup_apply_control_disable()\")\nReported-by: syzbot+bb2e19a1190a556c01b1@syzkaller.appspotmail.com\nLink: https://lore.kernel.org/all/6a23a4b4.e4db5ad2.3b7dfb.0000.GAE@google.com/\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "58797123b752f38a801db6932c791ad6ca7cabb9",
      "old_mode": 33188,
      "old_path": "kernel/cgroup/cgroup-internal.h",
      "new_id": "f2684f9f8e0a3aa2f1c4979cba20b5d2dc655534",
      "new_mode": 33188,
      "new_path": "kernel/cgroup/cgroup-internal.h"
    },
    {
      "type": "modify",
      "old_id": "7e008867f3ac6272ac444a7da148d99b54908985",
      "old_mode": 33188,
      "old_path": "kernel/cgroup/cgroup-v1.c",
      "new_id": "167bf6555a49d95b91cc7fae9aa8c54015ac6234",
      "new_mode": 33188,
      "new_path": "kernel/cgroup/cgroup-v1.c"
    },
    {
      "type": "modify",
      "old_id": "d30816ee47ac6d54d1c62822aabdceb84559cb0a",
      "old_mode": 33188,
      "old_path": "kernel/cgroup/cgroup.c",
      "new_id": "ab9746056104088ee99405077466280ed1113113",
      "new_mode": 33188,
      "new_path": "kernel/cgroup/cgroup.c"
    }
  ]
}
