Patch "net_sched: cls_flow: validate TCA_FLOW_RSHIFT attribute" has been added to the 6.12-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

    net_sched: cls_flow: validate TCA_FLOW_RSHIFT attribute

to the 6.12-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:
     net_sched-cls_flow-validate-tca_flow_rshift-attribut.patch
and it can be found in the queue-6.12 subdirectory.

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



commit 90f0d79e2aa907b5f499881e4fa13fe7efb8744f
Author: Eric Dumazet <edumazet@xxxxxxxxxx>
Date:   Fri Jan 3 10:45:46 2025 +0000

    net_sched: cls_flow: validate TCA_FLOW_RSHIFT attribute
    
    [ Upstream commit a039e54397c6a75b713b9ce7894a62e06956aa92 ]
    
    syzbot found that TCA_FLOW_RSHIFT attribute was not validated.
    Right shitfing a 32bit integer is undefined for large shift values.
    
    UBSAN: shift-out-of-bounds in net/sched/cls_flow.c:329:23
    shift exponent 9445 is too large for 32-bit type 'u32' (aka 'unsigned int')
    CPU: 1 UID: 0 PID: 54 Comm: kworker/u8:3 Not tainted 6.13.0-rc3-syzkaller-00180-g4f619d518db9 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Workqueue: ipv6_addrconf addrconf_dad_work
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      ubsan_epilogue lib/ubsan.c:231 [inline]
      __ubsan_handle_shift_out_of_bounds+0x3c8/0x420 lib/ubsan.c:468
      flow_classify+0x24d5/0x25b0 net/sched/cls_flow.c:329
      tc_classify include/net/tc_wrapper.h:197 [inline]
      __tcf_classify net/sched/cls_api.c:1771 [inline]
      tcf_classify+0x420/0x1160 net/sched/cls_api.c:1867
      sfb_classify net/sched/sch_sfb.c:260 [inline]
      sfb_enqueue+0x3ad/0x18b0 net/sched/sch_sfb.c:318
      dev_qdisc_enqueue+0x4b/0x290 net/core/dev.c:3793
      __dev_xmit_skb net/core/dev.c:3889 [inline]
      __dev_queue_xmit+0xf0e/0x3f50 net/core/dev.c:4400
      dev_queue_xmit include/linux/netdevice.h:3168 [inline]
      neigh_hh_output include/net/neighbour.h:523 [inline]
      neigh_output include/net/neighbour.h:537 [inline]
      ip_finish_output2+0xd41/0x1390 net/ipv4/ip_output.c:236
      iptunnel_xmit+0x55d/0x9b0 net/ipv4/ip_tunnel_core.c:82
      udp_tunnel_xmit_skb+0x262/0x3b0 net/ipv4/udp_tunnel_core.c:173
      geneve_xmit_skb drivers/net/geneve.c:916 [inline]
      geneve_xmit+0x21dc/0x2d00 drivers/net/geneve.c:1039
      __netdev_start_xmit include/linux/netdevice.h:5002 [inline]
      netdev_start_xmit include/linux/netdevice.h:5011 [inline]
      xmit_one net/core/dev.c:3590 [inline]
      dev_hard_start_xmit+0x27a/0x7d0 net/core/dev.c:3606
      __dev_queue_xmit+0x1b73/0x3f50 net/core/dev.c:4434
    
    Fixes: e5dfb815181f ("[NET_SCHED]: Add flow classifier")
    Reported-by: syzbot+1dbb57d994e54aaa04d2@xxxxxxxxxxxxxxxxxxxxxxxxx
    Closes: https://lore.kernel.org/netdev/6777bf49.050a0220.178762.0040.GAE@xxxxxxxxxx/T/#u
    Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx>
    Link: https://patch.msgid.link/20250103104546.3714168-1-edumazet@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c
index 5502998aace7..5c2580a07530 100644
--- a/net/sched/cls_flow.c
+++ b/net/sched/cls_flow.c
@@ -356,7 +356,8 @@ static const struct nla_policy flow_policy[TCA_FLOW_MAX + 1] = {
 	[TCA_FLOW_KEYS]		= { .type = NLA_U32 },
 	[TCA_FLOW_MODE]		= { .type = NLA_U32 },
 	[TCA_FLOW_BASECLASS]	= { .type = NLA_U32 },
-	[TCA_FLOW_RSHIFT]	= { .type = NLA_U32 },
+	[TCA_FLOW_RSHIFT]	= NLA_POLICY_MAX(NLA_U32,
+						 31 /* BITS_PER_U32 - 1 */),
 	[TCA_FLOW_ADDEND]	= { .type = NLA_U32 },
 	[TCA_FLOW_MASK]		= { .type = NLA_U32 },
 	[TCA_FLOW_XOR]		= { .type = NLA_U32 },




[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