Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 May 2009 11:42:38 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Martin <nakal@web.de>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: kernel trap 12 with interrupts disabled [bge0 on 7.2R]
Message-ID:  <200905151142.38933.jhb@freebsd.org>
In-Reply-To: <20090515173618.78cca743@zelda.local>
References:  <1696198956@web.de> <200905150815.19452.jhb@freebsd.org> <20090515173618.78cca743@zelda.local>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 15 May 2009 11:36:18 am Martin wrote:
> 
> Hi John,
> 
> one more thing that I noticed. It seems that the netmask passed to the
> procedure rt_maskedcopy is invalid. Cannot dereference the pointer.
> 
> I went one frame up and I've looked at the control flow of the parent
> routine rtrequest1_fib. This routine passes the netmask, but before it
> does that it went with req=11 (RTM_RESOLVE) through this piece of code:
> 
> /usr/src/sys/net/route.c:985
> 
> case RTM_RESOLVE:
>         if (ret_nrt == NULL || (rt = *ret_nrt) == NULL)
>                   senderr(EINVAL);
>         ifa = rt->rt_ifa;
>         /* XXX locking? */
>         flags = rt->rt_flags &
>                 ~(RTF_CLONING | RTF_STATIC);
>         flags |= RTF_WASCLONED;
>         gateway = rt->rt_gateway;
>         if ((netmask = rt->rt_genmask) == NULL)
>                 flags |= RTF_HOST;
>         goto makeroute;
> 
> Is this a locking problem?

A GPF on amd64 usually happens because the pointer has high bits corrupt (the 
high N bits on amd64 must be either all zeros or all ones).  In my experience 
those are all caused by hardware issues rather than races or bugs.

-- 
John Baldwin



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