[openwrt/openwrt] kernel: fix a race condition leading to a crash in hw flow offloading

LEDE Commits lede-commits at lists.infradead.org
Mon Feb 14 05:06:40 PST 2022


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/ebe0b2af65c27b96cd0db9533cb63feda5a581f6

commit ebe0b2af65c27b96cd0db9533cb63feda5a581f6
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Mon Feb 14 13:58:38 2022 +0100

    kernel: fix a race condition leading to a crash in hw flow offloading
    
    flowtable->net was initialized too late, and this could be triggered even
    without hardware offload support on the device
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch   | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index bda8d06b7c..23332534bb 100644
--- a/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-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,656 @@
+@@ -0,0 +1,657 @@
 +/*
 + * Copyright (C) 2018-2021 Felix Fietkau <nbd at nbd.name>
 + *
@@ -575,16 +575,17 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	}
 +
 +	table = &flowtable[!!(info->flags & XT_FLOWOFFLOAD_HW)];
++
++	net = read_pnet(&table->ft.net);
++	if (!net)
++		write_pnet(&table->ft.net, xt_net(par));
++
 +	if (flow_offload_add(&table->ft, flow) < 0)
 +		goto err_flow_add;
 +
 +	xt_flowoffload_check_device(table, devs[0]);
 +	xt_flowoffload_check_device(table, devs[1]);
 +
-+	net = read_pnet(&table->ft.net);
-+	if (!net)
-+		write_pnet(&table->ft.net, xt_net(par));
-+
 +	dst_release(route.tuple[dir].dst);
 +	dst_release(route.tuple[!dir].dst);
 +



More information about the lede-commits mailing list