[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