Re: [PATCH v4 3.0-rc2-tip 4/22] 4: Uprobes: register/unregister probes.

Peter Zijlstra
2011-06-15T17:38:22Z

On Tue, 2011-06-07 at 18:29 +0530, Srikar Dronamraju wrote:
> 1. Use mm->owner and walk thro the thread_group of mm->owner, siblings
> of mm->owner, siblings of parent of mm->owner. This should be
> good list to traverse. Not sure if this is an exhaustive
> enough list that all tasks that have a mm set to this mm_struct are
> walked through.

As per copy_process():

/*
* Thread groups must share signals as well, and detached threads
* can only be started up within the thread group.
*/
if ((clone_flags & CLONE_THREAD) && !(clone_flags & CLONE_SIGHAND))
return ERR_PTR(-EINVAL);

/*
* Shared signal handlers imply shared VM. By way of the above,
* thread groups also imply shared VM. Blocking this case allows
* for various simplifications in other code.
*/
if ((clone_flags & CLONE_SIGHAND) && !(clone_flags & CLONE_VM))
return ERR_PTR(-EINVAL);

CLONE_THREAD implies CLONE_VM, but not the other way around, we
therefore would be able to CLONE_VM and not be part of the primary
owner's thread group.

This is of course all terribly sad..