Re: [PATCH] RT: Checks for cmpxchg in get_task_struct_rcu()

Nick Piggin
2005-09-22T05:04:45Z

Daniel Walker wrote:

> +#else
> + raw_local_irq_disable();
> + oldusage = atomic_read(&t->usage);
> + if (oldusage == 0) {
> + raw_local_irq_enable();
> + return 0;
> + }

Isn't this still racy if another cpu drops the last reference
to task struct here? Or can't that happen?

When you said "disable preempt", I had some silly idea that this
function was only used in PREEMPT_RT mode, and that you would
simply disallow architectures without cmpxchg from configuring
PREEMPT_RT.

> + atomic_inc(&t->usage);
> + raw_local_irq_enable();
> +#endif

--
SUSE Labs, Novell Inc.

Send instant messages to your online friends http://au.messenger.yahoo.com