1. 07 Jan, 2024 5 commits
    • Petr Tesarik's avatar
      net: stmmac: fix ethtool per-queue statistics · 61921bda
      Petr Tesarik authored
      Fix per-queue statistics for devices with more than one queue.
      
      The output data pointer is currently reset in each loop iteration,
      effectively summing all queue statistics in the first four u64 values.
      
      The summary values are not even labeled correctly. For example, if eth0 has
      2 queues, ethtool -S eth0 shows:
      
           q0_tx_pkt_n: 374 (actually tx_pkt_n over all queues)
           q0_tx_irq_n: 23  (actually tx_normal_irq_n over all queues)
           q1_tx_pkt_n: 462 (actually rx_pkt_n over all queues)
           q1_tx_irq_n: 446 (actually rx_normal_irq_n over all queues)
           q0_rx_pkt_n: 0
           q0_rx_irq_n: 0
           q1_rx_pkt_n: 0
           q1_rx_irq_n: 0
      
      Fixes: 133466c3 ("net: stmmac: use per-queue 64 bit statistics where necessary")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarPetr Tesarik <petr@tesarici.cz>
      Reviewed-by: default avatarJisheng Zhang <jszhang@kernel.org>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61921bda
    • Eric Dumazet's avatar
      ip6_tunnel: fix NEXTHDR_FRAGMENT handling in ip6_tnl_parse_tlv_enc_lim() · d375b98e
      Eric Dumazet authored
      syzbot pointed out [1] that NEXTHDR_FRAGMENT handling is broken.
      
      Reading frag_off can only be done if we pulled enough bytes
      to skb->head. Currently we might access garbage.
      
      [1]
      BUG: KMSAN: uninit-value in ip6_tnl_parse_tlv_enc_lim+0x94f/0xbb0
      ip6_tnl_parse_tlv_enc_lim+0x94f/0xbb0
      ipxip6_tnl_xmit net/ipv6/ip6_tunnel.c:1326 [inline]
      ip6_tnl_start_xmit+0xab2/0x1a70 net/ipv6/ip6_tunnel.c:1432
      __netdev_start_xmit include/linux/netdevice.h:4940 [inline]
      netdev_start_xmit include/linux/netdevice.h:4954 [inline]
      xmit_one net/core/dev.c:3548 [inline]
      dev_hard_start_xmit+0x247/0xa10 net/core/dev.c:3564
      __dev_queue_xmit+0x33b8/0x5130 net/core/dev.c:4349
      dev_queue_xmit include/linux/netdevice.h:3134 [inline]
      neigh_connected_output+0x569/0x660 net/core/neighbour.c:1592
      neigh_output include/net/neighbour.h:542 [inline]
      ip6_finish_output2+0x23a9/0x2b30 net/ipv6/ip6_output.c:137
      ip6_finish_output+0x855/0x12b0 net/ipv6/ip6_output.c:222
      NF_HOOK_COND include/linux/netfilter.h:303 [inline]
      ip6_output+0x323/0x610 net/ipv6/ip6_output.c:243
      dst_output include/net/dst.h:451 [inline]
      ip6_local_out+0xe9/0x140 net/ipv6/output_core.c:155
      ip6_send_skb net/ipv6/ip6_output.c:1952 [inline]
      ip6_push_pending_frames+0x1f9/0x560 net/ipv6/ip6_output.c:1972
      rawv6_push_pending_frames+0xbe8/0xdf0 net/ipv6/raw.c:582
      rawv6_sendmsg+0x2b66/0x2e70 net/ipv6/raw.c:920
      inet_sendmsg+0x105/0x190 net/ipv4/af_inet.c:847
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg net/socket.c:745 [inline]
      ____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584
      ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
      __sys_sendmsg net/socket.c:2667 [inline]
      __do_sys_sendmsg net/socket.c:2676 [inline]
      __se_sys_sendmsg net/socket.c:2674 [inline]
      __x64_sys_sendmsg+0x307/0x490 net/socket.c:2674
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83
      entry_SYSCALL_64_after_hwframe+0x63/0x6b
      
      Uninit was created at:
      slab_post_alloc_hook+0x129/0xa70 mm/slab.h:768
      slab_alloc_node mm/slub.c:3478 [inline]
      __kmem_cache_alloc_node+0x5c9/0x970 mm/slub.c:3517
      __do_kmalloc_node mm/slab_common.c:1006 [inline]
      __kmalloc_node_track_caller+0x118/0x3c0 mm/slab_common.c:1027
      kmalloc_reserve+0x249/0x4a0 net/core/skbuff.c:582
      pskb_expand_head+0x226/0x1a00 net/core/skbuff.c:2098
      __pskb_pull_tail+0x13b/0x2310 net/core/skbuff.c:2655
      pskb_may_pull_reason include/linux/skbuff.h:2673 [inline]
      pskb_may_pull include/linux/skbuff.h:2681 [inline]
      ip6_tnl_parse_tlv_enc_lim+0x901/0xbb0 net/ipv6/ip6_tunnel.c:408
      ipxip6_tnl_xmit net/ipv6/ip6_tunnel.c:1326 [inline]
      ip6_tnl_start_xmit+0xab2/0x1a70 net/ipv6/ip6_tunnel.c:1432
      __netdev_start_xmit include/linux/netdevice.h:4940 [inline]
      netdev_start_xmit include/linux/netdevice.h:4954 [inline]
      xmit_one net/core/dev.c:3548 [inline]
      dev_hard_start_xmit+0x247/0xa10 net/core/dev.c:3564
      __dev_queue_xmit+0x33b8/0x5130 net/core/dev.c:4349
      dev_queue_xmit include/linux/netdevice.h:3134 [inline]
      neigh_connected_output+0x569/0x660 net/core/neighbour.c:1592
      neigh_output include/net/neighbour.h:542 [inline]
      ip6_finish_output2+0x23a9/0x2b30 net/ipv6/ip6_output.c:137
      ip6_finish_output+0x855/0x12b0 net/ipv6/ip6_output.c:222
      NF_HOOK_COND include/linux/netfilter.h:303 [inline]
      ip6_output+0x323/0x610 net/ipv6/ip6_output.c:243
      dst_output include/net/dst.h:451 [inline]
      ip6_local_out+0xe9/0x140 net/ipv6/output_core.c:155
      ip6_send_skb net/ipv6/ip6_output.c:1952 [inline]
      ip6_push_pending_frames+0x1f9/0x560 net/ipv6/ip6_output.c:1972
      rawv6_push_pending_frames+0xbe8/0xdf0 net/ipv6/raw.c:582
      rawv6_sendmsg+0x2b66/0x2e70 net/ipv6/raw.c:920
      inet_sendmsg+0x105/0x190 net/ipv4/af_inet.c:847
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg net/socket.c:745 [inline]
      ____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584
      ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
      __sys_sendmsg net/socket.c:2667 [inline]
      __do_sys_sendmsg net/socket.c:2676 [inline]
      __se_sys_sendmsg net/socket.c:2674 [inline]
      __x64_sys_sendmsg+0x307/0x490 net/socket.c:2674
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83
      entry_SYSCALL_64_after_hwframe+0x63/0x6b
      
      CPU: 0 PID: 7345 Comm: syz-executor.3 Not tainted 6.7.0-rc8-syzkaller-00024-gac865f00 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023
      
      Fixes: fbfa743a ("ipv6: fix ip6_tnl_parse_tlv_enc_lim()")
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Willem de Bruijn <willemb@google.com>
      Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d375b98e
    • David Howells's avatar
      rxrpc: Fix skbuff cleanup of call's recvmsg_queue and rx_oos_queue · 4fc68c4c
      David Howells authored
      Fix rxrpc_cleanup_ring() to use rxrpc_purge_queue() rather than
      skb_queue_purge() so that the count of outstanding skbuffs is correctly
      updated when a failed call is cleaned up.
      
      Without this rmmod may hang waiting for rxrpc_n_rx_skbs to become zero.
      
      Fixes: 5d7edbc9 ("rxrpc: Get rid of the Rx ring")
      Reported-by: default avatarMarc Dionne <marc.dionne@auristor.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4fc68c4c
    • Asmaa Mnebhi's avatar
      mlxbf_gige: Enable the GigE port in mlxbf_gige_open · a460f4a6
      Asmaa Mnebhi authored
      At the moment, the GigE port is enabled in the mlxbf_gige_probe
      function. If the mlxbf_gige_open is not executed, this could cause
      pause frames to increase in the case where there is high backgroud
      traffic. This results in clogging the port.
      So move enabling the OOB port to mlxbf_gige_open.
      
      Fixes: f92e1869 ("Add Mellanox BlueField Gigabit Ethernet driver")
      Reviewed-by: default avatarDavid Thompson <davthompson@nvidia.com>
      Signed-off-by: default avatarAsmaa Mnebhi <asmaa@nvidia.com>
      Reviewed-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a460f4a6
    • Asmaa Mnebhi's avatar
      mlxbf_gige: Fix intermittent no ip issue · ef210ef8
      Asmaa Mnebhi authored
      Although the link is up, there is no ip assigned on setups with high background
      traffic. Nothing is transmitted nor received. The RX error count keeps on
      increasing. After several minutes, the RX error count stagnates and the
      GigE interface finally gets an ip.
      
      The issue is that mlxbf_gige_rx_init() is called before phy_start().
      As soon as the RX DMA is enabled in mlxbf_gige_rx_init(), the RX CI reaches the max
      of 128, and becomes equal to RX PI. RX CI doesn't decrease since the code hasn't
      ran phy_start yet.
      Bring the PHY up before starting the RX.
      
      Fixes: f92e1869 ("Add Mellanox BlueField Gigabit Ethernet driver")
      Reviewed-by: default avatarDavid Thompson <davthompson@nvidia.com>
      Signed-off-by: default avatarAsmaa Mnebhi <asmaa@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ef210ef8
  2. 05 Jan, 2024 2 commits
    • Tao Liu's avatar
      net/sched: act_ct: fix skb leak and crash on ooo frags · 3f14b377
      Tao Liu authored
      act_ct adds skb->users before defragmentation. If frags arrive in order,
      the last frag's reference is reset in:
      
        inet_frag_reasm_prepare
          skb_morph
      
      which is not straightforward.
      
      However when frags arrive out of order, nobody unref the last frag, and
      all frags are leaked. The situation is even worse, as initiating packet
      capture can lead to a crash[0] when skb has been cloned and shared at the
      same time.
      
      Fix the issue by removing skb_get() before defragmentation. act_ct
      returns TC_ACT_CONSUMED when defrag failed or in progress.
      
      [0]:
      [  843.804823] ------------[ cut here ]------------
      [  843.809659] kernel BUG at net/core/skbuff.c:2091!
      [  843.814516] invalid opcode: 0000 [#1] PREEMPT SMP
      [  843.819296] CPU: 7 PID: 0 Comm: swapper/7 Kdump: loaded Tainted: G S 6.7.0-rc3 #2
      [  843.824107] Hardware name: XFUSION 1288H V6/BC13MBSBD, BIOS 1.29 11/25/2022
      [  843.828953] RIP: 0010:pskb_expand_head+0x2ac/0x300
      [  843.833805] Code: 8b 70 28 48 85 f6 74 82 48 83 c6 08 bf 01 00 00 00 e8 38 bd ff ff 8b 83 c0 00 00 00 48 03 83 c8 00 00 00 e9 62 ff ff ff 0f 0b <0f> 0b e8 8d d0 ff ff e9 b3 fd ff ff 81 7c 24 14 40 01 00 00 4c 89
      [  843.843698] RSP: 0018:ffffc9000cce07c0 EFLAGS: 00010202
      [  843.848524] RAX: 0000000000000002 RBX: ffff88811a211d00 RCX: 0000000000000820
      [  843.853299] RDX: 0000000000000640 RSI: 0000000000000000 RDI: ffff88811a211d00
      [  843.857974] RBP: ffff888127d39518 R08: 00000000bee97314 R09: 0000000000000000
      [  843.862584] R10: 0000000000000000 R11: ffff8881109f0000 R12: 0000000000000880
      [  843.867147] R13: ffff888127d39580 R14: 0000000000000640 R15: ffff888170f7b900
      [  843.871680] FS:  0000000000000000(0000) GS:ffff889ffffc0000(0000) knlGS:0000000000000000
      [  843.876242] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  843.880778] CR2: 00007fa42affcfb8 CR3: 000000011433a002 CR4: 0000000000770ef0
      [  843.885336] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  843.889809] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [  843.894229] PKRU: 55555554
      [  843.898539] Call Trace:
      [  843.902772]  <IRQ>
      [  843.906922]  ? __die_body+0x1e/0x60
      [  843.911032]  ? die+0x3c/0x60
      [  843.915037]  ? do_trap+0xe2/0x110
      [  843.918911]  ? pskb_expand_head+0x2ac/0x300
      [  843.922687]  ? do_error_trap+0x65/0x80
      [  843.926342]  ? pskb_expand_head+0x2ac/0x300
      [  843.929905]  ? exc_invalid_op+0x50/0x60
      [  843.933398]  ? pskb_expand_head+0x2ac/0x300
      [  843.936835]  ? asm_exc_invalid_op+0x1a/0x20
      [  843.940226]  ? pskb_expand_head+0x2ac/0x300
      [  843.943580]  inet_frag_reasm_prepare+0xd1/0x240
      [  843.946904]  ip_defrag+0x5d4/0x870
      [  843.950132]  nf_ct_handle_fragments+0xec/0x130 [nf_conntrack]
      [  843.953334]  tcf_ct_act+0x252/0xd90 [act_ct]
      [  843.956473]  ? tcf_mirred_act+0x516/0x5a0 [act_mirred]
      [  843.959657]  tcf_action_exec+0xa1/0x160
      [  843.962823]  fl_classify+0x1db/0x1f0 [cls_flower]
      [  843.966010]  ? skb_clone+0x53/0xc0
      [  843.969173]  tcf_classify+0x24d/0x420
      [  843.972333]  tc_run+0x8f/0xf0
      [  843.975465]  __netif_receive_skb_core+0x67a/0x1080
      [  843.978634]  ? dev_gro_receive+0x249/0x730
      [  843.981759]  __netif_receive_skb_list_core+0x12d/0x260
      [  843.984869]  netif_receive_skb_list_internal+0x1cb/0x2f0
      [  843.987957]  ? mlx5e_handle_rx_cqe_mpwrq_rep+0xfa/0x1a0 [mlx5_core]
      [  843.991170]  napi_complete_done+0x72/0x1a0
      [  843.994305]  mlx5e_napi_poll+0x28c/0x6d0 [mlx5_core]
      [  843.997501]  __napi_poll+0x25/0x1b0
      [  844.000627]  net_rx_action+0x256/0x330
      [  844.003705]  __do_softirq+0xb3/0x29b
      [  844.006718]  irq_exit_rcu+0x9e/0xc0
      [  844.009672]  common_interrupt+0x86/0xa0
      [  844.012537]  </IRQ>
      [  844.015285]  <TASK>
      [  844.017937]  asm_common_interrupt+0x26/0x40
      [  844.020591] RIP: 0010:acpi_safe_halt+0x1b/0x20
      [  844.023247] Code: ff 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 65 48 8b 04 25 00 18 03 00 48 8b 00 a8 08 75 0c 66 90 0f 00 2d 81 d0 44 00 fb f4 <fa> c3 0f 1f 00 89 fa ec 48 8b 05 ee 88 ed 00 a9 00 00 00 80 75 11
      [  844.028900] RSP: 0018:ffffc90000533e70 EFLAGS: 00000246
      [  844.031725] RAX: 0000000000004000 RBX: 0000000000000001 RCX: 0000000000000000
      [  844.034553] RDX: ffff889ffffc0000 RSI: ffffffff828b7f20 RDI: ffff88a090f45c64
      [  844.037368] RBP: ffff88a0901a2800 R08: ffff88a090f45c00 R09: 00000000000317c0
      [  844.040155] R10: 00ec812281150475 R11: ffff889fffff0e04 R12: ffffffff828b7fa0
      [  844.042962] R13: ffffffff828b7f20 R14: 0000000000000001 R15: 0000000000000000
      [  844.045819]  acpi_idle_enter+0x7b/0xc0
      [  844.048621]  cpuidle_enter_state+0x7f/0x430
      [  844.051451]  cpuidle_enter+0x2d/0x40
      [  844.054279]  do_idle+0x1d4/0x240
      [  844.057096]  cpu_startup_entry+0x2a/0x30
      [  844.059934]  start_secondary+0x104/0x130
      [  844.062787]  secondary_startup_64_no_verify+0x16b/0x16b
      [  844.065674]  </TASK>
      
      Fixes: b57dc7c1 ("net/sched: Introduce action ct")
      Signed-off-by: default avatarTao Liu <taoliu828@163.com>
      Link: https://lore.kernel.org/r/20231228081457.936732-1-taoliu828@163.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3f14b377
    • Linus Torvalds's avatar
      Merge tag 'net-6.7-rc9' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 1f874787
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from wireless and netfilter.
      
        We haven't accumulated much over the break. If it wasn't for the
        uninterrupted stream of fixes for Intel drivers this PR would be very
        slim. There was a handful of user reports, however, either they stood
        out because of the lower traffic or users have had more time to test
        over the break. The ones which are v6.7-relevant should be wrapped up.
      
        Current release - regressions:
      
         - Revert "net: ipv6/addrconf: clamp preferred_lft to the minimum
           required", it caused issues on networks where routers send prefixes
           with preferred_lft=0
      
         - wifi:
            - iwlwifi: pcie: don't synchronize IRQs from IRQ, prevent deadlock
            - mac80211: fix re-adding debugfs entries during reconfiguration
      
        Current release - new code bugs:
      
         - tcp: print AO/MD5 messages only if there are any keys
      
        Previous releases - regressions:
      
         - virtio_net: fix missing dma unmap for resize, prevent OOM
      
        Previous releases - always broken:
      
         - mptcp: prevent tcp diag from closing listener subflows
      
         - nf_tables:
            - set transport header offset for egress hook, fix IPv4 mangling
            - skip set commit for deleted/destroyed sets, avoid double deactivation
      
         - nat: make sure action is set for all ct states, fix openvswitch
           matching on ICMP packets in related state
      
         - eth: mlxbf_gige: fix receive hang under heavy traffic
      
         - eth: r8169: fix PCI error on system resume for RTL8168FP
      
         - net: add missing getsockopt(SO_TIMESTAMPING_NEW) and cmsg handling"
      
      * tag 'net-6.7-rc9' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (52 commits)
        net/tcp: Only produce AO/MD5 logs if there are any keys
        net: Implement missing SO_TIMESTAMPING_NEW cmsg support
        bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters()
        net: ravb: Wait for operating mode to be applied
        asix: Add check for usbnet_get_endpoints
        octeontx2-af: Re-enable MAC TX in otx2_stop processing
        octeontx2-af: Always configure NIX TX link credits based on max frame size
        net/smc: fix invalid link access in dumping SMC-R connections
        net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues
        virtio_net: fix missing dma unmap for resize
        igc: Fix hicredit calculation
        ice: fix Get link status data length
        i40e: Restore VF MSI-X state during PCI reset
        i40e: fix use-after-free in i40e_aqc_add_filters()
        net: Save and restore msg_namelen in sock_sendmsg
        netfilter: nft_immediate: drop chain reference counter on error
        netfilter: nf_nat: fix action not being set for all ct states
        net: bcmgenet: Fix FCS generation for fragmented skbuffs
        mptcp: prevent tcp diag from closing listener subflows
        MAINTAINERS: add Geliang as reviewer for MPTCP
        ...
      1f874787
  3. 04 Jan, 2024 24 commits
  4. 03 Jan, 2024 9 commits