Re: [PATCH] devcgroup: avoid using cgroup_lock

Li Zefan
2009-03-13T01:54:20Z

>> @@ -426,11 +431,11 @@ static int devcgroup_access_write(struct cgroup *cgrp, struct cftype *cft,
>> const char *buffer)
>> {
>> int retval;
>> - if (!cgroup_lock_live_group(cgrp))
>
> Does it matter that we no longer check for cgroup_is_removed()?
>

No, this means in a rare case that the write handler is called when the cgroup
is dead, we still do the update work instead of returning ENODEV.

This is ok, since at that time, accessing cgroup and devcgroup is still valid,
but will have no effect since there is no task in this cgroup and the cgroup
will be destroyed soon.

>> - return -ENODEV;
>> +
>> + mutex_lock(&devcgroup_mutex);
>> retval = devcgroup_update_access(cgroup_to_devcgroup(cgrp),
>> cft->private, buffer);
>> - cgroup_unlock();
>> + mutex_unlock(&devcgroup_mutex);
>> return retval;
>> }