Blame SOURCES/CVE-2022-2588.patch

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