hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/kernel/cgroup/cgroup.c
....@@ -4927,10 +4927,10 @@
49274927 }
49284928 }
49294929
4930
-static void css_release_work_fn(struct work_struct *work)
4930
+static void css_release_work_fn(struct swork_event *sev)
49314931 {
49324932 struct cgroup_subsys_state *css =
4933
- container_of(work, struct cgroup_subsys_state, destroy_work);
4933
+ container_of(sev, struct cgroup_subsys_state, destroy_swork);
49344934 struct cgroup_subsys *ss = css->ss;
49354935 struct cgroup *cgrp = css->cgroup;
49364936
....@@ -4992,8 +4992,8 @@
49924992 struct cgroup_subsys_state *css =
49934993 container_of(ref, struct cgroup_subsys_state, refcnt);
49944994
4995
- INIT_WORK(&css->destroy_work, css_release_work_fn);
4996
- queue_work(cgroup_destroy_wq, &css->destroy_work);
4995
+ INIT_SWORK(&css->destroy_swork, css_release_work_fn);
4996
+ swork_queue(&css->destroy_swork);
49974997 }
49984998
49994999 static void init_and_link_css(struct cgroup_subsys_state *css,
....@@ -5751,6 +5751,7 @@
57515751 */
57525752 cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1);
57535753 BUG_ON(!cgroup_destroy_wq);
5754
+ BUG_ON(swork_get());
57545755 return 0;
57555756 }
57565757 core_initcall(cgroup_wq_init);