From: Greg Kroah-Hartman Date: Wed, 20 Sep 2023 11:08:34 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v5.10.196~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ba20e897573a78a08ec7ecff9cf7c36d7bcbdb9;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: net-sched-cls_fw-no-longer-copy-tcf_result-on-update-to-avoid-use-after-free.patch --- diff --git a/queue-4.19/net-sched-cls_fw-no-longer-copy-tcf_result-on-update-to-avoid-use-after-free.patch b/queue-4.19/net-sched-cls_fw-no-longer-copy-tcf_result-on-update-to-avoid-use-after-free.patch new file mode 100644 index 00000000000..1f08525db3a --- /dev/null +++ b/queue-4.19/net-sched-cls_fw-no-longer-copy-tcf_result-on-update-to-avoid-use-after-free.patch @@ -0,0 +1,47 @@ +From 76e42ae831991c828cffa8c37736ebfb831ad5ec Mon Sep 17 00:00:00 2001 +From: valis +Date: Sat, 29 Jul 2023 08:32:01 -0400 +Subject: net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after-free + +From: valis + +commit 76e42ae831991c828cffa8c37736ebfb831ad5ec upstream. + +When fw_change() is called on an existing filter, the whole +tcf_result struct is always copied into the new instance of the filter. + +This causes a problem when updating a filter bound to a class, +as tcf_unbind_filter() is always called on the old instance in the +success path, decreasing filter_cnt of the still referenced class +and allowing it to be deleted, leading to a use-after-free. + +Fix this by no longer copying the tcf_result struct from the old filter. + +Fixes: e35a8ee5993b ("net: sched: fw use RCU") +Reported-by: valis +Reported-by: Bing-Jhong Billy Jheng +Signed-off-by: valis +Signed-off-by: Jamal Hadi Salim +Reviewed-by: Victor Nogueira +Reviewed-by: Pedro Tammela +Reviewed-by: M A Ramdhan +Link: https://lore.kernel.org/r/20230729123202.72406-3-jhs@mojatatu.com +Signed-off-by: Jakub Kicinski +[ Fixed small conflict as 'fnew->ifindex' assignment is not protected by + CONFIG_NET_CLS_IND on upstream since a51486266c3 ] +Signed-off-by: Luiz Capitulino +Signed-off-by: Greg Kroah-Hartman +--- + net/sched/cls_fw.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/net/sched/cls_fw.c ++++ b/net/sched/cls_fw.c +@@ -277,7 +277,6 @@ static int fw_change(struct net *net, st + return -ENOBUFS; + + fnew->id = f->id; +- fnew->res = f->res; + #ifdef CONFIG_NET_CLS_IND + fnew->ifindex = f->ifindex; + #endif /* CONFIG_NET_CLS_IND */ diff --git a/queue-4.19/series b/queue-4.19/series index 1f4d215f4d1..dd0181229d9 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -269,3 +269,4 @@ attr-block-mode-changes-of-symlinks.patch btrfs-fix-lockdep-splat-and-potential-deadlock-after-failure-running-delayed-items.patch nfsd-fix-change_info-in-nfsv4-rename-replies.patch mtd-rawnand-brcmnand-fix-ecc-level-field-setting-for-v7.2-controller.patch +net-sched-cls_fw-no-longer-copy-tcf_result-on-update-to-avoid-use-after-free.patch