Messages in this thread | | | From | Nikita Danilov <> | Date | Wed, 7 Aug 2002 15:30:17 +0400 | Subject | Re: kernel thread exit race |
| |
Alan Cox writes: > On Wed, 2002-08-07 at 11:05, Nikita Danilov wrote: > > Ah I see, thank you and Russell. But this depends on no architecture > > ever accessing spinlock data after letting waiters to run, otherwise > > there still is (tiny) window for race at the end of complete() call, > > right? > > complete() as opposed to spinlocks/semaphores is defined to be safe to > free the object once the complete finishes
So, complete() is not-arch dependent because spinlocks are "good" in all architectures? complete() ends with spin_unlock_irqrestore() so it cannot be any better than spinlocks, until there is some hidden magic.
Let me clarify this. Suppose there is some obscure architecture that maintains in spinlocks some additional data for debugging. Then,
complete_and_exit()->complete()->spin_unlock_irqrestore()
"wakes up" thread on another CPU and proceeds to access spin-lock data (to check/update debugging information, for example), but by this time woken up thread manages to unload module and to un-map page containing spin-lock data.
>
Nikita. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |