1. 15 Sep, 2023 16 commits
    • Ivan Vecera's avatar
      i40e: Fix VF VLAN offloading when port VLAN is configured · d0d362ff
      Ivan Vecera authored
      If port VLAN is configured on a VF then any other VLANs on top of this VF
      are broken.
      
      During i40e_ndo_set_vf_port_vlan() call the i40e driver reset the VF and
      iavf driver asks PF (using VIRTCHNL_OP_GET_VF_RESOURCES) for VF capabilities
      but this reset occurs too early, prior setting of vf->info.pvid field
      and because this field can be zero during i40e_vc_get_vf_resources_msg()
      then VIRTCHNL_VF_OFFLOAD_VLAN capability is reported to iavf driver.
      
      This is wrong because iavf driver should not report VLAN offloading
      capability when port VLAN is configured as i40e does not support QinQ
      offloading.
      
      Fix the issue by moving VF reset after setting of vf->port_vlan_id
      field.
      
      Without this patch:
      $ echo 1 > /sys/class/net/enp2s0f0/device/sriov_numvfs
      $ ip link set enp2s0f0 vf 0 vlan 3
      $ ip link set enp2s0f0v0 up
      $ ip link add link enp2s0f0v0 name vlan4 type vlan id 4
      $ ip link set vlan4 up
      ...
      $ ethtool -k enp2s0f0v0 | grep vlan-offload
      rx-vlan-offload: on
      tx-vlan-offload: on
      $ dmesg -l err | grep iavf
      [1292500b.742914] iavf 0000:02:02.0: Failed to add VLAN filter, error IAVF_ERR_INVALID_QP_ID
      
      With this patch:
      $ echo 1 > /sys/class/net/enp2s0f0/device/sriov_numvfs
      $ ip link set enp2s0f0 vf 0 vlan 3
      $ ip link set enp2s0f0v0 up
      $ ip link add link enp2s0f0v0 name vlan4 type vlan id 4
      $ ip link set vlan4 up
      ...
      $ ethtool -k enp2s0f0v0 | grep vlan-offload
      rx-vlan-offload: off [requested on]
      tx-vlan-offload: off [requested on]
      $ dmesg -l err | grep iavf
      
      Fixes: f9b4b627 ("i40e: Reset the VF upon conflicting VLAN configuration")
      Signed-off-by: default avatarIvan Vecera <ivecera@redhat.com>
      Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      d0d362ff
    • Petr Oros's avatar
      iavf: schedule a request immediately after add/delete vlan · 5f3d319a
      Petr Oros authored
      When the iavf driver wants to reconfigure the VLAN filters
      (iavf_add_vlan, iavf_del_vlan), it sets a flag in
      aq_required:
        adapter->aq_required |= IAVF_FLAG_AQ_ADD_VLAN_FILTER;
      or:
        adapter->aq_required |= IAVF_FLAG_AQ_DEL_VLAN_FILTER;
      
      This is later processed by the watchdog_task, but it runs periodically
      every 2 seconds, so it can be a long time before it processes the request.
      
      In the worst case, the interface is unable to receive traffic for more
      than 2 seconds for no objective reason.
      
      Fixes: 5eae00c5 ("i40evf: main driver core")
      Signed-off-by: default avatarPetr Oros <poros@redhat.com>
      Co-developed-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Signed-off-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Co-developed-by: default avatarIvan Vecera <ivecera@redhat.com>
      Signed-off-by: default avatarIvan Vecera <ivecera@redhat.com>
      Reviewed-by: default avatarAhmed Zaki <ahmed.zaki@intel.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      5f3d319a
    • Petr Oros's avatar
      iavf: add iavf_schedule_aq_request() helper · ed4cad33
      Petr Oros authored
      Add helper for set iavf aq request AVF_FLAG_AQ_* and immediately
      schedule watchdog_task. Helper will be used in cases where it is
      necessary to run aq requests asap
      Signed-off-by: default avatarPetr Oros <poros@redhat.com>
      Co-developed-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Signed-off-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Co-developed-by: default avatarIvan Vecera <ivecera@redhat.com>
      Signed-off-by: default avatarIvan Vecera <ivecera@redhat.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      ed4cad33
    • Radoslaw Tyl's avatar
      iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set · c8de44b5
      Radoslaw Tyl authored
      Prevent schedule operations for adminq during device remove and when
      __IAVF_IN_REMOVE_TASK flag is set. Currently, the iavf_down function
      adds operations for adminq that shouldn't be processed when the device
      is in the __IAVF_REMOVE state.
      
      Reproduction:
      
      echo 4 > /sys/bus/pci/devices/0000:17:00.0/sriov_numvfs
      ip link set dev ens1f0 vf 0 trust on
      ip link set dev ens1f0 vf 1 trust on
      ip link set dev ens1f0 vf 2 trust on
      ip link set dev ens1f0 vf 3 trust on
      
      ip link set dev ens1f0 vf 0 mac 00:22:33:44:55:66
      ip link set dev ens1f0 vf 1 mac 00:22:33:44:55:67
      ip link set dev ens1f0 vf 2 mac 00:22:33:44:55:68
      ip link set dev ens1f0 vf 3 mac 00:22:33:44:55:69
      
      echo 0000:17:02.0 > /sys/bus/pci/devices/0000\:17\:02.0/driver/unbind
      echo 0000:17:02.1 > /sys/bus/pci/devices/0000\:17\:02.1/driver/unbind
      echo 0000:17:02.2 > /sys/bus/pci/devices/0000\:17\:02.2/driver/unbind
      echo 0000:17:02.3 > /sys/bus/pci/devices/0000\:17\:02.3/driver/unbind
      sleep 10
      echo 0000:17:02.0 > /sys/bus/pci/drivers/iavf/bind
      echo 0000:17:02.1 > /sys/bus/pci/drivers/iavf/bind
      echo 0000:17:02.2 > /sys/bus/pci/drivers/iavf/bind
      echo 0000:17:02.3 > /sys/bus/pci/drivers/iavf/bind
      
      modprobe vfio-pci
      echo 8086 154c > /sys/bus/pci/drivers/vfio-pci/new_id
      
      qemu-system-x86_64 -accel kvm -m 4096 -cpu host \
      -drive file=centos9.qcow2,if=none,id=virtio-disk0 \
      -device virtio-blk-pci,drive=virtio-disk0,bootindex=0 -smp 4 \
      -device vfio-pci,host=17:02.0 -net none \
      -device vfio-pci,host=17:02.1 -net none \
      -device vfio-pci,host=17:02.2 -net none \
      -device vfio-pci,host=17:02.3 -net none \
      -daemonize -vnc :5
      
      Current result:
      There is a probability that the mac of VF in guest is inconsistent with
      it in host
      
      Expected result:
      When passthrough NIC VF to guest, the VF in guest should always get
      the same mac as it in host.
      
      Fixes: 14756b2a ("iavf: Fix __IAVF_RESETTING state usage")
      Signed-off-by: default avatarRadoslaw Tyl <radoslawx.tyl@intel.com>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      c8de44b5
    • David S. Miller's avatar
      Merge tag 'nf-23-09-13' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf · 615efed8
      David S. Miller authored
      netfilter pull request 23-09-13
      
      ====================
      
      The following patchset contains Netfilter fixes for net:
      
      1) Do not permit to remove rules from chain binding, otherwise
         double rule release is possible, triggering UaF. This rule
         deletion support does not make sense and userspace does not use
         this. Problem exists since the introduction of chain binding support.
      
      2) rbtree GC worker only collects the elements that have expired.
         This operation is not destructive, therefore, turn write into
         read spinlock to avoid datapath contention due to GC worker run.
         This was not fixed in the recent GC fix batch in the 6.5 cycle.
      
      3) pipapo set backend performs sync GC, therefore, catchall elements
         must use sync GC queue variant. This bug was introduced in the
         6.5 cycle with the recent GC fixes.
      
      4) Stop GC run if memory allocation fails in pipapo set backend,
         otherwise access to NULL pointer to GC transaction object might
         occur. This bug was introduced in the 6.5 cycle with the recent
         GC fixes.
      
      5) rhash GC run uses an iterator that might hit EAGAIN to rewind,
         triggering double-collection of the same element. This bug was
         introduced in the 6.5 cycle with the recent GC fixes.
      
      6) Do not permit to remove elements in anonymous sets, this type of
         sets are populated once and then bound to rules. This fix is
         similar to the chain binding patch coming first in this batch.
         API permits since the very beginning but it has no use case from
         userspace.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      615efed8
    • Shinas Rasheed's avatar
      octeon_ep: fix tx dma unmap len values in SG · 350db8a5
      Shinas Rasheed authored
      Lengths of SG pointers are kept in the following order in
      the SG entries in hardware.
       63      48|47     32|31     16|15       0
       -----------------------------------------
       |  Len 0  |  Len 1  |  Len 2  |  Len 3  |
       -----------------------------------------
       |                Ptr 0                  |
       -----------------------------------------
       |                Ptr 1                  |
       -----------------------------------------
       |                Ptr 2                  |
       -----------------------------------------
       |                Ptr 3                  |
       -----------------------------------------
      Dma pointers have to be unmapped based on their
      respective lengths given in this format.
      
      Fixes: 37d79d05 ("octeon_ep: add Tx/Rx processing and interrupt support")
      Signed-off-by: default avatarShinas Rasheed <srasheed@marvell.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      350db8a5
    • Mika Westerberg's avatar
      net: thunderbolt: Fix TCPv6 GSO checksum calculation · e0b65f9b
      Mika Westerberg authored
      Alex reported that running ssh over IPv6 does not work with
      Thunderbolt/USB4 networking driver. The reason for that is that driver
      should call skb_is_gso() before calling skb_is_gso_v6(), and it should
      not return false after calculates the checksum successfully. This probably
      was a copy paste error from the original driver where it was done properly.
      Reported-by: default avatarAlex Balcanquall <alex@alexbal.com>
      Fixes: e69b6c02 ("net: Add support for networking over Thunderbolt cable")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e0b65f9b
    • Sasha Neftin's avatar
      net/core: Fix ETH_P_1588 flow dissector · 75ad80ed
      Sasha Neftin authored
      When a PTP ethernet raw frame with a size of more than 256 bytes followed
      by a 0xff pattern is sent to __skb_flow_dissect, nhoff value calculation
      is wrong. For example: hdr->message_length takes the wrong value (0xffff)
      and it does not replicate real header length. In this case, 'nhoff' value
      was overridden and the PTP header was badly dissected. This leads to a
      kernel crash.
      
      net/core: flow_dissector
      net/core flow dissector nhoff = 0x0000000e
      net/core flow dissector hdr->message_length = 0x0000ffff
      net/core flow dissector nhoff = 0x0001000d (u16 overflow)
      ...
      skb linear:   00000000: 00 a0 c9 00 00 00 00 a0 c9 00 00 00 88
      skb frag:     00000000: f7 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      
      Using the size of the ptp_header struct will allow the corrected
      calculation of the nhoff value.
      
      net/core flow dissector nhoff = 0x0000000e
      net/core flow dissector nhoff = 0x00000030 (sizeof ptp_header)
      ...
      skb linear:   00000000: 00 a0 c9 00 00 00 00 a0 c9 00 00 00 88 f7 ff ff
      skb linear:   00000010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      skb linear:   00000020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      skb frag:     00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      
      Kernel trace:
      [   74.984279] ------------[ cut here ]------------
      [   74.989471] kernel BUG at include/linux/skbuff.h:2440!
      [   74.995237] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
      [   75.001098] CPU: 4 PID: 0 Comm: swapper/4 Tainted: G     U            5.15.85-intel-ese-standard-lts #1
      [   75.011629] Hardware name: Intel Corporation A-Island (CPU:AlderLake)/A-Island (ID:06), BIOS SB_ADLP.01.01.00.01.03.008.D-6A9D9E73-dirty Mar 30 2023
      [   75.026507] RIP: 0010:eth_type_trans+0xd0/0x130
      [   75.031594] Code: 03 88 47 78 eb c7 8b 47 68 2b 47 6c 48 8b 97 c0 00 00 00 83 f8 01 7e 1b 48 85 d2 74 06 66 83 3a ff 74 09 b8 00 04 00 00 eb ab <0f> 0b b8 00 01 00 00 eb a2 48 85 ff 74 eb 48 8d 54 24 06 31 f6 b9
      [   75.052612] RSP: 0018:ffff9948c0228de0 EFLAGS: 00010297
      [   75.058473] RAX: 00000000000003f2 RBX: ffff8e47047dc300 RCX: 0000000000001003
      [   75.066462] RDX: ffff8e4e8c9ea040 RSI: ffff8e4704e0a000 RDI: ffff8e47047dc300
      [   75.074458] RBP: ffff8e4704e2acc0 R08: 00000000000003f3 R09: 0000000000000800
      [   75.082466] R10: 000000000000000d R11: ffff9948c0228dec R12: ffff8e4715e4e010
      [   75.090461] R13: ffff9948c0545018 R14: 0000000000000001 R15: 0000000000000800
      [   75.098464] FS:  0000000000000000(0000) GS:ffff8e4e8fb00000(0000) knlGS:0000000000000000
      [   75.107530] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   75.113982] CR2: 00007f5eb35934a0 CR3: 0000000150e0a002 CR4: 0000000000770ee0
      [   75.121980] PKRU: 55555554
      [   75.125035] Call Trace:
      [   75.127792]  <IRQ>
      [   75.130063]  ? eth_get_headlen+0xa4/0xc0
      [   75.134472]  igc_process_skb_fields+0xcd/0x150
      [   75.139461]  igc_poll+0xc80/0x17b0
      [   75.143272]  __napi_poll+0x27/0x170
      [   75.147192]  net_rx_action+0x234/0x280
      [   75.151409]  __do_softirq+0xef/0x2f4
      [   75.155424]  irq_exit_rcu+0xc7/0x110
      [   75.159432]  common_interrupt+0xb8/0xd0
      [   75.163748]  </IRQ>
      [   75.166112]  <TASK>
      [   75.168473]  asm_common_interrupt+0x22/0x40
      [   75.173175] RIP: 0010:cpuidle_enter_state+0xe2/0x350
      [   75.178749] Code: 85 c0 0f 8f 04 02 00 00 31 ff e8 39 6c 67 ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 50 02 00 00 31 ff e8 52 b0 6d ff fb 45 85 f6 <0f> 88 b1 00 00 00 49 63 ce 4c 2b 2c 24 48 89 c8 48 6b d1 68 48 c1
      [   75.199757] RSP: 0018:ffff9948c013bea8 EFLAGS: 00000202
      [   75.205614] RAX: ffff8e4e8fb00000 RBX: ffffb948bfd23900 RCX: 000000000000001f
      [   75.213619] RDX: 0000000000000004 RSI: ffffffff94206161 RDI: ffffffff94212e20
      [   75.221620] RBP: 0000000000000004 R08: 000000117568973a R09: 0000000000000001
      [   75.229622] R10: 000000000000afc8 R11: ffff8e4e8fb29ce4 R12: ffffffff945ae980
      [   75.237628] R13: 000000117568973a R14: 0000000000000004 R15: 0000000000000000
      [   75.245635]  ? cpuidle_enter_state+0xc7/0x350
      [   75.250518]  cpuidle_enter+0x29/0x40
      [   75.254539]  do_idle+0x1d9/0x260
      [   75.258166]  cpu_startup_entry+0x19/0x20
      [   75.262582]  secondary_startup_64_no_verify+0xc2/0xcb
      [   75.268259]  </TASK>
      [   75.270721] Modules linked in: 8021q snd_sof_pci_intel_tgl snd_sof_intel_hda_common tpm_crb snd_soc_hdac_hda snd_sof_intel_hda snd_hda_ext_core snd_sof_pci snd_sof snd_sof_xtensa_dsp snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core snd_compress iTCO_wdt ac97_bus intel_pmc_bxt mei_hdcp iTCO_vendor_support snd_hda_codec_hdmi pmt_telemetry intel_pmc_core pmt_class snd_hda_intel x86_pkg_temp_thermal snd_intel_dspcfg snd_hda_codec snd_hda_core kvm_intel snd_pcm snd_timer kvm snd mei_me soundcore tpm_tis irqbypass i2c_i801 mei tpm_tis_core pcspkr intel_rapl_msr tpm i2c_smbus intel_pmt thermal sch_fq_codel uio uhid i915 drm_buddy video drm_display_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm fuse configfs
      [   75.342736] ---[ end trace 3785f9f360400e3a ]---
      [   75.347913] RIP: 0010:eth_type_trans+0xd0/0x130
      [   75.352984] Code: 03 88 47 78 eb c7 8b 47 68 2b 47 6c 48 8b 97 c0 00 00 00 83 f8 01 7e 1b 48 85 d2 74 06 66 83 3a ff 74 09 b8 00 04 00 00 eb ab <0f> 0b b8 00 01 00 00 eb a2 48 85 ff 74 eb 48 8d 54 24 06 31 f6 b9
      [   75.373994] RSP: 0018:ffff9948c0228de0 EFLAGS: 00010297
      [   75.379860] RAX: 00000000000003f2 RBX: ffff8e47047dc300 RCX: 0000000000001003
      [   75.387856] RDX: ffff8e4e8c9ea040 RSI: ffff8e4704e0a000 RDI: ffff8e47047dc300
      [   75.395864] RBP: ffff8e4704e2acc0 R08: 00000000000003f3 R09: 0000000000000800
      [   75.403857] R10: 000000000000000d R11: ffff9948c0228dec R12: ffff8e4715e4e010
      [   75.411863] R13: ffff9948c0545018 R14: 0000000000000001 R15: 0000000000000800
      [   75.419875] FS:  0000000000000000(0000) GS:ffff8e4e8fb00000(0000) knlGS:0000000000000000
      [   75.428946] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   75.435403] CR2: 00007f5eb35934a0 CR3: 0000000150e0a002 CR4: 0000000000770ee0
      [   75.443410] PKRU: 55555554
      [   75.446477] Kernel panic - not syncing: Fatal exception in interrupt
      [   75.453738] Kernel Offset: 0x11c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      [   75.465794] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
      
      Fixes: 4f1cc51f ("net: flow_dissector: Parse PTP L2 packet header")
      Signed-off-by: default avatarSasha Neftin <sasha.neftin@intel.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      75ad80ed
    • Arnd Bergmann's avatar
      net: ti: icssg-prueth: add PTP dependency · a8f367f7
      Arnd Bergmann authored
      The driver can now use PTP if enabled but fails to link built-in
      if PTP is a loadable module:
      
      aarch64-linux-ld: drivers/net/ethernet/ti/icssg/icss_iep.o: in function `icss_iep_get_ptp_clock_idx':
      icss_iep.c:(.text+0x200): undefined reference to `ptp_clock_index'
      
      Add the usual dependency to avoid this.
      
      Fixes: 186734c1 ("net: ti: icssg-prueth: add packet timestamping and ptp support")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarMD Danish Anwar <danishanwar@ti.com>
      Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a8f367f7
    • Sabrina Dubroca's avatar
      selftests: tls: swap the TX and RX sockets in some tests · c326ca98
      Sabrina Dubroca authored
      tls.sendmsg_large and tls.sendmsg_multiple are trying to send through
      the self->cfd socket (only configured with TLS_RX) and to receive through
      the self->fd socket (only configured with TLS_TX), so they're not using
      kTLS at all. Swap the sockets.
      
      Fixes: 7f657d5b ("selftests: tls: add selftests for TLS sockets")
      Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c326ca98
    • David S. Miller's avatar
      Merge branch 'sparx5-leaks' · 63a2de8d
      David S. Miller authored
      Jinjie Ruan says:
      
      ====================
      net: microchip: sparx5: Fix some memory leaks in vcap_api_kunit
      
      There are some memory leaks in vcap_api_kunit, this patchset
      fixes them.
      
      Changes in v3:
      - Fix the typo in patch 3, from "export" to "vcap enabled port".
      - Fix the typo in patch 4, from "vcap_dup_rule" to "vcap_alloc_rule".
      
      Changes in v2:
      - Adhere to the 80 character limit in vcap_free_caf()
      - Fix kernel test robot reported warnings in test_vcap_xn_rule_creator()
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      63a2de8d
    • Jinjie Ruan's avatar
      net: microchip: sparx5: Fix possible memory leaks in vcap_api_kunit · 2a2dffd9
      Jinjie Ruan authored
      Inject fault while probing kunit-example-test.ko, the duprule which
      is allocated by kzalloc in vcap_dup_rule() of
      test_vcap_xn_rule_creator() is not freed, and it cause the memory leaks
      below. Use vcap_del_rule() to free them as other functions do it.
      
      unreferenced object 0xffff6eb4846f6180 (size 192):
        comm "kunit_try_catch", pid 405, jiffies 4294895522 (age 880.004s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 0a 00 00 00 f4 01 00 00  .'..............
          00 00 00 00 00 00 00 00 98 61 6f 84 b4 6e ff ff  .........ao..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<00000000d2ac4ccb>] vcap_api_rule_insert_in_order_test+0xa4/0x114
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4846f6240 (size 192):
        comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 879.996s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
          00 00 00 00 00 00 00 00 58 62 6f 84 b4 6e ff ff  ........Xbo..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<0000000052e6ad35>] vcap_api_rule_insert_in_order_test+0xbc/0x114
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4846f6300 (size 192):
        comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 879.996s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
          00 00 00 00 00 00 00 00 18 63 6f 84 b4 6e ff ff  .........co..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<000000001b0895d4>] vcap_api_rule_insert_in_order_test+0xd4/0x114
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4846f63c0 (size 192):
        comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 880.012s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 28 00 00 00 c8 00 00 00  .'......(.......
          00 00 00 00 00 00 00 00 d8 63 6f 84 b4 6e ff ff  .........co..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<00000000134c151f>] vcap_api_rule_insert_in_order_test+0xec/0x114
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4845fc180 (size 192):
        comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 14 00 00 00 c8 00 00 00  .'..............
          00 00 00 00 00 00 00 00 98 c1 5f 84 b4 6e ff ff  .........._..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<00000000fa5f64d3>] vcap_api_rule_insert_reverse_order_test+0xc8/0x600
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4845fc240 (size 192):
        comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
          00 00 00 00 00 00 00 00 58 c2 5f 84 b4 6e ff ff  ........X._..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<00000000a7db42de>] vcap_api_rule_insert_reverse_order_test+0x108/0x600
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4845fc300 (size 192):
        comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 28 00 00 00 90 01 00 00  .'......(.......
          00 00 00 00 00 00 00 00 18 c3 5f 84 b4 6e ff ff  .........._..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<00000000ea416c94>] vcap_api_rule_insert_reverse_order_test+0x150/0x600
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb4845fc3c0 (size 192):
        comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.020s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 32 00 00 00 f4 01 00 00  .'......2.......
          00 00 00 00 00 00 00 00 d8 c3 5f 84 b4 6e ff ff  .........._..n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<00000000764a39b4>] vcap_api_rule_insert_reverse_order_test+0x198/0x600
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb484cd4240 (size 192):
        comm "kunit_try_catch", pid 413, jiffies 4294895543 (age 879.956s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
          00 00 00 00 00 00 00 00 58 42 cd 84 b4 6e ff ff  ........XB...n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<0000000023976dd4>] vcap_api_rule_remove_in_front_test+0x158/0x658
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff6eb484cd4300 (size 192):
        comm "kunit_try_catch", pid 413, jiffies 4294895543 (age 879.956s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 28 00 00 00 c8 00 00 00  .'......(.......
          00 00 00 00 00 00 00 00 18 43 cd 84 b4 6e ff ff  .........C...n..
        backtrace:
          [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
          [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
          [<000000008565145b>] vcap_dup_rule+0x38/0x210
          [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
          [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
          [<000000000b4760ff>] vcap_api_rule_remove_in_front_test+0x170/0x658
          [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
          [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000058a88b6b>] kthread+0x124/0x130
          [<00000000891cf28a>] ret_from_fork+0x10/0x20
      
      Fixes: dccc30cc ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
      Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2a2dffd9
    • Jinjie Ruan's avatar
      net: microchip: sparx5: Fix possible memory leaks in test_vcap_xn_rule_creator() · 20146fa7
      Jinjie Ruan authored
      Inject fault while probing kunit-example-test.ko, the rule which
      is allocated by kzalloc in vcap_alloc_rule(), the field which is
      allocated by kzalloc in vcap_rule_add_action() and
      vcap_rule_add_key() is not freed, and it cause the memory leaks
      below. Use vcap_free_rule() to free them as other drivers do it.
      
      And since the return rule of test_vcap_xn_rule_creator() is not
      used, remove it and switch to void.
      
      unreferenced object 0xffff058383334240 (size 192):
        comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
          00 00 00 00 00 00 00 00 00 81 93 84 83 05 ff ff  ................
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
          [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
          [<00000000231b1097>] vcap_api_rule_insert_in_order_test+0xcc/0x184
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0583849380c0 (size 64):
        comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
        hex dump (first 32 bytes):
          40 81 93 84 83 05 ff ff 68 42 33 83 83 05 ff ff  @.......hB3.....
          22 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  "...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
          [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
          [<00000000231b1097>] vcap_api_rule_insert_in_order_test+0xcc/0x184
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff058384938100 (size 64):
        comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
        hex dump (first 32 bytes):
          80 81 93 84 83 05 ff ff 58 42 33 83 83 05 ff ff  ........XB3.....
          7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
          [<00000000ba73cfbe>] vcap_add_type_keyfield+0xfc/0x128
          [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
          [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
          [<00000000231b1097>] vcap_api_rule_insert_in_order_test+0xcc/0x184
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      
      unreferenced object 0xffff0583833b6240 (size 192):
        comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
          00 00 00 00 00 00 00 00 40 91 8f 84 83 05 ff ff  ........@.......
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
          [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
          [<00000000509de3f4>] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0583848f9100 (size 64):
        comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
        hex dump (first 32 bytes):
          80 91 8f 84 83 05 ff ff 68 62 3b 83 83 05 ff ff  ........hb;.....
          22 00 00 00 01 00 00 00 00 00 00 00 a5 b4 ff ff  "...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
          [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
          [<00000000509de3f4>] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0583848f9140 (size 64):
        comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
        hex dump (first 32 bytes):
          c0 91 8f 84 83 05 ff ff 58 62 3b 83 83 05 ff ff  ........Xb;.....
          7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
          [<00000000ba73cfbe>] vcap_add_type_keyfield+0xfc/0x128
          [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
          [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
          [<00000000509de3f4>] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      
      unreferenced object 0xffff05838264e0c0 (size 192):
        comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.864s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 0a 00 00 00 f4 01 00 00  .'..............
          00 00 00 00 00 00 00 00 40 3a 97 84 83 05 ff ff  ........@:......
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
          [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
          [<00000000a29794d8>] vcap_api_rule_remove_at_end_test+0xbc/0xb48
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff058384973a80 (size 64):
        comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.864s)
        hex dump (first 32 bytes):
          e8 e0 64 82 83 05 ff ff e8 e0 64 82 83 05 ff ff  ..d.......d.....
          22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
          [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
          [<00000000a29794d8>] vcap_api_rule_remove_at_end_test+0xbc/0xb48
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff058384973a40 (size 64):
        comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.880s)
        hex dump (first 32 bytes):
          80 39 97 84 83 05 ff ff d8 e0 64 82 83 05 ff ff  .9........d.....
          7d 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00  }...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
          [<0000000094335477>] vcap_add_type_keyfield+0xbc/0x128
          [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
          [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
          [<00000000a29794d8>] vcap_api_rule_remove_at_end_test+0xbc/0xb48
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      
      unreferenced object 0xffff0583832fa240 (size 192):
        comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
          00 00 00 00 00 00 00 00 00 a1 8b 84 83 05 ff ff  ................
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
          [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
          [<00000000be638a45>] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0583848ba0c0 (size 64):
        comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
        hex dump (first 32 bytes):
          40 a1 8b 84 83 05 ff ff 68 a2 2f 83 83 05 ff ff  @.......h./.....
          22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
          [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
          [<00000000be638a45>] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0583848ba100 (size 64):
        comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
        hex dump (first 32 bytes):
          80 a1 8b 84 83 05 ff ff 58 a2 2f 83 83 05 ff ff  ........X./.....
          7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
          [<00000000ba73cfbe>] vcap_add_type_keyfield+0xfc/0x128
          [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
          [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
          [<00000000be638a45>] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      
      unreferenced object 0xffff0583827d2180 (size 192):
        comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.956s)
        hex dump (first 32 bytes):
          10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
          00 00 00 00 00 00 00 00 00 e1 06 83 83 05 ff ff  ................
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
          [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
          [<00000000e1ed8350>] vcap_api_rule_remove_in_front_test+0x144/0x6c0
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff05838306e0c0 (size 64):
        comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.956s)
        hex dump (first 32 bytes):
          40 e1 06 83 83 05 ff ff a8 21 7d 82 83 05 ff ff  @........!}.....
          22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
          [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
          [<00000000e1ed8350>] vcap_api_rule_remove_in_front_test+0x144/0x6c0
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff05838306e180 (size 64):
        comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.968s)
        hex dump (first 32 bytes):
          98 21 7d 82 83 05 ff ff 00 e1 06 83 83 05 ff ff  .!}.............
          67 00 00 00 00 00 00 00 01 01 00 00 ff 00 00 00  g...............
        backtrace:
          [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
          [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000061886991>] kmalloc_trace+0x40/0x164
          [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
          [<000000006ce4945d>] test_add_def_fields+0x84/0x8c
          [<00000000507e0ab6>] vcap_val_rule+0x294/0x3e8
          [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
          [<00000000e1ed8350>] vcap_api_rule_remove_in_front_test+0x144/0x6c0
          [<00000000548b559e>] kunit_try_run_case+0x50/0xac
          [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<00000000e646f120>] kthread+0x124/0x130
          [<000000005257599e>] ret_from_fork+0x10/0x20
      
      Fixes: dccc30cc ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
      Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Closes: https://lore.kernel.org/oe-kbuild-all/202309090950.uOTEKQq3-lkp@intel.com/Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      20146fa7
    • Jinjie Ruan's avatar
      net: microchip: sparx5: Fix possible memory leak in vcap_api_encode_rule_test() · 89e3af02
      Jinjie Ruan authored
      Inject fault while probing kunit-example-test.ko, the duprule which
      is allocated in vcap_dup_rule() and the vcap enabled port which
      is allocated in vcap_enable() of vcap_enable_lookups in
      vcap_api_encode_rule_test() is not freed, and it cause the memory
      leaks below.
      
      Use vcap_enable_lookups() with false arg to free the vcap enabled
      port as other drivers do it. And use vcap_del_rule() to
      free the duprule.
      
      unreferenced object 0xffff677a0278bb00 (size 64):
        comm "kunit_try_catch", pid 388, jiffies 4294895987 (age 1101.840s)
        hex dump (first 32 bytes):
          18 bd a5 82 00 80 ff ff 18 bd a5 82 00 80 ff ff  ................
          40 fe c8 0e be c6 ff ff 00 00 00 00 00 00 00 00  @...............
        backtrace:
          [<000000007d53023a>] slab_post_alloc_hook+0xb8/0x368
          [<0000000076e3f654>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000034d76721>] kmalloc_trace+0x40/0x164
          [<00000000013380a5>] vcap_enable_lookups+0x1c8/0x70c
          [<00000000bbec496b>] vcap_api_encode_rule_test+0x2f8/0xb18
          [<000000002c2bfb7b>] kunit_try_run_case+0x50/0xac
          [<00000000ff74642b>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<000000004af845ca>] kthread+0x124/0x130
          [<0000000038a000ca>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff677a027803c0 (size 192):
        comm "kunit_try_catch", pid 388, jiffies 4294895988 (age 1101.836s)
        hex dump (first 32 bytes):
          00 12 7a 00 05 00 00 00 0a 00 00 00 64 00 00 00  ..z.........d...
          00 00 00 00 00 00 00 00 d8 03 78 02 7a 67 ff ff  ..........x.zg..
        backtrace:
          [<000000007d53023a>] slab_post_alloc_hook+0xb8/0x368
          [<0000000076e3f654>] __kmem_cache_alloc_node+0x174/0x290
          [<0000000034d76721>] kmalloc_trace+0x40/0x164
          [<00000000c1010131>] vcap_dup_rule+0x34/0x14c
          [<00000000d43c54a4>] vcap_add_rule+0x29c/0x32c
          [<0000000073f1c26d>] vcap_api_encode_rule_test+0x304/0xb18
          [<000000002c2bfb7b>] kunit_try_run_case+0x50/0xac
          [<00000000ff74642b>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<000000004af845ca>] kthread+0x124/0x130
          [<0000000038a000ca>] ret_from_fork+0x10/0x20
      
      Fixes: c956b9b3 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
      Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      89e3af02
    • Jinjie Ruan's avatar
      net: microchip: sparx5: Fix memory leak for vcap_api_rule_add_actionvalue_test() · 39d0ccc1
      Jinjie Ruan authored
      Inject fault while probing kunit-example-test.ko, the field which
      is allocated by kzalloc in vcap_rule_add_action() of
      vcap_rule_add_action_bit/u32() is not freed, and it cause
      the memory leaks below.
      
      unreferenced object 0xffff0276c496b300 (size 64):
        comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
        hex dump (first 32 bytes):
          68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
          3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  <...............
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
          [<00000000ae66c16c>] vcap_api_rule_add_actionvalue_test+0xa4/0x990
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c496b2c0 (size 64):
        comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
        hex dump (first 32 bytes):
          68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
          3c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  <...............
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
          [<00000000607782aa>] vcap_api_rule_add_actionvalue_test+0x100/0x990
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c496b280 (size 64):
        comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
        hex dump (first 32 bytes):
          68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
          3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  <...............
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
          [<000000004e640602>] vcap_api_rule_add_actionvalue_test+0x15c/0x990
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c496b240 (size 64):
        comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.092s)
        hex dump (first 32 bytes):
          68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
          5a 00 00 00 01 00 00 00 32 54 76 98 00 00 00 00  Z.......2Tv.....
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
          [<0000000011141bf8>] vcap_api_rule_add_actionvalue_test+0x1bc/0x990
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c496b200 (size 64):
        comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.092s)
        hex dump (first 32 bytes):
          68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
          28 00 00 00 01 00 00 00 dd cc bb aa 00 00 00 00  (...............
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
          [<00000000d5ed3088>] vcap_api_rule_add_actionvalue_test+0x22c/0x990
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      
      Fixes: c956b9b3 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
      Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      39d0ccc1
    • Jinjie Ruan's avatar
      net: microchip: sparx5: Fix memory leak for vcap_api_rule_add_keyvalue_test() · f037fc99
      Jinjie Ruan authored
      Inject fault while probing kunit-example-test.ko, the field which
      is allocated by kzalloc in vcap_rule_add_key() of
      vcap_rule_add_key_bit/u32/u128() is not freed, and it cause
      the memory leaks below.
      
      unreferenced object 0xffff0276c14b7240 (size 64):
        comm "kunit_try_catch", pid 284, jiffies 4294894220 (age 920.072s)
        hex dump (first 32 bytes):
          28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
          67 00 00 00 00 00 00 00 00 01 37 2b af ab ff ff  g.........7+....
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
          [<00000000ff8002d3>] vcap_api_rule_add_keyvalue_test+0x100/0xba8
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c14b7280 (size 64):
        comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.068s)
        hex dump (first 32 bytes):
          28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
          67 00 00 00 00 00 00 00 01 01 37 2b af ab ff ff  g.........7+....
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
          [<00000000f5ac9dc7>] vcap_api_rule_add_keyvalue_test+0x168/0xba8
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c14b72c0 (size 64):
        comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.068s)
        hex dump (first 32 bytes):
          28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
          67 00 00 00 00 00 00 00 00 00 37 2b af ab ff ff  g.........7+....
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
          [<00000000c918ae7f>] vcap_api_rule_add_keyvalue_test+0x1d0/0xba8
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c14b7300 (size 64):
        comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.084s)
        hex dump (first 32 bytes):
          28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
          7d 00 00 00 01 00 00 00 32 54 76 98 ab ff 00 ff  }.......2Tv.....
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
          [<0000000003352814>] vcap_api_rule_add_keyvalue_test+0x240/0xba8
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      unreferenced object 0xffff0276c14b7340 (size 64):
        comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.084s)
        hex dump (first 32 bytes):
          28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
          51 00 00 00 07 00 00 00 17 26 35 44 63 62 71 00  Q........&5Dcbq.
        backtrace:
          [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
          [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
          [<000000004620684a>] kmalloc_trace+0x40/0x164
          [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
          [<000000001516f109>] vcap_api_rule_add_keyvalue_test+0x2cc/0xba8
          [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
          [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
          [<0000000026284079>] kthread+0x124/0x130
          [<0000000024d4a996>] ret_from_fork+0x10/0x20
      
      Fixes: c956b9b3 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
      Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f037fc99
  2. 14 Sep, 2023 5 commits
    • Linus Torvalds's avatar
      Merge tag 'net-6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 9fdfb15a
      Linus Torvalds authored
      Pull networking fixes from Paolo Abeni:
       "Quite unusually, this does not contains any fix coming from subtrees
        (nf, ebpf, wifi, etc).
      
        Current release - regressions:
      
         - bcmasp: fix possible OOB write in bcmasp_netfilt_get_all_active()
      
        Previous releases - regressions:
      
         - ipv4: fix one memleak in __inet_del_ifa()
      
         - tcp: fix bind() regressions for v4-mapped-v6 addresses.
      
         - tls: do not free tls_rec on async operation in
           bpf_exec_tx_verdict()
      
         - dsa: fixes for SJA1105 FDB regressions
      
         - veth: update XDP feature set when bringing up device
      
         - igb: fix hangup when enabling SR-IOV
      
        Previous releases - always broken:
      
         - kcm: fix memory leak in error path of kcm_sendmsg()
      
         - smc: fix data corruption in smcr_port_add
      
         - microchip: fix possible memory leak for vcap_dup_rule()"
      
      * tag 'net-6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (37 commits)
        kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg().
        net: renesas: rswitch: Add spin lock protection for irq {un}mask
        net: renesas: rswitch: Fix unmasking irq condition
        igb: clean up in all error paths when enabling SR-IOV
        ixgbe: fix timestamp configuration code
        selftest: tcp: Add v4-mapped-v6 cases in bind_wildcard.c.
        selftest: tcp: Move expected_errno into each test case in bind_wildcard.c.
        selftest: tcp: Fix address length in bind_wildcard.c.
        tcp: Fix bind() regression for v4-mapped-v6 non-wildcard address.
        tcp: Fix bind() regression for v4-mapped-v6 wildcard address.
        tcp: Factorise sk_family-independent comparison in inet_bind2_bucket_match(_addr_any).
        ipv6: fix ip6_sock_set_addr_preferences() typo
        veth: Update XDP feature set when bringing up device
        net: macb: fix sleep inside spinlock
        net/tls: do not free tls_rec on async operation in bpf_exec_tx_verdict()
        net: ethernet: mtk_eth_soc: fix pse_port configuration for MT7988
        net: ethernet: mtk_eth_soc: fix uninitialized variable
        kcm: Fix memory leak in error path of kcm_sendmsg()
        r8152: check budget for r8152_poll()
        net: dsa: sja1105: block FDB accesses that are concurrent with a switch reset
        ...
      9fdfb15a
    • Kuniyuki Iwashima's avatar
      kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). · a22730b1
      Kuniyuki Iwashima authored
      syzkaller found a memory leak in kcm_sendmsg(), and commit c821a88b
      ("kcm: Fix memory leak in error path of kcm_sendmsg()") suppressed it by
      updating kcm_tx_msg(head)->last_skb if partial data is copied so that the
      following sendmsg() will resume from the skb.
      
      However, we cannot know how many bytes were copied when we get the error.
      Thus, we could mess up the MSG_MORE queue.
      
      When kcm_sendmsg() fails for SOCK_DGRAM, we should purge the queue as we
      do so for UDP by udp_flush_pending_frames().
      
      Even without this change, when the error occurred, the following sendmsg()
      resumed from a wrong skb and the queue was messed up.  However, we have
      yet to get such a report, and only syzkaller stumbled on it.  So, this
      can be changed safely.
      
      Note this does not change SOCK_SEQPACKET behaviour.
      
      Fixes: c821a88b ("kcm: Fix memory leak in error path of kcm_sendmsg()")
      Fixes: ab7ac4eb ("kcm: Kernel Connection Multiplexor module")
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Link: https://lore.kernel.org/r/20230912022753.33327-1-kuniyu@amazon.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      a22730b1
    • Paolo Abeni's avatar
      Merge branch 'net-renesas-rswitch-fix-a-lot-of-redundant-irq-issue' · 96f7dc69
      Paolo Abeni authored
      Yoshihiro Shimoda says:
      
      ====================
      net: renesas: rswitch: Fix a lot of redundant irq issue
      
      After this patch series was applied, a lot of redundant interrupts
      no longer occur.
      
      For example: when "iperf3 -c <ipaddr> -R" on R-Car S4-8 Spider
       Before the patches are applied: about 800,000 times happened
       After the patches were applied: about 100,000 times happened
      ====================
      
      Link: https://lore.kernel.org/r/20230912014936.3175430-1-yoshihiro.shimoda.uh@renesas.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      96f7dc69
    • Yoshihiro Shimoda's avatar
      net: renesas: rswitch: Add spin lock protection for irq {un}mask · c4f922e8
      Yoshihiro Shimoda authored
      Add spin lock protection for irq {un}mask registers' control.
      
      After napi_complete_done() and this protection were applied,
      a lot of redundant interrupts no longer occur.
      
      For example: when "iperf3 -c <ipaddr> -R" on R-Car S4-8 Spider
       Before the patches are applied: about 800,000 times happened
       After the patches were applied: about 100,000 times happened
      
      Fixes: 3590918b ("net: ethernet: renesas: Add support for "Ethernet Switch"")
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      c4f922e8
    • Yoshihiro Shimoda's avatar
      net: renesas: rswitch: Fix unmasking irq condition · e7b1ef29
      Yoshihiro Shimoda authored
      Fix unmasking irq condition by using napi_complete_done(). Otherwise,
      redundant interrupts happen.
      
      Fixes: 3590918b ("net: ethernet: renesas: Add support for "Ethernet Switch"")
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      e7b1ef29
  3. 13 Sep, 2023 17 commits
    • Linus Torvalds's avatar
      Merge tag 'pmdomain-v6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm · aed8aee1
      Linus Torvalds authored
      Pull genpm / pmdomain rename from Ulf Hansson:
       "This renames the genpd subsystem to pmdomain.
      
        As discussed on LKML, using 'genpd' as the name of a subsystem isn't
        very self-explanatory and the acronym itself that means Generic PM
        Domain, is known only by a limited group of people.
      
        The suggestion to improve the situation is to rename the subsystem to
        'pmdomain', which there seems to be a good consensus around using.
      
        Ideally it should indicate that its purpose is to manage Power Domains
        or 'PM domains' as we often also use within the Linux Kernel
        terminology"
      
      * tag 'pmdomain-v6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
        pmdomain: Rename the genpd subsystem to pmdomain
      aed8aee1
    • Phil Sutter's avatar
      selftests: netfilter: Test nf_tables audit logging · e8dbde59
      Phil Sutter authored
      Compare NETFILTER_CFG type audit logs emitted from kernel upon ruleset
      modifications against expected output.
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      e8dbde59
    • Phil Sutter's avatar
      netfilter: nf_tables: Fix entries val in rule reset audit log · 7fb818f2
      Phil Sutter authored
      The value in idx and the number of rules handled in that particular
      __nf_tables_dump_rules() call is not identical. The former is a cursor
      to pick up from if multiple netlink messages are needed, so its value is
      ever increasing. Fixing this is not just a matter of subtracting s_idx
      from it, though: When resetting rules in multiple chains,
      __nf_tables_dump_rules() is called for each and cb->args[0] is not
      adjusted in between. Introduce a dedicated counter to record the number
      of rules reset in this call in a less confusing way.
      
      While being at it, prevent the direct return upon buffer exhaustion: Any
      rules previously dumped into that skb would evade audit logging
      otherwise.
      
      Fixes: 9b5ba5c9 ("netfilter: nf_tables: Unbreak audit log reset")
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Reviewed-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      7fb818f2
    • Florian Westphal's avatar
      netfilter: conntrack: fix extension size table · 4908d5af
      Florian Westphal authored
      The size table is incorrect due to copypaste error,
      this reserves more size than needed.
      
      TSTAMP reserved 32 instead of 16 bytes.
      TIMEOUT reserved 16 instead of 8 bytes.
      
      Fixes: 5f31edc0 ("netfilter: conntrack: move extension sizes into core")
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      4908d5af
    • Linus Torvalds's avatar
      Merge tag 'tpmdd-v6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd · 23f108dc
      Linus Torvalds authored
      Pull tpm fix from Jarkko Sakkinen.
      
      * tag 'tpmdd-v6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd:
        tpm: Fix typo in tpmrm class definition
      23f108dc
    • Linus Torvalds's avatar
      Merge tag 'parisc-for-6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 847165d7
      Linus Torvalds authored
      Pull parisc architecture fixes from Helge Deller:
      
       - fix reference to exported symbols for parisc64 [Masahiro Yamada]
      
       - Block-TLB (BTLB) support on 32-bit CPUs
      
       - sparse and build-warning fixes
      
      * tag 'parisc-for-6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        linux/export: fix reference to exported functions for parisc64
        parisc: BTLB: Initialize BTLB tables at CPU startup
        parisc: firmware: Simplify calling non-PA20 functions
        parisc: BTLB: _edata symbol has to be page aligned for BTLB support
        parisc: BTLB: Add BTLB insert and purge firmware function wrappers
        parisc: BTLB: Clear possibly existing BTLB entries
        parisc: Prepare for Block-TLB support on 32-bit kernel
        parisc: shmparam.h: Document aliasing requirements of PA-RISC
        parisc: irq: Make irq_stack_union static to avoid sparse warning
        parisc: drivers: Fix sparse warning
        parisc: iosapic.c: Fix sparse warnings
        parisc: ccio-dma: Fix sparse warnings
        parisc: sba-iommu: Fix sparse warnigs
        parisc: sba: Fix compile warning wrt list of SBA devices
        parisc: sba_iommu: Fix build warning if procfs if disabled
      847165d7
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · 99214f67
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
      
       - Add missing LOCKDOWN checks for eventfs callers
      
         When LOCKDOWN is active for tracing, it causes inconsistent state
         when some functions succeed and others fail.
      
       - Use dput() to free the top level eventfs descriptor
      
         There was a race between accesses and freeing it.
      
       - Fix a long standing bug that eventfs exposed due to changing timings
         by dynamically creating files. That is, If a event file is opened for
         an instance, there's nothing preventing the instance from being
         removed which will make accessing the files cause use-after-free
         bugs.
      
       - Fix a ring buffer race that happens when iterating over the ring
         buffer while writers are active. Check to make sure not to read the
         event meta data if it's beyond the end of the ring buffer sub buffer.
      
       - Fix the print trigger that disappeared because the test to create it
         was looking for the event dir field being filled, but now it has the
         "ef" field filled for the eventfs structure.
      
       - Remove the unused "dir" field from the event structure.
      
       - Fix the order of the trace_dynamic_info as it had it backwards for
         the offset and len fields for which one was for which endianess.
      
       - Fix NULL pointer dereference with eventfs_remove_rec()
      
         If an allocation fails in one of the eventfs_add_*() functions, the
         caller of it in event_subsystem_dir() or event_create_dir() assigns
         the result to the structure. But it's assigning the ERR_PTR and not
         NULL. This was passed to eventfs_remove_rec() which expects either a
         good pointer or a NULL, not ERR_PTR. The fix is to not assign the
         ERR_PTR to the structure, but to keep it NULL on error.
      
       - Fix list_for_each_rcu() to use list_for_each_srcu() in
         dcache_dir_open_wrapper(). One iteration of the code used RCU but
         because it had to call sleepable code, it had to be changed to use
         SRCU, but one of the iterations was missed.
      
       - Fix synthetic event print function to use "as_u64" instead of passing
         in a pointer to the union. To fix big/little endian issues, the u64
         that represented several types was turned into a union to define the
         types properly.
      
      * tag 'trace-v6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        eventfs: Fix the NULL pointer dereference bug in eventfs_remove_rec()
        tracefs/eventfs: Use list_for_each_srcu() in dcache_dir_open_wrapper()
        tracing/synthetic: Print out u64 values properly
        tracing/synthetic: Fix order of struct trace_dynamic_info
        selftests/ftrace: Fix dependencies for some of the synthetic event tests
        tracing: Remove unused trace_event_file dir field
        tracing: Use the new eventfs descriptor for print trigger
        ring-buffer: Do not attempt to read past "commit"
        tracefs/eventfs: Free top level files on removal
        ring-buffer: Avoid softlockup in ring_buffer_resize()
        tracing: Have event inject files inc the trace array ref count
        tracing: Have option files inc the trace array ref count
        tracing: Have current_trace inc the trace array ref count
        tracing: Have tracing_max_latency inc the trace array ref count
        tracing: Increase trace array ref count on enable and filter files
        tracefs/eventfs: Use dput to free the toplevel events directory
        tracefs/eventfs: Add missing lockdown checks
        tracefs: Add missing lockdown check to tracefs_create_dir()
      99214f67
    • Corinna Vinschen's avatar
      igb: clean up in all error paths when enabling SR-IOV · bc6ed2fa
      Corinna Vinschen authored
      After commit 50f30349 ("igb: Enable SR-IOV after reinit"), removing
      the igb module could hang or crash (depending on the machine) when the
      module has been loaded with the max_vfs parameter set to some value != 0.
      
      In case of one test machine with a dual port 82580, this hang occurred:
      
      [  232.480687] igb 0000:41:00.1: removed PHC on enp65s0f1
      [  233.093257] igb 0000:41:00.1: IOV Disabled
      [  233.329969] pcieport 0000:40:01.0: AER: Multiple Uncorrected (Non-Fatal) err0
      [  233.340302] igb 0000:41:00.0: PCIe Bus Error: severity=Uncorrected (Non-Fata)
      [  233.352248] igb 0000:41:00.0:   device [8086:1516] error status/mask=00100000
      [  233.361088] igb 0000:41:00.0:    [20] UnsupReq               (First)
      [  233.368183] igb 0000:41:00.0: AER:   TLP Header: 40000001 0000040f cdbfc00c c
      [  233.376846] igb 0000:41:00.1: PCIe Bus Error: severity=Uncorrected (Non-Fata)
      [  233.388779] igb 0000:41:00.1:   device [8086:1516] error status/mask=00100000
      [  233.397629] igb 0000:41:00.1:    [20] UnsupReq               (First)
      [  233.404736] igb 0000:41:00.1: AER:   TLP Header: 40000001 0000040f cdbfc00c c
      [  233.538214] pci 0000:41:00.1: AER: can't recover (no error_detected callback)
      [  233.538401] igb 0000:41:00.0: removed PHC on enp65s0f0
      [  233.546197] pcieport 0000:40:01.0: AER: device recovery failed
      [  234.157244] igb 0000:41:00.0: IOV Disabled
      [  371.619705] INFO: task irq/35-aerdrv:257 blocked for more than 122 seconds.
      [  371.627489]       Not tainted 6.4.0-dirty #2
      [  371.632257] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this.
      [  371.641000] task:irq/35-aerdrv   state:D stack:0     pid:257   ppid:2      f0
      [  371.650330] Call Trace:
      [  371.653061]  <TASK>
      [  371.655407]  __schedule+0x20e/0x660
      [  371.659313]  schedule+0x5a/0xd0
      [  371.662824]  schedule_preempt_disabled+0x11/0x20
      [  371.667983]  __mutex_lock.constprop.0+0x372/0x6c0
      [  371.673237]  ? __pfx_aer_root_reset+0x10/0x10
      [  371.678105]  report_error_detected+0x25/0x1c0
      [  371.682974]  ? __pfx_report_normal_detected+0x10/0x10
      [  371.688618]  pci_walk_bus+0x72/0x90
      [  371.692519]  pcie_do_recovery+0xb2/0x330
      [  371.696899]  aer_process_err_devices+0x117/0x170
      [  371.702055]  aer_isr+0x1c0/0x1e0
      [  371.705661]  ? __set_cpus_allowed_ptr+0x54/0xa0
      [  371.710723]  ? __pfx_irq_thread_fn+0x10/0x10
      [  371.715496]  irq_thread_fn+0x20/0x60
      [  371.719491]  irq_thread+0xe6/0x1b0
      [  371.723291]  ? __pfx_irq_thread_dtor+0x10/0x10
      [  371.728255]  ? __pfx_irq_thread+0x10/0x10
      [  371.732731]  kthread+0xe2/0x110
      [  371.736243]  ? __pfx_kthread+0x10/0x10
      [  371.740430]  ret_from_fork+0x2c/0x50
      [  371.744428]  </TASK>
      
      The reproducer was a simple script:
      
        #!/bin/sh
        for i in `seq 1 5`; do
          modprobe -rv igb
          modprobe -v igb max_vfs=1
          sleep 1
          modprobe -rv igb
        done
      
      It turned out that this could only be reproduce on 82580 (quad and
      dual-port), but not on 82576, i350 and i210.  Further debugging showed
      that igb_enable_sriov()'s call to pci_enable_sriov() is failing, because
      dev->is_physfn is 0 on 82580.
      
      Prior to commit 50f30349 ("igb: Enable SR-IOV after reinit"),
      igb_enable_sriov() jumped into the "err_out" cleanup branch.  After this
      commit it only returned the error code.
      
      So the cleanup didn't take place, and the incorrect VF setup in the
      igb_adapter structure fooled the igb driver into assuming that VFs have
      been set up where no VF actually existed.
      
      Fix this problem by cleaning up again if pci_enable_sriov() fails.
      
      Fixes: 50f30349 ("igb: Enable SR-IOV after reinit")
      Signed-off-by: default avatarCorinna Vinschen <vinschen@redhat.com>
      Reviewed-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
      Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bc6ed2fa
    • Vadim Fedorenko's avatar
      ixgbe: fix timestamp configuration code · 3c44191d
      Vadim Fedorenko authored
      The commit in fixes introduced flags to control the status of hardware
      configuration while processing packets. At the same time another structure
      is used to provide configuration of timestamper to user-space applications.
      The way it was coded makes this structures go out of sync easily. The
      repro is easy for 82599 chips:
      
      [root@hostname ~]# hwstamp_ctl -i eth0 -r 12 -t 1
      current settings:
      tx_type 0
      rx_filter 0
      new settings:
      tx_type 1
      rx_filter 12
      
      The eth0 device is properly configured to timestamp any PTPv2 events.
      
      [root@hostname ~]# hwstamp_ctl -i eth0 -r 1 -t 1
      current settings:
      tx_type 1
      rx_filter 12
      SIOCSHWTSTAMP failed: Numerical result out of range
      The requested time stamping mode is not supported by the hardware.
      
      The error is properly returned because HW doesn't support all packets
      timestamping. But the adapter->flags is cleared of timestamp flags
      even though no HW configuration was done. From that point no RX timestamps
      are received by user-space application. But configuration shows good
      values:
      
      [root@hostname ~]# hwstamp_ctl -i eth0
      current settings:
      tx_type 1
      rx_filter 12
      
      Fix the issue by applying new flags only when the HW was actually
      configured.
      
      Fixes: a9763f3c ("ixgbe: Update PTP to support X550EM_x devices")
      Signed-off-by: default avatarVadim Fedorenko <vadim.fedorenko@linux.dev>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      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>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3c44191d
    • Ulf Hansson's avatar
      pmdomain: Rename the genpd subsystem to pmdomain · e2ad626f
      Ulf Hansson authored
      It has been pointed out that naming a subsystem "genpd" isn't very
      self-explanatory and the acronym itself that means Generic PM Domain, is
      known only by a limited group of people.
      
      In a way to improve the situation, let's rename the subsystem to pmdomain,
      which ideally should indicate that this is about so called Power Domains or
      "PM domains" as we often also use within the Linux Kernel terminology.
      Suggested-by: default avatarRafael J. Wysocki <rafael@kernel.org>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Acked-by: default avatarRafael J. Wysocki <rafael@kernel.org>
      Acked-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Link: https://lore.kernel.org/r/20230912221127.487327-1-ulf.hansson@linaro.org
      e2ad626f
    • David S. Miller's avatar
      Merge branch 'tcp-bind-fixes' · ab6c4ec8
      David S. Miller authored
      Kuniyuki Iwashima says:
      
      ====================
      tcp: Fix bind() regression for v4-mapped-v6 address
      
      Since bhash2 was introduced, bind() is broken in two cases related
      to v4-mapped-v6 address.
      
      This series fixes the regression and adds test to cover the cases.
      
      Changes:
        v2:
          * Added patch 1 to factorise duplicated comparison (Eric Dumazet)
      
        v1: https://lore.kernel.org/netdev/20230911165106.39384-1-kuniyu@amazon.com/
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ab6c4ec8
    • Kuniyuki Iwashima's avatar
      selftest: tcp: Add v4-mapped-v6 cases in bind_wildcard.c. · 8637d8e8
      Kuniyuki Iwashima authored
      We add these 8 test cases in bind_wildcard.c to check bind() conflicts.
      
        1st bind()          2nd bind()
        ---------           ---------
        0.0.0.0             ::FFFF:0.0.0.0
        ::FFFF:0.0.0.0      0.0.0.0
        0.0.0.0             ::FFFF:127.0.0.1
        ::FFFF:127.0.0.1    0.0.0.0
        127.0.0.1           ::FFFF:0.0.0.0
        ::FFFF:0.0.0.0      127.0.0.1
        127.0.0.1           ::FFFF:127.0.0.1
        ::FFFF:127.0.0.1    127.0.0.1
      
      All test passed without bhash2 and with bhash2 and this series.
      
       Before bhash2:
        $ uname -r
        6.0.0-rc1-00393-g0bf73255
        $ ./bind_wildcard
        ...
        # PASSED: 16 / 16 tests passed.
      
       Just after bhash2:
        $ uname -r
        6.0.0-rc1-00394-g28044fc1
        $ ./bind_wildcard
        ...
        ok 15 bind_wildcard.v4_local_v6_v4mapped_local.v4_v6
        not ok 16 bind_wildcard.v4_local_v6_v4mapped_local.v6_v4
        # FAILED: 15 / 16 tests passed.
      
       On net.git:
        $ ./bind_wildcard
        ...
        not ok 14 bind_wildcard.v4_local_v6_v4mapped_any.v6_v4
        not ok 16 bind_wildcard.v4_local_v6_v4mapped_local.v6_v4
        # FAILED: 13 / 16 tests passed.
      
       With this series:
        $ ./bind_wildcard
        ...
        # PASSED: 16 / 16 tests passed.
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8637d8e8
    • Kuniyuki Iwashima's avatar
      selftest: tcp: Move expected_errno into each test case in bind_wildcard.c. · 2895d879
      Kuniyuki Iwashima authored
      This is a preparation patch for the following patch.
      
      Let's define expected_errno in each test case so that we can add other test
      cases easily.
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2895d879
    • Kuniyuki Iwashima's avatar
      selftest: tcp: Fix address length in bind_wildcard.c. · 0071d155
      Kuniyuki Iwashima authored
      The selftest passes the IPv6 address length for an IPv4 address.
      We should pass the correct length.
      
      Note inet_bind_sk() does not check if the size is larger than
      sizeof(struct sockaddr_in), so there is no real bug in this
      selftest.
      
      Fixes: 13715acf ("selftest: Add test for bind() conflicts.")
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0071d155
    • Kuniyuki Iwashima's avatar
      tcp: Fix bind() regression for v4-mapped-v6 non-wildcard address. · c48ef9c4
      Kuniyuki Iwashima authored
      Since bhash2 was introduced, the example below does not work as expected.
      These two bind() should conflict, but the 2nd bind() now succeeds.
      
        from socket import *
      
        s1 = socket(AF_INET6, SOCK_STREAM)
        s1.bind(('::ffff:127.0.0.1', 0))
      
        s2 = socket(AF_INET, SOCK_STREAM)
        s2.bind(('127.0.0.1', s1.getsockname()[1]))
      
      During the 2nd bind() in inet_csk_get_port(), inet_bind2_bucket_find()
      fails to find the 1st socket's tb2, so inet_bind2_bucket_create() allocates
      a new tb2 for the 2nd socket.  Then, we call inet_csk_bind_conflict() that
      checks conflicts in the new tb2 by inet_bhash2_conflict().  However, the
      new tb2 does not include the 1st socket, thus the bind() finally succeeds.
      
      In this case, inet_bind2_bucket_match() must check if AF_INET6 tb2 has
      the conflicting v4-mapped-v6 address so that inet_bind2_bucket_find()
      returns the 1st socket's tb2.
      
      Note that if we bind two sockets to 127.0.0.1 and then ::FFFF:127.0.0.1,
      the 2nd bind() fails properly for the same reason mentinoed in the previous
      commit.
      
      Fixes: 28044fc1 ("net: Add a bhash2 table hashed by port and address")
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarAndrei Vagin <avagin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c48ef9c4
    • Kuniyuki Iwashima's avatar
      tcp: Fix bind() regression for v4-mapped-v6 wildcard address. · aa99e5f8
      Kuniyuki Iwashima authored
      Andrei Vagin reported bind() regression with strace logs.
      
      If we bind() a TCPv6 socket to ::FFFF:0.0.0.0 and then bind() a TCPv4
      socket to 127.0.0.1, the 2nd bind() should fail but now succeeds.
      
        from socket import *
      
        s1 = socket(AF_INET6, SOCK_STREAM)
        s1.bind(('::ffff:0.0.0.0', 0))
      
        s2 = socket(AF_INET, SOCK_STREAM)
        s2.bind(('127.0.0.1', s1.getsockname()[1]))
      
      During the 2nd bind(), if tb->family is AF_INET6 and sk->sk_family is
      AF_INET in inet_bind2_bucket_match_addr_any(), we still need to check
      if tb has the v4-mapped-v6 wildcard address.
      
      The example above does not work after commit 5456262d ("net: Fix
      incorrect address comparison when searching for a bind2 bucket"), but
      the blamed change is not the commit.
      
      Before the commit, the leading zeros of ::FFFF:0.0.0.0 were treated
      as 0.0.0.0, and the sequence above worked by chance.  Technically, this
      case has been broken since bhash2 was introduced.
      
      Note that if we bind() two sockets to 127.0.0.1 and then ::FFFF:0.0.0.0,
      the 2nd bind() fails properly because we fall back to using bhash to
      detect conflicts for the v4-mapped-v6 address.
      
      Fixes: 28044fc1 ("net: Add a bhash2 table hashed by port and address")
      Reported-by: default avatarAndrei Vagin <avagin@google.com>
      Closes: https://lore.kernel.org/netdev/ZPuYBOFC8zsK6r9T@google.com/Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      aa99e5f8
    • Kuniyuki Iwashima's avatar
      tcp: Factorise sk_family-independent comparison in inet_bind2_bucket_match(_addr_any). · c6d27706
      Kuniyuki Iwashima authored
      This is a prep patch to make the following patches cleaner that touch
      inet_bind2_bucket_match() and inet_bind2_bucket_match_addr_any().
      
      Both functions have duplicated comparison for netns, port, and l3mdev.
      Let's factorise them.
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c6d27706
  4. 12 Sep, 2023 2 commits
    • Justin M. Forbes's avatar
      tpm: Fix typo in tpmrm class definition · ea72883a
      Justin M. Forbes authored
      Commit d2e8071b ("tpm: make all 'class' structures const")
      unfortunately had a typo for the name on tpmrm.
      
      Fixes: d2e8071b ("tpm: make all 'class' structures const")
      Signed-off-by: default avatarJustin M. Forbes <jforbes@fedoraproject.org>
      Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      ea72883a
    • Linus Torvalds's avatar
      Merge tag 'for-6.6-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 3669558b
      Linus Torvalds authored
      Pull btrfs fixes from David Sterba:
      
       - several fixes for handling directory item (inserting, removing,
         iteration, error handling)
      
       - fix transaction commit stalls when auto relocation is running and
         blocks other tasks that want to commit
      
       - fix a build error when DEBUG is enabled
      
       - fix lockdep warning in inode number lookup ioctl
      
       - fix race when finishing block group creation
      
       - remove link to obsolete wiki in several files
      
      * tag 'for-6.6-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        MAINTAINERS: remove links to obsolete btrfs.wiki.kernel.org
        btrfs: assert delayed node locked when removing delayed item
        btrfs: remove BUG() after failure to insert delayed dir index item
        btrfs: improve error message after failure to add delayed dir index item
        btrfs: fix a compilation error if DEBUG is defined in btree_dirty_folio
        btrfs: check for BTRFS_FS_ERROR in pending ordered assert
        btrfs: fix lockdep splat and potential deadlock after failure running delayed items
        btrfs: do not block starts waiting on previous transaction commit
        btrfs: release path before inode lookup during the ino lookup ioctl
        btrfs: fix race between finishing block group creation and its item update
      3669558b