lkml.org 
[lkml]   [2015]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: Several races in "usbnet" module (kernel 4.1.x)
From
Date
On Wed, 2015-07-22 at 21:33 +0300, Eugene Shatokhin wrote:
> The following part is not necessary, I think. usbnet_bh() does not
> touch
> EVENT_NO_RUNTIME_PM bit explicitly and these bit operations are
> atomic
> w.r.t. each other.
>
> > + mpn |= !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags);
> > + /* in case the bh reset a flag */

Yes, they are atomic w.r.t. each other. And that limitation worries me.

I am considering architectures which do atomic operations with
spinlocks. And this code mixes another operation into it. Can
this happen?

CPU A CPU B

take lock
read old value
set value to 0
clear bit
write back changed value
release lock

Regards
Oliver




\
 
 \ /
  Last update: 2015-07-23 11:41    [W:0.191 / U:0.308 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site