1. 28 Feb, 2024 36 commits
  2. 27 Feb, 2024 4 commits
    • Eric Dumazet's avatar
      netlink: use kvmalloc() in netlink_alloc_large_skb() · f8cbf6bd
      Eric Dumazet authored
      This is a followup of commit 234ec0b6 ("netlink: fix potential
      sleeping issue in mqueue_flush_file"), because vfree_atomic()
      overhead is unfortunate for medium sized allocations.
      
      1) If the allocation is smaller than PAGE_SIZE, do not bother
         with vmalloc() at all. Some arches have 64KB PAGE_SIZE,
         while NLMSG_GOODSIZE is smaller than 8KB.
      
      2) Use kvmalloc(), which might allocate one high order page
         instead of vmalloc if memory is not too fragmented.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarZhengchao Shao <shaozhengchao@huawei.com>
      Link: https://lore.kernel.org/r/20240224090630.605917-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f8cbf6bd
    • Alexander Lobakin's avatar
      bnxt_en: fix accessing vnic_info before allocating it · c4b04a80
      Alexander Lobakin authored
      bnxt_alloc_mem() dereferences ::vnic_info in the variable declaration
      block, but allocates it much later. As a result, the following crash
      happens on my setup:
      
       BUG: kernel NULL pointer dereference, address: 0000000000000090
       fbcon: Taking over console
       #PF: supervisor write access in kernel mode
       #PF: error_code (0x0002) - not-present page
       PGD 12f382067 P4D 0
       Oops: 8002 [#1] PREEMPT SMP NOPTI
       CPU: 47 PID: 2516 Comm: NetworkManager Not tainted 6.8.0-rc5-libeth+ #49
       Hardware name: Intel Corporation M50CYP2SBSTD/M58CYP2SBSTD, BIOS SE5C620.86B.01.01.0088.2305172341 05/17/2023
       RIP: 0010:bnxt_alloc_mem+0x1609/0x1910 [bnxt_en]
       Code: 81 c8 48 83 c8 08 31 c9 e9 d7 fe ff ff c7 44 24 Oc 00 00 00 00 49 89 d5 e9 2d fe ff ff 41 89 c6 e9 88 00 00 00 48 8b 44 24 50 <80> 88 90 00 00 00 Od 8b 43 74 a8 02 75 1e f6 83 14 02 00 00 80 74
       RSP: 0018:ff3f25580f3432c8 EFLAGS: 00010246
       RAX: 0000000000000000 RBX: ff15a5cfc45249e0 RCX: 0000002079777000
       RDX: ff15a5dfb9767000 RSI: 0000000000000000 RDI: 0000000000000000
       RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
       R10: ff15a5dfb9777000 R11: ffffff8000000000 R12: 0000000000000000
       R13: 0000000000000000 R14: 0000000000000020 R15: ff15a5cfce34f540
       FS:  000007fb9a160500(0000) GS:ff15a5dfbefc0000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CRO: 0000000080050033
       CR2: 0000000000000090 CR3: 0000000109efc00Z CR4: 0000000000771ef0
       DR0: 0000000000000000 DR1: 0000000000000000 DRZ: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       PKRU: 55555554
      
       Call Trace:
       <TASK>
       ? __die_body+0x68/0xb0
       ? page_fault_oops+0x3a6/0x400
       ? exc_page_fault+0x7a/0x1b0
       ? asm_exc_page_fault+0x26/8x30
       ? bnxt_alloc_mem+0x1609/0x1910 [bnxt_en]
       ? bnxt_alloc_mem+0x1389/8x1918 [bnxt_en]
       _bnxt_open_nic+0x198/0xa50 [bnxt_en]
       ? bnxt_hurm_if_change+0x287/0x3d0 [bnxt_en]
       bnxt_open+0xeb/0x1b0 [bnxt_en]
       _dev_open+0x12e/0x1f0
       _dev_change_flags+0xb0/0x200
       dev_change_flags+0x25/0x60
       do_setlink+0x463/0x1260
       ? sock_def_readable+0x14/0xc0
       ? rtnl_getlink+0x4b9/0x590
       ? _nla_validate_parse+0x91/0xfa0
       rtnl_newlink+0xbac/0xe40
       <...>
      
      Don't create a variable and dereference the first array member directly
      since it's used only once in the code.
      
      Fixes: ef4ee64e ("bnxt_en: Define BNXT_VNIC_DEFAULT for the default vnic index")
      Signed-off-by: default avatarAlexander Lobakin <aleksander.lobakin@intel.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Reviewed-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Link: https://lore.kernel.org/r/20240226144911.1297336-1-aleksander.lobakin@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c4b04a80
    • Jakub Kicinski's avatar
      selftests: netdevsim: be less selective for FW for the devlink test · b819a848
      Jakub Kicinski authored
      Commit 6151ff9c ("selftests: netdevsim: use suitable existing dummy
      file for flash test") introduced a nice trick to the devlink flashing
      test. Instead of user having to create a file under /lib/firmware
      we just pick the first one that already exists.
      
      Sadly, in AWS Linux there are no files directly under /lib/firmware,
      only in subdirectories. Don't limit the search to -maxdepth 1.
      We can use the %P print format to get the correct path for files
      inside subdirectories:
      
      $ find /lib/firmware -type f -printf '%P\n' | head -1
      intel-ucode/06-1a-05
      
      The full path is /lib/firmware/intel-ucode/06-1a-05
      
      This works in GNU find, busybox doesn't have printf at all,
      so we're not making it worse.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Link: https://lore.kernel.org/r/20240224050658.930272-1-kuba@kernel.orgSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      b819a848
    • Jesper Nilsson's avatar
      net: stmmac: mmc_core: Drop interrupt registers from stats · d0dc1e42
      Jesper Nilsson authored
      The MMC IPC interrupt status and interrupt mask registers are
      of little use as Ethernet statistics, but incrementing counters
      based on the current interrupt and interrupt mask registers
      makes them actively misleading.
      
      For example, if the interrupt mask is set to 0x08420842,
      the current code will increment by that amount each iteration,
      leading to the following sequence of nonsense:
      
      mmc_rx_ipc_intr_mask: 969816526
      mmc_rx_ipc_intr_mask: 1108361744
      
      These registers have been included in the Ethernet statistics
      since the first version of MMC back in 2011 (commit 1c901a46).
      That commit also mentions the MMC interrupts as
      "something to add later (if actually useful)".
      
      If the registers are actually useful, they should probably
      be part of the Ethernet register dump instead of statistics,
      but for now, drop the counters for mmc_rx_ipc_intr and
      mmc_rx_ipc_intr_mask completely.
      Reviewed-by: default avatarSerge Semin <fancer.lancer@gmail.com>
      Signed-off-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Link: https://lore.kernel.org/r/20240223-stmmac_stats-v3-1-5d483c2a071a@axis.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      d0dc1e42