Race condition in mb_free_ext()?

Kris Kennaway kris at obsecurity.org
Tue Mar 1 23:14:41 GMT 2005


On Tue, Mar 01, 2005 at 06:04:27PM -0500, Bosko Milekic wrote:

> This does not appear to explain the livelock.

alc and dwhite tracked it down to a missing volatile causing gcc to
mis-optimize the loop:

-               cnt = *(m->m_ext.ref_cnt);
+               cnt = *(volatile u_int *)(m->m_ext.ref_cnt);

I'm currently testing that.

Kris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20050301/8873daa7/attachment.bin


More information about the freebsd-net mailing list