Thread (25 messages) 25 messages, 4 authors, 2015-08-26

Re: Several races in "usbnet" module (kernel 4.1.x)

flat view

From: Oliver Neukum <oneukum@suse.com>
Date: 2015-07-27 10:00:46
Also in: lkml

On Fri, 2015-07-24 at 17:41 +0300, Eugene Shatokhin wrote:
23.07.2015 12:15, Oliver Neukum пишет:
 From what I see now in Documentation/atomic_ops.txt, stores to the 
properly aligned memory locations are in fact atomic.
They are, but again only with respect to each other.
So, I think, the situation you described above cannot happen for 
dev->flags, which is good. No need to address that in the patch. The 
race might be harmless after all.

If I understand the code correctly now, dev->flags is set to 0 in 
usbnet_stop() so that the worker function (usbnet_deferred_kevent) would
Yes, particularly not reschedule itself.
do nothing, should it start later. If so, how about adding memory 
barriers for all CPUs to see dev->flags is 0 before other things?
Taking a lock, as del_timer_sync() does, implies a memory barrier,
as does a work.

	Regards
		Oliver
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help