@@ -5041,10 +5041,10 @@ static void css_free_rcu_fn(struct rcu_head *rcu_head)
5041
5041
queue_work (cgroup_destroy_wq , & css -> destroy_work );
5042
5042
}
5043
5043
5044
- static void css_release_work_fn (struct work_struct * work )
5044
+ static void css_release_work_fn (struct swork_event * sev )
5045
5045
{
5046
5046
struct cgroup_subsys_state * css =
5047
- container_of (work , struct cgroup_subsys_state , destroy_work );
5047
+ container_of (sev , struct cgroup_subsys_state , destroy_swork );
5048
5048
struct cgroup_subsys * ss = css -> ss ;
5049
5049
struct cgroup * cgrp = css -> cgroup ;
5050
5050
@@ -5087,8 +5087,8 @@ static void css_release(struct percpu_ref *ref)
5087
5087
struct cgroup_subsys_state * css =
5088
5088
container_of (ref , struct cgroup_subsys_state , refcnt );
5089
5089
5090
- INIT_WORK (& css -> destroy_work , css_release_work_fn );
5091
- queue_work ( cgroup_destroy_wq , & css -> destroy_work );
5090
+ INIT_SWORK (& css -> destroy_swork , css_release_work_fn );
5091
+ swork_queue ( & css -> destroy_swork );
5092
5092
}
5093
5093
5094
5094
static void init_and_link_css (struct cgroup_subsys_state * css ,
@@ -5749,6 +5749,7 @@ static int __init cgroup_wq_init(void)
5749
5749
*/
5750
5750
cgroup_destroy_wq = alloc_workqueue ("cgroup_destroy" , 0 , 1 );
5751
5751
BUG_ON (!cgroup_destroy_wq );
5752
+ BUG_ON (swork_get ());
5752
5753
5753
5754
/*
5754
5755
* Used to destroy pidlists and separate to serve as flush domain.
0 commit comments