Skip site navigation (1)Skip section navigation (2)
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>

next in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208230010.g7N0A3gm016148>