summaryrefslogtreecommitdiffstats
path: root/sys/net/if_llatbl.c
diff options
context:
space:
mode:
authorkmacy <kmacy@FreeBSD.org>2012-01-26 20:02:40 +0000
committerkmacy <kmacy@FreeBSD.org>2012-01-26 20:02:40 +0000
commit8466f3ca886feafe17fd7d572669c98e463ce34d (patch)
tree98d66f731634129c7a5a13a96369ba4514ffbac8 /sys/net/if_llatbl.c
parent891dd313e70093cc92443c7fb6b047395b1310db (diff)
downloadFreeBSD-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.c1
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);
OpenPOWER on IntegriCloud