Hello again!

In porting this SIS191 driver from freeBSD I'm stuck trying to fix a
kernel panic in pool_do_get:

panic: pool_do_get(mbpl: free list modified

trace:
panic()
pool_do_get()
pool_get()
m_gethdr()

What I don't understand is in my driver m_gethdr(M_DONTWAIT, M_DATA) is
called. Therefore pool_get should only get pool_get(&mbpool, 0).
So what is my driver doing wrong to produce this crash???
Could it be a hint that my driver is leaking memory?

What is also very funny is that this panic is very accurately
reproducible. When doing a scp (big packets ?!) to produce some traffic
it almost always panics exactly when handling the 80th interupt for rx
packets.

When doing ping (small packets ?!) it happens in the 256th packet,
therefore when the rx-ring is wrapping. But this may be yet another bug?

Any ideas or hints? I'm pretty lost in all this mbuf handling. The
manpage doesn't help me too much and looking at other drivers confuses
me even more, although they all look pretty similar in the rxeof()
functions.


Christopher

[demime 1.01d removed an attachment of type application/pgp-signature which had 
a name of signature.asc]

Reply via email to