]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Mar 2025 14:55:02 +0000 (15:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Mar 2025 14:55:02 +0000 (15:55 +0100)
added patches:
net-ipv6-fix-dst-refleaks-in-rpl-seg6-and-ioam6-lwtunnels.patch

queue-5.10/net-ipv6-fix-dst-refleaks-in-rpl-seg6-and-ioam6-lwtunnels.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/net-ipv6-fix-dst-refleaks-in-rpl-seg6-and-ioam6-lwtunnels.patch b/queue-5.10/net-ipv6-fix-dst-refleaks-in-rpl-seg6-and-ioam6-lwtunnels.patch
new file mode 100644 (file)
index 0000000..228fb94
--- /dev/null
@@ -0,0 +1,75 @@
+From c71a192976ded2f2f416d03c4f595cdd4478b825 Mon Sep 17 00:00:00 2001
+From: Jakub Kicinski <kuba@kernel.org>
+Date: Wed, 29 Jan 2025 19:15:18 -0800
+Subject: net: ipv6: fix dst refleaks in rpl, seg6 and ioam6 lwtunnels
+
+From: Jakub Kicinski <kuba@kernel.org>
+
+commit c71a192976ded2f2f416d03c4f595cdd4478b825 upstream.
+
+dst_cache_get() gives us a reference, we need to release it.
+
+Discovered by the ioam6.sh test, kmemleak was recently fixed
+to catch per-cpu memory leaks.
+
+Fixes: 985ec6f5e623 ("net: ipv6: rpl_iptunnel: mitigate 2-realloc issue")
+Fixes: 40475b63761a ("net: ipv6: seg6_iptunnel: mitigate 2-realloc issue")
+Fixes: dce525185bc9 ("net: ipv6: ioam6_iptunnel: mitigate 2-realloc issue")
+Reviewed-by: Justin Iurman <justin.iurman@uliege.be>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Link: https://patch.msgid.link/20250130031519.2716843-1-kuba@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/ipv6/rpl_iptunnel.c  |    6 ++++--
+ net/ipv6/seg6_iptunnel.c |    2 +-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+--- a/net/ipv6/rpl_iptunnel.c
++++ b/net/ipv6/rpl_iptunnel.c
+@@ -232,7 +232,6 @@ static int rpl_output(struct net *net, s
+               dst = ip6_route_output(net, NULL, &fl6);
+               if (dst->error) {
+                       err = dst->error;
+-                      dst_release(dst);
+                       goto drop;
+               }
+@@ -251,6 +250,7 @@ static int rpl_output(struct net *net, s
+       return dst_output(net, sk, skb);
+ drop:
++      dst_release(dst);
+       kfree_skb(skb);
+       return err;
+ }
+@@ -277,8 +277,10 @@ static int rpl_input(struct sk_buff *skb
+       local_bh_enable();
+       err = rpl_do_srh(skb, rlwt, dst);
+-      if (unlikely(err))
++      if (unlikely(err)) {
++              dst_release(dst);
+               goto drop;
++      }
+       skb_dst_drop(skb);
+--- a/net/ipv6/seg6_iptunnel.c
++++ b/net/ipv6/seg6_iptunnel.c
+@@ -380,7 +380,6 @@ static int seg6_output(struct net *net,
+               dst = ip6_route_output(net, NULL, &fl6);
+               if (dst->error) {
+                       err = dst->error;
+-                      dst_release(dst);
+                       goto drop;
+               }
+@@ -398,6 +397,7 @@ static int seg6_output(struct net *net,
+       return dst_output(net, sk, skb);
+ drop:
++      dst_release(dst);
+       kfree_skb(skb);
+       return err;
+ }
index 1d20c47333408a78ac99ad11a796ae370b786184..0574a0c12d59e96b5b8f8b2c25a4ec02fa920f7d 100644 (file)
@@ -459,3 +459,4 @@ btrfs-bring-back-the-incorrectly-removed-extent-buffer-lock-recursion-support.pa
 usb-xhci-enable-the-trb-overfetch-quirk-on-via-vl805.patch
 perf-cs-etm-add-missing-variable-in-cs_etm__process_queues.patch
 udf-fix-use-of-check_add_overflow-with-mixed-type-arguments.patch
+net-ipv6-fix-dst-refleaks-in-rpl-seg6-and-ioam6-lwtunnels.patch