5.3-BETA5 m_dup() question

Kip McAtee kmcatee at firetide.com
Thu Nov 11 20:09:25 PST 2004


Greetings-

I have a symptom where an mbuf is being allocated
and the (int *) ref_count is not a virtual address.
I have a few new instances of calls to m_dup() that might
be causing the problem downstream.

Could this be because the network is allocating from
a 'packet zone' and m_dup() is not?

#define EXT_PACKET      3       /* came out of Packet zone */

That is, given a multicast input packet like this:
mh_flags = 0x403
{MH_ext = {ext_buf = 0xc14c3000, ext_free = 0x0,
ext_args = 0x0, ext_size = 0x800, ref_cnt = 0xc14b5564,
ext_type = 0x3}

after a call to m_dup(), I have a canonical mbuf with
the MH_ext fields uninitialized.

Later mb_ctor_pack() is tripping over constructing a new packet
with a non-virtual address in ref_cnt.

Thanks-
Kip


More information about the freebsd-hackers mailing list