Hi Tejun, >> +/* Ditto for the can_fork/cancel_fork/reapply_fork callbacks. */ >> +static int need_canfork_callback __read_mostly; >> +static int need_cancelfork_callback __read_mostly; > > And given that the reason we have these masks is avoiding iteration in > relatively hot paths. Does cancelfork mask make sense? Do you still want me to remove it? I only added it because it made the callback code more consistent for cancel_fork and can_fork. >> +void cgroup_cancel_fork(struct task_struct *child, >> + void *ss_state[CGROUP_PREFORK_COUNT]) >> +{ >> + struct cgroup_subsys *ss; >> + int i; >> + >> + for_each_subsys_which(need_cancelfork_callback, ss, i) { >> + void *state = NULL; >> + >> + if (CGROUP_PREFORK_START <= i && i < CGROUP_PREFORK_END) >> + state = ss_state[i - CGROUP_PREFORK_START]; > > Maybe we want a helper callback which does > > if (CGROUP_PREFORK_START <= ssid && ssid < CGROUP_PREFORK_END) > return &ss_state[ssid - CGROUP_PREFORK_START]; > return NULL; What would be a nice name for it? I can't think of anything better than __get_ss_private() and __get_ss_privatep(). -- Aleksa Sarai (cyphar) www.cyphar.com -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html