1. 30 Mar, 2021 19 commits
  2. 29 Mar, 2021 21 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
    • Loic Poulain's avatar
      net: mhi: Allow decoupled MTU/MRU · 3af562a3
      Loic Poulain authored
      MBIM protocol makes the mhi network interface asymmetric, ingress data
      received from MHI is MBIM protocol, possibly containing multiple
      aggregated IP packets, while egress data received from network stack is
      IP protocol.
      
      This changes allows a 'protocol' to specify its own MRU, that when
      specified is used to allocate MHI RX buffers (skb).
      
      For MBIM, Set the default MTU to 1500, which is the usual network MTU
      for WWAN IP packets, and MRU to 3.5K (for allocation efficiency),
      allowing skb to fit in an usual 4K page (including padding,
      skb_shared_info, ...).
      Signed-off-by: default avatarLoic Poulain <loic.poulain@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3af562a3
    • Loic Poulain's avatar
      net: mhi: Add support for non-linear MBIM skb processing · d9f0713c
      Loic Poulain authored
      Currently, if skb is non-linear, due to MHI skb chaining, it is
      linearized in MBIM RX handler prior MBIM decoding, causing extra
      allocation and copy that can be as large as the maximum MBIM frame
      size (32K).
      
      This change introduces MBIM decoding for non-linear skb, allowing to
      process 'large' non-linear MBIM packets without skb linearization.
      The IP packets are simply extracted from the MBIM frame using the
      skb_copy_bits helper.
      Signed-off-by: default avatarLoic Poulain <loic.poulain@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d9f0713c
    • Colin Ian King's avatar
      ieee802154: hwsim: remove redundant initialization of variable res · 24ad92c8
      Colin Ian King authored
      The variable res is being initialized with a value that is
      never read and it is being updated later with a new value.
      The initialization is redundant and can be removed.
      
      Addresses-Coverity: ("Unused value")
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      24ad92c8
    • Petr Machata's avatar
      Documentation: net: Document resilient next-hop groups · 87f2c671
      Petr Machata authored
      Add a document describing the principles behind resilient next-hop groups,
      and some notes about how to configure and offload them.
      Suggested-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
      Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87f2c671
    • Yang Yingliang's avatar
      net: mdio: Correct function name mdio45_links_ok() in comment · 177cb787
      Yang Yingliang authored
      Fix the following make W=1 kernel build warning:
      
       drivers/net/mdio.c:95: warning: expecting prototype for mdio_link_ok(). Prototype was for mdio45_links_ok() instead
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      177cb787
    • Yang Yingliang's avatar
      net: bonding: Correct function name bond_change_active_slave() in comment · acf61b3d
      Yang Yingliang authored
      Fix the following make W=1 kernel build warning:
      
       drivers/net/bonding/bond_main.c:982: warning: expecting prototype for change_active_interface(). Prototype was for bond_change_active_slave() instead
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      acf61b3d
    • Yang Yingliang's avatar
      net: phy: Correct function name mdiobus_register_board_info() in comment · 4db0964a
      Yang Yingliang authored
      Fix the following make W=1 kernel build warning:
      
       drivers/net/phy/mdio-boardinfo.c:63: warning: expecting prototype for mdio_register_board_info(). Prototype was for mdiobus_register_board_info() instead
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4db0964a
    • David S. Miller's avatar
      Merge branch 'mlxsw-sampling-fixes' · cbc6a2d0
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Two sampling fixes
      
      This patchset fixes two bugs in recent sampling submissions.
      
      The first fix, in patch #3, prevents matchall rules with sample action
      to be added in front of flower rules on egress. Patches #1-#2 are
      preparations meant at avoiding similar bugs in the future. Patch #4 is a
      selftest.
      
      The second fix, in patch #5, prevents sampling from being enabled on a
      port if already enabled. Patch #6 is a selftest.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cbc6a2d0
    • Ido Schimmel's avatar
      selftests: mlxsw: Test vetoing of double sampling · 7ede22e6
      Ido Schimmel authored
      Test that two sampling rules cannot be configured on the same port with
      the same trigger.
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7ede22e6
    • Ido Schimmel's avatar
      mlxsw: spectrum: Veto sampling if already enabled on port · 17b96a5c
      Ido Schimmel authored
      The per-port sampling triggers (i.e., ingress / egress) cannot be
      enabled twice. Meaning, the below configuration will not result in
      packets being sampled twice:
      
       # tc filter add dev swp1 ingress matchall skip_sw action sample rate 100 group 1
       # tc filter add dev swp1 ingress matchall skip_sw action sample rate 100 group 1
      
      Therefore, reject such configurations.
      
      Fixes: 90f53c53 ("mlxsw: spectrum: Start using sampling triggers hash table")
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      17b96a5c
    • Ido Schimmel's avatar
      selftests: mlxsw: Test matchall failure with protocol match · c3572a0b
      Ido Schimmel authored
      The driver can only offload matchall rules that do not match on a
      protocol. Test that matchall rules that match on a protocol are vetoed.
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c3572a0b
    • Ido Schimmel's avatar
      mlxsw: spectrum_matchall: Perform priority checks earlier · b2430304
      Ido Schimmel authored
      Perform the priority check earlier in the function instead of repeating
      it for every action. This fixes a bug that allowed matchall rules with
      sample action to be added in front of flower rules on egress.
      
      Fixes: 54d0e963 ("mlxsw: spectrum_matchall: Add support for egress sampling")
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b2430304
    • Ido Schimmel's avatar
      mlxsw: spectrum_matchall: Convert if statements to a switch statement · 50401f29
      Ido Schimmel authored
      Previous patch moved the protocol check out of the action check, so
      these if statements can now be converted to a switch statement. Perform
      the conversion.
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      50401f29
    • Ido Schimmel's avatar
      mlxsw: spectrum_matchall: Perform protocol check earlier · 4947e730
      Ido Schimmel authored
      Perform the protocol check earlier in the function instead of repeating
      it for every action. Example:
      
       # tc filter add dev swp1 ingress proto ip matchall skip_sw action sample group 1 rate 100
       Error: matchall rules only supported with 'all' protocol.
       We have an error talking to the kernel
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4947e730