[PATCH] ARM: Fix a race in the vfp_notifier() function on SMPsystems
Dirk Behme
dirk.behme at googlemail.com
Sat Dec 19 03:20:44 EST 2009
On 18.12.2009 15:53, Russell King - ARM Linux wrote:
> On Fri, Dec 18, 2009 at 02:51:41PM +0000, Catalin Marinas wrote:
>> On Fri, 2009-12-18 at 14:47 +0000, Russell King - ARM Linux wrote:
>>> Actually, I think we should go further and kill off THREAD_NOTIFY_RELEASE
>>> completely. Added a few more people because EP93xx and PXA (well,
>>> Xscale) is now impacted by this change.
>>>
>>> [PATCH] ARM: Convert VFP/Crunch/XscaleCP thread_release() to exit_thread()
>>>
>>> This avoids races in the VFP code where the dead thread may have
>>> state on another CPU. By moving this code to exit_thread(), we
>>> will be running as the thread, and therefore be running on the
>>> current CPU.
>>>
>>> This means that we can ensure that the only local state is accessed
>>> in the thread notifiers.
>>>
>>> Signed-off-by: Russell King<rmk+kernel at arm.linux.org.uk>
>> [...]
>>> static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
>>> {
>>> @@ -132,8 +135,8 @@ static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
>>>
>>> if (cmd == THREAD_NOTIFY_FLUSH)
>>> vfp_thread_flush(thread);
>>> - else
>>> - vfp_thread_release(thread);
>>> + else if (cmd == THREAD_NOTIFY_EXIT)
>>> + vfp_thread_exit(thread);
>>
>> Do we still need the second "if" or "else" will do (though it's safer if
>> anyone adds some extra THREAD_NOTIFY_* in the future.
>
> The previous patch iteration did need it, but this done doesn't. Killed.
Sorry if I missed something, but any hint where to find the latest
version of the patch for testing?
Many thanks and best regards
Dirk
More information about the linux-arm-kernel
mailing list