Received: by oss.sgi.com id ; Mon, 19 Jun 2000 08:21:03 -0700 Received: from ppp0.ocs.com.au ([203.34.97.3]:15632 "HELO mail.ocs.com.au") by oss.sgi.com with SMTP id ; Mon, 19 Jun 2000 08:20:49 -0700 Received: (qmail 31641 invoked by uid 502); 19 Jun 2000 15:20:44 -0000 Received: (qmail 31628 invoked from network); 19 Jun 2000 15:20:42 -0000 Received: from ocs3.ocs-net (192.168.255.3) by mail.ocs.com.au with SMTP; 19 Jun 2000 15:20:42 -0000 X-Mailer: exmh version 2.1.1 10/15/1999 From: Keith Owens To: Andrew Morton cc: "netdev@oss.sgi.com" Subject: Re: modular net drivers In-reply-to: Your message of "Mon, 19 Jun 2000 23:54:30 +1000." <394E2616.C25F8376@uow.edu.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 20 Jun 2000 01:20:41 +1000 Message-ID: <4516.961428041@ocs3.ocs-net> Sender: owner-netdev@oss.sgi.com Precedence: bulk Return-Path: X-Orcpt: rfc822;netdev-outgoing On Mon, 19 Jun 2000 23:54:30 +1000, Andrew Morton wrote: >--- linux-2.4.0-test1-ac21/net/core/dev.c Mon Jun 19 16:47:54 2000 >+++ linux-akpm/net/core/dev.c Mon Jun 19 21:28:14 2000 >@@ -664,8 +665,13 @@ > * Call device private open method > */ > >- if (dev->open) >+ if (dev->open) { >+ if (dev->owner) >+ __MOD_INC_USE_COUNT(dev->owner); > ret = dev->open(dev); >+ if (ret != 0 && dev->owner) >+ __MOD_DEC_USE_COUNT(dev->owner); >+ } Racy. The module referred to by dev->owner might be in the middle of being unloaded. You need try_inc_mod_count() with a check on its result instead of __MOD_INC_USE_COUNT.