Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753749AbbG0KAq (ORCPT ); Mon, 27 Jul 2015 06:00:46 -0400 Received: from mx2.suse.de ([195.135.220.15]:36652 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753502AbbG0KAn (ORCPT ); Mon, 27 Jul 2015 06:00:43 -0400 Message-ID: <1437991239.32457.9.camel@suse.com> Subject: Re: Several races in "usbnet" module (kernel 4.1.x) From: Oliver Neukum To: Eugene Shatokhin Cc: LKML , linux-usb@vger.kernel.org, netdev@vger.kernel.org Date: Mon, 27 Jul 2015 12:00:39 +0200 In-Reply-To: <55B24EB6.5090907@rosalab.ru> References: <55AD3A41.2040100@rosalab.ru> <1437488529.3823.16.camel@suse.com> <55AFE210.7030104@rosalab.ru> <1437642952.4377.10.camel@suse.com> <55B24EB6.5090907@rosalab.ru> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.12.11 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1141 Lines: 32 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 -- 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/