Patch "ipmr: do not call mr_mfc_uses_dev() for unres entries" has been added to the 5.15-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

    ipmr: do not call mr_mfc_uses_dev() for unres entries

to the 5.15-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:
     ipmr-do-not-call-mr_mfc_uses_dev-for-unres-entries.patch
and it can be found in the queue-5.15 subdirectory.

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



commit 48afd9c18f5435770bf6c54e58c1b0959e51d5cc
Author: Eric Dumazet <edumazet@xxxxxxxxxx>
Date:   Tue Jan 21 18:12:41 2025 +0000

    ipmr: do not call mr_mfc_uses_dev() for unres entries
    
    [ Upstream commit 15a901361ec3fb1c393f91880e1cbf24ec0a88bd ]
    
    syzbot found that calling mr_mfc_uses_dev() for unres entries
    would crash [1], because c->mfc_un.res.minvif / c->mfc_un.res.maxvif
    alias to "struct sk_buff_head unresolved", which contain two pointers.
    
    This code never worked, lets remove it.
    
    [1]
    Unable to handle kernel paging request at virtual address ffff5fff2d536613
    KASAN: maybe wild-memory-access in range [0xfffefff96a9b3098-0xfffefff96a9b309f]
    Modules linked in:
    CPU: 1 UID: 0 PID: 7321 Comm: syz.0.16 Not tainted 6.13.0-rc7-syzkaller-g1950a0af2d55 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline]
     pc : mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334
     lr : mr_mfc_uses_dev net/ipv4/ipmr_base.c:289 [inline]
     lr : mr_table_dump+0x694/0x8b0 net/ipv4/ipmr_base.c:334
    Call trace:
      mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline] (P)
      mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334 (P)
      mr_rtm_dumproute+0x254/0x454 net/ipv4/ipmr_base.c:382
      ipmr_rtm_dumproute+0x248/0x4b4 net/ipv4/ipmr.c:2648
      rtnl_dump_all+0x2e4/0x4e8 net/core/rtnetlink.c:4327
      rtnl_dumpit+0x98/0x1d0 net/core/rtnetlink.c:6791
      netlink_dump+0x4f0/0xbc0 net/netlink/af_netlink.c:2317
      netlink_recvmsg+0x56c/0xe64 net/netlink/af_netlink.c:1973
      sock_recvmsg_nosec net/socket.c:1033 [inline]
      sock_recvmsg net/socket.c:1055 [inline]
      sock_read_iter+0x2d8/0x40c net/socket.c:1125
      new_sync_read fs/read_write.c:484 [inline]
      vfs_read+0x740/0x970 fs/read_write.c:565
      ksys_read+0x15c/0x26c fs/read_write.c:708
    
    Fixes: cb167893f41e ("net: Plumb support for filtering ipv4 and ipv6 multicast route dumps")
    Reported-by: syzbot+5cfae50c0e5f2c500013@xxxxxxxxxxxxxxxxxxxxxxxxx
    Closes: https://lore.kernel.org/netdev/678fe2d1.050a0220.15cac.00b3.GAE@xxxxxxxxxx/T/#u
    Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx>
    Reviewed-by: David Ahern <dsahern@xxxxxxxxxx>
    Link: https://patch.msgid.link/20250121181241.841212-1-edumazet@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/ipv4/ipmr_base.c b/net/ipv4/ipmr_base.c
index c45cb7cb57590..8b5b6f196cdc4 100644
--- a/net/ipv4/ipmr_base.c
+++ b/net/ipv4/ipmr_base.c
@@ -321,9 +321,6 @@ int mr_table_dump(struct mr_table *mrt, struct sk_buff *skb,
 	list_for_each_entry(mfc, &mrt->mfc_unres_queue, list) {
 		if (e < s_e)
 			goto next_entry2;
-		if (filter->dev &&
-		    !mr_mfc_uses_dev(mrt, mfc, filter->dev))
-			goto next_entry2;
 
 		err = fill(mrt, skb, NETLINK_CB(cb->skb).portid,
 			   cb->nlh->nlmsg_seq, mfc, RTM_NEWROUTE, flags);




[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