utrace-indirect branch

Ananth N Mavinakayanahalli ananth at in.ibm.com
Thu Oct 29 04:54:31 UTC 2009


On Wed, Oct 28, 2009 at 06:55:32PM -0700, Roland McGrath wrote:
> Please take a look at the patch below and tell me what you think.  This
> is the new(ish) utrace-indirect branch (not to be confused with what's
> now old/utrace-indirect).  I first made it a while ago, but I don't
> recall if I ever mentioned it.  This compiles and looks right, but I
> have not done any testing at all.
> 
> Unlike the old code that freaked upstream reviewers all the way out,
> this has very simple lifetime rules for struct utrace.  Once allocated,
> it lives until task_struct is freed.  The utrace_task_alloc() logic
> covers the only race (at first attach), and that seems pretty easy
> to understand and be confident in.

First glance, this looks much simpler and easier to understand compared
to the earlier rcu implementation.

...

> +	if (!utrace) {
> +		if (unlikely(!utrace_task_alloc(target)))
> +			return ERR_PTR(-ENOMEM);
> +		utrace = target->utrace;

		utrace = task_utrace_struct(target);

> +	}
> +
>  	engine = kmem_cache_alloc(utrace_engine_cachep, GFP_KERNEL);
>  	if (unlikely(!engine))
>  		return ERR_PTR(-ENOMEM);

Ananth




More information about the utrace-devel mailing list