All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.