diff options
author | kmacy <kmacy@FreeBSD.org> | 2012-01-26 20:02:40 +0000 |
---|---|---|
committer | kmacy <kmacy@FreeBSD.org> | 2012-01-26 20:02:40 +0000 |
commit | 8466f3ca886feafe17fd7d572669c98e463ce34d (patch) | |
tree | 98d66f731634129c7a5a13a96369ba4514ffbac8 /sys/net/if_llatbl.c | |
parent | 891dd313e70093cc92443c7fb6b047395b1310db (diff) | |
download | FreeBSD-src-8466f3ca886feafe17fd7d572669c98e463ce34d.zip FreeBSD-src-8466f3ca886feafe17fd7d572669c98e463ce34d.tar.gz |
A flowtable entry can continue referencing an llentry indefinitely if the entry is repeatedly
referenced within its timeout window. This change clears the LLE_VALID flag when an llentry
is removed from an interface's hash table and adds an extra check to the flowtable code
for the LLE_VALID flag in llentry to avoid retaining and using a stale reference.
Reviewed by: qingli@
MFC after: 2 weeks
Diffstat (limited to 'sys/net/if_llatbl.c')
-rw-r--r-- | sys/net/if_llatbl.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/net/if_llatbl.c b/sys/net/if_llatbl.c index 559a174..8092f0f 100644 --- a/sys/net/if_llatbl.c +++ b/sys/net/if_llatbl.c @@ -122,6 +122,7 @@ llentry_free(struct llentry *lle) ("%s: la_numheld %d > 0, pkts_droped %zd", __func__, lle->la_numheld, pkts_dropped)); + lle->la_flags &= ~LLE_VALID; LLE_FREE_LOCKED(lle); return (pkts_dropped); |