This finds new owner when "current" is multi-threaded and
"current" called pthread_create(), right ?
This finds new owner when "current" is multi-threaded and
"current" is just a child (means it doesn't call pthread_create()) ?
Doing above in synchronized manner seems too heavy.
When this happen ? or Can this be done in lazy "on-demand" manner ?
+assign_new_owner:
+ rcu_read_unlock();
+ BUG_ON(c == p);
+ task_lock(c);
+ if (c->mm != mm) {
+ task_unlock(c);
+ goto retry;
+ }
+ cgroup_mm_owner_callbacks(mm->owner, c);
+ mm->owner = c;
+ task_unlock(c);
+}
Why rcu_read_unlock() before changing owner ? Is it safe ?
Thanks,
-Kame
--