Re: Thread flags modified without set_thread_flag() (non atomically)

Haavard Skinnemoen
2007-03-01T09:35:06Z

[trimming cc list since I'm only replying to the avr32 part]

On Wed, 28 Feb 2007 22:03:49 -0800
Andrew Morton <akpm@linux-foundation.org> wrote:

> On Mon, 26 Feb 2007 12:10:37 -0800 Mathieu Desnoyers <compudj@google.com> wrote:

> > avr32/kernel/ptrace.c: ti->flags |= _TIF_BREAKPOINT;
>
> No, I don't immediately see anything in the flush_old_exec() code path
> which tells us that nobody else can look up this thread_info (or be holding
> a ref to it) in this context.
>
>
> > avr32/kernel/ptrace.c: ti->flags |= TIF_SINGLE_STEP;
>
> heh. Haarvard, you got a bug.

Heh, yeah. That would indeed explain some strange gdb behaviour. It
will only trigger when single-stepping into an exception or interrupt
handler so thanks for pointing it out; I would have had a hard time
figuring it out on my own...

I don't think either of those need to be atomic though, since both of
them happen in monitor mode with interrupts disabled.

Haavard