mirror of https://gitee.com/openkylin/linux.git
[NETFILTER]: ip_queue/nfnetlink_queue: drop bridge port references when dev disappears
When a device that is acting as a bridge port is unregistered, the ip_queue/nfnetlink_queue notifier doesn't check if its one of physindev/physoutdev and doesn't release the references if it is. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1c7e47726a
commit
ef47c6a7b8
|
@ -457,11 +457,19 @@ dev_cmp(struct ipq_queue_entry *entry, unsigned long ifindex)
|
|||
if (entry->info->indev)
|
||||
if (entry->info->indev->ifindex == ifindex)
|
||||
return 1;
|
||||
|
||||
if (entry->info->outdev)
|
||||
if (entry->info->outdev->ifindex == ifindex)
|
||||
return 1;
|
||||
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
if (entry->skb->nf_bridge) {
|
||||
if (entry->skb->nf_bridge->physindev &&
|
||||
entry->skb->nf_bridge->physindev->ifindex == ifindex)
|
||||
return 1;
|
||||
if (entry->skb->nf_bridge->physoutdev &&
|
||||
entry->skb->nf_bridge->physoutdev->ifindex == ifindex)
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -680,11 +680,19 @@ dev_cmp(struct nfqnl_queue_entry *entry, unsigned long ifindex)
|
|||
if (entinf->indev)
|
||||
if (entinf->indev->ifindex == ifindex)
|
||||
return 1;
|
||||
|
||||
if (entinf->outdev)
|
||||
if (entinf->outdev->ifindex == ifindex)
|
||||
return 1;
|
||||
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
if (entry->skb->nf_bridge) {
|
||||
if (entry->skb->nf_bridge->physindev &&
|
||||
entry->skb->nf_bridge->physindev->ifindex == ifindex)
|
||||
return 1;
|
||||
if (entry->skb->nf_bridge->physoutdev &&
|
||||
entry->skb->nf_bridge->physoutdev->ifindex == ifindex)
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue