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