aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter/nf_flow_table_core.c
diff options
context:
space:
mode:
authorPaul Blakey <paulb@mellanox.com>2020-01-30 18:04:36 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2020-01-31 19:31:41 +0100
commit0f34f30a1be80f3f59efeaab596396bc698e7337 (patch)
tree063c1dbcf9bc151bb47a85c45dc5b9af67be7ff1 /net/netfilter/nf_flow_table_core.c
parentnetfilter: flowtable: Fix hardware flush order on nf_flow_table_cleanup (diff)
downloadlinux-dev-0f34f30a1be80f3f59efeaab596396bc698e7337.tar.xz
linux-dev-0f34f30a1be80f3f59efeaab596396bc698e7337.zip
netfilter: flowtable: Fix missing flush hardware on table free
If entries exist when freeing a hardware offload enabled table, we queue work for hardware while running the gc iteration. Execute it (flush) after queueing. Fixes: c29f74e0df7a ("netfilter: nf_flow_table: hardware offload support") Signed-off-by: Paul Blakey <paulb@mellanox.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to '')
-rw-r--r--net/netfilter/nf_flow_table_core.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/netfilter/nf_flow_table_core.c b/net/netfilter/nf_flow_table_core.c
index 14a069c72bb2..8af28e10b4e6 100644
--- a/net/netfilter/nf_flow_table_core.c
+++ b/net/netfilter/nf_flow_table_core.c
@@ -553,6 +553,7 @@ void nf_flow_table_free(struct nf_flowtable *flow_table)
cancel_delayed_work_sync(&flow_table->gc_work);
nf_flow_table_iterate(flow_table, nf_flow_table_do_cleanup, NULL);
nf_flow_table_iterate(flow_table, nf_flow_offload_gc_step, flow_table);
+ nf_flow_table_offload_flush(flow_table);
rhashtable_destroy(&flow_table->rhashtable);
}
EXPORT_SYMBOL_GPL(nf_flow_table_free);