[openwrt/openwrt] kernel: fix crash in flow offload when removing net devices

LEDE Commits lede-commits at lists.infradead.org
Fri Mar 23 12:57:01 PDT 2018


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/db108cdf14129698cb0740efe72f37f816d40267

commit db108cdf14129698cb0740efe72f37f816d40267
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Fri Mar 23 20:09:23 2018 +0100

    kernel: fix crash in flow offload when removing net devices
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch   | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch b/target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch
index 5c40961..85826b8 100644
--- a/target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch
+++ b/target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
 --- /dev/null
 +++ b/net/netfilter/xt_FLOWOFFLOAD.c
-@@ -0,0 +1,338 @@
+@@ -0,0 +1,340 @@
 +/*
 + * Copyright (C) 2018 Felix Fietkau <nbd at nbd.name>
 + *
@@ -121,6 +121,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +struct xt_flowoffload_hook {
 +	struct hlist_node list;
 +	struct nf_hook_ops ops;
++	struct net *net;
 +	bool registered;
 +	bool used;
 +};
@@ -201,8 +202,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +			continue;
 +
 +		hook->registered = true;
++		hook->net = dev_net(hook->ops.dev);
 +		spin_unlock_bh(&hooks_lock);
-+		nf_register_net_hook(dev_net(hook->ops.dev), &hook->ops);
++		nf_register_net_hook(hook->net, &hook->ops);
 +		spin_lock_bh(&hooks_lock);
 +		goto restart;
 +	}
@@ -221,7 +223,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +
 +		hlist_del(&hook->list);
 +		spin_unlock_bh(&hooks_lock);
-+		nf_unregister_net_hook(dev_net(hook->ops.dev), &hook->ops);
++		nf_unregister_net_hook(hook->net, &hook->ops);
 +		kfree(hook);
 +		spin_lock_bh(&hooks_lock);
 +		goto restart;



More information about the lede-commits mailing list