|
|
5f36dd |
From 9729284acf8441ad27c2c87d2d91e5faef742d98 Mon Sep 17 00:00:00 2001
|
|
|
5f36dd |
From: Julia Denham <jdenham@redhat.com>
|
|
|
5f36dd |
Date: Wed, 5 Oct 2022 09:14:27 -0400
|
|
|
5f36dd |
Subject: [KPATCH CVE-2022-2588] kpatch fixes for CVE-2022-2588
|
|
|
5f36dd |
|
|
|
5f36dd |
Kernels:
|
|
|
5f36dd |
3.10.0-1160.45.1.el7
|
|
|
5f36dd |
3.10.0-1160.62.1.el7
|
|
|
5f36dd |
3.10.0-1160.66.1.el7
|
|
|
5f36dd |
3.10.0-1160.71.1.el7
|
|
|
5f36dd |
3.10.0-1160.76.1.el7
|
|
|
5f36dd |
|
|
|
5f36dd |
|
|
|
5f36dd |
Kpatch-MR: https://gitlab.com/redhat/prdsc/rhel/src/kpatch/rhel-7/-/merge_requests/45
|
|
|
5f36dd |
Approved-by: Joe Lawrence (@joe.lawrence)
|
|
|
5f36dd |
Approved-by: Yannick Cote (@ycote1)
|
|
|
5f36dd |
Changes since last build:
|
|
|
5f36dd |
arches: x86_64 ppc64le
|
|
|
5f36dd |
cls_route.o: changed function: route4_change
|
|
|
5f36dd |
---------------------------
|
|
|
5f36dd |
|
|
|
5f36dd |
Modifications: none
|
|
|
5f36dd |
|
|
|
5f36dd |
commit 74eb26c74da4446e9b826103e61361531c6ca716
|
|
|
5f36dd |
Author: Davide Caratti <dcaratti@redhat.com>
|
|
|
5f36dd |
Date: Mon Aug 29 15:47:31 2022 +0200
|
|
|
5f36dd |
|
|
|
5f36dd |
net_sched: cls_route: remove from list when handle is 0
|
|
|
5f36dd |
|
|
|
5f36dd |
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2121809
|
|
|
5f36dd |
Upstream Status: net.git commit 9ad36309e271
|
|
|
5f36dd |
CVE: CVE-2022-2588
|
|
|
5f36dd |
Conflicts: None
|
|
|
5f36dd |
|
|
|
5f36dd |
commit 9ad36309e2719a884f946678e0296be10f0bb4c1
|
|
|
5f36dd |
Author: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
|
|
5f36dd |
Date: Tue Aug 9 14:05:18 2022 -0300
|
|
|
5f36dd |
|
|
|
5f36dd |
net_sched: cls_route: remove from list when handle is 0
|
|
|
5f36dd |
|
|
|
5f36dd |
When a route filter is replaced and the old filter has a 0 handle, the old
|
|
|
5f36dd |
one won't be removed from the hashtable, while it will still be freed.
|
|
|
5f36dd |
|
|
|
5f36dd |
The test was there since before commit 1109c00547fc ("net: sched: RCU
|
|
|
5f36dd |
cls_route"), when a new filter was not allocated when there was an old one.
|
|
|
5f36dd |
The old filter was reused and the reinserting would only be necessary if an
|
|
|
5f36dd |
old filter was replaced. That was still wrong for the same case where the
|
|
|
5f36dd |
old handle was 0.
|
|
|
5f36dd |
|
|
|
5f36dd |
Remove the old filter from the list independently from its handle value.
|
|
|
5f36dd |
|
|
|
5f36dd |
This fixes CVE-2022-2588, also reported as ZDI-CAN-17440.
|
|
|
5f36dd |
|
|
|
5f36dd |
Reported-by: Zhenpeng Lin <zplin@u.northwestern.edu>
|
|
|
5f36dd |
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
|
|
5f36dd |
Reviewed-by: Kamal Mostafa <kamal@canonical.com>
|
|
|
5f36dd |
Cc: <stable@vger.kernel.org>
|
|
|
5f36dd |
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
|
|
|
5f36dd |
Link: https://lore.kernel.org/r/20220809170518.164662-1-cascardo@canonical.com
|
|
|
5f36dd |
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
|
5f36dd |
|
|
|
5f36dd |
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
|
|
|
5f36dd |
|
|
|
5f36dd |
Signed-off-by: Julia Denham <jdenham@redhat.com>
|
|
|
5f36dd |
---
|
|
|
5f36dd |
net/sched/cls_route.c | 2 +-
|
|
|
5f36dd |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
5f36dd |
|
|
|
5f36dd |
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c
|
|
|
5f36dd |
index 2fed29fa504e..d97c5bcdfa43 100644
|
|
|
5f36dd |
--- a/net/sched/cls_route.c
|
|
|
5f36dd |
+++ b/net/sched/cls_route.c
|
|
|
5f36dd |
@@ -526,7 +526,7 @@ static int route4_change(struct net *net, struct sk_buff *in_skb,
|
|
|
5f36dd |
rcu_assign_pointer(f->next, f1);
|
|
|
5f36dd |
rcu_assign_pointer(*fp, f);
|
|
|
5f36dd |
|
|
|
5f36dd |
- if (fold && fold->handle && f->handle != fold->handle) {
|
|
|
5f36dd |
+ if (fold) {
|
|
|
5f36dd |
th = to_hash(fold->handle);
|
|
|
5f36dd |
h = from_hash(fold->handle >> 16);
|
|
|
5f36dd |
b = rtnl_dereference(head->table[th]);
|
|
|
5f36dd |
--
|
|
|
5f36dd |
2.37.3
|
|
|
5f36dd |
|
|
|
5f36dd |
|