--- x/net/bridge/netfilter/ebtables.c +++ y/net/bridge/netfilter/ebtables.c @@ -1160,9 +1160,19 @@ free_newinfo: static void __ebt_unregister_table(struct net *net, struct ebt_table *table) { + struct ebt_pernet *ebt_net = net_generic(net, ebt_pernet_id); + struct ebt_table *t = NULL; + mutex_lock(&ebt_mutex); - list_del(&table->list); + list_for_each_entry(t, &ebt_net->tables, list) { + if (t == table) { + list_del(&t->list); + break; + } + } mutex_unlock(&ebt_mutex); + if (t != table) + return; audit_log_nfcfg(table->name, AF_BRIDGE, table->private->nentries, AUDIT_XT_OP_UNREGISTER, GFP_KERNEL); EBT_ENTRY_ITERATE(table->private->entries, table->private->entries_size,