]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.14.129/netfilter-nf_queue-fix-reinject-verdict-handling.patch
Linux 4.14.129
[thirdparty/kernel/stable-queue.git] / releases / 4.14.129 / netfilter-nf_queue-fix-reinject-verdict-handling.patch
CommitLineData
2a2a4ae2
SL
1From fe22dffe329d1a5a966331627ce94f9ed3411923 Mon Sep 17 00:00:00 2001
2From: Jagdish Motwani <jagdish.motwani@sophos.com>
3Date: Mon, 13 May 2019 23:47:40 +0530
4Subject: netfilter: nf_queue: fix reinject verdict handling
5
6[ Upstream commit 946c0d8e6ed43dae6527e878d0077c1e11015db0 ]
7
8This patch fixes netfilter hook traversal when there are more than 1 hooks
9returning NF_QUEUE verdict. When the first queue reinjects the packet,
10'nf_reinject' starts traversing hooks with a proper hook_index. However,
11if it again receives a NF_QUEUE verdict (by some other netfilter hook), it
12queues the packet with a wrong hook_index. So, when the second queue
13reinjects the packet, it re-executes hooks in between.
14
15Fixes: 960632ece694 ("netfilter: convert hook list to an array")
16Signed-off-by: Jagdish Motwani <jagdish.motwani@sophos.com>
17Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
18Signed-off-by: Sasha Levin <sashal@kernel.org>
19---
20 net/netfilter/nf_queue.c | 1 +
21 1 file changed, 1 insertion(+)
22
23diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
24index f7e21953b1de..8260b1e73bbd 100644
25--- a/net/netfilter/nf_queue.c
26+++ b/net/netfilter/nf_queue.c
27@@ -193,6 +193,7 @@ static unsigned int nf_iterate(struct sk_buff *skb,
28 repeat:
29 verdict = nf_hook_entry_hookfn(hook, skb, state);
30 if (verdict != NF_ACCEPT) {
31+ *index = i;
32 if (verdict != NF_REPEAT)
33 return verdict;
34 goto repeat;
35--
362.20.1
37