| To: | Jeff Garzik <jgarzik@xxxxxxxxx> |
|---|---|
| Subject: | Re: IPv6 oops on ifup in latest BK |
| From: | "David S. Miller" <davem@xxxxxxxxxx> |
| Date: | Mon, 23 Aug 2004 23:51:23 -0700 |
| Cc: | yoshfuji@xxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx |
| In-reply-to: | <412ADB20.5000901@xxxxxxxxx> |
| References: | <412ADB20.5000901@xxxxxxxxx> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
On Tue, 24 Aug 2004 02:07:28 -0400
Jeff Garzik <jgarzik@xxxxxxxxx> wrote:
> Attached minicom.cap.txt gives the ksymoops output and dmesg output.
> Appears to die in ipv6_get_hoplimit.
Yoshifuji-san, it is rt6i_dev changes. The problem is that
ipv6_get_hoplimit() gets called with NULL dev.
I believe it is an error in the logic for RTCF_REJECT
processing. If user does not specify a specific device
index, and this is RTCF_REJECT, then we will end up
with dev being NULL.
It is this piece of code in ip6_route_add():
if (dev && dev != &loopback_dev) {
It does not handle the case where dev == NULL correctly.
Original code did do the right thing:
if (dev)
dev_put(dev);
dev = &loopback_dev;
dev_hold(dev);
Maybe new code should be something like:
if (dev && dev != &loopback_dev) {
dev_put(dev);
in6_dev_put(idev);
}
dev = &loopback_dev;
dev_hold(dev);
idev = in6_dev_get(dev);
if (!idev) {
err = -ENODEV;
goto out;
}
What do you think?
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | IPv6 oops on ifup in latest BK, Jeff Garzik |
|---|---|
| Next by Date: | Re: IPv6 oops on ifup in latest BK, Herbert Xu |
| Previous by Thread: | IPv6 oops on ifup in latest BK, Jeff Garzik |
| Next by Thread: | Re: IPv6 oops on ifup in latest BK, Herbert Xu |
| Indexes: | [Date] [Thread] [Top] [All Lists] |