public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Hood <jdthood@mail.com>
To: linux-kernel@vger.kernel.org
Cc: jschlst@turbolinux.com, Andrew Morton <andrewm@uow.edu.au>,
	"Bryan K. Walton" <bryan@bryansweb.com>,
	Russell Coker <russell@coker.com.au>,
	dahinds@sourceforge.net, kuznet@ms2.inr.ac.ru,
	jgarzik@mandrakesoft.com
Subject: Re: [PATCH] to deal with bad dev->refcnt in unregister_netdevice()
Date: Mon, 12 Feb 2001 07:53:15 -0500	[thread overview]
Message-ID: <3A87DCBA.2C3D7305@mail.com> (raw)

This bug was fixed by "acme" in 2.4.1-ac10.  :)
The ipx driver now increments refcnt on NETDEV_UP to
match downing the interface on NETDEV_DOWN.

Thanks all.
Thomas


> Okay, I now know the cause of this problem.  It's a bug in
> the ipx driver.  (This also closes pcmcia-cs bug #126563.)
> 
> Through copious use of printk()s I was able to track down
> the point at which the dev->refcnt for my card was being
> erroneously decremented.  It was being erroneously decremented
> by "notifier_call_chain(&netdev_chain, NETDEV_DOWN, dev);"
> near the end of the "dev_close()" function in net/core/dev.c.
> This indicated that one of the registered notifiers
> was doing an improper "dev_put()".  I rmmod-ed the ipx module
> from my system and the problem magically disappeared.  The
> refcnt is no longer inappropriately decremented and there
> are no more inappropriate calls to netdev_finish_unregister()
> in the absence of a prior call to unregister_netdevice()
> (which is what resulted in the "Freeing alive device" messages).
> 
> Where is the bug?  It is in the ipx driver.  When I configure
> eth0 for ipx, the device gets added to the ipx driver's linked
> list of devices headed at "ipx_interfaces".  The ipx driver
> registers the following function to be notified of net events.
> It's clear that the ipx driver will do a __ipxitf_put (which
> decrements dev-refcnt and does a dev_put() on dev) every time
> eth0 is taken down with "ifconfig eth0 down"!  That would be
> okay, I guess, if the opposite were done on an "ifconfig eth0 up"
> but it isn't.  This needs to be fixed somehow.  I'll leave it
> up to the maintainers and other gurus to figure out how.  In
> the meantime I'll just avoid using ipx.
> 
> ---------------- net/ipx/af_ipx.c ---------------------------
> static int ipxitf_device_event(struct notifier_block *notifier,
>                                 unsigned long event, void *ptr)
> {
>         struct net_device *dev = ptr;
>         ipx_interface *i, *tmp;
> 
>         if (event != NETDEV_DOWN)
>                 return NOTIFY_DONE;
> 
>         spin_lock_bh(&ipx_interfaces_lock);
>         for (i = ipx_interfaces; i;) {
>                 tmp = i->if_next;
>                 if (i->if_dev == dev)
>                         __ipxitf_put(i);
>                 i = tmp;
> 
>         }
>         spin_unlock_bh(&ipx_interfaces_lock);
>         return NOTIFY_DONE;
> }
> --------------------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

             reply	other threads:[~2001-02-12 12:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-02-12 12:53 Thomas Hood [this message]
  -- strict thread matches above, loose matches on Subject: below --
2001-03-10  2:46 [PATCH] to deal with bad dev->refcnt in unregister_netdevice() Thomas Hood
     [not found] <20010214092251.D1144@e-trend.de>
     [not found] ` <3A8AA725.7446DEA0@ubishops.ca>
     [not found]   ` <20010214165758.L28359@e-trend.de>
     [not found]     ` <20010214122244.H7859@conectiva.com.br>
2001-02-15 21:13       ` Thomas Hood
2001-02-21 16:22       ` Thomas Hood
2001-02-12 18:56 Thomas Hood
2001-02-12 17:27 ` Arnaldo Carvalho de Melo
2001-02-10  6:01 Thomas Hood
2001-02-09  5:44 Thomas Hood
2001-02-08  0:46 Thomas Hood
2001-02-08 19:31 ` kuznet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3A87DCBA.2C3D7305@mail.com \
    --to=jdthood@mail.com \
    --cc=andrewm@uow.edu.au \
    --cc=bryan@bryansweb.com \
    --cc=dahinds@sourceforge.net \
    --cc=jgarzik@mandrakesoft.com \
    --cc=jschlst@turbolinux.com \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=russell@coker.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox