Blame SOURCES/CVE-2022-2588.patch

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