Skip to content
  1. Jan 18, 2024
  2. Jan 11, 2024
    • Kalle Valo's avatar
      wifi: p54: fix GCC format truncation warning with wiphy->fw_version · 989cd9fd
      Kalle Valo authored
      
      
      GCC 13.2 warns:
      
      drivers/net/wireless/intersil/p54/fwio.c:128:34: warning: '%s' directive output may be truncated writing up to 39 bytes into a region of size 32 [-Wformat-truncation=]
      drivers/net/wireless/intersil/p54/fwio.c:128:33: note: directive argument in the range [0, 16777215]
      drivers/net/wireless/intersil/p54/fwio.c:128:33: note: directive argument in the range [0, 255]
      drivers/net/wireless/intersil/p54/fwio.c:127:17: note: 'snprintf' output between 7 and 52 bytes into a destination of size 32
      
      The issue here is that wiphy->fw_version is 32 bytes and in theory the string
      we try to place there can be 39 bytes. wiphy->fw_version is used for providing
      the firmware version to user space via ethtool, so not really important.
      fw_version in theory can be 24 bytes but in practise it's shorter, so even if
      print only 19 bytes via ethtool there should not be any practical difference.
      
      I did consider removing fw_var from the string altogether or making the maximum
      length for fw_version 19 bytes, but chose this approach as it was the least
      intrusive.
      
      Compile tested only.
      
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Acked-by: Christian Lamparter <chunkeey@gmail.com> # Tested with Dell 1450 USB
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://msgid.link/20231219162516.898205-1-kvalo@kernel.org
      989cd9fd
  3. Jan 08, 2024
  4. Jan 07, 2024
    • 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-gac865f00af29 #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
  5. Jan 06, 2024
    • 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.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3f14b377
  6. Jan 05, 2024
  7. Jan 04, 2024