Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Nov 2012 10:23:56 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        Ian FREISLICH <ianf@clue.co.za>
Cc:        FreeBSD Net <freebsd-net@freebsd.org>, freebsd-current@freebsd.org
Subject:   Re: netisr panic?
Message-ID:  <CAJ-VmonGWFc3W528BJby_C%2B-J3B0Eb2D06GGLTajbgsHvHTfiA@mail.gmail.com>
In-Reply-To: <E1TZmtO-0000Xg-Cv@clue.co.za>
References:  <E1TZjzu-0000R1-HA@clue.co.za> <CAJ-Vmon_AJCcatduf7c70wpCvHYm=v8ytsUwfzBwf0u65r0FwA@mail.gmail.com> <E1TZmtO-0000Xg-Cv@clue.co.za>

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

Check what mtod() is doing.

mbuf.h:#define	mtod(m, t)	((t)((m)->m_data))

.. so if m->m_data is NULL, bam.

The question is why is m_data NULL here.  Someone mbuf cluey is going
to have to answer that. I don't know whether the MH_dat stuff is being
treated as valid but m_data isn't being updated, or something.


Adrian

On 17 November 2012 10:13, Ian FREISLICH <ianf@clue.co.za> wrote:
> Adrian Chadd wrote:
>> It's a NULL ponter deref. This is my line 484 in if_ethersubr.c:
>>
>>         eh = mtod(m, struct ether_header *);
>>
>>
>> .. if that's yours, see if eh is NULL?
>
> (kgdb) frame 7
> #7  0xffffffff8050f534 in ether_nh_input (m=0xfffffe012521e700)
>     at /usr/src/sys/net/if_ethersubr.c:484
> 484             eh = mtod(m, struct ether_header *);
> (kgdb) print eh
> No symbol "eh" in current context.
> (kgdb) print *m
> $2 = {m_hdr = {mh_next = 0x100000000000000, mh_nextpkt = 0x10000000000,
>     mh_data = 0x0, mh_len = 60, mh_flags = 4259842, mh_type = 0,
>     pad = "\000\000\000\000\000"}, M_dat = {MH = {MH_pkthdr = {
>         rcvif = 0xfffffe000a1c2000, header = 0xffffffff, len = 60, flowid = 0,
>         csum_flags = 3840, csum_data = 65535, tso_segsz = 0, PH_vt = {
>           vt_vtag = 4, vt_nrecs = 4}, tags = {slh_first = 0x3c000000}},
>       MH_dat = {MH_ext = {
>           ext_buf = 0x69e5498600000000 <Address 0x69e5498600000000 out of bounds>, ext_free = 0x10602, ext_arg1 = 0xc000000070000, ext_arg2 = 0x100,
>           ext_size = 2048, ref_cnt = 0xfffffe0125236d8c, ext_type = 6},
>         MH_databuf = "\000\000\000\000\206Iеi\002\006\001\000\000\000\000\000\000\000\a\000\000\000\f\000\000\001\000\000\000\000\000\000\000\b\000\000\000\000\000\000\214m#%\001юяя\006", '\0' <repeats 118 times>}},
>     M_databuf = "\000 \034\n\000юяяяяяя\000\000\000\000<\000\000\000\000\000\000\000\000\017\000\000яя\000\000\000\000\004\000\000\000\000\000\000\000\000<\000\000\000\000\000\000\000\000\206Iеi\002\006\001\000\000\000\000\000\000\000\a\000\000\000\f\000\000\001\000\000\000\000\000\000\000\b\000\000\000\000\000\000\214m#%\001юяя\006", '\0' <repeats 118 times>}}
>
>
> Ian
>
> --
> Ian Freislich
>
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonGWFc3W528BJby_C%2B-J3B0Eb2D06GGLTajbgsHvHTfiA>