Page fault in IFNET_WLOCK_ASSERT [if.c and pccbb.c]

Harsha inpcb.harsha at gmail.com
Sun Oct 18 06:28:38 UTC 2009


Hi Robert,

Apologies for not getting earlier.

On Mon, Oct 12, 2009 at 6:46 AM, Robert N. M. Watson
<rwatson at 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


More information about the freebsd-current mailing list