From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 03:04:41 +0000 Subject: [PATCH] rk3568 rt init --- kernel/include/linux/netfilter/x_tables.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/kernel/include/linux/netfilter/x_tables.h b/kernel/include/linux/netfilter/x_tables.h index 0ade4d1..3e21ce6 100644 --- a/kernel/include/linux/netfilter/x_tables.h +++ b/kernel/include/linux/netfilter/x_tables.h @@ -6,6 +6,7 @@ #include <linux/netdevice.h> #include <linux/static_key.h> #include <linux/netfilter.h> +#include <linux/locallock.h> #include <uapi/linux/netfilter/x_tables.h> /* Test a struct->invflags and a boolean for inequality */ @@ -345,6 +346,8 @@ */ DECLARE_PER_CPU(seqcount_t, xt_recseq); +DECLARE_LOCAL_IRQ_LOCK(xt_write_lock); + /* xt_tee_enabled - true if x_tables needs to handle reentrancy * * Enabled if current ip(6)tables ruleset has at least one -j TEE rule. @@ -364,6 +367,9 @@ static inline unsigned int xt_write_recseq_begin(void) { unsigned int addend; + + /* RT protection */ + local_lock(xt_write_lock); /* * Low order bit of sequence is set if we already @@ -395,6 +401,7 @@ /* this is kind of a write_seqcount_end(), but addend is 0 or 1 */ smp_wmb(); __this_cpu_add(xt_recseq.sequence, addend); + local_unlock(xt_write_lock); } /* -- Gitblit v1.6.2