Skip to content
Snippets Groups Projects
  1. Feb 11, 2025
  2. Feb 06, 2025
  3. Jan 28, 2025
    • Kalle Valo's avatar
      Merge tag 'ath-current-20250124' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath · 3319569b
      Kalle Valo authored
      ath.git patch for v6.14-rc
      
      Fix an issue in the ath12k driver where 6 GHz operation no longer
      works with new firmware.
      3319569b
    • Aditya Garg's avatar
      wifi: brcmfmac: use random seed flag for BCM4355 and BCM4364 firmware · 0e9724d0
      Aditya Garg authored
      
      Before 6.13, random seed to the firmware was given based on the logic
      whether the device had valid OTP or not, and such devices were found
      mainly on the T2 and Apple Silicon Macs. In 6.13, the logic was changed,
      and the device table was used for this purpose, so as to cover the special
      case of BCM43752 chip.
      
      During the transition, the device table for BCM4364 and BCM4355 Wi-Fi chips
      which had valid OTP was not modified, thus breaking Wi-Fi on these devices.
      This patch adds does the necessary changes, similar to the ones done for
      other chips.
      
      Fixes: ea11a89c ("wifi: brcmfmac: add flag for random seed during firmware download")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAditya Garg <gargaditya08@live.com>
      Acked-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://patch.msgid.link/47E43F07-E11D-478C-86D4-23627154AC7C@live.com
      0e9724d0
    • Cosmin Ratiu's avatar
      bonding: Correctly support GSO ESP offload · 9e6c4e6b
      Cosmin Ratiu authored and Paolo Abeni's avatar Paolo Abeni committed
      
      The referenced fix is incomplete. It correctly computes
      bond_dev->gso_partial_features across slaves, but unfortunately
      netdev_fix_features discards gso_partial_features from the feature set
      if NETIF_F_GSO_PARTIAL isn't set in bond_dev->features.
      
      This is visible with ethtool -k bond0 | grep esp:
      tx-esp-segmentation: off [requested on]
      esp-hw-offload: on
      esp-tx-csum-hw-offload: on
      
      This patch reworks the bonding GSO offload support by:
      - making aggregating gso_partial_features across slaves similar to the
        other feature sets (this part is a no-op).
      - advertising the default partial gso features on empty bond devs, same
        as with other feature sets (also a no-op).
      - adding NETIF_F_GSO_PARTIAL to hw_enc_features filtered across slaves.
      - adding NETIF_F_GSO_PARTIAL to features in bond_setup()
      
      With all of these, 'ethtool -k bond0 | grep esp' now reports:
      tx-esp-segmentation: on
      esp-hw-offload: on
      esp-tx-csum-hw-offload: on
      
      Fixes: 4861333b ("bonding: add ESP offload features when slaves support")
      Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Signed-off-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
      Acked-by: default avatarJay Vosburgh <jv@jvosburgh.net>
      Link: https://patch.msgid.link/20250127104147.759658-1-cratiu@nvidia.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      9e6c4e6b
    • Paolo Abeni's avatar
      Merge branch 'limit-devicetree-parameters-to-hardware-capability' · 740a3e71
      Paolo Abeni authored
      Kunihiko Hayashi says:
      
      ====================
      Limit devicetree parameters to hardware capability
      
      This series includes patches that checks the devicetree properties,
      the number of MTL queues and FIFO size values, and if these specified
      values exceed the value contained in hardware capabilities, limit to
      the values from the capabilities. Do nothing if the capabilities don't
      have any specified values.
      
      And this sets hardware capability values if FIFO sizes are not specified
      and removes redundant lines.
      ====================
      
      Link: https://patch.msgid.link/20250127013820.2941044-1-hayashi.kunihiko@socionext.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      740a3e71
    • Kunihiko Hayashi's avatar
      net: stmmac: Specify hardware capability value when FIFO size isn't specified · 8865d226
      Kunihiko Hayashi authored and Paolo Abeni's avatar Paolo Abeni committed
      
      When Tx/Rx FIFO size is not specified in advance, the driver checks if
      the value is zero and sets the hardware capability value in functions
      where that value is used.
      
      Consolidate the check and settings into function stmmac_hw_init() and
      remove redundant other statements.
      
      If FIFO size is zero and the hardware capability also doesn't have upper
      limit values, return with an error message.
      
      Signed-off-by: default avatarKunihiko Hayashi <hayashi.kunihiko@socionext.com>
      Reviewed-by: default avatarYanteng Si <si.yanteng@linux.dev>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      8865d226
    • Kunihiko Hayashi's avatar
      net: stmmac: Limit FIFO size by hardware capability · 044f2fba
      Kunihiko Hayashi authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Tx/Rx FIFO size is specified by the parameter "{tx,rx}-fifo-depth" from
      stmmac_platform layer.
      
      However, these values are constrained by upper limits determined by the
      capabilities of each hardware feature. There is a risk that the upper
      bits will be truncated due to the calculation, so it's appropriate to
      limit them to the upper limit values and display a warning message.
      
      This only works if the hardware capability has the upper limit values.
      
      Fixes: e7877f52 ("stmmac: Read tx-fifo-depth and rx-fifo-depth from the devicetree")
      Signed-off-by: default avatarKunihiko Hayashi <hayashi.kunihiko@socionext.com>
      Reviewed-by: default avatarYanteng Si <si.yanteng@linux.dev>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      044f2fba
    • Kunihiko Hayashi's avatar
      net: stmmac: Limit the number of MTL queues to hardware capability · f5fb35a3
      Kunihiko Hayashi authored and Paolo Abeni's avatar Paolo Abeni committed
      
      The number of MTL queues to use is specified by the parameter
      "snps,{tx,rx}-queues-to-use" from stmmac_platform layer.
      
      However, the maximum numbers of queues are constrained by upper limits
      determined by the capability of each hardware feature. It's appropriate
      to limit the values not to exceed the upper limit values and display
      a warning message.
      
      This only works if the hardware capability has the upper limit values.
      
      Fixes: d976a525 ("net: stmmac: multiple queues dt configuration")
      Signed-off-by: default avatarKunihiko Hayashi <hayashi.kunihiko@socionext.com>
      Reviewed-by: default avatarYanteng Si <si.yanteng@linux.dev>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      f5fb35a3
    • Gal Pressman's avatar
      ethtool: Fix set RXNFC command with symmetric RSS hash · 4f5a52ad
      Gal Pressman authored and Paolo Abeni's avatar Paolo Abeni committed
      
      The sanity check that both source and destination are set when symmetric
      RSS hash is requested is only relevant for ETHTOOL_SRXFH (rx-flow-hash),
      it should not be performed on any other commands (e.g.
      ETHTOOL_SRXCLSRLINS/ETHTOOL_SRXCLSRLDEL).
      
      This resolves accessing uninitialized 'info.data' field, and fixes false
      errors in rule insertion:
        # ethtool --config-ntuple eth2 flow-type ip4 dst-ip 255.255.255.255 action -1 loc 0
        rmgr: Cannot insert RX class rule: Invalid argument
        Cannot insert classification rule
      
      Fixes: 13e59344 ("net: ethtool: add support for symmetric-xor RSS hash")
      Cc: Ahmed Zaki <ahmed.zaki@intel.com>
      Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarGal Pressman <gal@nvidia.com>
      Reviewed-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
      Reviewed-by: default avatarEdward Cree <ecree.xilinx@gmail.com>
      Reviewed-by: default avatarAhmed Zaki <ahmed.zaki@intel.com>
      Link: https://patch.msgid.link/20250126191845.316589-1-gal@nvidia.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      4f5a52ad
    • Paolo Abeni's avatar
      Merge branch 'usbnet-ipheth-prevent-oob-reads-of-ndp16' · e091043b
      Paolo Abeni authored
      Foster Snowhill says:
      
      ====================
      usbnet: ipheth: prevent OoB reads of NDP16
      
      iOS devices support two types of tethering over USB: regular, where the
      internet connection is shared from the phone to the attached computer,
      and reverse, where the internet connection is shared from the attached
      computer to the phone.
      
      The `ipheth` driver is responsible for regular tethering only. With this
      tethering type, iOS devices support two encapsulation modes on RX:
      legacy and NCM.
      
      In "NCM mode", the iOS device encapsulates RX (phone->computer) traffic
      in NCM Transfer Blocks (similarly to CDC NCM). However, unlike reverse
      tethering, regular tethering is not compliant with the CDC NCM spec:
      
      * Does not have the required CDC NCM descriptors
      * TX (computer->phone) is not NCM-encapsulated at all
      
      Thus `ipheth` implements a very limited subset of the spec with the sole
      purpose of parsing RX URBs. This driver does not aim to be
      a CDC NCM-compliant implementation and, in fact, can't be one because of
      the points above.
      
      For a complete spec-compliant CDC NCM implementation, there is already
      the `cdc_ncm` driver. This driver is used for reverse tethering on iOS
      devices. This patch series does not in any way change `cdc_ncm`.
      
      In the first iteration of the NCM mode implementation in `ipheth`,
      there were a few potential out of bounds reads when processing malformed
      URBs received from a connected device:
      
      * Only the start of NDP16 (wNdpIndex) was checked to fit in the URB
        buffer.
      * Datagram length check as part of DPEs could overflow.
      * DPEs could be read past the end of NDP16 and even end of URB buffer
        if a trailer DPE wasn't encountered.
      
      The above is not expected to happen in normal device operation.
      
      To address the above issues for iOS devices in NCM mode, rely on
      and check for a specific fixed format of incoming URBs expected from
      an iOS device:
      
      * 12-byte NTH16
      * 96-byte NDP16, allowing up to 22 DPEs (up to 21 datagrams + trailer)
      
      On iOS, NDP16 directly follows NTH16, and its length is constant
      regardless of the DPE count.
      
      As the regular tethering implementation of iOS devices isn't compliant
      with CDC NCM, it's not possible to use the `cdc_ncm` driver to handle
      this functionality. Furthermore, while the logic required to properly
      parse URBs with NCM-encapsulated frames is already part of said driver,
      I haven't found a nice way to reuse the existing code without messing
      with the `cdc_ncm` driver itself.
      
      I didn't want to reimplement more of the spec than I absolutely had to,
      because that work had already been done in `cdc_ncm`. Instead, to limit
      the scope, I chose to rely on the specific URB format of iOS devices
      that hasn't changed since the NCM mode was introduced there.
      
      I tested each individual patch in the v5 series with iPhone 15 Pro Max,
      iOS 18.2.1: compiled cleanly, ran iperf3 between phone and computer,
      observed no errors in either kernel log or interface statistics.
      
      v4 was Reviewed-by Jakub Kicinski <kuba@kernel.org>. Compared to v4,
      v5 has no code changes. The two differences are:
      
      * Patch "usbnet: ipheth: break up NCM header size computation"
        moved later in the series, closer to a subsequent commit that makes
        use of the change.
      * In patch "usbnet: ipheth: refactor NCM datagram loop", removed
        a stray paragraph in commit msg.
      
      Above items are also noted in the changelogs of respective patches.
      ====================
      
      Link: https://patch.msgid.link/20250125235409.3106594-1-forst@pen.gy
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      e091043b
    • Foster Snowhill's avatar
      usbnet: ipheth: document scope of NCM implementation · be154b59
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Clarify that the "NCM" implementation in `ipheth` is very limited, as
      iOS devices aren't compatible with the CDC NCM specification in regular
      tethering mode.
      
      For a standards-compliant implementation, one shall turn to
      the `cdc_ncm` module.
      
      Cc: stable@vger.kernel.org # 6.5.x
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      be154b59
    • Foster Snowhill's avatar
      usbnet: ipheth: fix DPE OoB read · ee591f2b
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Fix an out-of-bounds DPE read, limit the number of processed DPEs to
      the amount that fits into the fixed-size NDP16 header.
      
      Fixes: a2d274c6 ("usbnet: ipheth: add CDC NCM support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      ee591f2b
    • Foster Snowhill's avatar
      usbnet: ipheth: break up NCM header size computation · efcbc678
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Originally, the total NCM header size was computed as the sum of two
      vaguely labelled constants. While accurate, it wasn't particularly clear
      where they were coming from.
      
      Use sizes of existing NCM structs where available. Define the total
      NDP16 size based on the maximum amount of DPEs that can fit into the
      iOS-specific fixed-size header.
      
      This change does not fix any particular issue. Rather, it introduces
      intermediate constants that will simplify subsequent commits.
      It should also make it clearer for the reader where the constant values
      come from.
      
      Cc: stable@vger.kernel.org # 6.5.x
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      efcbc678
    • Foster Snowhill's avatar
      usbnet: ipheth: refactor NCM datagram loop · 2a9a1964
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Introduce an rx_error label to reduce repetitions in the header
      signature checks.
      
      Store wDatagramIndex and wDatagramLength after endianness conversion to
      avoid repeated le16_to_cpu() calls.
      
      Rewrite the loop to return on a null trailing DPE, which is required
      by the CDC NCM spec. In case it is missing, fall through to rx_error.
      
      This change does not fix any particular issue. Its purpose is to
      simplify a subsequent commit that fixes a potential OoB read by limiting
      the maximum amount of processed DPEs.
      
      Cc: stable@vger.kernel.org # 6.5.x
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      2a9a1964
    • Foster Snowhill's avatar
      usbnet: ipheth: use static NDP16 location in URB · 86586dcb
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Original code allowed for the start of NDP16 to be anywhere within the
      URB based on the `wNdpIndex` value in NTH16. Only the start position of
      NDP16 was checked, so it was possible for even the fixed-length part
      of NDP16 to extend past the end of URB, leading to an out-of-bounds
      read.
      
      On iOS devices, the NDP16 header always directly follows NTH16. Rely on
      and check for this specific format.
      
      This, along with NCM-specific minimal URB length check that already
      exists, will ensure that the fixed-length part of NDP16 plus a set
      amount of DPEs fit within the URB.
      
      Note that this commit alone does not fully address the OoB read.
      The limit on the amount of DPEs needs to be enforced separately.
      
      Fixes: a2d274c6 ("usbnet: ipheth: add CDC NCM support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      86586dcb
    • Foster Snowhill's avatar
      usbnet: ipheth: check that DPE points past NCM header · 429fa68b
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      By definition, a DPE points at the start of a network frame/datagram.
      Thus it makes no sense for it to point at anything that's part of the
      NCM header. It is not a security issue, but merely an indication of
      a malformed DPE.
      
      Enforce that all DPEs point at the data portion of the URB, past the
      NCM header.
      
      Fixes: a2d274c6 ("usbnet: ipheth: add CDC NCM support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      429fa68b
    • Foster Snowhill's avatar
      usbnet: ipheth: fix possible overflow in DPE length check · c219427e
      Foster Snowhill authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Originally, it was possible for the DPE length check to overflow if
      wDatagramIndex + wDatagramLength > U16_MAX. This could lead to an OoB
      read.
      
      Move the wDatagramIndex term to the other side of the inequality.
      
      An existing condition ensures that wDatagramIndex < urb->actual_length.
      
      Fixes: a2d274c6 ("usbnet: ipheth: add CDC NCM support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarFoster Snowhill <forst@pen.gy>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      c219427e
    • Thomas Weißschuh's avatar
      ptp: Properly handle compat ioctls · 19ae40f5
      Thomas Weißschuh authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Pointer arguments passed to ioctls need to pass through compat_ptr() to
      work correctly on s390; as explained in Documentation/driver-api/ioctl.rst.
      Detect compat mode at runtime and call compat_ptr() for those commands
      which do take pointer arguments.
      
      Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
      Link: https://lore.kernel.org/lkml/1ba5d3a4-7931-455b-a3ce-85a968a7cb10@app.fastmail.com/
      
      
      Fixes: d94ba80e ("ptp: Added a brand new class driver for ptp clocks.")
      Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
      Reviewed-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Link: https://patch.msgid.link/20250125-posix-clock-compat_ioctl-v2-1-11c865c500eb@weissschuh.net
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      19ae40f5
    • Nikita Zhandarovich's avatar
      net: usb: rtl8150: enable basic endpoint checking · 90b7f296
      Nikita Zhandarovich authored and Paolo Abeni's avatar Paolo Abeni committed
      
      Syzkaller reports [1] encountering a common issue of utilizing a wrong
      usb endpoint type during URB submitting stage. This, in turn, triggers
      a warning shown below.
      
      For now, enable simple endpoint checking (specifically, bulk and
      interrupt eps, testing control one is not essential) to mitigate
      the issue with a view to do other related cosmetic changes later,
      if they are necessary.
      
      [1] Syzkaller report:
      usb 1-1: BOGUS urb xfer, pipe 3 != type 1
      WARNING: CPU: 1 PID: 2586 at drivers/usb/core/urb.c:503 usb_submit_urb+0xe4b/0x1730 driv>
      Modules linked in:
      CPU: 1 UID: 0 PID: 2586 Comm: dhcpcd Not tainted 6.11.0-rc4-syzkaller-00069-gfc88bb11617>
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
      RIP: 0010:usb_submit_urb+0xe4b/0x1730 drivers/usb/core/urb.c:503
      Code: 84 3c 02 00 00 e8 05 e4 fc fc 4c 89 ef e8 fd 25 d7 fe 45 89 e0 89 e9 4c 89 f2 48 8>
      RSP: 0018:ffffc9000441f740 EFLAGS: 00010282
      RAX: 0000000000000000 RBX: ffff888112487a00 RCX: ffffffff811a99a9
      RDX: ffff88810df6ba80 RSI: ffffffff811a99b6 RDI: 0000000000000001
      RBP: 0000000000000003 R08: 0000000000000001 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000001
      R13: ffff8881023bf0a8 R14: ffff888112452a20 R15: ffff888112487a7c
      FS:  00007fc04eea5740(0000) GS:ffff8881f6300000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f0a1de9f870 CR3: 000000010dbd0000 CR4: 00000000003506f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       rtl8150_open+0x300/0xe30 drivers/net/usb/rtl8150.c:733
       __dev_open+0x2d4/0x4e0 net/core/dev.c:1474
       __dev_change_flags+0x561/0x720 net/core/dev.c:8838
       dev_change_flags+0x8f/0x160 net/core/dev.c:8910
       devinet_ioctl+0x127a/0x1f10 net/ipv4/devinet.c:1177
       inet_ioctl+0x3aa/0x3f0 net/ipv4/af_inet.c:1003
       sock_do_ioctl+0x116/0x280 net/socket.c:1222
       sock_ioctl+0x22e/0x6c0 net/socket.c:1341
       vfs_ioctl fs/ioctl.c:51 [inline]
       __do_sys_ioctl fs/ioctl.c:907 [inline]
       __se_sys_ioctl fs/ioctl.c:893 [inline]
       __x64_sys_ioctl+0x193/0x220 fs/ioctl.c:893
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      RIP: 0033:0x7fc04ef73d49
      ...
      
      This change has not been tested on real hardware.
      
      Reported-and-tested-by: default avatar <syzbot+d7e968426f644b567e31@syzkaller.appspotmail.com>
      Closes: https://syzkaller.appspot.com/bug?extid=d7e968426f644b567e31
      
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarNikita Zhandarovich <n.zhandarovich@fintech.ru>
      Link: https://patch.msgid.link/20250124093020.234642-1-n.zhandarovich@fintech.ru
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      90b7f296
    • Jakub Kicinski's avatar
      Merge branch '200GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue · b2aec4ef
      Jakub Kicinski authored
      Tony Nguyen says:
      
      ====================
      Intel Wired LAN Driver Updates 2025-01-24 (idpf, ice, iavf)
      
      For idpf:
      
      Emil adds memory barrier when accessing control queue descriptors and
      restores call to idpf_vc_xn_shutdown() when resetting.
      
      Manoj Vishwanathan expands transaction lock to properly protect xn->salt
      value and adds additional debugging information.
      
      Marco Leogrande converts workqueues to be unbound.
      
      For ice:
      
      Przemek fixes incorrect size use for array.
      
      Mateusz removes reporting of invalid parameter and value.
      
      For iavf:
      
      Michal adjusts some VLAN changes to occur without a PF call to avoid
      timing issues with the calls.
      
      * '200GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
        iavf: allow changing VLAN state without calling PF
        ice: remove invalid parameter of equalizer
        ice: fix ice_parser_rt::bst_key array size
        idpf: add more info during virtchnl transaction timeout/salt mismatch
        idpf: convert workqueues to unbound
        idpf: Acquire the lock before accessing the xn->salt
        idpf: fix transaction timeouts on reset
        idpf: add read memory barrier when checking descriptor done bit
      ====================
      
      Link: https://patch.msgid.link/20250124213213.1328775-1-anthony.l.nguyen@intel.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b2aec4ef
  4. Jan 27, 2025
    • Jakub Kicinski's avatar
      Merge tag 'ipsec-2025-01-27' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec · 463ec95a
      Jakub Kicinski authored
      Steffen Klassert says:
      
      ====================
      pull request (net): ipsec 2025-01-27
      
      1) Fix incrementing the upper 32 bit sequence numbers for GSO skbs.
         From Jianbo Liu.
      
      2) Fix an out-of-bounds read on xfrm state lookup.
         From Florian Westphal.
      
      3) Fix secpath handling on packet offload mode.
         From Alexandre Cassen.
      
      4) Fix the usage of skb->sk in the xfrm layer.
      
      5) Don't disable preemption while looking up cache state
         to fix PREEMPT_RT.
         From Sebastian Sewior.
      
      * tag 'ipsec-2025-01-27' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec:
        xfrm: Don't disable preemption while looking up cache state.
        xfrm: Fix the usage of skb->sk
        xfrm: delete intermediate secpath entry in packet offload mode
        xfrm: state: fix out-of-bounds read during lookup
        xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO
      ====================
      
      Link: https://patch.msgid.link/20250127060757.3946314-1-steffen.klassert@secunet.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      463ec95a
    • Jakub Kicinski's avatar
      Merge branch 'mptcp-fixes-addressing-syzbot-reports' · 0154b949
      Jakub Kicinski authored
      Matthieu Baerts says:
      
      ====================
      mptcp: fixes addressing syzbot reports
      
      Recently, a few issues linked to MPTCP have been reported by syzbot. All
      the remaining ones are addressed in this series.
      
      - Patch 1: Address "KMSAN: uninit-value in mptcp_incoming_options (2)".
        A fix for v5.11.
      
      - Patch 2: Address "WARNING in mptcp_pm_nl_set_flags (2)". A fix for
        v5.18.
      
      - Patch 3: Address "WARNING in __mptcp_clean_una (2)". A fix for v6.4,
        backported up to v6.1.
      ====================
      
      Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-0-af73258a726f@kernel.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0154b949
    • Paolo Abeni's avatar
      mptcp: handle fastopen disconnect correctly · 619af16b
      Paolo Abeni authored
      
      Syzbot was able to trigger a data stream corruption:
      
        WARNING: CPU: 0 PID: 9846 at net/mptcp/protocol.c:1024 __mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024
        Modules linked in:
        CPU: 0 UID: 0 PID: 9846 Comm: syz-executor351 Not tainted 6.13.0-rc2-syzkaller-00059-g00a5acdbf398 #0
        Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
        RIP: 0010:__mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024
        Code: fa ff ff 48 8b 4c 24 18 80 e1 07 fe c1 38 c1 0f 8c 8e fa ff ff 48 8b 7c 24 18 e8 e0 db 54 f6 e9 7f fa ff ff e8 e6 80 ee f5 90 <0f> 0b 90 4c 8b 6c 24 40 4d 89 f4 e9 04 f5 ff ff 44 89 f1 80 e1 07
        RSP: 0018:ffffc9000c0cf400 EFLAGS: 00010293
        RAX: ffffffff8bb0dd5a RBX: ffff888033f5d230 RCX: ffff888059ce8000
        RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
        RBP: ffffc9000c0cf518 R08: ffffffff8bb0d1dd R09: 1ffff110170c8928
        R10: dffffc0000000000 R11: ffffed10170c8929 R12: 0000000000000000
        R13: ffff888033f5d220 R14: dffffc0000000000 R15: ffff8880592b8000
        FS:  00007f6e866496c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 00007f6e86f491a0 CR3: 00000000310e6000 CR4: 00000000003526f0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
         <TASK>
         __mptcp_clean_una_wakeup+0x7f/0x2d0 net/mptcp/protocol.c:1074
         mptcp_release_cb+0x7cb/0xb30 net/mptcp/protocol.c:3493
         release_sock+0x1aa/0x1f0 net/core/sock.c:3640
         inet_wait_for_connect net/ipv4/af_inet.c:609 [inline]
         __inet_stream_connect+0x8bd/0xf30 net/ipv4/af_inet.c:703
         mptcp_sendmsg_fastopen+0x2a2/0x530 net/mptcp/protocol.c:1755
         mptcp_sendmsg+0x1884/0x1b10 net/mptcp/protocol.c:1830
         sock_sendmsg_nosec net/socket.c:711 [inline]
         __sock_sendmsg+0x1a6/0x270 net/socket.c:726
         ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583
         ___sys_sendmsg net/socket.c:2637 [inline]
         __sys_sendmsg+0x269/0x350 net/socket.c:2669
         do_syscall_x64 arch/x86/entry/common.c:52 [inline]
         do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
         entry_SYSCALL_64_after_hwframe+0x77/0x7f
        RIP: 0033:0x7f6e86ebfe69
        Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 1f 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
        RSP: 002b:00007f6e86649168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
        RAX: ffffffffffffffda RBX: 00007f6e86f491b8 RCX: 00007f6e86ebfe69
        RDX: 0000000030004001 RSI: 0000000020000080 RDI: 0000000000000003
        RBP: 00007f6e86f491b0 R08: 00007f6e866496c0 R09: 0000000000000000
        R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6e86f491bc
        R13: 000000000000006e R14: 00007ffe445d9420 R15: 00007ffe445d9508
         </TASK>
      
      The root cause is the bad handling of disconnect() generated internally
      by the MPTCP protocol in case of connect FASTOPEN errors.
      
      Address the issue increasing the socket disconnect counter even on such
      a case, to allow other threads waiting on the same socket lock to
      properly error out.
      
      Fixes: c2b2ae39 ("mptcp: handle correctly disconnect() failures")
      Cc: stable@vger.kernel.org
      Reported-by: default avatar <syzbot+ebc0b8ae5d3590b2c074@syzkaller.appspotmail.com>
      Closes: https://lore.kernel.org/67605870.050a0220.37aaf.0137.GAE@google.com
      Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/537
      
      
      Tested-by: default avatar <syzbot+ebc0b8ae5d3590b2c074@syzkaller.appspotmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Reviewed-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Signed-off-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-3-af73258a726f@kernel.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      619af16b
    • Matthieu Baerts (NGI0)'s avatar
      mptcp: pm: only set fullmesh for subflow endp · 1bb0d134
      Matthieu Baerts (NGI0) authored
      
      With the in-kernel path-manager, it is possible to change the 'fullmesh'
      flag. The code in mptcp_pm_nl_fullmesh() expects to change it only on
      'subflow' endpoints, to recreate more or less subflows using the linked
      address.
      
      Unfortunately, the set_flags() hook was a bit more permissive, and
      allowed 'implicit' endpoints to get the 'fullmesh' flag while it is not
      allowed before.
      
      That's what syzbot found, triggering the following warning:
      
        WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 __mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline]
        WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline]
        WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline]
        WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064
        Modules linked in:
        CPU: 0 UID: 0 PID: 6499 Comm: syz.1.413 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0
        Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
        RIP: 0010:__mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline]
        RIP: 0010:mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline]
        RIP: 0010:mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline]
        RIP: 0010:mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064
        Code: 01 00 00 49 89 c5 e8 fb 45 e8 f5 e9 b8 fc ff ff e8 f1 45 e8 f5 4c 89 f7 be 03 00 00 00 e8 44 1d 0b f9 eb a0 e8 dd 45 e8 f5 90 <0f> 0b 90 e9 17 ff ff ff 89 d9 80 e1 07 38 c1 0f 8c c9 fc ff ff 48
        RSP: 0018:ffffc9000d307240 EFLAGS: 00010293
        RAX: ffffffff8bb72e03 RBX: 0000000000000000 RCX: ffff88807da88000
        RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
        RBP: ffffc9000d307430 R08: ffffffff8bb72cf0 R09: 1ffff1100b842a5e
        R10: dffffc0000000000 R11: ffffed100b842a5f R12: ffff88801e2e5ac0
        R13: ffff88805c214800 R14: ffff88805c2152e8 R15: 1ffff1100b842a5d
        FS:  00005555619f6500(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000020002840 CR3: 00000000247e6000 CR4: 00000000003526f0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
         <TASK>
         genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
         genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
         genl_rcv_msg+0xb14/0xec0 net/netlink/genetlink.c:1210
         netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2542
         genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219
         netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
         netlink_unicast+0x7f6/0x990 net/netlink/af_netlink.c:1347
         netlink_sendmsg+0x8e4/0xcb0 net/netlink/af_netlink.c:1891
         sock_sendmsg_nosec net/socket.c:711 [inline]
         __sock_sendmsg+0x221/0x270 net/socket.c:726
         ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583
         ___sys_sendmsg net/socket.c:2637 [inline]
         __sys_sendmsg+0x269/0x350 net/socket.c:2669
         do_syscall_x64 arch/x86/entry/common.c:52 [inline]
         do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
         entry_SYSCALL_64_after_hwframe+0x77/0x7f
        RIP: 0033:0x7f5fe8785d29
        Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
        RSP: 002b:00007fff571f5558 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
        RAX: ffffffffffffffda RBX: 00007f5fe8975fa0 RCX: 00007f5fe8785d29
        RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000007
        RBP: 00007f5fe8801b08 R08: 0000000000000000 R09: 0000000000000000
        R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
        R13: 00007f5fe8975fa0 R14: 00007f5fe8975fa0 R15: 00000000000011f4
         </TASK>
      
      Here, syzbot managed to set the 'fullmesh' flag on an 'implicit' and
      used -- according to 'id_avail_bitmap' -- endpoint, causing the PM to
      try decrement the local_addr_used counter which is only incremented for
      the 'subflow' endpoint.
      
      Note that 'no type' endpoints -- not 'subflow', 'signal', 'implicit' --
      are fine, because their ID will not be marked as used in the 'id_avail'
      bitmap, and setting 'fullmesh' can help forcing the creation of subflow
      when receiving an ADD_ADDR.
      
      Fixes: 73c762c1 ("mptcp: set fullmesh flag in pm_netlink")
      Cc: stable@vger.kernel.org
      Reported-by: default avatar <syzbot+cd16e79c1e45f3fe0377@syzkaller.appspotmail.com>
      Closes: https://lore.kernel.org/6786ac51.050a0220.216c54.00a6.GAE@google.com
      Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/540
      
      
      Reviewed-by: default avatarMat Martineau <martineau@kernel.org>
      Signed-off-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-2-af73258a726f@kernel.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      1bb0d134
    • Paolo Abeni's avatar
      mptcp: consolidate suboption status · c86b0007
      Paolo Abeni authored
      
      MPTCP maintains the received sub-options status is the bitmask carrying
      the received suboptions and in several bitfields carrying per suboption
      additional info.
      
      Zeroing the bitmask before parsing is not enough to ensure a consistent
      status, and the MPTCP code has to additionally clear some bitfiled
      depending on the actually parsed suboption.
      
      The above schema is fragile, and syzbot managed to trigger a path where
      a relevant bitfield is not cleared/initialized:
      
        BUG: KMSAN: uninit-value in __mptcp_expand_seq net/mptcp/options.c:1030 [inline]
        BUG: KMSAN: uninit-value in mptcp_expand_seq net/mptcp/protocol.h:864 [inline]
        BUG: KMSAN: uninit-value in ack_update_msk net/mptcp/options.c:1060 [inline]
        BUG: KMSAN: uninit-value in mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209
         __mptcp_expand_seq net/mptcp/options.c:1030 [inline]
         mptcp_expand_seq net/mptcp/protocol.h:864 [inline]
         ack_update_msk net/mptcp/options.c:1060 [inline]
         mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209
         tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
         tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264
         tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916
         tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
         ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
         ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
         NF_HOOK include/linux/netfilter.h:314 [inline]
         ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
         dst_input include/net/dst.h:460 [inline]
         ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
         NF_HOOK include/linux/netfilter.h:314 [inline]
         ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
         __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
         __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
         process_backlog+0x4ad/0xa50 net/core/dev.c:6149
         __napi_poll+0xe7/0x980 net/core/dev.c:6902
         napi_poll net/core/dev.c:6971 [inline]
         net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
         handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
         __do_softirq+0x14/0x1a kernel/softirq.c:595
         do_softirq+0x9a/0x100 kernel/softirq.c:462
         __local_bh_enable_ip+0x9f/0xb0 kernel/softirq.c:389
         local_bh_enable include/linux/bottom_half.h:33 [inline]
         rcu_read_unlock_bh include/linux/rcupdate.h:919 [inline]
         __dev_queue_xmit+0x2758/0x57d0 net/core/dev.c:4493
         dev_queue_xmit include/linux/netdevice.h:3168 [inline]
         neigh_hh_output include/net/neighbour.h:523 [inline]
         neigh_output include/net/neighbour.h:537 [inline]
         ip_finish_output2+0x187c/0x1b70 net/ipv4/ip_output.c:236
         __ip_finish_output+0x287/0x810
         ip_finish_output+0x4b/0x600 net/ipv4/ip_output.c:324
         NF_HOOK_COND include/linux/netfilter.h:303 [inline]
         ip_output+0x15f/0x3f0 net/ipv4/ip_output.c:434
         dst_output include/net/dst.h:450 [inline]
         ip_local_out net/ipv4/ip_output.c:130 [inline]
         __ip_queue_xmit+0x1f2a/0x20d0 net/ipv4/ip_output.c:536
         ip_queue_xmit+0x60/0x80 net/ipv4/ip_output.c:550
         __tcp_transmit_skb+0x3cea/0x4900 net/ipv4/tcp_output.c:1468
         tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
         tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
         __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
         tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
         __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
         __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
         mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
         mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
         mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
         mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
         mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
         mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
         genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
         genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
         genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
         netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
         genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
         netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
         netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
         netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
         sock_sendmsg_nosec net/socket.c:711 [inline]
         __sock_sendmsg+0x30f/0x380 net/socket.c:726
         ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
         ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
         __sys_sendmsg net/socket.c:2669 [inline]
         __do_sys_sendmsg net/socket.c:2674 [inline]
         __se_sys_sendmsg net/socket.c:2672 [inline]
         __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
         x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
         do_syscall_x64 arch/x86/entry/common.c:52 [inline]
         do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
         entry_SYSCALL_64_after_hwframe+0x77/0x7f
      
        Uninit was stored to memory at:
         mptcp_get_options+0x2c0f/0x2f20 net/mptcp/options.c:397
         mptcp_incoming_options+0x19a/0x3d30 net/mptcp/options.c:1150
         tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
         tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264
         tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916
         tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
         ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
         ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
         NF_HOOK include/linux/netfilter.h:314 [inline]
         ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
         dst_input include/net/dst.h:460 [inline]
         ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
         NF_HOOK include/linux/netfilter.h:314 [inline]
         ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
         __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
         __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
         process_backlog+0x4ad/0xa50 net/core/dev.c:6149
         __napi_poll+0xe7/0x980 net/core/dev.c:6902
         napi_poll net/core/dev.c:6971 [inline]
         net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
         handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
         __do_softirq+0x14/0x1a kernel/softirq.c:595
      
        Uninit was stored to memory at:
         put_unaligned_be32 include/linux/unaligned.h:68 [inline]
         mptcp_write_options+0x17f9/0x3100 net/mptcp/options.c:1417
         mptcp_options_write net/ipv4/tcp_output.c:465 [inline]
         tcp_options_write+0x6d9/0xe90 net/ipv4/tcp_output.c:759
         __tcp_transmit_skb+0x294b/0x4900 net/ipv4/tcp_output.c:1414
         tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
         tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
         __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
         tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
         __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
         __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
         mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
         mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
         mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
         mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
         mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
         mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
         genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
         genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
         genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
         netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
         genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
         netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
         netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
         netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
         sock_sendmsg_nosec net/socket.c:711 [inline]
         __sock_sendmsg+0x30f/0x380 net/socket.c:726
         ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
         ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
         __sys_sendmsg net/socket.c:2669 [inline]
         __do_sys_sendmsg net/socket.c:2674 [inline]
         __se_sys_sendmsg net/socket.c:2672 [inline]
         __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
         x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
         do_syscall_x64 arch/x86/entry/common.c:52 [inline]
         do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
         entry_SYSCALL_64_after_hwframe+0x77/0x7f
      
        Uninit was stored to memory at:
         mptcp_pm_add_addr_signal+0x3d7/0x4c0
         mptcp_established_options_add_addr net/mptcp/options.c:666 [inline]
         mptcp_established_options+0x1b9b/0x3a00 net/mptcp/options.c:884
         tcp_established_options+0x2c4/0x7d0 net/ipv4/tcp_output.c:1012
         __tcp_transmit_skb+0x5b7/0x4900 net/ipv4/tcp_output.c:1333
         tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
         tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
         __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
         tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
         __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
         __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
         mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
         mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
         mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
         mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
         mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
         mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
         genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
         genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
         genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
         netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
         genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
         netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
         netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
         netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
         sock_sendmsg_nosec net/socket.c:711 [inline]
         __sock_sendmsg+0x30f/0x380 net/socket.c:726
         ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
         ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
         __sys_sendmsg net/socket.c:2669 [inline]
         __do_sys_sendmsg net/socket.c:2674 [inline]
         __se_sys_sendmsg net/socket.c:2672 [inline]
         __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
         x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
         do_syscall_x64 arch/x86/entry/common.c:52 [inline]
         do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
         entry_SYSCALL_64_after_hwframe+0x77/0x7f
      
        Uninit was stored to memory at:
         mptcp_pm_add_addr_received+0x95f/0xdd0 net/mptcp/pm.c:235
         mptcp_incoming_options+0x2983/0x3d30 net/mptcp/options.c:1169
         tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
         tcp_rcv_state_process+0x2a38/0x49d0 net/ipv4/tcp_input.c:6972
         tcp_v4_do_rcv+0xbf9/0x11a0 net/ipv4/tcp_ipv4.c:1939
         tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
         ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
         ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
         NF_HOOK include/linux/netfilter.h:314 [inline]
         ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
         dst_input include/net/dst.h:460 [inline]
         ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
         NF_HOOK include/linux/netfilter.h:314 [inline]
         ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
         __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
         __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
         process_backlog+0x4ad/0xa50 net/core/dev.c:6149
         __napi_poll+0xe7/0x980 net/core/dev.c:6902
         napi_poll net/core/dev.c:6971 [inline]
         net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
         handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
         __do_softirq+0x14/0x1a kernel/softirq.c:595
      
        Local variable mp_opt created at:
         mptcp_incoming_options+0x119/0x3d30 net/mptcp/options.c:1127
         tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
      
      The current schema is too fragile; address the issue grouping all the
      state-related data together and clearing the whole group instead of
      just the bitmask. This also cleans-up the code a bit, as there is no
      need to individually clear "random" bitfield in a couple of places
      any more.
      
      Fixes: 84dfe367 ("mptcp: send out dedicated ADD_ADDR packet")
      Cc: stable@vger.kernel.org
      Reported-by: default avatar <syzbot+23728c2df58b3bd175ad@syzkaller.appspotmail.com>
      Closes: https://lore.kernel.org/6786ac51.050a0220.216c54.00a7.GAE@google.com
      Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/541
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Reviewed-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Signed-off-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-1-af73258a726f@kernel.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c86b0007
    • Chenyuan Yang's avatar
      net: davicom: fix UAF in dm9000_drv_remove · 19e65c45
      Chenyuan Yang authored
      
      dm is netdev private data and it cannot be
      used after free_netdev() call. Using dm after free_netdev()
      can cause UAF bug. Fix it by moving free_netdev() at the end of the
      function.
      
      This is similar to the issue fixed in commit
      ad297cd2 ("net: qcom/emac: fix UAF in emac_remove").
      
      This bug is detected by our static analysis tool.
      
      Fixes: cf9e60aa ("net: davicom: Fix regulator not turned off on driver removal")
      Signed-off-by: default avatarChenyuan Yang <chenyuan0y@gmail.com>
      CC: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
      Link: https://patch.msgid.link/20250123214213.623518-1-chenyuan0y@gmail.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      19e65c45
    • Milos Reljin's avatar
      net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset · bd1bbab7
      Milos Reljin authored
      
      In application note (AN13663) for TJA1120, on page 30, there's a figure
      with average PHY startup timing values following software reset.
      The time it takes for SMI to become operational after software reset
      ranges roughly from 500 us to 1500 us.
      
      This commit adds 2000 us delay after MDIO write which triggers software
      reset. Without this delay, soft_reset function returns an error and
      prevents successful PHY init.
      
      Cc: stable@vger.kernel.org
      Fixes: b050f2f1 ("phy: nxp-c45: add driver for tja1103")
      Signed-off-by: default avatarMilos Reljin <milos_reljin@outlook.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://patch.msgid.link/AM8P250MB0124D258E5A71041AF2CC322E1E32@AM8P250MB0124.EURP250.PROD.OUTLOOK.COM
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      bd1bbab7
    • Shigeru Yoshida's avatar
      vxlan: Fix uninit-value in vxlan_vnifilter_dump() · 5066293b
      Shigeru Yoshida authored
      
      KMSAN reported an uninit-value access in vxlan_vnifilter_dump() [1].
      
      If the length of the netlink message payload is less than
      sizeof(struct tunnel_msg), vxlan_vnifilter_dump() accesses bytes
      beyond the message. This can lead to uninit-value access. Fix this by
      returning an error in such situations.
      
      [1]
      BUG: KMSAN: uninit-value in vxlan_vnifilter_dump+0x328/0x920 drivers/net/vxlan/vxlan_vnifilter.c:422
       vxlan_vnifilter_dump+0x328/0x920 drivers/net/vxlan/vxlan_vnifilter.c:422
       rtnl_dumpit+0xd5/0x2f0 net/core/rtnetlink.c:6786
       netlink_dump+0x93e/0x15f0 net/netlink/af_netlink.c:2317
       __netlink_dump_start+0x716/0xd60 net/netlink/af_netlink.c:2432
       netlink_dump_start include/linux/netlink.h:340 [inline]
       rtnetlink_dump_start net/core/rtnetlink.c:6815 [inline]
       rtnetlink_rcv_msg+0x1256/0x14a0 net/core/rtnetlink.c:6882
       netlink_rcv_skb+0x467/0x660 net/netlink/af_netlink.c:2542
       rtnetlink_rcv+0x35/0x40 net/core/rtnetlink.c:6944
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xed6/0x1290 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x1092/0x1230 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x330/0x3d0 net/socket.c:726
       ____sys_sendmsg+0x7f4/0xb50 net/socket.c:2583
       ___sys_sendmsg+0x271/0x3b0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2672
       x64_sys_call+0x3878/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      
      Uninit was created at:
       slab_post_alloc_hook mm/slub.c:4110 [inline]
       slab_alloc_node mm/slub.c:4153 [inline]
       kmem_cache_alloc_node_noprof+0x800/0xe80 mm/slub.c:4205
       kmalloc_reserve+0x13b/0x4b0 net/core/skbuff.c:587
       __alloc_skb+0x347/0x7d0 net/core/skbuff.c:678
       alloc_skb include/linux/skbuff.h:1323 [inline]
       netlink_alloc_large_skb+0xa5/0x280 net/netlink/af_netlink.c:1196
       netlink_sendmsg+0xac9/0x1230 net/netlink/af_netlink.c:1866
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x330/0x3d0 net/socket.c:726
       ____sys_sendmsg+0x7f4/0xb50 net/socket.c:2583
       ___sys_sendmsg+0x271/0x3b0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2672
       x64_sys_call+0x3878/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      
      CPU: 0 UID: 0 PID: 30991 Comm: syz.4.10630 Not tainted 6.12.0-10694-gc44daa7e3c73 #29
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
      
      Fixes: f9c4bb0b ("vxlan: vni filtering support on collect metadata device")
      Reported-by: default avatarsyzkaller <syzkaller@googlegroups.com>
      Signed-off-by: default avatarShigeru Yoshida <syoshida@redhat.com>
      Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Link: https://patch.msgid.link/20250123145746.785768-1-syoshida@redhat.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5066293b
    • David Howells's avatar
      rxrpc, afs: Fix peer hash locking vs RCU callback · 79d458c1
      David Howells authored
      
      In its address list, afs now retains pointers to and refs on one or more
      rxrpc_peer objects.  The address list is freed under RCU and at this time,
      it puts the refs on those peers.
      
      Now, when an rxrpc_peer object runs out of refs, it gets removed from the
      peer hash table and, for that, rxrpc has to take a spinlock.  However, it
      is now being called from afs's RCU cleanup, which takes place in BH
      context - but it is just taking an ordinary spinlock.
      
      The put may also be called from non-BH context, and so there exists the
      possibility of deadlock if the BH-based RCU cleanup happens whilst the hash
      spinlock is held.  This led to the attached lockdep complaint.
      
      Fix this by changing spinlocks of rxnet->peer_hash_lock back to
      BH-disabling locks.
      
          ================================
          WARNING: inconsistent lock state
          6.13.0-rc5-build2+ #1223 Tainted: G            E
          --------------------------------
          inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
          swapper/1/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
          ffff88810babe228 (&rxnet->peer_hash_lock){+.?.}-{3:3}, at: rxrpc_put_peer+0xcb/0x180
          {SOFTIRQ-ON-W} state was registered at:
            mark_usage+0x164/0x180
            __lock_acquire+0x544/0x990
            lock_acquire.part.0+0x103/0x280
            _raw_spin_lock+0x2f/0x40
            rxrpc_peer_keepalive_worker+0x144/0x440
            process_one_work+0x486/0x7c0
            process_scheduled_works+0x73/0x90
            worker_thread+0x1c8/0x2a0
            kthread+0x19b/0x1b0
            ret_from_fork+0x24/0x40
            ret_from_fork_asm+0x1a/0x30
          irq event stamp: 972402
          hardirqs last  enabled at (972402): [<ffffffff8244360e>] _raw_spin_unlock_irqrestore+0x2e/0x50
          hardirqs last disabled at (972401): [<ffffffff82443328>] _raw_spin_lock_irqsave+0x18/0x60
          softirqs last  enabled at (972300): [<ffffffff810ffbbe>] handle_softirqs+0x3ee/0x430
          softirqs last disabled at (972313): [<ffffffff810ffc54>] __irq_exit_rcu+0x44/0x110
      
          other info that might help us debug this:
           Possible unsafe locking scenario:
                 CPU0
                 ----
            lock(&rxnet->peer_hash_lock);
            <Interrupt>
              lock(&rxnet->peer_hash_lock);
      
           *** DEADLOCK ***
          1 lock held by swapper/1/0:
           #0: ffffffff83576be0 (rcu_callback){....}-{0:0}, at: rcu_lock_acquire+0x7/0x30
      
          stack backtrace:
          CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Tainted: G            E      6.13.0-rc5-build2+ #1223
          Tainted: [E]=UNSIGNED_MODULE
          Hardware name: ASUS All Series/H97-PLUS, BIOS 2306 10/09/2014
          Call Trace:
           <IRQ>
           dump_stack_lvl+0x57/0x80
           print_usage_bug.part.0+0x227/0x240
           valid_state+0x53/0x70
           mark_lock_irq+0xa5/0x2f0
           mark_lock+0xf7/0x170
           mark_usage+0xe1/0x180
           __lock_acquire+0x544/0x990
           lock_acquire.part.0+0x103/0x280
           _raw_spin_lock+0x2f/0x40
           rxrpc_put_peer+0xcb/0x180
           afs_free_addrlist+0x46/0x90 [kafs]
           rcu_do_batch+0x2d2/0x640
           rcu_core+0x2f7/0x350
           handle_softirqs+0x1ee/0x430
           __irq_exit_rcu+0x44/0x110
           irq_exit_rcu+0xa/0x30
           sysvec_apic_timer_interrupt+0x7f/0xa0
           </IRQ>
      
      Fixes: 72904d7b ("rxrpc, afs: Allow afs to pin rxrpc_peer objects")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: Simon Horman <horms@kernel.org>
      cc: linux-afs@lists.infradead.org
      Link: https://patch.msgid.link/2095618.1737622752@warthog.procyon.org.uk
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      79d458c1
    • Jan Stancek's avatar
      selftests: net/{lib,openvswitch}: extend CFLAGS to keep options from environment · 9b06d5b9
      Jan Stancek authored
      
      Package build environments like Fedora rpmbuild introduced hardening
      options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
      and LDFLAGS.
      
      Some Makefiles currently override CFLAGS but not LDFLAGS, which leads
      to a mismatch and build failure, for example:
        /usr/bin/ld: /tmp/ccd2apay.o: relocation R_X86_64_32 against
          `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
        /usr/bin/ld: failed to set dynamic section sizes: bad value
        collect2: error: ld returned 1 exit status
        make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/lib/csum] Error 1
      
      openvswitch/Makefile CFLAGS currently do not appear to be used, but
      fix it anyway for the case when new tests are introduced in future.
      
      Fixes: 1d0dc857 ("selftests: drv-net: add checksum tests")
      Signed-off-by: default avatarJan Stancek <jstancek@redhat.com>
      Acked-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Reviewed-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Link: https://patch.msgid.link/3d173603ee258f419d0403363765c9f9494ff79a.1737635092.git.jstancek@redhat.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      9b06d5b9
    • Jan Stancek's avatar
      selftests: mptcp: extend CFLAGS to keep options from environment · 23b3a7c4
      Jan Stancek authored
      
      Package build environments like Fedora rpmbuild introduced hardening
      options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
      and LDFLAGS.
      
      mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
      to a mismatch and build failure, for example:
        make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
        /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
        /usr/bin/ld: failed to set dynamic section sizes: bad value
        collect2: error: ld returned 1 exit status
      
      Fixes: cc937dad ("selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk")
      Signed-off-by: default avatarJan Stancek <jstancek@redhat.com>
      Reviewed-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Reviewed-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
      Link: https://patch.msgid.link/7abc701da9df39c2d6cd15bc3cf9e6cee445cb96.1737621162.git.jstancek@redhat.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      23b3a7c4
    • Jakub Kicinski's avatar
      net: page_pool: don't try to stash the napi id · 67e4bb2c
      Jakub Kicinski authored
      
      Page ppol tried to cache the NAPI ID in page pool info to avoid
      having a dependency on the life cycle of the NAPI instance.
      Since commit under Fixes the NAPI ID is not populated until
      napi_enable() and there's a good chance that page pool is
      created before NAPI gets enabled.
      
      Protect the NAPI pointer with the existing page pool mutex,
      the reading path already holds it. napi_id itself we need
      to READ_ONCE(), it's protected by netdev_lock() which are
      not holding in page pool.
      
      Before this patch napi IDs were missing for mlx5:
      
       # ./cli.py --spec netlink/specs/netdev.yaml --dump page-pool-get
      
       [{'id': 144, 'ifindex': 2, 'inflight': 3072, 'inflight-mem': 12582912},
        {'id': 143, 'ifindex': 2, 'inflight': 5568, 'inflight-mem': 22806528},
        {'id': 142, 'ifindex': 2, 'inflight': 5120, 'inflight-mem': 20971520},
        {'id': 141, 'ifindex': 2, 'inflight': 4992, 'inflight-mem': 20447232},
        ...
      
      After:
      
       [{'id': 144, 'ifindex': 2, 'inflight': 3072, 'inflight-mem': 12582912,
         'napi-id': 565},
        {'id': 143, 'ifindex': 2, 'inflight': 4224, 'inflight-mem': 17301504,
         'napi-id': 525},
        {'id': 142, 'ifindex': 2, 'inflight': 4288, 'inflight-mem': 17563648,
         'napi-id': 524},
        ...
      
      Fixes: 86e25f40 ("net: napi: Add napi_config")
      Reviewed-by: default avatarMina Almasry <almasrymina@google.com>
      Reviewed-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
      Link: https://patch.msgid.link/20250123231620.1086401-1-kuba@kernel.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      67e4bb2c
Loading