1. 11 Sep, 2024 10 commits
  2. 10 Sep, 2024 9 commits
  3. 09 Sep, 2024 13 commits
    • Benjamin Poirier's avatar
      net/mlx5: Fix bridge mode operations when there are no VFs · b1d305ab
      Benjamin Poirier authored
      Currently, trying to set the bridge mode attribute when numvfs=0 leads to a
      crash:
      
      bridge link set dev eth2 hwmode vepa
      
      [  168.967392] BUG: kernel NULL pointer dereference, address: 0000000000000030
      [...]
      [  168.969989] RIP: 0010:mlx5_add_flow_rules+0x1f/0x300 [mlx5_core]
      [...]
      [  168.976037] Call Trace:
      [  168.976188]  <TASK>
      [  168.978620]  _mlx5_eswitch_set_vepa_locked+0x113/0x230 [mlx5_core]
      [  168.979074]  mlx5_eswitch_set_vepa+0x7f/0xa0 [mlx5_core]
      [  168.979471]  rtnl_bridge_setlink+0xe9/0x1f0
      [  168.979714]  rtnetlink_rcv_msg+0x159/0x400
      [  168.980451]  netlink_rcv_skb+0x54/0x100
      [  168.980675]  netlink_unicast+0x241/0x360
      [  168.980918]  netlink_sendmsg+0x1f6/0x430
      [  168.981162]  ____sys_sendmsg+0x3bb/0x3f0
      [  168.982155]  ___sys_sendmsg+0x88/0xd0
      [  168.985036]  __sys_sendmsg+0x59/0xa0
      [  168.985477]  do_syscall_64+0x79/0x150
      [  168.987273]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
      [  168.987773] RIP: 0033:0x7f8f7950f917
      
      (esw->fdb_table.legacy.vepa_fdb is null)
      
      The bridge mode is only relevant when there are multiple functions per
      port. Therefore, prevent setting and getting this setting when there are no
      VFs.
      
      Note that after this change, there are no settings to change on the PF
      interface using `bridge link` when there are no VFs, so the interface no
      longer appears in the `bridge link` output.
      
      Fixes: 4b89251d ("net/mlx5: Support ndo bridge_setlink and getlink")
      Signed-off-by: default avatarBenjamin Poirier <bpoirier@nvidia.com>
      Reviewed-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      b1d305ab
    • Carolina Jubran's avatar
      net/mlx5: Verify support for scheduling element and TSAR type · 861cd9b9
      Carolina Jubran authored
      Before creating a scheduling element in a NIC or E-Switch scheduler,
      ensure that the requested element type is supported. If the element is
      of type Transmit Scheduling Arbiter (TSAR), also verify that the
      specific TSAR type is supported.
      
      Fixes: 214baf22 ("net/mlx5e: Support HTB offload")
      Fixes: 85c5f7c9 ("net/mlx5: E-switch, Create QoS on demand")
      Fixes: 0fe132ea ("net/mlx5: E-switch, Allow to add vports to rate groups")
      Signed-off-by: default avatarCarolina Jubran <cjubran@nvidia.com>
      Reviewed-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      861cd9b9
    • Carolina Jubran's avatar
      net/mlx5: Add missing masks and QoS bit masks for scheduling elements · 452ef7f8
      Carolina Jubran authored
      Add the missing masks for supported element types and Transmit
      Scheduling Arbiter (TSAR) types in scheduling elements.
      
      Also, add the corresponding bit masks for these types in the QoS
      capabilities of a NIC scheduler.
      
      Fixes: 214baf22 ("net/mlx5e: Support HTB offload")
      Signed-off-by: default avatarCarolina Jubran <cjubran@nvidia.com>
      Reviewed-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      452ef7f8
    • Carolina Jubran's avatar
      net/mlx5: Explicitly set scheduling element and TSAR type · c88146ab
      Carolina Jubran authored
      Ensure the scheduling element type and TSAR type are explicitly
      initialized in the QoS rate group creation.
      
      This prevents potential issues due to default values.
      
      Fixes: 1ae258f8 ("net/mlx5: E-switch, Introduce rate limiting groups API")
      Signed-off-by: default avatarCarolina Jubran <cjubran@nvidia.com>
      Reviewed-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      c88146ab
    • Shahar Shitrit's avatar
      net/mlx5e: Add missing link mode to ptys2ext_ethtool_map · 80bf4742
      Shahar Shitrit authored
      Add MLX5E_400GAUI_8_400GBASE_CR8 to the extended modes
      in ptys2ext_ethtool_table, since it was missing.
      
      Fixes: 6a897372 ("net/mlx5: ethtool, Add ethtool support for 50Gbps per lane link modes")
      Signed-off-by: default avatarShahar Shitrit <shshitrit@nvidia.com>
      Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Reviewed-by: default avatarCarolina Jubran <cjubran@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      80bf4742
    • Shahar Shitrit's avatar
      net/mlx5e: Add missing link modes to ptys2ethtool_map · 7617d62c
      Shahar Shitrit authored
      Add MLX5E_1000BASE_T and MLX5E_100BASE_TX to the legacy
      modes in ptys2legacy_ethtool_table, since they were missing.
      
      Fixes: 665bc539 ("net/mlx5e: Use new ethtool get/set link ksettings API")
      Signed-off-by: default avatarShahar Shitrit <shshitrit@nvidia.com>
      Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Reviewed-by: default avatarCarolina Jubran <cjubran@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      7617d62c
    • Maher Sanalla's avatar
      net/mlx5: Update the list of the PCI supported devices · 7472d157
      Maher Sanalla authored
      Add the upcoming ConnectX-9 device ID to the table of supported
      PCI device IDs.
      
      Fixes: f908a35b ("net/mlx5: Update the list of the PCI supported devices")
      Signed-off-by: default avatarMaher Sanalla <msanalla@nvidia.com>
      Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      7472d157
    • Sriram Yagnaraman's avatar
      igb: Always call igb_xdp_ring_update_tail() under Tx lock · 27717f8b
      Sriram Yagnaraman authored
      Always call igb_xdp_ring_update_tail() under __netif_tx_lock, add a comment
      and lockdep assert to indicate that. This is needed to share the same TX
      ring between XDP, XSK and slow paths. Furthermore, the current XDP
      implementation is racy on tail updates.
      
      Fixes: 9cbc948b ("igb: add XDP support")
      Signed-off-by: default avatarSriram Yagnaraman <sriram.yagnaraman@est.tech>
      [Kurt: Add lockdep assert and fixes tag]
      Signed-off-by: Kurt Kanzenbach's avatarKurt Kanzenbach <kurt@linutronix.de>
      Acked-by: default avatarMaciej Fijalkowski <maciej.fijalkowski@intel.com>
      Tested-by: default avatarGeorge Kuruvinakunnel <george.kuruvinakunnel@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      27717f8b
    • Michal Schmidt's avatar
      ice: fix VSI lists confusion when adding VLANs · d2940002
      Michal Schmidt authored
      The description of function ice_find_vsi_list_entry says:
        Search VSI list map with VSI count 1
      
      However, since the blamed commit (see Fixes below), the function no
      longer checks vsi_count. This causes a problem in ice_add_vlan_internal,
      where the decision to share VSI lists between filter rules relies on the
      vsi_count of the found existing VSI list being 1.
      
      The reproducing steps:
      1. Have a PF and two VFs.
         There will be a filter rule for VLAN 0, referring to a VSI list
         containing VSIs: 0 (PF), 2 (VF#0), 3 (VF#1).
      2. Add VLAN 1234 to VF#0.
         ice will make the wrong decision to share the VSI list with the new
         rule. The wrong behavior may not be immediately apparent, but it can
         be observed with debug prints.
      3. Add VLAN 1234 to VF#1.
         ice will unshare the VSI list for the VLAN 1234 rule. Due to the
         earlier bad decision, the newly created VSI list will contain
         VSIs 0 (PF) and 3 (VF#1), instead of expected 2 (VF#0) and 3 (VF#1).
      4. Try pinging a network peer over the VLAN interface on VF#0.
         This fails.
      
      Reproducer script at:
      https://gitlab.com/mschmidt2/repro/-/blob/master/RHEL-46814/test-vlan-vsi-list-confusion.sh
      Commented debug trace:
      https://gitlab.com/mschmidt2/repro/-/blob/master/RHEL-46814/ice-vlan-vsi-lists-debug.txt
      Patch adding the debug prints:
      https://gitlab.com/mschmidt2/linux/-/commit/f8a8814623944a45091a77c6094c40bfe726bfdb
      (Unsafe, by the way. Lacks rule_lock when dumping in ice_remove_vlan.)
      
      Michal Swiatkowski added to the explanation that the bug is caused by
      reusing a VSI list created for VLAN 0. All created VFs' VSIs are added
      to VLAN 0 filter. When a non-zero VLAN is created on a VF which is already
      in VLAN 0 (normal case), the VSI list from VLAN 0 is reused.
      It leads to a problem because all VFs (VSIs to be specific) that are
      subscribed to VLAN 0 will now receive a new VLAN tag traffic. This is
      one bug, another is the bug described above. Removing filters from
      one VF will remove VLAN filter from the previous VF. It happens a VF is
      reset. Example:
      - creation of 3 VFs
      - we have VSI list (used for VLAN 0) [0 (pf), 2 (vf1), 3 (vf2), 4 (vf3)]
      - we are adding VLAN 100 on VF1, we are reusing the previous list
        because 2 is there
      - VLAN traffic works fine, but VLAN 100 tagged traffic can be received
        on all VSIs from the list (for example broadcast or unicast)
      - trust is turning on VF2, VF2 is resetting, all filters from VF2 are
        removed; the VLAN 100 filter is also removed because 3 is on the list
      - VLAN traffic to VF1 isn't working anymore, there is a need to recreate
        VLAN interface to readd VLAN filter
      
      One thing I'm not certain about is the implications for the LAG feature,
      which is another caller of ice_find_vsi_list_entry. I don't have a
      LAG-capable card at hand to test.
      
      Fixes: 23ccae5c ("ice: changes to the interface with the HW and FW for SRIOV_VF+LAG")
      Reviewed-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
      Signed-off-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Reviewed-by: default avatarDave Ertman <David.m.ertman@intel.com>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      d2940002
    • Przemek Kitszel's avatar
      ice: stop calling pci_disable_device() as we use pcim · e6501fc3
      Przemek Kitszel authored
      Our driver uses devres to manage resources, in particular we call
      pcim_enable_device(), what also means we express the intent to get
      automatic pci_disable_device() call at driver removal. Manual calls to
      pci_disable_device() misuse the API.
      
      Recent commit (see "Fixes" tag) has changed the removal action from
      conditional (silent ignore of double call to pci_disable_device()) to
      unconditional, but able to catch unwanted redundant calls; see cited
      "Fixes" commit for details.
      
      Since that, unloading the driver yields following warn+splat:
      
      [70633.628490] ice 0000:af:00.7: disabling already-disabled device
      [70633.628512] WARNING: CPU: 52 PID: 33890 at drivers/pci/pci.c:2250 pci_disable_device+0xf4/0x100
      ...
      [70633.628744]  ? pci_disable_device+0xf4/0x100
      [70633.628752]  release_nodes+0x4a/0x70
      [70633.628759]  devres_release_all+0x8b/0xc0
      [70633.628768]  device_unbind_cleanup+0xe/0x70
      [70633.628774]  device_release_driver_internal+0x208/0x250
      [70633.628781]  driver_detach+0x47/0x90
      [70633.628786]  bus_remove_driver+0x80/0x100
      [70633.628791]  pci_unregister_driver+0x2a/0xb0
      [70633.628799]  ice_module_exit+0x11/0x3a [ice]
      
      Note that this is the only Intel ethernet driver that needs such fix.
      
      Fixes: f748a07a ("PCI: Remove legacy pcim_release()")
      Reviewed-by: default avatarLarysa Zaremba <larysa.zaremba@intel.com>
      Reviewed-by: default avatarPhilipp Stanner <pstanner@redhat.com>
      Signed-off-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
      Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      e6501fc3
    • Jacob Keller's avatar
      ice: fix accounting for filters shared by multiple VSIs · e843cf7b
      Jacob Keller authored
      When adding a switch filter (such as a MAC or VLAN filter), it is expected
      that the driver will detect the case where the filter already exists, and
      return -EEXIST. This is used by calling code such as ice_vc_add_mac_addr,
      and ice_vsi_add_vlan to avoid incrementing the accounting fields such as
      vsi->num_vlan or vf->num_mac.
      
      This logic works correctly for the case where only a single VSI has added a
      given switch filter.
      
      When a second VSI adds the same switch filter, the driver converts the
      existing filter from an ICE_FWD_TO_VSI filter into an ICE_FWD_TO_VSI_LIST
      filter. This saves switch resources, by ensuring that multiple VSIs can
      re-use the same filter.
      
      The ice_add_update_vsi_list() function is responsible for doing this
      conversion. When first converting a filter from the FWD_TO_VSI into
      FWD_TO_VSI_LIST, it checks if the VSI being added is the same as the
      existing rule's VSI. In such a case it returns -EEXIST.
      
      However, when the switch rule has already been converted to a
      FWD_TO_VSI_LIST, the logic is different. Adding a new VSI in this case just
      requires extending the VSI list entry. The logic for checking if the rule
      already exists in this case returns 0 instead of -EEXIST.
      
      This breaks the accounting logic mentioned above, so the counters for how
      many MAC and VLAN filters exist for a given VF or VSI no longer accurately
      reflect the actual count. This breaks other code which relies on these
      counts.
      
      In typical usage this primarily affects such filters generally shared by
      multiple VSIs such as VLAN 0, or broadcast and multicast MAC addresses.
      
      Fix this by correctly reporting -EEXIST in the case of adding the same VSI
      to a switch rule already converted to ICE_FWD_TO_VSI_LIST.
      
      Fixes: 9daf8208 ("ice: Add support for switch filter programming")
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      e843cf7b
    • Martyna Szapar-Mudlaw's avatar
      ice: Fix lldp packets dropping after changing the number of channels · 9debb703
      Martyna Szapar-Mudlaw authored
      After vsi setup refactor commit 6624e780 ("ice: split ice_vsi_setup
      into smaller functions") ice_cfg_sw_lldp function which removes rx rule
      directing LLDP packets to vsi is moved from ice_vsi_release to
      ice_vsi_decfg function. ice_vsi_decfg is used in more cases than just in
      vsi_release resulting in unnecessary removal of rx lldp packets handling
      switch rule. This leads to lldp packets being dropped after a change number
      of channels via ethtool.
      This patch moves ice_cfg_sw_lldp function that removes rx lldp sw rule back
      to ice_vsi_release function.
      
      Fixes: 6624e780 ("ice: split ice_vsi_setup into smaller functions")
      Reported-by: default avatarMatěj Grégr <mgregr@netx.as>
      Closes: https://lore.kernel.org/intel-wired-lan/1be45a76-90af-4813-824f-8398b69745a9@netx.as/T/#uReviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
      Signed-off-by: default avatarMartyna Szapar-Mudlaw <martyna.szapar-mudlaw@linux.intel.com>
      Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      9debb703
    • Eric Dumazet's avatar
      net: hsr: remove seqnr_lock · b3c9e65e
      Eric Dumazet authored
      syzbot found a new splat [1].
      
      Instead of adding yet another spin_lock_bh(&hsr->seqnr_lock) /
      spin_unlock_bh(&hsr->seqnr_lock) pair, remove seqnr_lock
      and use atomic_t for hsr->sequence_nr and hsr->sup_sequence_nr.
      
      This also avoid a race in hsr_fill_info().
      
      Also remove interlink_sequence_nr which is unused.
      
      [1]
       WARNING: CPU: 1 PID: 9723 at net/hsr/hsr_forward.c:602 handle_std_frame+0x247/0x2c0 net/hsr/hsr_forward.c:602
      Modules linked in:
      CPU: 1 UID: 0 PID: 9723 Comm: syz.0.1657 Not tainted 6.11.0-rc6-syzkaller-00026-g88fac175 #0
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
       RIP: 0010:handle_std_frame+0x247/0x2c0 net/hsr/hsr_forward.c:602
      Code: 49 8d bd b0 01 00 00 be ff ff ff ff e8 e2 58 25 00 31 ff 89 c5 89 c6 e8 47 53 a8 f6 85 ed 0f 85 5a ff ff ff e8 fa 50 a8 f6 90 <0f> 0b 90 e9 4c ff ff ff e8 cc e7 06 f7 e9 8f fe ff ff e8 52 e8 06
      RSP: 0018:ffffc90000598598 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffffc90000598670 RCX: ffffffff8ae2c919
      RDX: ffff888024e94880 RSI: ffffffff8ae2c926 RDI: 0000000000000005
      RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000003
      R13: ffff8880627a8cc0 R14: 0000000000000000 R15: ffff888012b03c3a
      FS:  0000000000000000(0000) GS:ffff88802b700000(0063) knlGS:00000000f5696b40
      CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
      CR2: 0000000020010000 CR3: 00000000768b4000 CR4: 0000000000350ef0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <IRQ>
        hsr_fill_frame_info+0x2c8/0x360 net/hsr/hsr_forward.c:630
        fill_frame_info net/hsr/hsr_forward.c:700 [inline]
        hsr_forward_skb+0x7df/0x25c0 net/hsr/hsr_forward.c:715
        hsr_handle_frame+0x603/0x850 net/hsr/hsr_slave.c:70
        __netif_receive_skb_core.constprop.0+0xa3d/0x4330 net/core/dev.c:5555
        __netif_receive_skb_list_core+0x357/0x950 net/core/dev.c:5737
        __netif_receive_skb_list net/core/dev.c:5804 [inline]
        netif_receive_skb_list_internal+0x753/0xda0 net/core/dev.c:5896
        gro_normal_list include/net/gro.h:515 [inline]
        gro_normal_list include/net/gro.h:511 [inline]
        napi_complete_done+0x23f/0x9a0 net/core/dev.c:6247
        gro_cell_poll+0x162/0x210 net/core/gro_cells.c:66
        __napi_poll.constprop.0+0xb7/0x550 net/core/dev.c:6772
        napi_poll net/core/dev.c:6841 [inline]
        net_rx_action+0xa92/0x1010 net/core/dev.c:6963
        handle_softirqs+0x216/0x8f0 kernel/softirq.c:554
        do_softirq kernel/softirq.c:455 [inline]
        do_softirq+0xb2/0xf0 kernel/softirq.c:442
       </IRQ>
       <TASK>
      
      Fixes: 06afd2c3 ("hsr: Synchronize sending frames to have always incremented outgoing seq nr.")
      Fixes: f421436a ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)")
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b3c9e65e
  4. 06 Sep, 2024 1 commit
    • Linus Torvalds's avatar
      Merge tag 'net-6.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · d759ee24
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from can, bluetooth and wireless.
      
        No known regressions at this point. Another calm week, but chances are
        that has more to do with vacation season than the quality of our work.
      
        Current release - new code bugs:
      
         - smc: prevent NULL pointer dereference in txopt_get
      
         - eth: ti: am65-cpsw: number of XDP-related fixes
      
        Previous releases - regressions:
      
         - Revert "Bluetooth: MGMT/SMP: Fix address type when using SMP over
           BREDR/LE", it breaks existing user space
      
         - Bluetooth: qca: if memdump doesn't work, re-enable IBS to avoid
           later problems with suspend
      
         - can: mcp251x: fix deadlock if an interrupt occurs during
           mcp251x_open
      
         - eth: r8152: fix the firmware communication error due to use of bulk
           write
      
         - ptp: ocp: fix serial port information export
      
         - eth: igb: fix not clearing TimeSync interrupts for 82580
      
         - Revert "wifi: ath11k: support hibernation", fix suspend on Lenovo
      
        Previous releases - always broken:
      
         - eth: intel: fix crashes and bugs when reconfiguration and resets
           happening in parallel
      
         - wifi: ath11k: fix NULL dereference in ath11k_mac_get_eirp_power()
      
        Misc:
      
         - docs: netdev: document guidance on cleanup.h"
      
      * tag 'net-6.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (61 commits)
        ila: call nf_unregister_net_hooks() sooner
        tools/net/ynl: fix cli.py --subscribe feature
        MAINTAINERS: fix ptp ocp driver maintainers address
        selftests: net: enable bind tests
        net: dsa: vsc73xx: fix possible subblocks range of CAPT block
        sched: sch_cake: fix bulk flow accounting logic for host fairness
        docs: netdev: document guidance on cleanup.h
        net: xilinx: axienet: Fix race in axienet_stop
        net: bridge: br_fdb_external_learn_add(): always set EXT_LEARN
        r8152: fix the firmware doesn't work
        fou: Fix null-ptr-deref in GRO.
        bareudp: Fix device stats updates.
        net: mana: Fix error handling in mana_create_txq/rxq's NAPI cleanup
        bpf, net: Fix a potential race in do_sock_getsockopt()
        net: dqs: Do not use extern for unused dql_group
        sch/netem: fix use after free in netem_dequeue
        usbnet: modern method to get random MAC
        MAINTAINERS: wifi: cw1200: add net-cw1200.h
        ice: do not bring the VSI up, if it was down before the XDP setup
        ice: remove ICE_CFG_BUSY locking from AF_XDP code
        ...
      d759ee24
  5. 05 Sep, 2024 7 commits
    • Linus Torvalds's avatar
      Merge tag 'spi-fix-v6.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · f9535999
      Linus Torvalds authored
      Pull spi fixes from Mark Brown:
       "A few small driver specific fixes (including some of the widespread
        work on fixing missing ID tables for module autoloading and the revert
        of some problematic PM work in spi-rockchip), some improvements to the
        MAINTAINERS information for the NXP drivers and the addition of a new
        device ID to spidev"
      
      * tag 'spi-fix-v6.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
        MAINTAINERS: SPI: Add mailing list imx@lists.linux.dev for nxp spi drivers
        MAINTAINERS: SPI: Add freescale lpspi maintainer information
        spi: spi-fsl-lpspi: Fix off-by-one in prescale max
        spi: spidev: Add missing spi_device_id for jg10309-01
        spi: bcm63xx: Enable module autoloading
        spi: intel: Add check devm_kasprintf() returned value
        spi: spidev: Add an entry for elgin,jg10309-01
        spi: rockchip: Resolve unbalanced runtime PM / system PM handling
      f9535999
    • Linus Torvalds's avatar
      Merge tag 'regulator-fix-v6.11-stub' of... · 2a660447
      Linus Torvalds authored
      Merge tag 'regulator-fix-v6.11-stub' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
      
      Pull regulator fix from Mark Brown:
       "A fix from Doug Anderson for a missing stub, required to fix the build
        for some newly added users of devm_regulator_bulk_get_const() in
        !REGULATOR configurations"
      
      * tag 'regulator-fix-v6.11-stub' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: core: Stub devm_regulator_bulk_get_const() if !CONFIG_REGULATOR
      2a660447
    • Linus Torvalds's avatar
      Merge tag 'rust-fixes-6.11-2' of https://github.com/Rust-for-Linux/linux · 6c5b3e30
      Linus Torvalds authored
      Pull Rust fixes from Miguel Ojeda:
       "Toolchain and infrastructure:
      
         - Fix builds for nightly compiler users now that 'new_uninit' was
           split into new features by using an alternative approach for the
           code that used what is now called the 'box_uninit_write' feature
      
         - Allow the 'stable_features' lint to preempt upcoming warnings about
           them, since soon there will be unstable features that will become
           stable in nightly compilers
      
         - Export bss symbols too
      
        'kernel' crate:
      
         - 'block' module: fix wrong usage of lockdep API
      
        'macros' crate:
      
         - Provide correct provenance when constructing 'THIS_MODULE'
      
        Documentation:
      
         - Remove unintended indentation (blockquotes) in generated output
      
         - Fix a couple typos
      
        MAINTAINERS:
      
         - Remove Wedson as Rust maintainer
      
         - Update Andreas' email"
      
      * tag 'rust-fixes-6.11-2' of https://github.com/Rust-for-Linux/linux:
        MAINTAINERS: update Andreas Hindborg's email address
        MAINTAINERS: Remove Wedson as Rust maintainer
        rust: macros: provide correct provenance when constructing THIS_MODULE
        rust: allow `stable_features` lint
        docs: rust: remove unintended blockquote in Quick Start
        rust: alloc: eschew `Box<MaybeUninit<T>>::write`
        rust: kernel: fix typos in code comments
        docs: rust: remove unintended blockquote in Coding Guidelines
        rust: block: fix wrong usage of lockdep API
        rust: kbuild: fix export of bss symbols
      6c5b3e30
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.11-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · e4b42053
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
      
       - Fix adding a new fgraph callback after function graph tracing has
         already started.
      
         If the new caller does not initialize its hash before registering the
         fgraph_ops, it can cause a NULL pointer dereference. Fix this by
         adding a new parameter to ftrace_graph_enable_direct() passing in the
         newly added gops directly and not rely on using the fgraph_array[],
         as entries in the fgraph_array[] must be initialized.
      
         Assign the new gops to the fgraph_array[] after it goes through
         ftrace_startup_subops() as that will properly initialize the
         gops->ops and initialize its hashes.
      
       - Fix a memory leak in fgraph storage memory test.
      
         If the "multiple fgraph storage on a function" boot up selftest fails
         in the registering of the function graph tracer, it will not free the
         memory it allocated for the filter. Break the loop up into two where
         it allocates the filters first and then registers the functions where
         any errors will do the appropriate clean ups.
      
       - Only clear the timerlat timers if it has an associated kthread.
      
         In the rtla tool that uses timerlat, if it was killed just as it was
         shutting down, the signals can free the kthread and the timer. But
         the closing of the timerlat files could cause the hrtimer_cancel() to
         be called on the already freed timer. As the kthread variable is is
         set to NULL when the kthreads are stopped and the timers are freed it
         can be used to know not to call hrtimer_cancel() on the timer if the
         kthread variable is NULL.
      
       - Use a cpumask to keep track of osnoise/timerlat kthreads
      
         The timerlat tracer can use user space threads for its analysis. With
         the killing of the rtla tool, the kernel can get confused between if
         it is using a user space thread to analyze or one of its own kernel
         threads. When this confusion happens, kthread_stop() can be called on
         a user space thread and bad things happen. As the kernel threads are
         per-cpu, a bitmask can be used to know when a kernel thread is used
         or when a user space thread is used.
      
       - Add missing interface_lock to osnoise/timerlat stop_kthread()
      
         The stop_kthread() function in osnoise/timerlat clears the osnoise
         kthread variable, and if it was a user space thread does a put_task
         on it. But this can race with the closing of the timerlat files that
         also does a put_task on the kthread, and if the race happens the task
         will have put_task called on it twice and oops.
      
       - Add cond_resched() to the tracing_iter_reset() loop.
      
         The latency tracers keep writing to the ring buffer without resetting
         when it issues a new "start" event (like interrupts being disabled).
         When reading the buffer with an iterator, the tracing_iter_reset()
         sets its pointer to that start event by walking through all the
         events in the buffer until it gets to the time stamp of the start
         event. In the case of a very large buffer, the loop that looks for
         the start event has been reported taking a very long time with a non
         preempt kernel that it can trigger a soft lock up warning. Add a
         cond_resched() into that loop to make sure that doesn't happen.
      
       - Use list_del_rcu() for eventfs ei->list variable
      
         It was reported that running loops of creating and deleting kprobe
         events could cause a crash due to the eventfs list iteration hitting
         a LIST_POISON variable. This is because the list is protected by SRCU
         but when an item is deleted from the list, it was using list_del()
         which poisons the "next" pointer. This is what list_del_rcu() was to
         prevent.
      
      * tag 'trace-v6.11-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        tracing/timerlat: Add interface_lock around clearing of kthread in stop_kthread()
        tracing/timerlat: Only clear timer if a kthread exists
        tracing/osnoise: Use a cpumask to know what threads are kthreads
        eventfs: Use list_del_rcu() for SRCU protected list variable
        tracing: Avoid possible softlockup in tracing_iter_reset()
        tracing: Fix memory leak in fgraph storage selftest
        tracing: fgraph: Fix to add new fgraph_ops to array after ftrace_startup_subops()
      e4b42053
    • Eric Dumazet's avatar
      ila: call nf_unregister_net_hooks() sooner · 031ae728
      Eric Dumazet authored
      syzbot found an use-after-free Read in ila_nf_input [1]
      
      Issue here is that ila_xlat_exit_net() frees the rhashtable,
      then call nf_unregister_net_hooks().
      
      It should be done in the reverse way, with a synchronize_rcu().
      
      This is a good match for a pre_exit() method.
      
      [1]
       BUG: KASAN: use-after-free in rht_key_hashfn include/linux/rhashtable.h:159 [inline]
       BUG: KASAN: use-after-free in __rhashtable_lookup include/linux/rhashtable.h:604 [inline]
       BUG: KASAN: use-after-free in rhashtable_lookup include/linux/rhashtable.h:646 [inline]
       BUG: KASAN: use-after-free in rhashtable_lookup_fast+0x77a/0x9b0 include/linux/rhashtable.h:672
      Read of size 4 at addr ffff888064620008 by task ksoftirqd/0/16
      
      CPU: 0 UID: 0 PID: 16 Comm: ksoftirqd/0 Not tainted 6.11.0-rc4-syzkaller-00238-g2ad6d23f #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
      Call Trace:
       <TASK>
        __dump_stack lib/dump_stack.c:93 [inline]
        dump_stack_lvl+0x241/0x360 lib/dump_stack.c:119
        print_address_description mm/kasan/report.c:377 [inline]
        print_report+0x169/0x550 mm/kasan/report.c:488
        kasan_report+0x143/0x180 mm/kasan/report.c:601
        rht_key_hashfn include/linux/rhashtable.h:159 [inline]
        __rhashtable_lookup include/linux/rhashtable.h:604 [inline]
        rhashtable_lookup include/linux/rhashtable.h:646 [inline]
        rhashtable_lookup_fast+0x77a/0x9b0 include/linux/rhashtable.h:672
        ila_lookup_wildcards net/ipv6/ila/ila_xlat.c:132 [inline]
        ila_xlat_addr net/ipv6/ila/ila_xlat.c:652 [inline]
        ila_nf_input+0x1fe/0x3c0 net/ipv6/ila/ila_xlat.c:190
        nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline]
        nf_hook_slow+0xc3/0x220 net/netfilter/core.c:626
        nf_hook include/linux/netfilter.h:269 [inline]
        NF_HOOK+0x29e/0x450 include/linux/netfilter.h:312
        __netif_receive_skb_one_core net/core/dev.c:5661 [inline]
        __netif_receive_skb+0x1ea/0x650 net/core/dev.c:5775
        process_backlog+0x662/0x15b0 net/core/dev.c:6108
        __napi_poll+0xcb/0x490 net/core/dev.c:6772
        napi_poll net/core/dev.c:6841 [inline]
        net_rx_action+0x89b/0x1240 net/core/dev.c:6963
        handle_softirqs+0x2c4/0x970 kernel/softirq.c:554
        run_ksoftirqd+0xca/0x130 kernel/softirq.c:928
        smpboot_thread_fn+0x544/0xa30 kernel/smpboot.c:164
        kthread+0x2f0/0x390 kernel/kthread.c:389
        ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
        ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
       </TASK>
      
      The buggy address belongs to the physical page:
      page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x64620
      flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff)
      page_type: 0xbfffffff(buddy)
      raw: 00fff00000000000 ffffea0000959608 ffffea00019d9408 0000000000000000
      raw: 0000000000000000 0000000000000003 00000000bfffffff 0000000000000000
      page dumped because: kasan: bad access detected
      page_owner tracks the page as freed
      page last allocated via order 3, migratetype Unmovable, gfp_mask 0x52dc0(GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_ZERO), pid 5242, tgid 5242 (syz-executor), ts 73611328570, free_ts 618981657187
        set_page_owner include/linux/page_owner.h:32 [inline]
        post_alloc_hook+0x1f3/0x230 mm/page_alloc.c:1493
        prep_new_page mm/page_alloc.c:1501 [inline]
        get_page_from_freelist+0x2e4c/0x2f10 mm/page_alloc.c:3439
        __alloc_pages_noprof+0x256/0x6c0 mm/page_alloc.c:4695
        __alloc_pages_node_noprof include/linux/gfp.h:269 [inline]
        alloc_pages_node_noprof include/linux/gfp.h:296 [inline]
        ___kmalloc_large_node+0x8b/0x1d0 mm/slub.c:4103
        __kmalloc_large_node_noprof+0x1a/0x80 mm/slub.c:4130
        __do_kmalloc_node mm/slub.c:4146 [inline]
        __kmalloc_node_noprof+0x2d2/0x440 mm/slub.c:4164
        __kvmalloc_node_noprof+0x72/0x190 mm/util.c:650
        bucket_table_alloc lib/rhashtable.c:186 [inline]
        rhashtable_init_noprof+0x534/0xa60 lib/rhashtable.c:1071
        ila_xlat_init_net+0xa0/0x110 net/ipv6/ila/ila_xlat.c:613
        ops_init+0x359/0x610 net/core/net_namespace.c:139
        setup_net+0x515/0xca0 net/core/net_namespace.c:343
        copy_net_ns+0x4e2/0x7b0 net/core/net_namespace.c:508
        create_new_namespaces+0x425/0x7b0 kernel/nsproxy.c:110
        unshare_nsproxy_namespaces+0x124/0x180 kernel/nsproxy.c:228
        ksys_unshare+0x619/0xc10 kernel/fork.c:3328
        __do_sys_unshare kernel/fork.c:3399 [inline]
        __se_sys_unshare kernel/fork.c:3397 [inline]
        __x64_sys_unshare+0x38/0x40 kernel/fork.c:3397
      page last free pid 11846 tgid 11846 stack trace:
        reset_page_owner include/linux/page_owner.h:25 [inline]
        free_pages_prepare mm/page_alloc.c:1094 [inline]
        free_unref_page+0xd22/0xea0 mm/page_alloc.c:2612
        __folio_put+0x2c8/0x440 mm/swap.c:128
        folio_put include/linux/mm.h:1486 [inline]
        free_large_kmalloc+0x105/0x1c0 mm/slub.c:4565
        kfree+0x1c4/0x360 mm/slub.c:4588
        rhashtable_free_and_destroy+0x7c6/0x920 lib/rhashtable.c:1169
        ila_xlat_exit_net+0x55/0x110 net/ipv6/ila/ila_xlat.c:626
        ops_exit_list net/core/net_namespace.c:173 [inline]
        cleanup_net+0x802/0xcc0 net/core/net_namespace.c:640
        process_one_work kernel/workqueue.c:3231 [inline]
        process_scheduled_works+0xa2c/0x1830 kernel/workqueue.c:3312
        worker_thread+0x86d/0xd40 kernel/workqueue.c:3390
        kthread+0x2f0/0x390 kernel/kthread.c:389
        ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
        ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
      
      Memory state around the buggy address:
       ffff88806461ff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffff88806461ff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      >ffff888064620000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                            ^
       ffff888064620080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       ffff888064620100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      
      Fixes: 7f00feaf ("ila: Add generic ILA translation facility")
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Tom Herbert <tom@herbertland.com>
      Reviewed-by: default avatarFlorian Westphal <fw@strlen.de>
      Link: https://patch.msgid.link/20240904144418.1162839-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      031ae728
    • Arkadiusz Kubalewski's avatar
      tools/net/ynl: fix cli.py --subscribe feature · 6fda63c4
      Arkadiusz Kubalewski authored
      Execution of command:
      ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml /
      	--subscribe "monitor" --sleep 10
      fails with:
        File "/repo/./tools/net/ynl/cli.py", line 109, in main
          ynl.check_ntf()
        File "/repo/tools/net/ynl/lib/ynl.py", line 924, in check_ntf
          op = self.rsp_by_value[nl_msg.cmd()]
      KeyError: 19
      
      Parsing Generic Netlink notification messages performs lookup for op in
      the message. The message was not yet decoded, and is not yet considered
      GenlMsg, thus msg.cmd() returns Generic Netlink family id (19) instead of
      proper notification command id (i.e.: DPLL_CMD_PIN_CHANGE_NTF=13).
      
      Allow the op to be obtained within NetlinkProtocol.decode(..) itself if the
      op was not passed to the decode function, thus allow parsing of Generic
      Netlink notifications without causing the failure.
      Suggested-by: default avatarDonald Hunter <donald.hunter@gmail.com>
      Link: https://lore.kernel.org/netdev/m2le0n5xpn.fsf@gmail.com/
      Fixes: 0a966d60 ("tools/net/ynl: Fix extack decoding for directional ops")
      Signed-off-by: default avatarArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
      Reviewed-by: default avatarDonald Hunter <donald.hunter@gmail.com>
      Link: https://patch.msgid.link/20240904135034.316033-1-arkadiusz.kubalewski@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6fda63c4
    • Vadim Fedorenko's avatar
      MAINTAINERS: fix ptp ocp driver maintainers address · 20d664eb
      Vadim Fedorenko authored
      While checking the latest series for ptp_ocp driver I realised that
      MAINTAINERS file has wrong item about email on linux.dev domain.
      
      Fixes: 795fd934 ("ptp_ocp: adjust MAINTAINERS and mailmap")
      Signed-off-by: default avatarVadim Fedorenko <vadim.fedorenko@linux.dev>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Link: https://patch.msgid.link/20240904131855.559078-1-vadim.fedorenko@linux.devSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      20d664eb