Date: Thu, 22 Aug 2002 17:10:03 -0700 (PDT) From: Andrew Gallatin <gallatin@cs.duke.edu> To: freebsd-alpha@FreeBSD.org Subject: Re: alpha/41642: dhclient gives unaligned access on Alpha - causes kernel panic Message-ID: <200208230010.g7N0A3gm016148@freefall.freebsd.org>
index | next in thread | raw e-mail
The following reply was made to PR alpha/41642; it has been noted by GNATS.
From: Andrew Gallatin <gallatin@cs.duke.edu>
To: "Rob B" <rbyrnes@ozemail.com.au>
Cc: freebsd-gnats-submit@FreeBSD.ORG
Subject: Re: alpha/41642: dhclient gives unaligned access on Alpha - causes kernel panic
Date: Thu, 22 Aug 2002 20:07:18 -0400 (EDT)
Rob B writes:
> > Do 'nm -n /kernel' and look for the area near 0xfffffc0000610940
> >
>
> aylee# nm -n /kernel | more
> <snip>
> fffffc00006108a0 T swi_null
> fffffc00006108c0 T swi_generic
> fffffc0000610900 t swi_net
> fffffc0000610980 T do_sir
> fffffc0000610ac0 T setdelayed
> fffffc0000610b00 T setsofttty
> fffffc0000610b40 T setsoftnet
>
OK, this agees with my guess -- the arpintr netisr is not initialized.
Peter fixed this in -current. Can you please try the appended patch
and see if it solves the problem?
Thanks,
Drew
Index: netinet/if_ether.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/if_ether.c,v
retrieving revision 1.64.2.19
diff -u -r1.64.2.19 if_ether.c
--- netinet/if_ether.c 18 Jun 2002 00:15:31 -0000 1.64.2.19
+++ netinet/if_ether.c 23 Aug 2002 00:00:26 -0000
@@ -102,7 +102,7 @@
static LIST_HEAD(, llinfo_arp) llinfo_arp;
struct ifqueue arpintrq = {0, 0, 0, 50};
-static int arp_inuse, arp_allocated;
+static int arp_inuse, arp_allocated, arpinit_done;
static int arp_maxtries = 5;
static int useloopback = 1; /* use loopback interface for local traffic */
@@ -167,13 +167,10 @@
register struct sockaddr *gate = rt->rt_gateway;
register struct llinfo_arp *la = (struct llinfo_arp *)rt->rt_llinfo;
static struct sockaddr_dl null_sdl = {sizeof(null_sdl), AF_LINK};
- static int arpinit_done;
if (!arpinit_done) {
arpinit_done = 1;
- LIST_INIT(&llinfo_arp);
timeout(arptimer, (caddr_t)0, hz);
- register_netisr(NETISR_ARP, arpintr);
}
if (rt->rt_flags & RTF_GATEWAY)
return;
@@ -912,3 +909,12 @@
ifa->ifa_rtrequest = arp_rtrequest;
ifa->ifa_flags |= RTF_CLONING;
}
+
+static void
+arp_init(void)
+{
+ LIST_INIT(&llinfo_arp);
+ register_netisr(NETISR_ARP, arpintr);
+}
+
+SYSINIT(arp, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, arp_init, 0);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208230010.g7N0A3gm016148>
