svn commit: r238990 - in head/sys: net netinet netinet6
Bjoern A. Zeeb
bzeeb-lists at lists.zabbadoz.net
Thu Aug 2 16:46:47 UTC 2012
On Thu, 2 Aug 2012, Gleb Smirnoff wrote:
> Author: glebius
> Date: Thu Aug 2 13:57:49 2012
> New Revision: 238990
> URL: http://svn.freebsd.org/changeset/base/238990
>
> Log:
> Fix races between in_lltable_prefix_free(), lla_lookup(),
> llentry_free() and arptimer():
>
> o Use callout_init_rw() for lle timeout, this allows us safely
> disestablish them.
> - This allows us to simplify the arptimer() and make it
> race safe.
> o Consistently use ifp->if_afdata_lock to lock access to
> linked lists in the lle hashes.
> o Introduce new lle flag LLE_LINKED, which marks an entry that
> is attached to the hash.
> - Use LLE_LINKED to avoid double unlinking via consequent
> calls to llentry_free().
> - Mark lle with LLE_DELETED via |= operation istead of =,
> so that other flags won't be lost.
> o Make LLE_ADDREF(), LLE_REMREF() and LLE_FREE_LOCKED() more
> consistent and provide more informative KASSERTs.
>
> The patch is a collaborative work of all submitters and myself.
Quoting from 2 year old memory you just introduced a possible deadlock
on tbale (or with that networkstack) teardown adding the extra af_data
write locking to the table walk.
--
Bjoern A. Zeeb You have to have visions!
Stop bit received. Insert coin for new address family.
More information about the svn-src-head
mailing list