1. 08 Jun, 2022 21 commits
    • Mark Bloch's avatar
      net/mlx5: fs, fail conflicting actions · 8fa5e7b2
      Mark Bloch authored
      When combining two steering rules into one check
      not only do they share the same actions but those
      actions are also the same. This resolves an issue where
      when creating two different rules with the same match
      the actions are overwritten and one of the rules is deleted
      a FW syndrome can be seen in dmesg.
      
      mlx5_core 0000:03:00.0: mlx5_cmd_check:819:(pid 2105): DEALLOC_MODIFY_HEADER_CONTEXT(0x941) op_mod(0x0) failed, status bad resource state(0x9), syndrome (0x1ab444)
      
      Fixes: 0d235c3f ("net/mlx5: Add hash table to search FTEs in a flow-group")
      Signed-off-by: default avatarMark Bloch <mbloch@nvidia.com>
      Reviewed-by: default avatarMaor Gottlieb <maorg@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      8fa5e7b2
    • Feras Daoud's avatar
      net/mlx5: Rearm the FW tracer after each tracer event · 8bf94e64
      Feras Daoud authored
      The current design does not arm the tracer if traces are available before
      the tracer string database is fully loaded, leading to an unfunctional tracer.
      This fix will rearm the tracer every time the FW triggers tracer event
      regardless of the tracer strings database status.
      
      Fixes: c71ad41c ("net/mlx5: FW tracer, events handling")
      Signed-off-by: default avatarFeras Daoud <ferasda@nvidia.com>
      Signed-off-by: default avatarRoy Novich <royno@nvidia.com>
      Reviewed-by: default avatarMoshe Shemesh <moshe@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      8bf94e64
    • Mark Bloch's avatar
      net/mlx5: E-Switch, pair only capable devices · 3008e6a0
      Mark Bloch authored
      OFFLOADS paring using devcom is possible only on devices
      that support LAG. Filter based on lag capabilities.
      
      This fixes an issue where mlx5_get_next_phys_dev() was
      called without holding the interface lock.
      
      This issue was found when commit
      bc4c2f2e ("net/mlx5: Lag, filter non compatible devices")
      added an assert that verifies the interface lock is held.
      
      WARNING: CPU: 9 PID: 1706 at drivers/net/ethernet/mellanox/mlx5/core/dev.c:642 mlx5_get_next_phys_dev+0xd2/0x100 [mlx5_core]
      Modules linked in: mlx5_vdpa vringh vhost_iotlb vdpa mlx5_ib mlx5_core xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi rdma_cm iw_cm ib_umad ib_ipoib ib_cm ib_uverbs ib_core overlay fuse [last unloaded: mlx5_core]
      CPU: 9 PID: 1706 Comm: devlink Not tainted 5.18.0-rc7+ #11
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:mlx5_get_next_phys_dev+0xd2/0x100 [mlx5_core]
      Code: 02 00 75 48 48 8b 85 80 04 00 00 5d c3 31 c0 5d c3 be ff ff ff ff 48 c7 c7 08 41 5b a0 e8 36 87 28 e3 85 c0 0f 85 6f ff ff ff <0f> 0b e9 68 ff ff ff 48 c7 c7 0c 91 cc 84 e8 cb 36 6f e1 e9 4d ff
      RSP: 0018:ffff88811bf47458 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff88811b398000 RCX: 0000000000000001
      RDX: 0000000080000000 RSI: ffffffffa05b4108 RDI: ffff88812daaaa78
      RBP: ffff88812d050380 R08: 0000000000000001 R09: ffff88811d6b3437
      R10: 0000000000000001 R11: 00000000fddd3581 R12: ffff88815238c000
      R13: ffff88812d050380 R14: ffff8881018aa7e0 R15: ffff88811d6b3428
      FS:  00007fc82e18ae80(0000) GS:ffff88842e080000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f9630d1b421 CR3: 0000000149802004 CR4: 0000000000370ea0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       mlx5_esw_offloads_devcom_event+0x99/0x3b0 [mlx5_core]
       mlx5_devcom_send_event+0x167/0x1d0 [mlx5_core]
       esw_offloads_enable+0x1153/0x1500 [mlx5_core]
       ? mlx5_esw_offloads_controller_valid+0x170/0x170 [mlx5_core]
       ? wait_for_completion_io_timeout+0x20/0x20
       ? mlx5_rescan_drivers_locked+0x318/0x810 [mlx5_core]
       mlx5_eswitch_enable_locked+0x586/0xc50 [mlx5_core]
       ? mlx5_eswitch_disable_pf_vf_vports+0x1d0/0x1d0 [mlx5_core]
       ? mlx5_esw_try_lock+0x1b/0xb0 [mlx5_core]
       ? mlx5_eswitch_enable+0x270/0x270 [mlx5_core]
       ? __debugfs_create_file+0x260/0x3e0
       mlx5_devlink_eswitch_mode_set+0x27e/0x870 [mlx5_core]
       ? mutex_lock_io_nested+0x12c0/0x12c0
       ? esw_offloads_disable+0x250/0x250 [mlx5_core]
       ? devlink_nl_cmd_trap_get_dumpit+0x470/0x470
       ? rcu_read_lock_sched_held+0x3f/0x70
       devlink_nl_cmd_eswitch_set_doit+0x217/0x620
      
      Fixes: dd3fddb8 ("net/mlx5: E-Switch, handle devcom events only for ports on the same device")
      Signed-off-by: default avatarMark Bloch <mbloch@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Reviewed-by: default avatarMoshe Shemesh <moshe@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      3008e6a0
    • Paul Blakey's avatar
      net/mlx5e: CT: Fix cleanup of CT before cleanup of TC ct rules · 15ef9efa
      Paul Blakey authored
      CT cleanup assumes that all tc rules were deleted first, and so
      is free to delete the CT shared resources (e.g the dr_action
      fwd_action which is shared for all tuples). But currently for
      uplink, this is happens in reverse, causing the below trace.
      
      CT cleanup is called from:
      mlx5e_cleanup_rep_tx()->mlx5e_cleanup_uplink_rep_tx()->
      mlx5e_rep_tc_cleanup()->mlx5e_tc_esw_cleanup()->
      mlx5_tc_ct_clean()
      
      Only afterwards, tc cleanup is called from:
      mlx5e_cleanup_rep_tx()->mlx5e_tc_ht_cleanup()
      which would have deleted all the tc ct rules, and so delete
      all the offloaded tuples.
      
      Fix this reversing the order of init and on cleanup, which
      will result in tc cleanup then ct cleanup.
      
      [ 9443.593347] WARNING: CPU: 2 PID: 206774 at drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c:1882 mlx5dr_action_destroy+0x188/0x1a0 [mlx5_core]
      [ 9443.593349] Modules linked in: act_ct nf_flow_table rdma_ucm(O) rdma_cm(O) iw_cm(O) ib_ipoib(O) ib_cm(O) ib_umad(O) mlx5_core(O-) mlxfw(O) mlxdevm(O) auxiliary(O) ib_uverbs(O) psample ib_core(O) mlx_compat(O) ip_gre gre ip_tunnel act_vlan bonding geneve esp6_offload esp6 esp4_offload esp4 act_tunnel_key vxlan ip6_udp_tunnel udp_tunnel act_mirred act_skbedit act_gact cls_flower sch_ingress nfnetlink_cttimeout nfnetlink xfrm_user xfrm_algo 8021q garp stp ipmi_devintf mrp ipmi_msghandler llc openvswitch nsh nf_conncount nf_nat mst_pciconf(O) dm_multipath sbsa_gwdt uio_pdrv_genirq uio mlxbf_pmc mlxbf_pka mlx_trio mlx_bootctl(O) bluefield_edac sch_fq_codel ip_tables ipv6 crc_ccitt btrfs zstd_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor xor_neon raid6_pq raid1 raid0 crct10dif_ce i2c_mlxbf gpio_mlxbf2 mlxbf_gige aes_neon_bs aes_neon_blk [last unloaded: mlx5_ib]
      [ 9443.593419] CPU: 2 PID: 206774 Comm: modprobe Tainted: G           O      5.4.0-1023.24.gc14613d-bluefield #1
      [ 9443.593422] Hardware name: https://www.mellanox.com BlueField SoC/BlueField SoC, BIOS BlueField:143ebaf Jan 11 2022
      [ 9443.593424] pstate: 20000005 (nzCv daif -PAN -UAO)
      [ 9443.593489] pc : mlx5dr_action_destroy+0x188/0x1a0 [mlx5_core]
      [ 9443.593545] lr : mlx5_ct_fs_smfs_destroy+0x24/0x30 [mlx5_core]
      [ 9443.593546] sp : ffff8000135dbab0
      [ 9443.593548] x29: ffff8000135dbab0 x28: ffff0003a6ab8e80
      [ 9443.593550] x27: 0000000000000000 x26: ffff0003e07d7000
      [ 9443.593552] x25: ffff800009609de0 x24: ffff000397fb2120
      [ 9443.593554] x23: ffff0003975c0000 x22: 0000000000000000
      [ 9443.593556] x21: ffff0003975f08c0 x20: ffff800009609de0
      [ 9443.593558] x19: ffff0003c8a13380 x18: 0000000000000014
      [ 9443.593560] x17: 0000000067f5f125 x16: 000000006529c620
      [ 9443.593561] x15: 000000000000000b x14: 0000000000000000
      [ 9443.593563] x13: 0000000000000002 x12: 0000000000000001
      [ 9443.593565] x11: ffff800011108868 x10: 0000000000000000
      [ 9443.593567] x9 : 0000000000000000 x8 : ffff8000117fb270
      [ 9443.593569] x7 : ffff0003ebc01288 x6 : 0000000000000000
      [ 9443.593571] x5 : ffff800009591ab8 x4 : fffffe000f6d9a20
      [ 9443.593572] x3 : 0000000080040001 x2 : fffffe000f6d9a20
      [ 9443.593574] x1 : ffff8000095901d8 x0 : 0000000000000025
      [ 9443.593577] Call trace:
      [ 9443.593634]  mlx5dr_action_destroy+0x188/0x1a0 [mlx5_core]
      [ 9443.593688]  mlx5_ct_fs_smfs_destroy+0x24/0x30 [mlx5_core]
      [ 9443.593743]  mlx5_tc_ct_clean+0x34/0xa8 [mlx5_core]
      [ 9443.593797]  mlx5e_tc_esw_cleanup+0x58/0x88 [mlx5_core]
      [ 9443.593851]  mlx5e_rep_tc_cleanup+0x24/0x30 [mlx5_core]
      [ 9443.593905]  mlx5e_cleanup_rep_tx+0x6c/0x78 [mlx5_core]
      [ 9443.593959]  mlx5e_detach_netdev+0x74/0x98 [mlx5_core]
      [ 9443.594013]  mlx5e_netdev_change_profile+0x70/0x180 [mlx5_core]
      [ 9443.594067]  mlx5e_netdev_attach_nic_profile+0x34/0x40 [mlx5_core]
      [ 9443.594122]  mlx5e_vport_rep_unload+0x15c/0x1a8 [mlx5_core]
      [ 9443.594177]  mlx5_eswitch_unregister_vport_reps+0x228/0x298 [mlx5_core]
      [ 9443.594231]  mlx5e_rep_remove+0x2c/0x38 [mlx5_core]
      [ 9443.594236]  auxiliary_bus_remove+0x30/0x50 [auxiliary]
      [ 9443.594246]  device_release_driver_internal+0x108/0x1d0
      [ 9443.594248]  driver_detach+0x5c/0xe8
      [ 9443.594250]  bus_remove_driver+0x64/0xd8
      [ 9443.594253]  driver_unregister+0x38/0x60
      [ 9443.594255]  auxiliary_driver_unregister+0x24/0x38 [auxiliary]
      [ 9443.594311]  mlx5e_rep_cleanup+0x20/0x38 [mlx5_core]
      [ 9443.594365]  mlx5e_cleanup+0x18/0x30 [mlx5_core]
      [ 9443.594419]  cleanup+0xc/0x20cc [mlx5_core]
      [ 9443.594424]  __arm64_sys_delete_module+0x154/0x2b0
      [ 9443.594429]  el0_svc_common.constprop.0+0xf4/0x200
      [ 9443.594432]  el0_svc_handler+0x38/0xa8
      [ 9443.594435]  el0_svc+0x10/0x26c
      
      Fixes: d1a3138f ("net/mlx5e: TC, Move flow hashtable to be per rep")
      Signed-off-by: default avatarPaul Blakey <paulb@nvidia.com>
      Reviewed-by: default avatarOz Shlomo <ozsh@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      15ef9efa
    • Saeed Mahameed's avatar
      Revert "net/mlx5e: Allow relaxed ordering over VFs" · 4d995c1b
      Saeed Mahameed authored
      FW is not ready, fix was sent too soon.
      This reverts commit f05ec8d9.
      
      Fixes: f05ec8d9 ("net/mlx5e: Allow relaxed ordering over VFs")
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      4d995c1b
    • Lukas Bulwahn's avatar
      MAINTAINERS: adjust MELLANOX ETHERNET INNOVA DRIVERS to TLS support removal · ed872f92
      Lukas Bulwahn authored
      Commit 40379a00 ("net/mlx5_fpga: Drop INNOVA TLS support") removes all
      files in the directory drivers/net/ethernet/mellanox/mlx5/core/accel/, but
      misses to adjust its reference in MAINTAINERS.
      
      Hence, ./scripts/get_maintainer.pl --self-test=patterns complains about a
      broken reference.
      
      Remove the file entry to the removed directory in MELLANOX ETHERNET INNOVA
      DRIVERS.
      Signed-off-by: default avatarLukas Bulwahn <lukas.bulwahn@gmail.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      ed872f92
    • Arnd Bergmann's avatar
      au1000_eth: stop using virt_to_bus() · a6958951
      Arnd Bergmann authored
      The conversion to the dma-mapping API in linux-2.6.11 was incomplete
      and left a virt_to_bus() call around. There have been a number of
      fixes for DMA mapping API abuse in this driver, but this one always
      slipped through.
      
      Change it to just use the existing dma_addr_t pointer, and make it
      use the correct types throughout the driver to make it easier to
      understand the virtual vs dma address spaces.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Tested-by: default avatarManuel Lauss <manuel.lauss@gmail.com>
      Link: https://lore.kernel.org/r/20220607090206.19830-1-arnd@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a6958951
    • Wang Yufen's avatar
      ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg · f638a84a
      Wang Yufen authored
      When len >= INT_MAX - transhdrlen, ulen = len + transhdrlen will be
      overflow. To fix, we can follow what udpv6 does and subtract the
      transhdrlen from the max.
      Signed-off-by: default avatarWang Yufen <wangyufen@huawei.com>
      Link: https://lore.kernel.org/r/20220607120028.845916-2-wangyufen@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f638a84a
    • Wang Yufen's avatar
      ipv6: Fix signed integer overflow in __ip6_append_data · f93431c8
      Wang Yufen authored
      Resurrect ubsan overflow checks and ubsan report this warning,
      fix it by change the variable [length] type to size_t.
      
      UBSAN: signed-integer-overflow in net/ipv6/ip6_output.c:1489:19
      2147479552 + 8567 cannot be represented in type 'int'
      CPU: 0 PID: 253 Comm: err Not tainted 5.16.0+ #1
      Hardware name: linux,dummy-virt (DT)
      Call trace:
        dump_backtrace+0x214/0x230
        show_stack+0x30/0x78
        dump_stack_lvl+0xf8/0x118
        dump_stack+0x18/0x30
        ubsan_epilogue+0x18/0x60
        handle_overflow+0xd0/0xf0
        __ubsan_handle_add_overflow+0x34/0x44
        __ip6_append_data.isra.48+0x1598/0x1688
        ip6_append_data+0x128/0x260
        udpv6_sendmsg+0x680/0xdd0
        inet6_sendmsg+0x54/0x90
        sock_sendmsg+0x70/0x88
        ____sys_sendmsg+0xe8/0x368
        ___sys_sendmsg+0x98/0xe0
        __sys_sendmmsg+0xf4/0x3b8
        __arm64_sys_sendmmsg+0x34/0x48
        invoke_syscall+0x64/0x160
        el0_svc_common.constprop.4+0x124/0x300
        do_el0_svc+0x44/0xc8
        el0_svc+0x3c/0x1e8
        el0t_64_sync_handler+0x88/0xb0
        el0t_64_sync+0x16c/0x170
      
      Changes since v1:
      -Change the variable [length] type to unsigned, as Eric Dumazet suggested.
      Changes since v2:
      -Don't change exthdrlen type in ip6_make_skb, as Paolo Abeni suggested.
      Changes since v3:
      -Don't change ulen type in udpv6_sendmsg and l2tp_ip6_sendmsg, as
      Jakub Kicinski suggested.
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarWang Yufen <wangyufen@huawei.com>
      Link: https://lore.kernel.org/r/20220607120028.845916-1-wangyufen@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f93431c8
    • Xiaohui Zhang's avatar
      nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred · 8a4d4807
      Xiaohui Zhang authored
      Similar to the handling of play_deferred in commit 19cfe912
      ("Bluetooth: btusb: Fix memory leak in play_deferred"), we thought
      a patch might be needed here as well.
      
      Currently usb_submit_urb is called directly to submit deferred tx
      urbs after unanchor them.
      
      So the usb_giveback_urb_bh would failed to unref it in usb_unanchor_urb
      and cause memory leak.
      
      Put those urbs in tx_anchor to avoid the leak, and also fix the error
      handling.
      Signed-off-by: default avatarXiaohui Zhang <xiaohuizhang@ruc.edu.cn>
      Acked-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Link: https://lore.kernel.org/r/20220607083230.6182-1-xiaohuizhang@ruc.edu.cnSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      8a4d4807
    • Jakub Kicinski's avatar
    • Martin Faltesek's avatar
      nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION · f2e19b36
      Martin Faltesek authored
      The transaction buffer is allocated by using the size of the packet buf,
      and subtracting two which seem intended to remove the two tags which are
      not present in the target structure. This calculation leads to under
      counting memory because of differences between the packet contents and the
      target structure. The aid_len field is a u8 in the packet, but a u32 in
      the structure, resulting in at least 3 bytes always being under counted.
      Further, the aid data is a variable length field in the packet, but fixed
      in the structure, so if this field is less than the max, the difference is
      added to the under counting.
      
      The last validation check for transaction->params_len is also incorrect
      since it employs the same accounting error.
      
      To fix, perform validation checks progressively to safely reach the
      next field, to determine the size of both buffers and verify both tags.
      Once all validation checks pass, allocate the buffer and copy the data.
      This eliminates freeing memory on the error path, as those checks are
      moved ahead of memory allocation.
      
      Fixes: 26fc6c7f ("NFC: st21nfca: Add HCI transaction event support")
      Fixes: 4fbcc1a4 ("nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMartin Faltesek <mfaltesek@google.com>
      Reviewed-by: default avatarGuenter Roeck <groeck@chromium.org>
      Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f2e19b36
    • Martin Faltesek's avatar
      nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling · 996419e0
      Martin Faltesek authored
      Error paths do not free previously allocated memory. Add devm_kfree() to
      those failure paths.
      
      Fixes: 26fc6c7f ("NFC: st21nfca: Add HCI transaction event support")
      Fixes: 4fbcc1a4 ("nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMartin Faltesek <mfaltesek@google.com>
      Reviewed-by: default avatarGuenter Roeck <groeck@chromium.org>
      Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      996419e0
    • Martin Faltesek's avatar
      nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION · 77e5fe8f
      Martin Faltesek authored
      The first validation check for EVT_TRANSACTION has two different checks
      tied together with logical AND. One is a check for minimum packet length,
      and the other is for a valid aid_tag. If either condition is true (fails),
      then an error should be triggered.  The fix is to change && to ||.
      
      Fixes: 26fc6c7f ("NFC: st21nfca: Add HCI transaction event support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMartin Faltesek <mfaltesek@google.com>
      Reviewed-by: default avatarGuenter Roeck <groeck@chromium.org>
      Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      77e5fe8f
    • Jakub Kicinski's avatar
      Merge branch 'net-unexport-some-symbols-that-are-annotated-__init' · 653926f6
      Jakub Kicinski authored
      Masahiro Yamada says:
      
      ====================
      net: unexport some symbols that are annotated __init
      
      This patch set fixes odd combinations
      of EXPORT_SYMBOL and __init.
      
      Checking this in modpost is a good thing and I really wanted to do it,
      but Linus Torvalds imposes a very strict rule, "No new warning".
      
      I'd like the maintainer to kindly pick this up and send a fixes pull request.
      
      Unless I eliminate all the sites of warnings beforehand,
      Linus refuses to re-enable the modpost check. [1]
      
      [1]: https://lore.kernel.org/linux-kbuild/CAK7LNATmd0bigp7HQ4fTzHw5ugZMkSb3UXG7L4fxpGbqkRKESA@mail.gmail.com/T/#m5e50cc2da17491ba210c72b5efdbc0ce76e0217f
      ====================
      
      Link: https://lore.kernel.org/r/20220606045355.4160711-1-masahiroy@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      653926f6
    • Masahiro Yamada's avatar
      net: ipv6: unexport __init-annotated seg6_hmac_init() · 5801f064
      Masahiro Yamada authored
      EXPORT_SYMBOL and __init is a bad combination because the .init.text
      section is freed up after the initialization. Hence, modules cannot
      use symbols annotated __init. The access to a freed symbol may end up
      with kernel panic.
      
      modpost used to detect it, but it has been broken for a decade.
      
      Recently, I fixed modpost so it started to warn it again, then this
      showed up in linux-next builds.
      
      There are two ways to fix it:
      
        - Remove __init
        - Remove EXPORT_SYMBOL
      
      I chose the latter for this case because the caller (net/ipv6/seg6.c)
      and the callee (net/ipv6/seg6_hmac.c) belong to the same module.
      It seems an internal function call in ipv6.ko.
      
      Fixes: bf355b8d ("ipv6: sr: add core files for SR HMAC support")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5801f064
    • Masahiro Yamada's avatar
      net: xfrm: unexport __init-annotated xfrm4_protocol_init() · 4a388f08
      Masahiro Yamada authored
      EXPORT_SYMBOL and __init is a bad combination because the .init.text
      section is freed up after the initialization. Hence, modules cannot
      use symbols annotated __init. The access to a freed symbol may end up
      with kernel panic.
      
      modpost used to detect it, but it has been broken for a decade.
      
      Recently, I fixed modpost so it started to warn it again, then this
      showed up in linux-next builds.
      
      There are two ways to fix it:
      
        - Remove __init
        - Remove EXPORT_SYMBOL
      
      I chose the latter for this case because the only in-tree call-site,
      net/ipv4/xfrm4_policy.c is never compiled as modular.
      (CONFIG_XFRM is boolean)
      
      Fixes: 2f32b51b ("xfrm: Introduce xfrm_input_afinfo to access the the callbacks properly")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      4a388f08
    • Masahiro Yamada's avatar
      net: mdio: unexport __init-annotated mdio_bus_init() · 35b42dce
      Masahiro Yamada authored
      EXPORT_SYMBOL and __init is a bad combination because the .init.text
      section is freed up after the initialization. Hence, modules cannot
      use symbols annotated __init. The access to a freed symbol may end up
      with kernel panic.
      
      modpost used to detect it, but it has been broken for a decade.
      
      Recently, I fixed modpost so it started to warn it again, then this
      showed up in linux-next builds.
      
      There are two ways to fix it:
      
        - Remove __init
        - Remove EXPORT_SYMBOL
      
      I chose the latter for this case because the only in-tree call-site,
      drivers/net/phy/phy_device.c is never compiled as modular.
      (CONFIG_PHYLIB is boolean)
      
      Fixes: 90eff909 ("net: phy: Allow splitting MDIO bus/device support from PHYs")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      35b42dce
    • Gal Pressman's avatar
      net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure · f5826c8c
      Gal Pressman authored
      The ioctl EEPROM query wrongly returns success on read failures, fix
      that by returning the appropriate error code.
      
      Fixes: 7202da8b ("ethtool, net/mlx4_en: Cable info, get_module_info/eeprom ethtool support")
      Signed-off-by: default avatarGal Pressman <gal@nvidia.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Link: https://lore.kernel.org/r/20220606115718.14233-1-tariqt@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f5826c8c
    • Miaoqian Lin's avatar
      net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list · 0737e018
      Miaoqian Lin authored
      Every iteration of for_each_available_child_of_node() decrements
      the reference count of the previous node.
      when breaking early from a for_each_available_child_of_node() loop,
      we need to explicitly call of_node_put() on the gphy_fw_np.
      Add missing of_node_put() to avoid refcount leak.
      
      Fixes: 14fceff4 ("net: dsa: Add Lantiq / Intel DSA driver for vrx200")
      Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
      Link: https://lore.kernel.org/r/20220605072335.11257-1-linmq006@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0737e018
    • Jakub Kicinski's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf · 91ffb089
      Jakub Kicinski authored
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter fixes for net
      
      1) Fix NAT support for NFPROTO_INET without layer 3 address,
         from Florian Westphal.
      
      2) Use kfree_rcu(ptr, rcu) variant in nf_tables clean_net path.
      
      3) Use list to collect flowtable hooks to be deleted.
      
      4) Initialize list of hook field in flowtable transaction.
      
      5) Release hooks on error for flowtable updates.
      
      6) Memleak in hardware offload rule commit and abort paths.
      
      7) Early bail out in case device does not support for hardware offload.
         This adds a new interface to net/core/flow_offload.c to check if the
         flow indirect block list is empty.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf:
        netfilter: nf_tables: bail out early if hardware offload is not supported
        netfilter: nf_tables: memleak flow rule from commit path
        netfilter: nf_tables: release new hooks on unsupported flowtable flags
        netfilter: nf_tables: always initialize flowtable hook list in transaction
        netfilter: nf_tables: delete flowtable hooks via transaction list
        netfilter: nf_tables: use kfree_rcu(ptr, rcu) to release hooks in clean_net path
        netfilter: nat: really support inet nat without l3 address
      ====================
      
      Link: https://lore.kernel.org/r/20220606212055.98300-1-pablo@netfilter.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      91ffb089
  2. 07 Jun, 2022 3 commits
  3. 06 Jun, 2022 9 commits
  4. 02 Jun, 2022 7 commits
    • Pablo Neira Ayuso's avatar
      netfilter: nf_tables: always initialize flowtable hook list in transaction · 2c9e4559
      Pablo Neira Ayuso authored
      The hook list is used if nft_trans_flowtable_update(trans) == true. However,
      initialize this list for other cases for safety reasons.
      
      Fixes: 78d9f48f ("netfilter: nf_tables: add devices to existing flowtable")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      2c9e4559
    • Linus Torvalds's avatar
      Merge tag 'net-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 58f9d52f
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from bpf and netfilter.
      
        Current release - new code bugs:
      
         - af_packet: make sure to pull the MAC header, avoid skb panic in GSO
      
         - ptp_clockmatrix: fix inverted logic in is_single_shot()
      
         - netfilter: flowtable: fix missing FLOWI_FLAG_ANYSRC flag
      
         - dt-bindings: net: adin: fix adi,phy-output-clock description syntax
      
         - wifi: iwlwifi: pcie: rename CAUSE macro, avoid MIPS build warning
      
        Previous releases - regressions:
      
         - Revert "net: af_key: add check for pfkey_broadcast in function
           pfkey_process"
      
         - tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd
      
         - nf_tables: disallow non-stateful expression in sets earlier
      
         - nft_limit: clone packet limits' cost value
      
         - nf_tables: double hook unregistration in netns path
      
         - ping6: fix ping -6 with interface name
      
        Previous releases - always broken:
      
         - sched: fix memory barriers to prevent skbs from getting stuck in
           lockless qdiscs
      
         - neigh: set lower cap for neigh_managed_work rearming, avoid
           constantly scheduling the probe work
      
         - bpf: fix probe read error on big endian in ___bpf_prog_run()
      
         - amt: memory leak and error handling fixes
      
        Misc:
      
         - ipv6: expand & rename accept_unsolicited_na to accept_untracked_na"
      
      * tag 'net-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (80 commits)
        net/af_packet: make sure to pull mac header
        net: add debug info to __skb_pull()
        net: CONFIG_DEBUG_NET depends on CONFIG_NET
        stmmac: intel: Add RPL-P PCI ID
        net: stmmac: use dev_err_probe() for reporting mdio bus registration failure
        tipc: check attribute length for bearer name
        ice: fix access-beyond-end in the switch code
        nfp: remove padding in nfp_nfdk_tx_desc
        ax25: Fix ax25 session cleanup problems
        net: usb: qmi_wwan: Add support for Cinterion MV31 with new baseline
        sfc/siena: fix wrong tx channel offset with efx_separate_tx_channels
        sfc/siena: fix considering that all channels have TX queues
        socket: Don't use u8 type in uapi socket.h
        net/sched: act_api: fix error code in tcf_ct_flow_table_fill_tuple_ipv6()
        net: ping6: Fix ping -6 with interface name
        macsec: fix UAF bug for real_dev
        octeontx2-af: fix error code in is_valid_offset()
        wifi: mac80211: fix use-after-free in chanctx code
        bonding: guard ns_targets by CONFIG_IPV6
        tcp: tcp_rtx_synack() can be called from process context
        ...
      58f9d52f
    • Saravana Kannan's avatar
      module: Fix prefix for module.sig_enforce module param · 73503963
      Saravana Kannan authored
      Commit cfc1d277 ("module: Move all into module/") changed the prefix
      of the module param by moving/renaming files.  A later commit also moves
      the module_param() into a different file, thereby changing the prefix
      yet again.
      
      This would break kernel cmdline compatibility and also userspace
      compatibility at /sys/module/module/parameters/sig_enforce.
      
      So, set the prefix back to "module.".
      
      Fixes: cfc1d277 ("module: Move all into module/")
      Link: https://lore.kernel.org/lkml/20220602034111.4163292-1-saravanak@google.com/
      Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
      Cc: Aaron Tomlin <atomlin@redhat.com>
      Acked-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
      Signed-off-by: default avatarSaravana Kannan <saravanak@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      73503963
    • Linus Torvalds's avatar
      Merge tag 'pci-v5.19-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · c399c85d
      Linus Torvalds authored
      Pull pci fixes from Bjorn Helgaas:
      
       - Revert brcmstb patches that broke booting on Raspberry Pi Compute
         Module 4 (Bjorn Helgaas)
      
       - Fix bridge_d3_blacklist[] error that overwrote the existing Gigabyte
         X299 entry instead of adding a new one (Bjorn Helgaas)
      
       - Update Lorenzo Pieralisi's email address in MAINTAINERS (Lorenzo
         Pieralisi)
      
      * tag 'pci-v5.19-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        MAINTAINERS: Update Lorenzo Pieralisi's email address
        PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
        Revert "PCI: brcmstb: Split brcm_pcie_setup() into two funcs"
        Revert "PCI: brcmstb: Add mechanism to turn on subdev regulators"
        Revert "PCI: brcmstb: Add control of subdevice voltage regulators"
        Revert "PCI: brcmstb: Do not turn off WOL regulators on suspend"
      c399c85d
    • Jakub Kicinski's avatar
      Merge branch 'net-af_packet-be-careful-when-expanding-mac-header-size' · 638696ef
      Jakub Kicinski authored
      Eric Dumazet says:
      
      ====================
      net: af_packet: be careful when expanding mac header size
      
      A recent regression in af_packet needed a preliminary debug patch,
      which will presumably be useful for next bugs hunting.
      
      The af_packet fix is to make sure MAC headers are contained in
      skb linear part, as GSO stack requests.
      
      v2: CONFIG_DEBUG_NET depends on CONFIG_NET to avoid compile
         errors found by kernel bots.
      ====================
      
      Link: https://lore.kernel.org/r/20220602161859.2546399-1-eric.dumazet@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      638696ef
    • Eric Dumazet's avatar
      net/af_packet: make sure to pull mac header · e9d3f809
      Eric Dumazet authored
      GSO assumes skb->head contains link layer headers.
      
      tun device in some case can provide base 14 bytes,
      regardless of VLAN being used or not.
      
      After blamed commit, we can end up setting a network
      header offset of 18+, we better pull the missing
      bytes to avoid a posible crash in GSO.
      
      syzbot report was:
      kernel BUG at include/linux/skbuff.h:2699!
      invalid opcode: 0000 [#1] PREEMPT SMP KASAN
      CPU: 1 PID: 3601 Comm: syz-executor210 Not tainted 5.18.0-syzkaller-11338-g2c5ca23f #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:__skb_pull include/linux/skbuff.h:2699 [inline]
      RIP: 0010:skb_mac_gso_segment+0x48f/0x530 net/core/gro.c:136
      Code: 00 48 c7 c7 00 96 d4 8a c6 05 cb d3 45 06 01 e8 26 bb d0 01 e9 2f fd ff ff 49 c7 c4 ea ff ff ff e9 f1 fe ff ff e8 91 84 19 fa <0f> 0b 48 89 df e8 97 44 66 fa e9 7f fd ff ff e8 ad 44 66 fa e9 48
      RSP: 0018:ffffc90002e2f4b8 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: 0000000000000012 RCX: 0000000000000000
      RDX: ffff88805bb58000 RSI: ffffffff8760ed0f RDI: 0000000000000004
      RBP: 0000000000005dbc R08: 0000000000000004 R09: 0000000000000fe0
      R10: 0000000000000fe4 R11: 0000000000000000 R12: 0000000000000fe0
      R13: ffff88807194d780 R14: 1ffff920005c5e9b R15: 0000000000000012
      FS:  000055555730f300(0000) GS:ffff8880b9d00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000200015c0 CR3: 0000000071ff8000 CR4: 0000000000350ee0
      Call Trace:
       <TASK>
       __skb_gso_segment+0x327/0x6e0 net/core/dev.c:3411
       skb_gso_segment include/linux/netdevice.h:4749 [inline]
       validate_xmit_skb+0x6bc/0xf10 net/core/dev.c:3669
       validate_xmit_skb_list+0xbc/0x120 net/core/dev.c:3719
       sch_direct_xmit+0x3d1/0xbe0 net/sched/sch_generic.c:327
       __dev_xmit_skb net/core/dev.c:3815 [inline]
       __dev_queue_xmit+0x14a1/0x3a00 net/core/dev.c:4219
       packet_snd net/packet/af_packet.c:3071 [inline]
       packet_sendmsg+0x21cb/0x5550 net/packet/af_packet.c:3102
       sock_sendmsg_nosec net/socket.c:714 [inline]
       sock_sendmsg+0xcf/0x120 net/socket.c:734
       ____sys_sendmsg+0x6eb/0x810 net/socket.c:2492
       ___sys_sendmsg+0xf3/0x170 net/socket.c:2546
       __sys_sendmsg net/socket.c:2575 [inline]
       __do_sys_sendmsg net/socket.c:2584 [inline]
       __se_sys_sendmsg net/socket.c:2582 [inline]
       __x64_sys_sendmsg+0x132/0x220 net/socket.c:2582
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x46/0xb0
      RIP: 0033:0x7f4b95da06c9
      Code: 28 c3 e8 4a 15 00 00 66 2e 0f 1f 84 00 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007ffd7defc4c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00007ffd7defc4f0 RCX: 00007f4b95da06c9
      RDX: 0000000000000000 RSI: 0000000020000140 RDI: 0000000000000003
      RBP: 0000000000000003 R08: bb1414ac00000050 R09: bb1414ac00000050
      R10: 0000000000000004 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007ffd7defc4e0 R14: 00007ffd7defc4d8 R15: 00007ffd7defc4d4
       </TASK>
      
      Fixes: dfed913e ("net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Acked-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e9d3f809
    • Eric Dumazet's avatar
      net: add debug info to __skb_pull() · 22296a5c
      Eric Dumazet authored
      While analyzing yet another syzbot report, I found the following
      patch very useful. It allows to better understand what went wrong.
      
      This debug info is only enabled if CONFIG_DEBUG_NET=y,
      which is the case for syzbot builds.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      22296a5c