Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: crash in in6_cksum



>> In Message <080226083754.M0226599%mirage.ceres.dti.ne.jp@localhost>
 at Tue, 26 Feb 2008 08:37:54 +0900
 Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost> wrote:

 > plunky%rya-online.net@localhost wrote:
 > 
 > > Another suggestion might be which hardware are you using?  If it was the
 > > interface driver that was creating the packet bad in the first place, that
 > > might explain why some people see this and some do not..
 > 
 > I also see the same panic with re(4) on i386 and I'm using
 > in6_cksum.c rev 1.22. (though I don't use ipv6)

In my case, I use ath(4) at cardbus and wm(4) at pci on i386.

A bunch of KASSERTs reveal the assertion fails at the second
KASSERT in the following piece of code, which begins with the 
line 346 in revision 1.113.
# In my kernel, I set PFIL_HOOKS and FAST_IPSEC.
-------------------------------------------------------------------------
#ifdef PFIL_HOOKS
        /*
         * Run through list of hooks for input packets.  If there are any
         * filters which require that additional packets in the flow are
         * not fast-forwarded, they must clear the M_CANFASTFWD flag.
         * Note that filters must _never_ set this flag, as another filter
         * in the list may have previously cleared it.
         */
        /*
         * let ipfilter look at packet on the wire,
         * not the decapsulated packet.
         */
KASSERT(m->m_len >= sizeof(struct ip6_hdr));
#ifdef IPSEC
        if (!ipsec_getnhist(m))
#elif defined(FAST_IPSEC)
        if (!ipsec_indone(m))
#else
        if (1)
#endif
        {
                struct in6_addr odst;

                odst = ip6->ip6_dst;
                if (pfil_run_hooks(&inet6_pfil_hook, &m, m->m_pkthdr.rcvif,
                                   PFIL_IN) != 0)
                        return;
                if (m == NULL)
                        return;
                ip6 = mtod(m, struct ip6_hdr *);
                srcrt = !IN6_ARE_ADDR_EQUAL(&odst, &ip6->ip6_dst);
        }
KASSERT(m->m_len >= sizeof(struct ip6_hdr));
#endif /* PFIL_HOOKS */
-------------------------------------------------------------------------

HTH.

Tacha


Home | Main Index | Thread Index | Old Index