Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Oct 2009 23:28:38 -0700
From:      Harsha <inpcb.harsha@gmail.com>
To:        "Robert N. M. Watson" <rwatson@freebsd.org>
Cc:        freebsd-current@freebsd.org, net@freebsd.org
Subject:   Re: Page fault in IFNET_WLOCK_ASSERT [if.c and pccbb.c]
Message-ID:  <e1b1c5880910172328s6bc0c53ctc782b9993ffbdb00@mail.gmail.com>
In-Reply-To: <FE5F0845-B909-4B9B-A999-DAA7D8F4E56D@freebsd.org>
References:  <e1b1c5880910111226o65e0d1a9va975f4cd837271bb@mail.gmail.com> <alpine.BSF.2.00.0910112126050.48605@fledge.watson.org> <e1b1c5880910112138x1b46ff0eo39c10691a978c164@mail.gmail.com> <FE5F0845-B909-4B9B-A999-DAA7D8F4E56D@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Robert,

Apologies for not getting earlier.

On Mon, Oct 12, 2009 at 6:46 AM, Robert N. M. Watson
<rwatson@freebsd.org> wrote:
>
> Looks like a NULL pointer dereference, so perhaps a more traditional bug --
> could you convert ifindex_alloc_locked+0x71 to a line of code? You can do
> this using kgdb on the kernel symbols file, perhaps "l
> *ifindex_alloc_locked+0x71".
It is the for loop in ifindex_alloc_locked() function-
 for (idx = 1; idx <= V_if_index; idx++)

idx is a local variable, so I figured it is V_if_index is what is
causing the page fault. It does look like a NULL pointer reference - I
see that V_if_index comes from that  vnet instance's value and uses
the macro VNET_VNET_PTR() down the chain. Since the call chain is
coming from a new thread cbb_event_thread, I believe that this
thread's vnet context needs to be set using CURVNET_SET().

I'll try this tomorrow, but if think I'm not on the right track or
want me to try something else please let me know.

Many thanks,
Harsha



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