Patch "ipv4: drop dst in multicast routing path" has been added to the 4.9-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ipv4: drop dst in multicast routing path

to the 4.9-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ipv4-drop-dst-in-multicast-routing-path.patch
and it can be found in the queue-4.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit cb6cb4190a053e60712d339a594e6c1261f597d9
Author: Lokesh Dhoundiyal <lokesh.dhoundiyal@xxxxxxxxxxxxxxxxxxx>
Date:   Thu May 5 14:00:17 2022 +1200

    ipv4: drop dst in multicast routing path
    
    [ Upstream commit 9e6c6d17d1d6a3f1515ce399f9a011629ec79aa0 ]
    
    kmemleak reports the following when routing multicast traffic over an
    ipsec tunnel.
    
    Kmemleak output:
    unreferenced object 0x8000000044bebb00 (size 256):
      comm "softirq", pid 0, jiffies 4294985356 (age 126.810s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 80 00 00 00 05 13 74 80  ..............t.
        80 00 00 00 04 9b bf f9 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000f83947e0>] __kmalloc+0x1e8/0x300
        [<00000000b7ed8dca>] metadata_dst_alloc+0x24/0x58
        [<0000000081d32c20>] __ipgre_rcv+0x100/0x2b8
        [<00000000824f6cf1>] gre_rcv+0x178/0x540
        [<00000000ccd4e162>] gre_rcv+0x7c/0xd8
        [<00000000c024b148>] ip_protocol_deliver_rcu+0x124/0x350
        [<000000006a483377>] ip_local_deliver_finish+0x54/0x68
        [<00000000d9271b3a>] ip_local_deliver+0x128/0x168
        [<00000000bd4968ae>] xfrm_trans_reinject+0xb8/0xf8
        [<0000000071672a19>] tasklet_action_common.isra.16+0xc4/0x1b0
        [<0000000062e9c336>] __do_softirq+0x1fc/0x3e0
        [<00000000013d7914>] irq_exit+0xc4/0xe0
        [<00000000a4d73e90>] plat_irq_dispatch+0x7c/0x108
        [<000000000751eb8e>] handle_int+0x16c/0x178
        [<000000001668023b>] _raw_spin_unlock_irqrestore+0x1c/0x28
    
    The metadata dst is leaked when ip_route_input_mc() updates the dst for
    the skb. Commit f38a9eb1f77b ("dst: Metadata destinations") correctly
    handled dropping the dst in ip_route_input_slow() but missed the
    multicast case which is handled by ip_route_input_mc(). Drop the dst in
    ip_route_input_mc() avoiding the leak.
    
    Fixes: f38a9eb1f77b ("dst: Metadata destinations")
    Signed-off-by: Lokesh Dhoundiyal <lokesh.dhoundiyal@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
    Reviewed-by: David Ahern <dsahern@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20220505020017.3111846-1-chris.packham@xxxxxxxxxxxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index f05b8d63dba3..624bdd74583b 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1606,6 +1606,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
 #endif
 	RT_CACHE_STAT_INC(in_slow_mc);
 
+	skb_dst_drop(skb);
 	skb_dst_set(skb, &rth->dst);
 	return 0;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux