1. 30 Mar, 2021 33 commits
  2. 29 Mar, 2021 7 commits
    • Haiyang Zhang's avatar
      hv_netvsc: Add error handling while switching data path · d0922bf7
      Haiyang Zhang authored
      Add error handling in case of failure to send switching data path message
      to the host.
      Reported-by: default avatarShachar Raindel <shacharr@microsoft.com>
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d0922bf7
    • Eric Dumazet's avatar
      tcp: fix tcp_min_tso_segs sysctl · d24f511b
      Eric Dumazet authored
      tcp_min_tso_segs is now stored in u8, so max value is 255.
      
      255 limit is enforced by proc_dou8vec_minmax().
      
      We can therefore remove the gso_max_segs variable.
      
      Fixes: 47996b489bdc ("tcp: convert elligible sysctls to u8")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d24f511b
    • Eric Dumazet's avatar
      sit: proper dev_{hold|put} in ndo_[un]init methods · 6289a98f
      Eric Dumazet authored
      After adopting CONFIG_PCPU_DEV_REFCNT=n option, syzbot was able to trigger
      a warning [1]
      
      Issue here is that:
      
      - all dev_put() should be paired with a corresponding prior dev_hold().
      
      - A driver doing a dev_put() in its ndo_uninit() MUST also
        do a dev_hold() in its ndo_init(), only when ndo_init()
        is returning 0.
      
      Otherwise, register_netdevice() would call ndo_uninit()
      in its error path and release a refcount too soon.
      
      Fixes: 919067cc ("net: add CONFIG_PCPU_DEV_REFCNT")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6289a98f
    • Eric Dumazet's avatar
      ip6_vti: proper dev_{hold|put} in ndo_[un]init methods · 40cb881b
      Eric Dumazet authored
      After adopting CONFIG_PCPU_DEV_REFCNT=n option, syzbot was able to trigger
      a warning [1]
      
      Issue here is that:
      
      - all dev_put() should be paired with a corresponding prior dev_hold().
      
      - A driver doing a dev_put() in its ndo_uninit() MUST also
        do a dev_hold() in its ndo_init(), only when ndo_init()
        is returning 0.
      
      Otherwise, register_netdevice() would call ndo_uninit()
      in its error path and release a refcount too soon.
      
      Therefore, we need to move dev_hold() call from
      vti6_tnl_create2() to vti6_dev_init_gen()
      
      [1]
      WARNING: CPU: 0 PID: 15951 at lib/refcount.c:31 refcount_warn_saturate+0xbf/0x1e0 lib/refcount.c:31
      Modules linked in:
      CPU: 0 PID: 15951 Comm: syz-executor.3 Not tainted 5.12.0-rc4-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:refcount_warn_saturate+0xbf/0x1e0 lib/refcount.c:31
      Code: 1d 6a 5a e8 09 31 ff 89 de e8 8d 1a ab fd 84 db 75 e0 e8 d4 13 ab fd 48 c7 c7 a0 e1 c1 89 c6 05 4a 5a e8 09 01 e8 2e 36 fb 04 <0f> 0b eb c4 e8 b8 13 ab fd 0f b6 1d 39 5a e8 09 31 ff 89 de e8 58
      RSP: 0018:ffffc90001eaef28 EFLAGS: 00010282
      RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
      RDX: 0000000000040000 RSI: ffffffff815c51f5 RDI: fffff520003d5dd7
      RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000000
      R10: ffffffff815bdf8e R11: 0000000000000000 R12: ffff88801bb1c568
      R13: ffff88801f69e800 R14: 00000000ffffffff R15: ffff888050889d40
      FS:  00007fc79314e700(0000) GS:ffff8880b9c00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f1c1ff47108 CR3: 0000000020fd5000 CR4: 00000000001506f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       __refcount_dec include/linux/refcount.h:344 [inline]
       refcount_dec include/linux/refcount.h:359 [inline]
       dev_put include/linux/netdevice.h:4135 [inline]
       vti6_dev_uninit+0x31a/0x360 net/ipv6/ip6_vti.c:297
       register_netdevice+0xadf/0x1500 net/core/dev.c:10308
       vti6_tnl_create2+0x1b5/0x400 net/ipv6/ip6_vti.c:190
       vti6_newlink+0x9d/0xd0 net/ipv6/ip6_vti.c:1020
       __rtnl_newlink+0x1062/0x1710 net/core/rtnetlink.c:3443
       rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3491
       rtnetlink_rcv_msg+0x44e/0xad0 net/core/rtnetlink.c:5553
       netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2502
       netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline]
       netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1338
       netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1927
       sock_sendmsg_nosec net/socket.c:654 [inline]
       sock_sendmsg+0xcf/0x120 net/socket.c:674
       ____sys_sendmsg+0x331/0x810 net/socket.c:2350
       ___sys_sendmsg+0xf3/0x170 net/socket.c:2404
       __sys_sendmmsg+0x195/0x470 net/socket.c:2490
       __do_sys_sendmmsg net/socket.c:2519 [inline]
       __se_sys_sendmmsg net/socket.c:2516 [inline]
       __x64_sys_sendmmsg+0x99/0x100 net/socket.c:2516
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      40cb881b
    • Eric Dumazet's avatar
      ip6_gre: proper dev_{hold|put} in ndo_[un]init methods · 7f700334
      Eric Dumazet authored
      After adopting CONFIG_PCPU_DEV_REFCNT=n option, syzbot was able to trigger
      a warning [1]
      
      Issue here is that:
      
      - all dev_put() should be paired with a corresponding dev_hold(),
        and vice versa.
      
      - A driver doing a dev_put() in its ndo_uninit() MUST also
        do a dev_hold() in its ndo_init(), only when ndo_init()
        is returning 0.
      
      Otherwise, register_netdevice() would call ndo_uninit()
      in its error path and release a refcount too soon.
      
      ip6_gre for example (among others problematic drivers)
      has to use dev_hold() in ip6gre_tunnel_init_common()
      instead of from ip6gre_newlink_common(), covering
      both ip6gre_tunnel_init() and ip6gre_tap_init()/
      
      Note that ip6gre_tunnel_init_common() is not called from
      ip6erspan_tap_init() thus we also need to add a dev_hold() there,
      as ip6erspan_tunnel_uninit() does call dev_put()
      
      [1]
      refcount_t: decrement hit 0; leaking memory.
      WARNING: CPU: 0 PID: 8422 at lib/refcount.c:31 refcount_warn_saturate+0xbf/0x1e0 lib/refcount.c:31
      Modules linked in:
      CPU: 1 PID: 8422 Comm: syz-executor854 Not tainted 5.12.0-rc4-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:refcount_warn_saturate+0xbf/0x1e0 lib/refcount.c:31
      Code: 1d 6a 5a e8 09 31 ff 89 de e8 8d 1a ab fd 84 db 75 e0 e8 d4 13 ab fd 48 c7 c7 a0 e1 c1 89 c6 05 4a 5a e8 09 01 e8 2e 36 fb 04 <0f> 0b eb c4 e8 b8 13 ab fd 0f b6 1d 39 5a e8 09 31 ff 89 de e8 58
      RSP: 0018:ffffc900018befd0 EFLAGS: 00010282
      RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
      RDX: ffff88801ef19c40 RSI: ffffffff815c51f5 RDI: fffff52000317dec
      RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000000
      R10: ffffffff815bdf8e R11: 0000000000000000 R12: ffff888018cf4568
      R13: ffff888018cf4c00 R14: ffff8880228f2000 R15: ffffffff8d659b80
      FS:  00000000014eb300(0000) GS:ffff8880b9c00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000055d7bf2b3138 CR3: 0000000014933000 CR4: 00000000001506f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       __refcount_dec include/linux/refcount.h:344 [inline]
       refcount_dec include/linux/refcount.h:359 [inline]
       dev_put include/linux/netdevice.h:4135 [inline]
       ip6gre_tunnel_uninit+0x3d7/0x440 net/ipv6/ip6_gre.c:420
       register_netdevice+0xadf/0x1500 net/core/dev.c:10308
       ip6gre_newlink_common.constprop.0+0x158/0x410 net/ipv6/ip6_gre.c:1984
       ip6gre_newlink+0x275/0x7a0 net/ipv6/ip6_gre.c:2017
       __rtnl_newlink+0x1062/0x1710 net/core/rtnetlink.c:3443
       rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3491
       rtnetlink_rcv_msg+0x44e/0xad0 net/core/rtnetlink.c:5553
       netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2502
       netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline]
       netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1338
       netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1927
       sock_sendmsg_nosec net/socket.c:654 [inline]
       sock_sendmsg+0xcf/0x120 net/socket.c:674
       ____sys_sendmsg+0x6e8/0x810 net/socket.c:2350
       ___sys_sendmsg+0xf3/0x170 net/socket.c:2404
       __sys_sendmsg+0xe5/0x1b0 net/socket.c:2433
       do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
      
      Fixes: 919067cc ("net: add CONFIG_PCPU_DEV_REFCNT")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7f700334
    • Jon Maloy's avatar
      tipc: fix htmldoc and smatch warnings · 02fdc14d
      Jon Maloy authored
      We fix a warning from the htmldoc tool and an indentation error reported
      by smatch. There are no functional changes in this commit.
      Signed-off-by: default avatarJon Maloy <jmaloy@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02fdc14d
    • David S. Miller's avatar
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue · 3ca3f39c
      David S. Miller authored
      Tony Nguyen says:
      
      ====================
      1GbE Intel Wired LAN Driver Updates 2021-03-29
      
      This series contains updates to igc driver only.
      
      Andre Guedes says:
      
      Add XDP support for the igc driver. The approach implemented by this
      series follows the same approach implemented in other Intel drivers as
      much as possible for the sake of consistency.
      
      The series is organized in two parts. In the first part, i.e. patches
      from 1 to 4, igc_main.c and igc_ptp.c code is refactored in preparation
      for landing the XDP support, which is introduced in the second part
      (patches from 5 to 8).
      
      As far as code organization is concerned, XDP-related helpers are
      defined in a new file, igc_xdp.c, and are called by igc_main.c.
      
      The features added by this series have been tested with the samples
      provided in samples/bpf/: xdp1, xdp2, xdp_redirect_cpu, and
      xdp_redirect_map.
      
      Upcoming series will add support of UMEM and zero-copy features from
      AF_XDP.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3ca3f39c