kernel: fix crash in flow offload when removing net devices
authorFelix Fietkau <nbd@nbd.name>
Fri, 23 Mar 2018 19:09:23 +0000 (20:09 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 23 Mar 2018 19:56:34 +0000 (20:56 +0100)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch

index 5c40961c37b941c56dd969aaf4b655e1e5a35afc..85826b87065ce3fb4eab52dde786fbd8c3f2d940 100644 (file)
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@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@nbd.name>
 + *
@@ -121,6 +121,7 @@ Signed-off-by: Felix Fietkau <nbd@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@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@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;