bridge - Fix dereference race
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 28 Mar 2018 22:09:18 +0000 (15:09 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 28 Mar 2018 22:09:18 +0000 (15:09 -0700)
commite41e076d091fb90698359ac301f3d37cfb13fdf9
treef79274539afb1599a22c3b906ff93009aecd157c
parent9f8970ab32f0ce1e8edb2b53c20d4d26fb88c147
bridge - Fix dereference race

* bri->bri_dead can be set asynchronously vs gc scans, catching a
  scan in the middle.

* Add a ref count, bri_refs, to be able to properly determine when
  we can kfree() the bri.  Before we kfree()'d it in the last chained
  netisr, but that had the above race.
sys/net/bridge/if_bridge.c
sys/net/bridge/if_bridgevar.h