• Eric Dumazet's avatar
    sch_choke: avoid potential panic in choke_reset() · 8738c85c
    Eric Dumazet authored
    If choke_init() could not allocate q->tab, we would crash later
    in choke_reset().
    
    BUG: KASAN: null-ptr-deref in memset include/linux/string.h:366 [inline]
    BUG: KASAN: null-ptr-deref in choke_reset+0x208/0x340 net/sched/sch_choke.c:326
    Write of size 8 at addr 0000000000000000 by task syz-executor822/7022
    
    CPU: 1 PID: 7022 Comm: syz-executor822 Not tainted 5.7.0-rc1-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x188/0x20d lib/dump_stack.c:118
     __kasan_report.cold+0x5/0x4d mm/kasan/report.c:515
     kasan_report+0x33/0x50 mm/kasan/common.c:625
     check_memory_region_inline mm/kasan/generic.c:187 [inline]
     check_memory_region+0x141/0x190 mm/kasan/generic.c:193
     memset+0x20/0x40 mm/kasan/common.c:85
     memset include/linux/string.h:366 [inline]
     choke_reset+0x208/0x340 net/sched/sch_choke.c:326
     qdisc_reset+0x6b/0x520 net/sched/sch_generic.c:910
     dev_deactivate_queue.constprop.0+0x13c/0x240 net/sched/sch_generic.c:1138
     netdev_for_each_tx_queue include/linux/netdevice.h:2197 [inline]
     dev_deactivate_many+0xe2/0xba0 net/sched/sch_generic.c:1195
     dev_deactivate+0xf8/0x1c0 net/sched/sch_generic.c:1233
     qdisc_graft+0xd25/0x1120 net/sched/sch_api.c:1051
     tc_modify_qdisc+0xbab/0x1a00 net/sched/sch_api.c:1670
     rtnetlink_rcv_msg+0x44e/0xad0 net/core/rtnetlink.c:5454
     netlink_rcv_skb+0x15a/0x410 net/netlink/af_netlink.c:2469
     netlink_unicast_kernel net/netlink/af_netlink.c:1303 [inline]
     netlink_unicast+0x537/0x740 net/netlink/af_netlink.c:1329
     netlink_sendmsg+0x882/0xe10 net/netlink/af_netlink.c:1918
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:672
     ____sys_sendmsg+0x6bf/0x7e0 net/socket.c:2362
     ___sys_sendmsg+0x100/0x170 net/socket.c:2416
     __sys_sendmsg+0xec/0x1b0 net/socket.c:2449
     do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
    
    Fixes: 77e62da6 ("sch_choke: drop all packets in queue during reset")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8738c85c
sch_choke.c 12.6 KB