All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Andrew Nelless <andrew@nelless.net>
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Jeff Garzik <jgarzik@pobox.com>
Subject: [patch] natsemi: fix oops, link back netdevice from private-struct
Date: Wed, 24 Oct 2007 13:58:57 +0200	[thread overview]
Message-ID: <20071024115857.GA21030@elte.hu> (raw)
In-Reply-To: <32892.86.7.220.119.1193222572.squirrel@wmbeta.mxes.net>


* Andrew Nelless <andrew@nelless.net> wrote:

> Hi,
> 
> I booted up 2.6.24-rc1 this morning [Real early over a brew ;-)] and 
> was having a problems with multiple ~5 second hangs on SATA/drive init 
> (Something to do with "EH" something-or-other and resets but I'll 
> email in separately about it later unless its fixed by the time I get 
> the chance).
> 
> Anyway, I went to fire up netconsole to get a decent log dump and hit 
> across the following nasty. Netconsole works fine in 2.6.23.1 with a 
> similar config and the same kernel parameters.
> 
> A shot of the screen is the only method I could come up with to 
> capture the log, I hope that is OK, it is pretty readable.
> 
> 
> The nasty: 
> http://andotnet.nfshost.com/linux/2.6.24-rc1-netconsole-nullderef.jpg


the NULL dereference is here:

 (gdb) list *0xffffffff804a9504
 0xffffffff804a9504 is in natsemi_poll (drivers/net/natsemi.c:717).
 712             return count;
 713     }
 714
 715     static inline void __iomem *ns_ioaddr(struct net_device *dev)
 716     {
 717             return (void __iomem *) dev->base_addr;
 718     }
 719

which is this code from natsemi.c:

 2227            struct net_device *dev = np->dev;
 2228            void __iomem * ioaddr = ns_ioaddr(dev);
 2229            int work_done = 0;

seems like the NAPI changes in -rc1 added an np->dev field but forgot to 
initialize it ...

does the patch below fix the oops for you?

	Ingo

-------------------->
Subject: natsemi: fix oops, link back netdevice from private-struct
From: Ingo Molnar <mingo@elte.hu>

this commit:

  commit bea3348eef27e6044b6161fd04c3152215f96411
  Author: Stephen Hemminger <shemminger@linux-foundation.org>
  Date:   Wed Oct 3 16:41:36 2007 -0700

      [NET]: Make NAPI polling independent of struct net_device objects.

added np->dev to drivers/net/natsemi.c's struct netdev_private, but
forgot to initialize that new field upon driver init. The result was
a predictable NULL dereference oops the first time the hardware
generated an interrupt.

Reported-by: Andrew Nelless <andrew@nelless.net>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 drivers/net/natsemi.c |    1 +
 1 file changed, 1 insertion(+)

Index: linux/drivers/net/natsemi.c
===================================================================
--- linux.orig/drivers/net/natsemi.c
+++ linux/drivers/net/natsemi.c
@@ -864,6 +864,7 @@ static int __devinit natsemi_probe1 (str
 
 	np = netdev_priv(dev);
 	netif_napi_add(dev, &np->napi, natsemi_poll, 64);
+	np->dev = dev;
 
 	np->pci_dev = pdev;
 	pci_set_drvdata(pdev, dev);

  reply	other threads:[~2007-10-24 11:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-24 10:42 2.6.24-rc1: NULL pointer dereference using netconsole Andrew Nelless
2007-10-24 11:58 ` Ingo Molnar [this message]
2007-10-24 17:37   ` [patch] natsemi: fix oops, link back netdevice from private-struct Andrew
2007-10-25  7:32   ` Jeff Garzik

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=20071024115857.GA21030@elte.hu \
    --to=mingo@elte.hu \
    --cc=andrew@nelless.net \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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.