Browse Source

kernel: fix crash in flow offload when removing net devices

Signed-off-by: Felix Fietkau <[email protected]>
Felix Fietkau 7 years ago
parent
commit
db108cdf14

+ 5 - 3
target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch

@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  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 <[email protected]>
 + *
@@ -121,6 +121,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 +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 <[email protected]>
 +			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 <[email protected]>
 +
 +		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;