)]}'
{
  "commit": "d07c287582648cc00cfb8919145fed66adf15b2e",
  "tree": "bb7864996dc2b63c3309d64542240f551511e45a",
  "parents": [
    "a72f73c4dd9b209c53cf8b03b6e97fcefad4262c"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Sun Mar 22 17:55:31 2026 -1000"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Sun Mar 22 17:55:31 2026 -1000"
  },
  "message": "cgroup: Wait for dying tasks to leave on rmdir\n\na72f73c4dd9b (\"cgroup: Don\u0027t expose dead tasks in cgroup\") hid PF_EXITING\ntasks from cgroup.procs so that systemd doesn\u0027t see tasks that have already\nbeen reaped via waitpid(). However, the populated counter (nr_populated_csets)\nis only decremented when the task later passes through cgroup_task_dead() in\nfinish_task_switch(). This means cgroup.procs can appear empty while the\ncgroup is still populated, causing rmdir to fail with -EBUSY.\n\nFix this by making cgroup_rmdir() wait for dying tasks to fully leave. If the\ncgroup is populated but all remaining tasks have PF_EXITING set (the task\niterator returns none due to the existing filter), wait for a kick from\ncgroup_task_dead() and retry. The wait is brief as tasks are removed from the\ncgroup\u0027s css_set between PF_EXITING assertion in do_exit() and\ncgroup_task_dead() in finish_task_switch().\n\nFixes: a72f73c4dd9b (\"cgroup: Don\u0027t expose dead tasks in cgroup\")\nReported-by: kernel test robot \u003coliver.sang@intel.com\u003e\nCloses: https://lore.kernel.org/oe-lkp/202603222104.2c81684e-lkp@intel.com\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nCc: Bert Karwatzki \u003cspasswolf@web.de\u003e\nCc: Michal Koutny \u003cmkoutny@suse.com\u003e\nCc: cgroups@vger.kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bb92f5c169ca2dcfc9354623e34968f6449854b1",
      "old_mode": 33188,
      "old_path": "include/linux/cgroup-defs.h",
      "new_id": "7f87399938fa2bf8076966510e646e53f7ff2dc3",
      "new_mode": 33188,
      "new_path": "include/linux/cgroup-defs.h"
    },
    {
      "type": "modify",
      "old_id": "01fc2a93f3ef229cfb4d5038df9cd2b42ce57439",
      "old_mode": 33188,
      "old_path": "kernel/cgroup/cgroup.c",
      "new_id": "49c5622a1a63d42c0b1db289f139b770bcaf5b19",
      "new_mode": 33188,
      "new_path": "kernel/cgroup/cgroup.c"
    }
  ]
}
