stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 6.1 000/159] 6.1.5-rc1 review
@ 2023-01-10 18:02 Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 001/159] ARM: renumber bits related to _TIF_WORK_MASK Greg Kroah-Hartman
                   ` (173 more replies)
  0 siblings, 174 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
	shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

This is the start of the stable review cycle for the 6.1.5 release.
There are 159 patches in this series, all will be posted as a response
to this one.  If anyone has any issues with these being applied, please
let me know.

Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
or in the git tree and branch at:
	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 6.1.5-rc1

Baochen Qiang <quic_bqiang@quicinc.com>
    wifi: ath11k: Send PME message during wakeup from D3cold

Ard Biesheuvel <ardb@kernel.org>
    efi: random: combine bootloader provided RNG seed with RNG protocol output

Jani Nikula <jani.nikula@intel.com>
    drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index

Jani Nikula <jani.nikula@intel.com>
    drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence

William Liu <will@willsroot.io>
    ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob

Marios Makassikis <mmakassikis@freebox.fr>
    ksmbd: send proper error response in smb2_tree_connect()

Namjae Jeon <linkinjeon@kernel.org>
    ksmbd: fix infinite loop in ksmbd_conn_handler_loop()

Qu Wenruo <wqu@suse.com>
    btrfs: handle case when repair happens with dev-replace

Samson Tam <samson.tam@amd.com>
    drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0

Dillon Varone <Dillon.Varone@amd.com>
    drm/amd/display: Add check for DET fetch latency hiding for dcn32

Rafael Mendonca <rafaelmendsr@gmail.com>
    virtio_blk: Fix signedness bug in virtblk_prep_rq()

Dmitry Fomichev <dmitry.fomichev@wdc.com>
    virtio-blk: use a helper to handle request queuing errors

Zhenyu Wang <zhenyuw@linux.intel.com>
    drm/i915/gvt: fix vgpu debugfs clean in remove

Zhenyu Wang <zhenyuw@linux.intel.com>
    drm/i915/gvt: fix gvt debugfs destroy

Mukul Joshi <mukul.joshi@amd.com>
    drm/amdkfd: Fix kernel warning during topology setup

Ma Jun <majun@amd.com>
    drm/plane-helper: Add the missing declaration of drm_atomic_state

Andreas Rammhold <andreas@rammhold.de>
    of/fdt: run soc memory setup when early_init_dt_scan_memory fails

Björn Töpel <bjorn@rivosinc.com>
    riscv, kprobes: Stricter c.jr/c.jalr decoding

Ben Dooks <ben-linux@fluff.org>
    riscv: uaccess: fix type of 0 variable on error in get_user()

Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    thermal: int340x: Add missing attribute for data rate base

Cindy Lu <lulu@redhat.com>
    vhost_vdpa: fix the crash in unmap a large memory

Jason A. Donenfeld <Jason@zx2c4.com>
    tpm: Allow system suspend to continue when TPM suspend fails

Pavel Begunkov <asml.silence@gmail.com>
    io_uring: fix CQ waiting timeout handling

Pavel Begunkov <asml.silence@gmail.com>
    io_uring: pin context while queueing deferred tw

Jens Axboe <axboe@kernel.dk>
    block: don't allow splitting of a REQ_NOWAIT bio

Christian Marangi <ansuelsmth@gmail.com>
    net: dsa: tag_qca: fix wrong MGMT_DATA2 size

Christian Marangi <ansuelsmth@gmail.com>
    net: dsa: qca8k: fix wrong length value for mgmt eth packet

Christian Marangi <ansuelsmth@gmail.com>
    Revert "net: dsa: qca8k: cache lo and hi for mdio write"

Michel Dänzer <mdaenzer@redhat.com>
    Revert "drm/amd/display: Enable Freesync Video Mode by default"

Chuang Wang <nashuiliang@gmail.com>
    bpf: Fix panic due to wrong pageattr of im->image

Paul Menzel <pmenzel@molgen.mpg.de>
    fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB

Jeff Layton <jlayton@kernel.org>
    nfsd: fix handling of readdir in v4root vs. mount upcall timeout

Rodrigo Branco <bsdaemon@google.com>
    x86/bugs: Flush IBP in ib_prctl_set()

Takashi Iwai <tiwai@suse.de>
    x86/kexec: Fix double-free of elf header buffer

Kai Vehmanen <kai.vehmanen@linux.intel.com>
    ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed"

Christoph Hellwig <hch@lst.de>
    nvme: also return I/O command effects from nvme_command_effects

Christoph Hellwig <hch@lst.de>
    nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it

YoungJun.park <her0gyugyu@gmail.com>
    kunit: alloc_string_stream_fragment error handling bug fix

Jens Axboe <axboe@kernel.dk>
    io_uring: check for valid register opcode earlier

Mario Limonciello <mario.limonciello@amd.com>
    ACPI: video: Don't enable fallback path for creating ACPI backlight by default

Mario Limonciello <mario.limonciello@amd.com>
    drm/amd/display: Report to ACPI video if no panels were found

Mario Limonciello <mario.limonciello@amd.com>
    ACPI: video: Allow GPU drivers to report no panels

Yanjun Zhang <zhangyanjun@cestc.cn>
    nvme: fix multipath crash caused by flush request when blktrace is enabled

Jens Axboe <axboe@kernel.dk>
    io_uring/cancel: re-grab ctx mutex after finishing wait

Philip Yang <Philip.Yang@amd.com>
    drm/amdkfd: Fix double release compute pasid

Philip Yang <Philip.Yang@amd.com>
    drm/amdkfd: Fix kfd_process_device_init_vm error handling

Luben Tuikov <luben.tuikov@amd.com>
    drm/amdgpu: Fix size validation for non-exclusive domains (v4)

YC Hung <yc.hung@mediatek.com>
    ASoC: SOF: mediatek: initialize panic_info to zero

Hans de Goede <hdegoede@redhat.com>
    ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet

Dominique Martinet <asmadeus@codewreck.org>
    9p/client: fix data race on req->status

Kai Vehmanen <kai.vehmanen@linux.intel.com>
    ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown"

Linus Torvalds <torvalds@linux-foundation.org>
    hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling

Arnd Bergmann <arnd@arndb.de>
    usb: dwc3: xilinx: include linux/gpio/consumer.h

Jan Kara <jack@suse.cz>
    udf: Fix extension of the last extent in the file

Zhengchao Shao <shaozhengchao@huawei.com>
    caif: fix memory leak in cfctrl_linkup_request()

Paolo Abeni <pabeni@redhat.com>
    net/ulp: prevent ULP without clone op from entering the LISTEN status

Caleb Sander <csander@purestorage.com>
    qed: allow sleep in qed_mcp_trace_dump()

Ming Lei <ming.lei@redhat.com>
    ublk: honor IO_URING_F_NONBLOCK for handling control command

Zheng Wang <zyytlz.wz@163.com>
    drm/i915/gvt: fix double free bug in split_2MB_gtt_entry

Dan Carpenter <error27@gmail.com>
    drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()

Namhyung Kim <namhyung@kernel.org>
    perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode

Namhyung Kim <namhyung@kernel.org>
    perf stat: Fix handling of unsupported cgroup events when using BPF counters

Thomas Richter <tmricht@linux.ibm.com>
    perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390

Szymon Heidrich <szymon.heidrich@gmail.com>
    usb: rndis_host: Secure rndis_query check against int overflow

Geetha sowjanya <gakula@marvell.com>
    octeontx2-pf: Fix lmtst ID used in aura free

Daniil Tatianin <d-tatianin@yandex-team.ru>
    drivers/net/bonding/bond_3ad: return when there's no aggregator

Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    fs/ntfs3: don't hold ni_lock when calling truncate_setsize()

Philipp Zabel <p.zabel@pengutronix.de>
    drm/imx: ipuv3-plane: Fix overlay plane width

Miaoqian Lin <linmq006@gmail.com>
    perf tools: Fix resources leak in perf_data__open_dir()

Xiu Jianfeng <xiujianfeng@huawei.com>
    drm/virtio: Fix memory leak in virtio_gpu_object_create()

Jozsef Kadlecsik <kadlec@netfilter.org>
    netfilter: ipset: Rework long task execution when adding/deleting entries

Jozsef Kadlecsik <kadlec@netfilter.org>
    netfilter: ipset: fix hash:net,port,net hang with /0 subnet

Horatiu Vultur <horatiu.vultur@microchip.com>
    net: sparx5: Fix reading of the MAC address

Ido Schimmel <idosch@nvidia.com>
    vxlan: Fix memory leaks in error path

Jamal Hadi Salim <jhs@mojatatu.com>
    net: sched: cbq: dont intepret cls results when asked to drop

Jamal Hadi Salim <jhs@mojatatu.com>
    net: sched: atm: dont intepret cls results when asked to drop

Miaoqian Lin <linmq006@gmail.com>
    gpio: sifive: Fix refcount leak in sifive_gpio_probe

Xiubo Li <xiubli@redhat.com>
    ceph: switch to vfs_inode_has_locks() to fix file lock bug

Jeff Layton <jlayton@kernel.org>
    filelock: new helper: vfs_inode_has_locks

Carlo Caione <ccaione@baylibre.com>
    drm/meson: Reduce the FIFO lines held when AFBC is not used

Po-Hsu Lin <po-hsu.lin@canonical.com>
    selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier

Po-Hsu Lin <po-hsu.lin@canonical.com>
    selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier

Maor Gottlieb <maorg@nvidia.com>
    RDMA/mlx5: Fix validation of max_rd_atomic caps for DC

Shay Drory <shayd@nvidia.com>
    RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device

Haibo Chen <haibo.chen@nxp.com>
    gpio: pca953x: avoid to use uninitialized value pinctrl

Miaoqian Lin <linmq006@gmail.com>
    net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe

David Arinzon <darinzon@amazon.com>
    net: ena: Update NUMA TPH hint register upon NUMA node update

David Arinzon <darinzon@amazon.com>
    net: ena: Set default value for RX interrupt moderation

David Arinzon <darinzon@amazon.com>
    net: ena: Fix rx_copybreak value update

David Arinzon <darinzon@amazon.com>
    net: ena: Use bitmask to indicate packet redirection

David Arinzon <darinzon@amazon.com>
    net: ena: Account for the number of processed bytes in XDP

David Arinzon <darinzon@amazon.com>
    net: ena: Don't register memory info on XDP exchange

David Arinzon <darinzon@amazon.com>
    net: ena: Fix toeplitz initial hash value

Jiguang Xiao <jiguang.xiao@windriver.com>
    net: amd-xgbe: add missed tasklet_kill

Jian Shen <shenjian15@huawei.com>
    net: hns3: refine the handling for VF heartbeat

Kuniyuki Iwashima <kuniyu@amazon.com>
    tcp: Add TIME_WAIT sockets in bhash2.

Kees Cook <keescook@chromium.org>
    bpf: Always use maximal size for copy_array()

Eli Cohen <elic@nvidia.com>
    net/mlx5: Lag, fix failure to cancel delayed bond work

Maor Dickman <maord@nvidia.com>
    net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option

Adham Faris <afaris@nvidia.com>
    net/mlx5e: Fix hw mtu initializing at XDP SQ allocation

Chris Mi <cmi@nvidia.com>
    net/mlx5e: Always clear dest encap in neigh-update-del

Chris Mi <cmi@nvidia.com>
    net/mlx5e: CT: Fix ct debugfs folder name

Tariq Toukan <tariqt@nvidia.com>
    net/mlx5e: Fix RX reporter for XSK RQs

Dragos Tatulea <dtatulea@nvidia.com>
    net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default

Shay Drory <shayd@nvidia.com>
    net/mlx5: Fix RoCE setting at HCA level

Shay Drory <shayd@nvidia.com>
    net/mlx5: Avoid recovery in probe flows

Shay Drory <shayd@nvidia.com>
    net/mlx5: Fix io_eq_size and event_eq_size params validation

Jiri Pirko <jiri@nvidia.com>
    net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path

Moshe Shemesh <moshe@nvidia.com>
    net/mlx5: E-Switch, properly handle ingress tagged packets on VST

Jason Wang <jasowang@redhat.com>
    vdpasim: fix memory leak when freeing IOTLBs

Rong Wang <wangrong68@huawei.com>
    vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove

Wei Yongjun <weiyongjun1@huawei.com>
    virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session()

Stefano Garzarella <sgarzare@redhat.com>
    vdpa_sim: fix vringh initialization in vdpasim_queue_ready()

Stefano Garzarella <sgarzare@redhat.com>
    vhost-vdpa: fix an iotlb memory leak

Stefano Garzarella <sgarzare@redhat.com>
    vhost: fix range used in translate_desc()

Stefano Garzarella <sgarzare@redhat.com>
    vringh: fix range used in iotlb_translate()

Yuan Can <yuancan@huawei.com>
    vhost/vsock: Fix error handling in vhost_vsock_init()

ruanjinjie <ruanjinjie@huawei.com>
    vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()

Eli Cohen <elic@nvidia.com>
    vdpa/mlx5: Fix wrong mac address deletion

Eli Cohen <elic@nvidia.com>
    vdpa/mlx5: Fix rule forwarding VLAN to TIR

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Fix HDS and jumbo thresholds for RX packets

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Fix first buffer size calculations for XDP multi-buffer

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Fix XDP RX path

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Simplify bnxt_xdp_buff_init()

Miaoqian Lin <linmq006@gmail.com>
    nfc: Fix potential resource leaks

Johnny S. Lee <foss@jsl.io>
    net: dsa: mv88e6xxx: depend on PTP conditionally

Daniil Tatianin <d-tatianin@yandex-team.ru>
    qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure

Hawkins Jiawei <yin31149@gmail.com>
    net: sched: fix memory leak in tcindex_set_parms

Jian Shen <shenjian15@huawei.com>
    net: hns3: fix VF promisc mode not update when mac table full

Jian Shen <shenjian15@huawei.com>
    net: hns3: fix miss L3E checking for rx packet

Jie Wang <wangjie125@huawei.com>
    net: hns3: add interrupts re-initialization while doing VF FLR

Jeff Layton <jlayton@kernel.org>
    nfsd: shut down the NFSv4 state objects before the filecache

Shawn Bohrer <sbohrer@cloudflare.com>
    veth: Fix race with AF_XDP exposing old or uninitialized descriptors

Horatiu Vultur <horatiu.vultur@microchip.com>
    net: lan966x: Fix configuration of the PCS

Eric Dumazet <edumazet@google.com>
    bonding: fix lockdep splat in bond_miimon_commit()

Pablo Neira Ayuso <pablo@netfilter.org>
    netfilter: nf_tables: honor set timeout and garbage collection updates

Paolo Abeni <pabeni@redhat.com>
    mptcp: fix lockdep false positive

Paolo Abeni <pabeni@redhat.com>
    mptcp: fix deadlock in fastopen error path

Ronak Doshi <doshir@vmware.com>
    vmxnet3: correctly report csum_level for encapsulated packet

Antoine Tenart <atenart@kernel.org>
    net: vrf: determine the dst using the original ifindex for multicast

Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf

Pablo Neira Ayuso <pablo@netfilter.org>
    netfilter: nf_tables: perform type checking for existing sets

Pablo Neira Ayuso <pablo@netfilter.org>
    netfilter: nf_tables: add function to create set stateful expressions

Pablo Neira Ayuso <pablo@netfilter.org>
    netfilter: nf_tables: consolidate set description

Steven Price <steven.price@arm.com>
    drm/panfrost: Fix GEM handle creation ref-counting

Jakub Kicinski <kuba@kernel.org>
    bpf: pull before calling skb_postpull_rcsum()

Arnd Bergmann <arnd@arndb.de>
    wifi: ath9k: use proper statements in conditionals

minoura makoto <minoura@valinux.co.jp>
    SUNRPC: ensure the matching upcall is in-flight upon downcall

Sasha Levin <sashal@kernel.org>
    btrfs: fix an error handling path in btrfs_defrag_leaves()

Johan Hovold <johan+linaro@kernel.org>
    phy: qcom-qmp-combo: fix broken power on

Masami Hiramatsu (Google) <mhiramat@kernel.org>
    perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data

Masami Hiramatsu (Google) <mhiramat@kernel.org>
    perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor

Qu Wenruo <wqu@suse.com>
    btrfs: fix compat_ro checks against remount

Filipe Manana <fdmanana@suse.com>
    btrfs: fix off-by-one in delalloc search during lseek

Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    usb: dwc3: gadget: Ignore End Transfer delay on teardown

Shyam Prasad N <sprasad@microsoft.com>
    cifs: refcount only the selected iface during interface update

Shyam Prasad N <sprasad@microsoft.com>
    cifs: fix interface count calculation during refresh

Sasha Levin <sashal@kernel.org>
    btrfs: replace strncpy() with strscpy()

Jens Axboe <axboe@kernel.dk>
    ARM: renumber bits related to _TIF_WORK_MASK


-------------

Diffstat:

 Makefile                                           |   4 +-
 arch/arm/include/asm/thread_info.h                 |  13 +-
 arch/mips/ralink/of.c                              |   2 +-
 arch/riscv/include/asm/uaccess.h                   |   2 +-
 arch/riscv/kernel/probes/simulate-insn.h           |   4 +-
 arch/x86/kernel/cpu/bugs.c                         |   2 +
 arch/x86/kernel/crash.c                            |   4 +-
 block/blk-merge.c                                  |  10 +
 drivers/acpi/acpi_video.c                          |  17 +-
 drivers/block/ublk_drv.c                           |   3 +
 drivers/block/virtio_blk.c                         |  33 +--
 drivers/char/tpm/tpm-interface.c                   |   4 +-
 .../crypto/virtio/virtio_crypto_skcipher_algs.c    |   3 +-
 drivers/firmware/efi/efi.c                         |   4 +-
 drivers/firmware/efi/libstub/efistub.h             |   2 +
 drivers/firmware/efi/libstub/random.c              |  42 +++-
 drivers/gpio/gpio-pca953x.c                        |   3 +
 drivers/gpio/gpio-sifive.c                         |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu.h                |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h         |   4 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c   |  39 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c            |  27 +++
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c         |  19 +-
 drivers/gpu/drm/amd/amdkfd/kfd_process.c           |  24 +-
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c          |   2 +-
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  16 +-
 .../amd/display/dc/dml/dcn32/display_mode_vba_32.c |  39 +++
 .../dc/dml/dcn32/display_mode_vba_util_32.c        |  69 ++++++
 .../dc/dml/dcn32/display_mode_vba_util_32.h        |  18 ++
 .../gpu/drm/amd/display/dc/dml/display_mode_vba.h  |   2 +
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c       |  94 +++++++-
 drivers/gpu/drm/i915/gvt/debugfs.c                 |  17 +-
 drivers/gpu/drm/i915/gvt/gtt.c                     |  17 +-
 drivers/gpu/drm/i915/gvt/scheduler.c               |   1 +
 drivers/gpu/drm/i915/i915_irq.c                    |   3 +
 drivers/gpu/drm/i915/i915_reg.h                    |   1 +
 drivers/gpu/drm/imx/ipuv3-plane.c                  |  14 +-
 drivers/gpu/drm/meson/meson_viu.c                  |   5 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c            |  27 ++-
 drivers/gpu/drm/panfrost/panfrost_gem.c            |  16 +-
 drivers/gpu/drm/panfrost/panfrost_gem.h            |   5 +-
 drivers/gpu/drm/virtio/virtgpu_object.c            |   6 +-
 drivers/infiniband/hw/mlx5/counters.c              |   6 +-
 drivers/infiniband/hw/mlx5/qp.c                    |  49 ++--
 drivers/net/bonding/bond_3ad.c                     |   1 +
 drivers/net/bonding/bond_main.c                    |   8 +-
 drivers/net/dsa/mv88e6xxx/Kconfig                  |   4 +-
 drivers/net/dsa/qca/qca8k-8xxx.c                   | 106 ++++-----
 drivers/net/dsa/qca/qca8k.h                        |   5 -
 drivers/net/ethernet/amazon/ena/ena_com.c          |  29 +--
 drivers/net/ethernet/amazon/ena/ena_ethtool.c      |   6 +-
 drivers/net/ethernet/amazon/ena/ena_netdev.c       |  83 +++++--
 drivers/net/ethernet/amazon/ena/ena_netdev.h       |  17 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c           |   3 +
 drivers/net/ethernet/amd/xgbe/xgbe-i2c.c           |   4 +-
 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c          |   4 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c          |  22 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.h          |  15 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c      |  20 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h      |   6 +-
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c    |  10 +-
 .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c    | 132 +++++++----
 .../ethernet/hisilicon/hns3/hns3pf/hclge_main.h    |   7 +
 .../net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c |  71 +++++-
 .../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c  |   3 +-
 drivers/net/ethernet/intel/ice/ice_xsk.c           |   2 +-
 .../ethernet/marvell/octeontx2/nic/otx2_common.c   |  30 ++-
 drivers/net/ethernet/mellanox/mlx5/core/devlink.c  |   4 +-
 .../ethernet/mellanox/mlx5/core/en/reporter_rx.c   |   6 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c |   7 +-
 .../ethernet/mellanox/mlx5/core/en/tc_tun_encap.c  |   9 +-
 .../ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c |   5 +
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |   2 +-
 .../mellanox/mlx5/core/esw/acl/egress_lgcy.c       |   7 +-
 .../mellanox/mlx5/core/esw/acl/ingress_lgcy.c      |  33 ++-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c  |  30 ++-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h  |   6 +
 drivers/net/ethernet/mellanox/mlx5/core/health.c   |   6 +
 .../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c  |   4 +
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c  |   1 +
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   4 +-
 .../net/ethernet/microchip/lan966x/lan966x_port.c  |   2 +-
 .../net/ethernet/microchip/sparx5/sparx5_main.c    |   2 +-
 drivers/net/ethernet/qlogic/qed/qed_debug.c        |  28 ++-
 .../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c  |   8 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h    |  10 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |   8 +-
 drivers/net/phy/xilinx_gmii2rgmii.c                |   1 +
 drivers/net/usb/rndis_host.c                       |   3 +-
 drivers/net/veth.c                                 |   5 +-
 drivers/net/vmxnet3/vmxnet3_drv.c                  |   8 +
 drivers/net/vrf.c                                  |   6 +-
 drivers/net/vxlan/vxlan_core.c                     |  19 +-
 drivers/net/wireless/ath/ath11k/qmi.c              |   3 +
 drivers/net/wireless/ath/ath9k/htc.h               |  14 +-
 drivers/nvme/host/core.c                           |  32 ++-
 drivers/nvme/host/nvme.h                           |   2 +-
 drivers/nvme/target/admin-cmd.c                    |  35 +--
 drivers/of/fdt.c                                   |   6 +-
 drivers/phy/qualcomm/phy-qcom-qmp-combo.c          |  20 +-
 .../intel/int340x_thermal/processor_thermal_rfim.c |   4 +
 drivers/usb/dwc3/dwc3-xilinx.c                     |   1 +
 drivers/usb/dwc3/gadget.c                          |   5 +-
 drivers/vdpa/mlx5/net/mlx5_vnet.c                  |  10 +-
 drivers/vdpa/vdpa_sim/vdpa_sim.c                   |   7 +-
 drivers/vdpa/vdpa_sim/vdpa_sim_blk.c               |   4 +-
 drivers/vdpa/vdpa_sim/vdpa_sim_net.c               |   4 +-
 drivers/vdpa/virtio_pci/vp_vdpa.c                  |   2 +-
 drivers/vhost/vdpa.c                               |  52 ++--
 drivers/vhost/vhost.c                              |   4 +-
 drivers/vhost/vringh.c                             |   5 +-
 drivers/vhost/vsock.c                              |   9 +-
 drivers/video/fbdev/matrox/matroxfb_base.c         |   4 +-
 fs/btrfs/disk-io.c                                 |   8 +-
 fs/btrfs/disk-io.h                                 |   2 +-
 fs/btrfs/extent-io-tree.c                          |   2 +-
 fs/btrfs/extent_io.c                               |  11 +-
 fs/btrfs/file.c                                    |   2 +-
 fs/btrfs/ioctl.c                                   |   9 +-
 fs/btrfs/rcu-string.h                              |   6 +-
 fs/btrfs/super.c                                   |   2 +-
 fs/btrfs/tree-defrag.c                             |   6 +-
 fs/ceph/caps.c                                     |   2 +-
 fs/ceph/locks.c                                    |   4 -
 fs/ceph/super.h                                    |   1 -
 fs/cifs/sess.c                                     |   3 +-
 fs/cifs/smb2ops.c                                  |   3 +-
 fs/hfs/inode.c                                     |  15 +-
 fs/ksmbd/auth.c                                    |   3 +-
 fs/ksmbd/connection.c                              |   7 +-
 fs/ksmbd/smb2pdu.c                                 |   7 +-
 fs/ksmbd/transport_tcp.c                           |   5 +-
 fs/locks.c                                         |  23 ++
 fs/nfsd/nfs4xdr.c                                  |  11 +
 fs/nfsd/nfssvc.c                                   |   2 +-
 fs/ntfs3/file.c                                    |   4 +-
 fs/udf/inode.c                                     |   2 +-
 include/acpi/video.h                               |   2 +
 include/drm/drm_plane_helper.h                     |   1 +
 include/linux/dsa/tag_qca.h                        |   4 +-
 include/linux/efi.h                                |   2 -
 include/linux/fs.h                                 |   6 +
 include/linux/mlx5/device.h                        |   5 +
 include/linux/mlx5/mlx5_ifc.h                      |   3 +-
 include/linux/netfilter/ipset/ip_set.h             |   2 +-
 include/linux/sunrpc/rpc_pipe_fs.h                 |   5 +
 include/net/inet_hashtables.h                      |   4 +
 include/net/inet_timewait_sock.h                   |   5 +
 include/net/netfilter/nf_tables.h                  |  25 +-
 io_uring/cancel.c                                  |   9 +-
 io_uring/io_uring.c                                |  19 +-
 kernel/bpf/trampoline.c                            |   4 +
 kernel/bpf/verifier.c                              |  12 +-
 lib/kunit/string-stream.c                          |   4 +-
 net/9p/client.c                                    |  15 +-
 net/9p/trans_fd.c                                  |  12 +-
 net/9p/trans_rdma.c                                |   4 +-
 net/9p/trans_virtio.c                              |   9 +-
 net/9p/trans_xen.c                                 |   4 +-
 net/caif/cfctrl.c                                  |   6 +-
 net/core/filter.c                                  |   7 +-
 net/ipv4/inet_connection_sock.c                    |  40 +++-
 net/ipv4/inet_hashtables.c                         |   8 +-
 net/ipv4/inet_timewait_sock.c                      |  31 ++-
 net/ipv4/tcp_ulp.c                                 |   4 +
 net/mptcp/protocol.c                               |  20 +-
 net/mptcp/protocol.h                               |   4 +-
 net/mptcp/subflow.c                                |  19 +-
 net/netfilter/ipset/ip_set_core.c                  |   7 +-
 net/netfilter/ipset/ip_set_hash_ip.c               |  14 +-
 net/netfilter/ipset/ip_set_hash_ipmark.c           |  13 +-
 net/netfilter/ipset/ip_set_hash_ipport.c           |  13 +-
 net/netfilter/ipset/ip_set_hash_ipportip.c         |  13 +-
 net/netfilter/ipset/ip_set_hash_ipportnet.c        |  13 +-
 net/netfilter/ipset/ip_set_hash_net.c              |  17 +-
 net/netfilter/ipset/ip_set_hash_netiface.c         |  15 +-
 net/netfilter/ipset/ip_set_hash_netnet.c           |  23 +-
 net/netfilter/ipset/ip_set_hash_netport.c          |  19 +-
 net/netfilter/ipset/ip_set_hash_netportnet.c       |  40 ++--
 net/netfilter/nf_tables_api.c                      | 261 ++++++++++++++-------
 net/nfc/netlink.c                                  |  52 ++--
 net/sched/cls_tcindex.c                            |  12 +-
 net/sched/sch_atm.c                                |   5 +-
 net/sched/sch_cbq.c                                |   4 +-
 net/sunrpc/auth_gss/auth_gss.c                     |  19 +-
 sound/soc/intel/boards/bytcr_rt5640.c              |  15 ++
 sound/soc/sof/core.c                               |   9 -
 sound/soc/sof/intel/hda-dsp.c                      |  72 ++++++
 sound/soc/sof/intel/hda.h                          |   1 +
 sound/soc/sof/intel/tgl.c                          |   2 +-
 sound/soc/sof/mediatek/mtk-adsp-common.c           |   2 +-
 tools/perf/builtin-lock.c                          |   2 +
 tools/perf/util/bpf_counter_cgroup.c               |  14 +-
 tools/perf/util/cgroup.c                           |  23 +-
 tools/perf/util/data.c                             |   2 +
 tools/perf/util/dwarf-aux.c                        |  23 +-
 .../selftests/net/arp_ndisc_evict_nocarrier.sh     |  15 +-
 197 files changed, 1988 insertions(+), 876 deletions(-)



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 001/159] ARM: renumber bits related to _TIF_WORK_MASK
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 002/159] btrfs: replace strncpy() with strscpy() Greg Kroah-Hartman
                   ` (172 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Russell King (Oracle), Jens Axboe, Hui Tang

From: Jens Axboe <axboe@kernel.dk>

commit 191f8453fc99a537ea78b727acea739782378b0d upstream.

We want to ensure that the mask related to calling do_work_pending()
is within the first 16 bits. Move bits unrelated to that outside of
that range, to avoid spuriously calling do_work_pending() when we don't
need to.

Cc: stable@vger.kernel.org
Fixes: 32d59773da38 ("arm: add support for TIF_NOTIFY_SIGNAL")
Reported-and-tested-by: Hui Tang <tanghui20@huawei.com>
Suggested-by: Russell King (Oracle) <linux@armlinux.org.uk>
Link: https://lore.kernel.org/lkml/7ecb8f3c-2aeb-a905-0d4a-aa768b9649b5@huawei.com/
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm/include/asm/thread_info.h |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

--- a/arch/arm/include/asm/thread_info.h
+++ b/arch/arm/include/asm/thread_info.h
@@ -128,15 +128,16 @@ extern int vfp_restore_user_hwstate(stru
 #define TIF_NEED_RESCHED	1	/* rescheduling necessary */
 #define TIF_NOTIFY_RESUME	2	/* callback before returning to user */
 #define TIF_UPROBE		3	/* breakpointed or singlestepping */
-#define TIF_SYSCALL_TRACE	4	/* syscall trace active */
-#define TIF_SYSCALL_AUDIT	5	/* syscall auditing active */
-#define TIF_SYSCALL_TRACEPOINT	6	/* syscall tracepoint instrumentation */
-#define TIF_SECCOMP		7	/* seccomp syscall filtering active */
-#define TIF_NOTIFY_SIGNAL	8	/* signal notifications exist */
+#define TIF_NOTIFY_SIGNAL	4	/* signal notifications exist */
 
 #define TIF_USING_IWMMXT	17
 #define TIF_MEMDIE		18	/* is terminating due to OOM killer */
-#define TIF_RESTORE_SIGMASK	20
+#define TIF_RESTORE_SIGMASK	19
+#define TIF_SYSCALL_TRACE	20	/* syscall trace active */
+#define TIF_SYSCALL_AUDIT	21	/* syscall auditing active */
+#define TIF_SYSCALL_TRACEPOINT	22	/* syscall tracepoint instrumentation */
+#define TIF_SECCOMP		23	/* seccomp syscall filtering active */
+
 
 #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 002/159] btrfs: replace strncpy() with strscpy()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 001/159] ARM: renumber bits related to _TIF_WORK_MASK Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 003/159] cifs: fix interface count calculation during refresh Greg Kroah-Hartman
                   ` (171 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Artem Chernyshev, David Sterba, Sasha Levin

[ Upstream commit 63d5429f68a3d4c4aa27e65a05196c17f86c41d6 ]

Using strncpy() on NUL-terminated strings are deprecated.  To avoid
possible forming of non-terminated string strscpy() should be used.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

CC: stable@vger.kernel.org # 4.9+
Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/btrfs/ioctl.c      | 9 +++------
 fs/btrfs/rcu-string.h | 6 +++++-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 5ba2e810dc6e..fd1902573cde 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3750,13 +3750,10 @@ static long btrfs_ioctl_dev_info(struct btrfs_fs_info *fs_info,
 	di_args->bytes_used = btrfs_device_get_bytes_used(dev);
 	di_args->total_bytes = btrfs_device_get_total_bytes(dev);
 	memcpy(di_args->uuid, dev->uuid, sizeof(di_args->uuid));
-	if (dev->name) {
-		strncpy(di_args->path, rcu_str_deref(dev->name),
-				sizeof(di_args->path) - 1);
-		di_args->path[sizeof(di_args->path) - 1] = 0;
-	} else {
+	if (dev->name)
+		strscpy(di_args->path, rcu_str_deref(dev->name), sizeof(di_args->path));
+	else
 		di_args->path[0] = '\0';
-	}
 
 out:
 	rcu_read_unlock();
diff --git a/fs/btrfs/rcu-string.h b/fs/btrfs/rcu-string.h
index 5c1a617eb25d..5c2b66d155ef 100644
--- a/fs/btrfs/rcu-string.h
+++ b/fs/btrfs/rcu-string.h
@@ -18,7 +18,11 @@ static inline struct rcu_string *rcu_string_strdup(const char *src, gfp_t mask)
 					 (len * sizeof(char)), mask);
 	if (!ret)
 		return ret;
-	strncpy(ret->str, src, len);
+	/* Warn if the source got unexpectedly truncated. */
+	if (WARN_ON(strscpy(ret->str, src, len) < 0)) {
+		kfree(ret);
+		return NULL;
+	}
 	return ret;
 }
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 003/159] cifs: fix interface count calculation during refresh
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 001/159] ARM: renumber bits related to _TIF_WORK_MASK Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 002/159] btrfs: replace strncpy() with strscpy() Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 004/159] cifs: refcount only the selected iface during interface update Greg Kroah-Hartman
                   ` (170 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shyam Prasad N,
	Paulo Alcantara (SUSE),
	Steve French

From: Shyam Prasad N <sprasad@microsoft.com>

commit cc7d79d4fad6a4eab3f88c4bb237de72be4478f1 upstream.

The last fix to iface_count did fix the overcounting issue.
However, during each refresh, we could end up undercounting
the iface_count, if a match was found.

Fixing this by doing increments and decrements instead of
setting it to 0 before each parsing of server interfaces.

Fixes: 096bbeec7bd6 ("smb3: interface count displayed incorrectly")
Cc: stable@vger.kernel.org # 6.1
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/cifs/smb2ops.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -530,7 +530,6 @@ parse_server_interfaces(struct network_i
 	p = buf;
 
 	spin_lock(&ses->iface_lock);
-	ses->iface_count = 0;
 	/*
 	 * Go through iface_list and do kref_put to remove
 	 * any unused ifaces. ifaces in use will be removed
@@ -540,6 +539,7 @@ parse_server_interfaces(struct network_i
 				 iface_head) {
 		iface->is_active = 0;
 		kref_put(&iface->refcount, release_iface);
+		ses->iface_count--;
 	}
 	spin_unlock(&ses->iface_lock);
 
@@ -618,6 +618,7 @@ parse_server_interfaces(struct network_i
 				/* just get a ref so that it doesn't get picked/freed */
 				iface->is_active = 1;
 				kref_get(&iface->refcount);
+				ses->iface_count++;
 				spin_unlock(&ses->iface_lock);
 				goto next_iface;
 			} else if (ret < 0) {



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 004/159] cifs: refcount only the selected iface during interface update
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 003/159] cifs: fix interface count calculation during refresh Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 005/159] usb: dwc3: gadget: Ignore End Transfer delay on teardown Greg Kroah-Hartman
                   ` (169 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shyam Prasad N,
	Paulo Alcantara (SUSE),
	Steve French

From: Shyam Prasad N <sprasad@microsoft.com>

commit 7246210ecdd0cda97fa3e3bb15c32c6c2d9a23b5 upstream.

When the server interface for a channel is not active anymore,
we have the logic to select an alternative interface. However
this was not breaking out of the loop as soon as a new alternative
was found. As a result, some interfaces may get refcounted unintentionally.

There was also a bug in checking if we found an alternate iface.
Fixed that too.

Fixes: b54034a73baf ("cifs: during reconnect, update interface if necessary")
Cc: stable@vger.kernel.org # 5.19+
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/cifs/sess.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -292,9 +292,10 @@ cifs_chan_update_iface(struct cifs_ses *
 			continue;
 		}
 		kref_get(&iface->refcount);
+		break;
 	}
 
-	if (!list_entry_is_head(iface, &ses->iface_list, iface_head)) {
+	if (list_entry_is_head(iface, &ses->iface_list, iface_head)) {
 		rc = 1;
 		iface = NULL;
 		cifs_dbg(FYI, "unable to find a suitable iface\n");



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 005/159] usb: dwc3: gadget: Ignore End Transfer delay on teardown
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 004/159] cifs: refcount only the selected iface during interface update Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 006/159] btrfs: fix off-by-one in delalloc search during lseek Greg Kroah-Hartman
                   ` (168 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Thinh Nguyen

From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>

commit c4e3ef5685393c5051b52cf1e94b8891d49793ab upstream.

If we delay sending End Transfer for Setup TRB to be prepared, we need
to check if the End Transfer was in preparation for a driver
teardown/soft-disconnect. In those cases, just send the End Transfer
command without delay.

In the case of soft-disconnect, there's a very small chance the command
may not go through immediately. But should it happen, the Setup TRB will
be prepared during the polling of the controller halted state, allowing
the command to go through then.

In the case of disabling endpoint due to reconfiguration (e.g.
set_interface(alt-setting) or usb reset), then it's driven by the host.
Typically the host wouldn't immediately cancel the control request and
send another control transfer to trigger the End Transfer command
timeout.

Fixes: 4db0fbb60136 ("usb: dwc3: gadget: Don't delay End Transfer on delayed_status")
Cc: stable@vger.kernel.org
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/f1617a323e190b9cc408fb8b65456e32b5814113.1670546756.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/usb/dwc3/gadget.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1717,6 +1717,7 @@ static int __dwc3_stop_active_transfer(s
 	else if (!ret)
 		dep->flags |= DWC3_EP_END_TRANSFER_PENDING;
 
+	dep->flags &= ~DWC3_EP_DELAY_STOP;
 	return ret;
 }
 
@@ -3722,8 +3723,10 @@ void dwc3_stop_active_transfer(struct dw
 	if (dep->number <= 1 && dwc->ep0state != EP0_DATA_PHASE)
 		return;
 
+	if (interrupt && (dep->flags & DWC3_EP_DELAY_STOP))
+		return;
+
 	if (!(dep->flags & DWC3_EP_TRANSFER_STARTED) ||
-	    (dep->flags & DWC3_EP_DELAY_STOP) ||
 	    (dep->flags & DWC3_EP_END_TRANSFER_PENDING))
 		return;
 



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 006/159] btrfs: fix off-by-one in delalloc search during lseek
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 005/159] usb: dwc3: gadget: Ignore End Transfer delay on teardown Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 007/159] btrfs: fix compat_ro checks against remount Greg Kroah-Hartman
                   ` (167 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Joan Bruguera Micó,
	Filipe Manana, David Sterba

From: Filipe Manana <fdmanana@suse.com>

commit 2f2e84ca60660402bd81d0859703567c59556e6a upstream.

During lseek, when searching for delalloc in a range that represents a
hole and that range has a length of 1 byte, we end up not doing the actual
delalloc search in the inode's io tree, resulting in not correctly
reporting the offset with data or a hole. This actually only happens when
the start offset is 0 because with any other start offset we round it down
by sector size.

Reproducer:

  $ mkfs.btrfs -f /dev/sdc
  $ mount /dev/sdc /mnt/sdc

  $ xfs_io -f -c "pwrite -q 0 1" /mnt/sdc/foo

  $ xfs_io -c "seek -d 0" /mnt/sdc/foo
  Whence   Result
  DATA	   EOF

It should have reported an offset of 0 instead of EOF.

Fix this by updating btrfs_find_delalloc_in_range() and count_range_bits()
to deal with inclusive ranges properly. These functions are already
supposed to work with inclusive end offsets, they just got it wrong in a
couple places due to off-by-one mistakes.

A test case for fstests will be added later.

Reported-by: Joan Bruguera Micó <joanbrugueram@gmail.com>
Link: https://lore.kernel.org/linux-btrfs/20221223020509.457113-1-joanbrugueram@gmail.com/
Fixes: b6e833567ea1 ("btrfs: make hole and data seeking a lot more efficient")
CC: stable@vger.kernel.org # 6.1
Tested-by: Joan Bruguera Micó <joanbrugueram@gmail.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/btrfs/extent-io-tree.c |    2 +-
 fs/btrfs/file.c           |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- a/fs/btrfs/extent-io-tree.c
+++ b/fs/btrfs/extent-io-tree.c
@@ -1507,7 +1507,7 @@ u64 count_range_bits(struct extent_io_tr
 	u64 last = 0;
 	int found = 0;
 
-	if (WARN_ON(search_end <= cur_start))
+	if (WARN_ON(search_end < cur_start))
 		return 0;
 
 	spin_lock(&tree->lock);
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -3671,7 +3671,7 @@ bool btrfs_find_delalloc_in_range(struct
 	u64 prev_delalloc_end = 0;
 	bool ret = false;
 
-	while (cur_offset < end) {
+	while (cur_offset <= end) {
 		u64 delalloc_start;
 		u64 delalloc_end;
 		bool delalloc;



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 007/159] btrfs: fix compat_ro checks against remount
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 006/159] btrfs: fix off-by-one in delalloc search during lseek Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 008/159] perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor Greg Kroah-Hartman
                   ` (166 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Chung-Chiang Cheng, Anand Jain,
	Qu Wenruo, David Sterba

From: Qu Wenruo <wqu@suse.com>

commit 2ba48b20049b5a76f34a85f853c9496d1b10533a upstream.

[BUG]
Even with commit 81d5d61454c3 ("btrfs: enhance unsupported compat RO
flags handling"), btrfs can still mount a fs with unsupported compat_ro
flags read-only, then remount it RW:

  # btrfs ins dump-super /dev/loop0 | grep compat_ro_flags -A 3
  compat_ro_flags		0x403
			( FREE_SPACE_TREE |
			  FREE_SPACE_TREE_VALID |
			  unknown flag: 0x400 )

  # mount /dev/loop0 /mnt/btrfs
  mount: /mnt/btrfs: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
         dmesg(1) may have more information after failed mount system call.
  ^^^ RW mount failed as expected ^^^

  # dmesg -t | tail -n5
  loop0: detected capacity change from 0 to 1048576
  BTRFS: device fsid cb5b82f5-0fdd-4d81-9b4b-78533c324afa devid 1 transid 7 /dev/loop0 scanned by mount (1146)
  BTRFS info (device loop0): using crc32c (crc32c-intel) checksum algorithm
  BTRFS info (device loop0): using free space tree
  BTRFS error (device loop0): cannot mount read-write because of unknown compat_ro features (0x403)
  BTRFS error (device loop0): open_ctree failed

  # mount /dev/loop0 -o ro /mnt/btrfs
  # mount -o remount,rw /mnt/btrfs
  ^^^ RW remount succeeded unexpectedly ^^^

[CAUSE]
Currently we use btrfs_check_features() to check compat_ro flags against
our current mount flags.

That function get reused between open_ctree() and btrfs_remount().

But for btrfs_remount(), the super block we passed in still has the old
mount flags, thus btrfs_check_features() still believes we're mounting
read-only.

[FIX]
Replace the existing @sb argument with @is_rw_mount.

As originally we only use @sb to determine if the mount is RW.

Now it's callers' responsibility to determine if the mount is RW, and
since there are only two callers, the check is pretty simple:

- caller in open_ctree()
  Just pass !sb_rdonly().

- caller in btrfs_remount()
  Pass !(*flags & SB_RDONLY), as our check should be against the new
  flags.

Now we can correctly reject the RW remount:

  # mount /dev/loop0 -o ro /mnt/btrfs
  # mount -o remount,rw /mnt/btrfs
  mount: /mnt/btrfs: mount point not mounted or bad option.
         dmesg(1) may have more information after failed mount system call.
  # dmesg -t | tail -n 1
  BTRFS error (device loop0: state M): cannot mount read-write because of unknown compat_ro features (0x403)

Reported-by: Chung-Chiang Cheng <shepjeng@gmail.com>
Fixes: 81d5d61454c3 ("btrfs: enhance unsupported compat RO flags handling")
CC: stable@vger.kernel.org # 5.15+
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/btrfs/disk-io.c |    8 +++++---
 fs/btrfs/disk-io.h |    2 +-
 fs/btrfs/super.c   |    2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)

--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3296,6 +3296,8 @@ out:
 /*
  * Do various sanity and dependency checks of different features.
  *
+ * @is_rw_mount:	If the mount is read-write.
+ *
  * This is the place for less strict checks (like for subpage or artificial
  * feature dependencies).
  *
@@ -3306,7 +3308,7 @@ out:
  * (space cache related) can modify on-disk format like free space tree and
  * screw up certain feature dependencies.
  */
-int btrfs_check_features(struct btrfs_fs_info *fs_info, struct super_block *sb)
+int btrfs_check_features(struct btrfs_fs_info *fs_info, bool is_rw_mount)
 {
 	struct btrfs_super_block *disk_super = fs_info->super_copy;
 	u64 incompat = btrfs_super_incompat_flags(disk_super);
@@ -3345,7 +3347,7 @@ int btrfs_check_features(struct btrfs_fs
 	if (btrfs_super_nodesize(disk_super) > PAGE_SIZE)
 		incompat |= BTRFS_FEATURE_INCOMPAT_BIG_METADATA;
 
-	if (compat_ro_unsupp && !sb_rdonly(sb)) {
+	if (compat_ro_unsupp && is_rw_mount) {
 		btrfs_err(fs_info,
 	"cannot mount read-write because of unknown compat_ro features (0x%llx)",
 		       compat_ro);
@@ -3548,7 +3550,7 @@ int __cold open_ctree(struct super_block
 		goto fail_alloc;
 	}
 
-	ret = btrfs_check_features(fs_info, sb);
+	ret = btrfs_check_features(fs_info, !sb_rdonly(sb));
 	if (ret < 0) {
 		err = ret;
 		goto fail_alloc;
--- a/fs/btrfs/disk-io.h
+++ b/fs/btrfs/disk-io.h
@@ -50,7 +50,7 @@ int __cold open_ctree(struct super_block
 void __cold close_ctree(struct btrfs_fs_info *fs_info);
 int btrfs_validate_super(struct btrfs_fs_info *fs_info,
 			 struct btrfs_super_block *sb, int mirror_num);
-int btrfs_check_features(struct btrfs_fs_info *fs_info, struct super_block *sb);
+int btrfs_check_features(struct btrfs_fs_info *fs_info, bool is_rw_mount);
 int write_all_supers(struct btrfs_fs_info *fs_info, int max_mirrors);
 struct btrfs_super_block *btrfs_read_dev_super(struct block_device *bdev);
 struct btrfs_super_block *btrfs_read_dev_one_super(struct block_device *bdev,
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -2014,7 +2014,7 @@ static int btrfs_remount(struct super_bl
 	if (ret)
 		goto restore;
 
-	ret = btrfs_check_features(fs_info, sb);
+	ret = btrfs_check_features(fs_info, !(*flags & SB_RDONLY));
 	if (ret < 0)
 		goto restore;
 



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 008/159] perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (6 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 007/159] btrfs: fix compat_ro checks against remount Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 009/159] perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data Greg Kroah-Hartman
                   ` (165 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Masami Hiramatsu, Namhyung Kim,
	Alexander Shishkin, Ingo Molnar, Jiri Olsa, Mark Rutland,
	Peter Zijlstra, Steven Rostedt (VMware),
	Arnaldo Carvalho de Melo, Sasha Levin

From: Masami Hiramatsu (Google) <mhiramat@kernel.org>

[ Upstream commit f828929ab7f0dc3353e4a617f94f297fa8f3dec3 ]

Use dwarf_attr_integrate() instead of dwarf_attr() for generic attribute
acccessor functions, so that it can find the specified attribute from
abstact origin DIE etc.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Link: https://lore.kernel.org/r/166731051988.2100653.13595339994343449770.stgit@devnote3
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Stable-dep-of: a9dfc46c67b5 ("perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/dwarf-aux.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c
index 609ca1671501..a07efbadb775 100644
--- a/tools/perf/util/dwarf-aux.c
+++ b/tools/perf/util/dwarf-aux.c
@@ -308,7 +308,7 @@ static int die_get_attr_udata(Dwarf_Die *tp_die, unsigned int attr_name,
 {
 	Dwarf_Attribute attr;
 
-	if (dwarf_attr(tp_die, attr_name, &attr) == NULL ||
+	if (dwarf_attr_integrate(tp_die, attr_name, &attr) == NULL ||
 	    dwarf_formudata(&attr, result) != 0)
 		return -ENOENT;
 
@@ -321,7 +321,7 @@ static int die_get_attr_sdata(Dwarf_Die *tp_die, unsigned int attr_name,
 {
 	Dwarf_Attribute attr;
 
-	if (dwarf_attr(tp_die, attr_name, &attr) == NULL ||
+	if (dwarf_attr_integrate(tp_die, attr_name, &attr) == NULL ||
 	    dwarf_formsdata(&attr, result) != 0)
 		return -ENOENT;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 009/159] perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (7 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 008/159] perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 010/159] phy: qcom-qmp-combo: fix broken power on Greg Kroah-Hartman
                   ` (164 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Masami Hiramatsu, Namhyung Kim,
	Alexander Shishkin, Ingo Molnar, Jiri Olsa, Mark Rutland,
	Masami Hiramatsu, Peter Zijlstra, Steven Rostedt (VMware),
	Arnaldo Carvalho de Melo, Sasha Levin

From: Masami Hiramatsu (Google) <mhiramat@kernel.org>

[ Upstream commit a9dfc46c67b52ad43b8e335e28f4cf8002c67793 ]

DWARF version 5 standard Sec 2.14 says that

  Any debugging information entry representing the declaration of an object,
  module, subprogram or type may have DW_AT_decl_file, DW_AT_decl_line and
  DW_AT_decl_column attributes, each of whose value is an unsigned integer
  constant.

So it should be an unsigned integer data. Also, even though the standard
doesn't clearly say the DW_AT_call_file is signed or unsigned, the
elfutils (eu-readelf) interprets it as unsigned integer data and it is
natural to handle it as unsigned integer data as same as DW_AT_decl_file.
This changes the DW_AT_call_file as unsigned integer data too.

Fixes: 3f4460a28fb2f73d ("perf probe: Filter out redundant inline-instances")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: stable@vger.kernel.org
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Link: https://lore.kernel.org/r/166761727445.480106.3738447577082071942.stgit@devnote3
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/dwarf-aux.c | 21 ++++-----------------
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c
index a07efbadb775..623527edeac1 100644
--- a/tools/perf/util/dwarf-aux.c
+++ b/tools/perf/util/dwarf-aux.c
@@ -315,19 +315,6 @@ static int die_get_attr_udata(Dwarf_Die *tp_die, unsigned int attr_name,
 	return 0;
 }
 
-/* Get attribute and translate it as a sdata */
-static int die_get_attr_sdata(Dwarf_Die *tp_die, unsigned int attr_name,
-			      Dwarf_Sword *result)
-{
-	Dwarf_Attribute attr;
-
-	if (dwarf_attr_integrate(tp_die, attr_name, &attr) == NULL ||
-	    dwarf_formsdata(&attr, result) != 0)
-		return -ENOENT;
-
-	return 0;
-}
-
 /**
  * die_is_signed_type - Check whether a type DIE is signed or not
  * @tp_die: a DIE of a type
@@ -467,9 +454,9 @@ int die_get_data_member_location(Dwarf_Die *mb_die, Dwarf_Word *offs)
 /* Get the call file index number in CU DIE */
 static int die_get_call_fileno(Dwarf_Die *in_die)
 {
-	Dwarf_Sword idx;
+	Dwarf_Word idx;
 
-	if (die_get_attr_sdata(in_die, DW_AT_call_file, &idx) == 0)
+	if (die_get_attr_udata(in_die, DW_AT_call_file, &idx) == 0)
 		return (int)idx;
 	else
 		return -ENOENT;
@@ -478,9 +465,9 @@ static int die_get_call_fileno(Dwarf_Die *in_die)
 /* Get the declared file index number in CU DIE */
 static int die_get_decl_fileno(Dwarf_Die *pdie)
 {
-	Dwarf_Sword idx;
+	Dwarf_Word idx;
 
-	if (die_get_attr_sdata(pdie, DW_AT_decl_file, &idx) == 0)
+	if (die_get_attr_udata(pdie, DW_AT_decl_file, &idx) == 0)
 		return (int)idx;
 	else
 		return -ENOENT;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 010/159] phy: qcom-qmp-combo: fix broken power on
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (8 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 009/159] perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 011/159] btrfs: fix an error handling path in btrfs_defrag_leaves() Greg Kroah-Hartman
                   ` (163 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dmitry Baryshkov, Johan Hovold,
	Vinod Koul, Sasha Levin

From: Johan Hovold <johan+linaro@kernel.org>

[ Upstream commit 7a7d86d14d073dfa3429c550667a8e78b99edbd4 ]

The PHY is powered on during phy-init by setting the SW_PWRDN bit in the
COM_POWER_DOWN_CTRL register and then setting the same bit in the in the
PCS_POWER_DOWN_CONTROL register that belongs to the USB part of the
PHY.

Currently, whether power on succeeds depends on probe order and having
the USB part of the PHY be initialised first. In case the DP part of the
PHY is instead initialised first, the intended power on of the USB block
results in a corrupted DP_PHY register (e.g. DP_PHY_AUX_CFG8).

Add a pointer to the USB part of the PHY to the driver data and use that
to power on the PHY also if the DP part of the PHY is initialised first.

Fixes: 52e013d0bffa ("phy: qcom-qmp: Add support for DP in USB3+DP combo phy")
Cc: stable@vger.kernel.org	# 5.10
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20221114081346.5116-5-johan+linaro@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
index 91f8ee79000d..adcda7762acf 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
@@ -955,6 +955,7 @@ struct qcom_qmp {
 	struct regulator_bulk_data *vregs;
 
 	struct qmp_phy **phys;
+	struct qmp_phy *usb_phy;
 
 	struct mutex phy_mutex;
 	int init_count;
@@ -1978,7 +1979,7 @@ static int qmp_combo_com_init(struct qmp_phy *qphy)
 {
 	struct qcom_qmp *qmp = qphy->qmp;
 	const struct qmp_phy_cfg *cfg = qphy->cfg;
-	void __iomem *pcs = qphy->pcs;
+	struct qmp_phy *usb_phy = qmp->usb_phy;
 	void __iomem *dp_com = qmp->dp_com;
 	int ret;
 
@@ -2031,13 +2032,13 @@ static int qmp_combo_com_init(struct qmp_phy *qphy)
 	qphy_clrbits(dp_com, QPHY_V3_DP_COM_SWI_CTRL, 0x03);
 	qphy_clrbits(dp_com, QPHY_V3_DP_COM_SW_RESET, SW_RESET);
 
-	if (cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL])
-		qphy_setbits(pcs,
-				cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL],
-				cfg->pwrdn_ctrl);
+	if (usb_phy->cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL])
+		qphy_setbits(usb_phy->pcs,
+				usb_phy->cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL],
+				usb_phy->cfg->pwrdn_ctrl);
 	else
-		qphy_setbits(pcs, QPHY_V2_PCS_POWER_DOWN_CONTROL,
-				cfg->pwrdn_ctrl);
+		qphy_setbits(usb_phy->pcs, QPHY_V2_PCS_POWER_DOWN_CONTROL,
+				usb_phy->cfg->pwrdn_ctrl);
 
 	mutex_unlock(&qmp->phy_mutex);
 
@@ -2925,6 +2926,8 @@ static int qmp_combo_probe(struct platform_device *pdev)
 				goto err_node_put;
 			}
 
+			qmp->usb_phy = qmp->phys[id];
+
 			/*
 			 * Register the pipe clock provided by phy.
 			 * See function description to see details of this pipe clock.
@@ -2940,6 +2943,9 @@ static int qmp_combo_probe(struct platform_device *pdev)
 		id++;
 	}
 
+	if (!qmp->usb_phy)
+		return -EINVAL;
+
 	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
 
 	return PTR_ERR_OR_ZERO(phy_provider);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 011/159] btrfs: fix an error handling path in btrfs_defrag_leaves()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (9 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 010/159] phy: qcom-qmp-combo: fix broken power on Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 012/159] SUNRPC: ensure the matching upcall is in-flight upon downcall Greg Kroah-Hartman
                   ` (162 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christophe JAILLET, David Sterba,
	Sasha Levin

[ Upstream commit db0a4a7b8e95f9312a59a67cbd5bc589f090e13d ]

All error handling paths end to 'out', except this memory allocation
failure.

This is spurious. So branch to the error handling path also in this case.
It will add a call to:

	memset(&root->defrag_progress, 0,
	       sizeof(root->defrag_progress));

Fixes: 6702ed490ca0 ("Btrfs: Add run time btree defrag, and an ioctl to force btree defrag")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/btrfs/tree-defrag.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/tree-defrag.c b/fs/btrfs/tree-defrag.c
index b6cf39f4e7e4..072ab9a1374b 100644
--- a/fs/btrfs/tree-defrag.c
+++ b/fs/btrfs/tree-defrag.c
@@ -31,8 +31,10 @@ int btrfs_defrag_leaves(struct btrfs_trans_handle *trans,
 		goto out;
 
 	path = btrfs_alloc_path();
-	if (!path)
-		return -ENOMEM;
+	if (!path) {
+		ret = -ENOMEM;
+		goto out;
+	}
 
 	level = btrfs_header_level(root->node);
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 012/159] SUNRPC: ensure the matching upcall is in-flight upon downcall
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (10 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 011/159] btrfs: fix an error handling path in btrfs_defrag_leaves() Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 013/159] wifi: ath9k: use proper statements in conditionals Greg Kroah-Hartman
                   ` (161 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, minoura makoto, Hiroshi Shimamoto,
	Trond Myklebust, Trond Myklebust, Sasha Levin

From: minoura makoto <minoura@valinux.co.jp>

[ Upstream commit b18cba09e374637a0a3759d856a6bca94c133952 ]

Commit 9130b8dbc6ac ("SUNRPC: allow for upcalls for the same uid
but different gss service") introduced `auth` argument to
__gss_find_upcall(), but in gss_pipe_downcall() it was left as NULL
since it (and auth->service) was not (yet) determined.

When multiple upcalls with the same uid and different service are
ongoing, it could happen that __gss_find_upcall(), which returns the
first match found in the pipe->in_downcall list, could not find the
correct gss_msg corresponding to the downcall we are looking for.
Moreover, it might return a msg which is not sent to rpc.gssd yet.

We could see mount.nfs process hung in D state with multiple mount.nfs
are executed in parallel.  The call trace below is of CentOS 7.9
kernel-3.10.0-1160.24.1.el7.x86_64 but we observed the same hang w/
elrepo kernel-ml-6.0.7-1.el7.

PID: 71258  TASK: ffff91ebd4be0000  CPU: 36  COMMAND: "mount.nfs"
 #0 [ffff9203ca3234f8] __schedule at ffffffffa3b8899f
 #1 [ffff9203ca323580] schedule at ffffffffa3b88eb9
 #2 [ffff9203ca323590] gss_cred_init at ffffffffc0355818 [auth_rpcgss]
 #3 [ffff9203ca323658] rpcauth_lookup_credcache at ffffffffc0421ebc
[sunrpc]
 #4 [ffff9203ca3236d8] gss_lookup_cred at ffffffffc0353633 [auth_rpcgss]
 #5 [ffff9203ca3236e8] rpcauth_lookupcred at ffffffffc0421581 [sunrpc]
 #6 [ffff9203ca323740] rpcauth_refreshcred at ffffffffc04223d3 [sunrpc]
 #7 [ffff9203ca3237a0] call_refresh at ffffffffc04103dc [sunrpc]
 #8 [ffff9203ca3237b8] __rpc_execute at ffffffffc041e1c9 [sunrpc]
 #9 [ffff9203ca323820] rpc_execute at ffffffffc0420a48 [sunrpc]

The scenario is like this. Let's say there are two upcalls for
services A and B, A -> B in pipe->in_downcall, B -> A in pipe->pipe.

When rpc.gssd reads pipe to get the upcall msg corresponding to
service B from pipe->pipe and then writes the response, in
gss_pipe_downcall the msg corresponding to service A will be picked
because only uid is used to find the msg and it is before the one for
B in pipe->in_downcall.  And the process waiting for the msg
corresponding to service A will be woken up.

Actual scheduing of that process might be after rpc.gssd processes the
next msg.  In rpc_pipe_generic_upcall it clears msg->errno (for A).
The process is scheduled to see gss_msg->ctx == NULL and
gss_msg->msg.errno == 0, therefore it cannot break the loop in
gss_create_upcall and is never woken up after that.

This patch adds a simple check to ensure that a msg which is not
sent to rpc.gssd yet is not chosen as the matching upcall upon
receiving a downcall.

Signed-off-by: minoura makoto <minoura@valinux.co.jp>
Signed-off-by: Hiroshi Shimamoto <h-shimamoto@nec.com>
Tested-by: Hiroshi Shimamoto <h-shimamoto@nec.com>
Cc: Trond Myklebust <trondmy@hammerspace.com>
Fixes: 9130b8dbc6ac ("SUNRPC: allow for upcalls for same uid but different gss service")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/sunrpc/rpc_pipe_fs.h |  5 +++++
 net/sunrpc/auth_gss/auth_gss.c     | 19 +++++++++++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h
index cd188a527d16..3b35b6f6533a 100644
--- a/include/linux/sunrpc/rpc_pipe_fs.h
+++ b/include/linux/sunrpc/rpc_pipe_fs.h
@@ -92,6 +92,11 @@ extern ssize_t rpc_pipe_generic_upcall(struct file *, struct rpc_pipe_msg *,
 				       char __user *, size_t);
 extern int rpc_queue_upcall(struct rpc_pipe *, struct rpc_pipe_msg *);
 
+/* returns true if the msg is in-flight, i.e., already eaten by the peer */
+static inline bool rpc_msg_is_inflight(const struct rpc_pipe_msg *msg) {
+	return (msg->copied != 0 && list_empty(&msg->list));
+}
+
 struct rpc_clnt;
 extern struct dentry *rpc_create_client_dir(struct dentry *, const char *, struct rpc_clnt *);
 extern int rpc_remove_client_dir(struct rpc_clnt *);
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
index 7bb247c51e2f..2d7b1e03110a 100644
--- a/net/sunrpc/auth_gss/auth_gss.c
+++ b/net/sunrpc/auth_gss/auth_gss.c
@@ -302,7 +302,7 @@ __gss_find_upcall(struct rpc_pipe *pipe, kuid_t uid, const struct gss_auth *auth
 	list_for_each_entry(pos, &pipe->in_downcall, list) {
 		if (!uid_eq(pos->uid, uid))
 			continue;
-		if (auth && pos->auth->service != auth->service)
+		if (pos->auth->service != auth->service)
 			continue;
 		refcount_inc(&pos->count);
 		return pos;
@@ -686,6 +686,21 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
 	return err;
 }
 
+static struct gss_upcall_msg *
+gss_find_downcall(struct rpc_pipe *pipe, kuid_t uid)
+{
+	struct gss_upcall_msg *pos;
+	list_for_each_entry(pos, &pipe->in_downcall, list) {
+		if (!uid_eq(pos->uid, uid))
+			continue;
+		if (!rpc_msg_is_inflight(&pos->msg))
+			continue;
+		refcount_inc(&pos->count);
+		return pos;
+	}
+	return NULL;
+}
+
 #define MSG_BUF_MAXSIZE 1024
 
 static ssize_t
@@ -732,7 +747,7 @@ gss_pipe_downcall(struct file *filp, const char __user *src, size_t mlen)
 	err = -ENOENT;
 	/* Find a matching upcall */
 	spin_lock(&pipe->lock);
-	gss_msg = __gss_find_upcall(pipe, uid, NULL);
+	gss_msg = gss_find_downcall(pipe, uid);
 	if (gss_msg == NULL) {
 		spin_unlock(&pipe->lock);
 		goto err_put_ctx;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 013/159] wifi: ath9k: use proper statements in conditionals
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (11 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 012/159] SUNRPC: ensure the matching upcall is in-flight upon downcall Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 014/159] bpf: pull before calling skb_postpull_rcsum() Greg Kroah-Hartman
                   ` (160 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Arnd Bergmann,
	Toke Høiland-Jørgensen, Kalle Valo, Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit b7dc753fe33a707379e2254317794a4dad6c0fe2 ]

A previous cleanup patch accidentally broke some conditional
expressions by replacing the safe "do {} while (0)" constructs
with empty macros. gcc points this out when extra warnings
are enabled:

drivers/net/wireless/ath/ath9k/hif_usb.c: In function 'ath9k_skb_queue_complete':
drivers/net/wireless/ath/ath9k/hif_usb.c:251:57: error: suggest braces around empty body in an 'else' statement [-Werror=empty-body]
  251 |                         TX_STAT_INC(hif_dev, skb_failed);

Make both sets of macros proper expressions again.

Fixes: d7fc76039b74 ("ath9k: htc: clean up statistics macros")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20221215165553.1950307-1-arnd@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath9k/htc.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
index 30f0765fb9fd..237f4ec2cffd 100644
--- a/drivers/net/wireless/ath/ath9k/htc.h
+++ b/drivers/net/wireless/ath/ath9k/htc.h
@@ -327,9 +327,9 @@ static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb)
 }
 
 #ifdef CONFIG_ATH9K_HTC_DEBUGFS
-#define __STAT_SAFE(hif_dev, expr)	((hif_dev)->htc_handle->drv_priv ? (expr) : 0)
-#define CAB_STAT_INC(priv)		((priv)->debug.tx_stats.cab_queued++)
-#define TX_QSTAT_INC(priv, q)		((priv)->debug.tx_stats.queue_stats[q]++)
+#define __STAT_SAFE(hif_dev, expr)	do { ((hif_dev)->htc_handle->drv_priv ? (expr) : 0); } while (0)
+#define CAB_STAT_INC(priv)		do { ((priv)->debug.tx_stats.cab_queued++); } while (0)
+#define TX_QSTAT_INC(priv, q)		do { ((priv)->debug.tx_stats.queue_stats[q]++); } while (0)
 
 #define TX_STAT_INC(hif_dev, c) \
 		__STAT_SAFE((hif_dev), (hif_dev)->htc_handle->drv_priv->debug.tx_stats.c++)
@@ -378,10 +378,10 @@ void ath9k_htc_get_et_stats(struct ieee80211_hw *hw,
 			    struct ethtool_stats *stats, u64 *data);
 #else
 
-#define TX_STAT_INC(hif_dev, c)
-#define TX_STAT_ADD(hif_dev, c, a)
-#define RX_STAT_INC(hif_dev, c)
-#define RX_STAT_ADD(hif_dev, c, a)
+#define TX_STAT_INC(hif_dev, c)		do { } while (0)
+#define TX_STAT_ADD(hif_dev, c, a)	do { } while (0)
+#define RX_STAT_INC(hif_dev, c)		do { } while (0)
+#define RX_STAT_ADD(hif_dev, c, a)	do { } while (0)
 
 #define CAB_STAT_INC(priv)
 #define TX_QSTAT_INC(priv, c)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 014/159] bpf: pull before calling skb_postpull_rcsum()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (12 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 013/159] wifi: ath9k: use proper statements in conditionals Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 015/159] drm/panfrost: Fix GEM handle creation ref-counting Greg Kroah-Hartman
                   ` (159 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Anand Parthasarathy, Jakub Kicinski,
	Stanislav Fomichev, Martin KaFai Lau, Sasha Levin

From: Jakub Kicinski <kuba@kernel.org>

[ Upstream commit 54c3f1a81421f85e60ae2eaae7be3727a09916ee ]

Anand hit a BUG() when pulling off headers on egress to a SW tunnel.
We get to skb_checksum_help() with an invalid checksum offset
(commit d7ea0d9df2a6 ("net: remove two BUG() from skb_checksum_help()")
converted those BUGs to WARN_ONs()).
He points out oddness in how skb_postpull_rcsum() gets used.
Indeed looks like we should pull before "postpull", otherwise
the CHECKSUM_PARTIAL fixup from skb_postpull_rcsum() will not
be able to do its job:

	if (skb->ip_summed == CHECKSUM_PARTIAL &&
	    skb_checksum_start_offset(skb) < 0)
		skb->ip_summed = CHECKSUM_NONE;

Reported-by: Anand Parthasarathy <anpartha@meta.com>
Fixes: 6578171a7ff0 ("bpf: add bpf_skb_change_proto helper")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Stanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/r/20221220004701.402165-1-kuba@kernel.org
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/core/filter.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/core/filter.c b/net/core/filter.c
index a368edd9057c..0c2666e041d3 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -3184,15 +3184,18 @@ static int bpf_skb_generic_push(struct sk_buff *skb, u32 off, u32 len)
 
 static int bpf_skb_generic_pop(struct sk_buff *skb, u32 off, u32 len)
 {
+	void *old_data;
+
 	/* skb_ensure_writable() is not needed here, as we're
 	 * already working on an uncloned skb.
 	 */
 	if (unlikely(!pskb_may_pull(skb, off + len)))
 		return -ENOMEM;
 
-	skb_postpull_rcsum(skb, skb->data + off, len);
-	memmove(skb->data + len, skb->data, off);
+	old_data = skb->data;
 	__skb_pull(skb, len);
+	skb_postpull_rcsum(skb, old_data + off, len);
+	memmove(skb->data, old_data, off);
 
 	return 0;
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 015/159] drm/panfrost: Fix GEM handle creation ref-counting
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (13 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 014/159] bpf: pull before calling skb_postpull_rcsum() Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 016/159] netfilter: nf_tables: consolidate set description Greg Kroah-Hartman
                   ` (158 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Rob Clark, Steven Price, Rob Clark,
	Sasha Levin

From: Steven Price <steven.price@arm.com>

[ Upstream commit 4217c6ac817451d5116687f3cc6286220dc43d49 ]

panfrost_gem_create_with_handle() previously returned a BO but with the
only reference being from the handle, which user space could in theory
guess and release, causing a use-after-free. Additionally if the call to
panfrost_gem_mapping_get() in panfrost_ioctl_create_bo() failed then
a(nother) reference on the BO was dropped.

The _create_with_handle() is a problematic pattern, so ditch it and
instead create the handle in panfrost_ioctl_create_bo(). If the call to
panfrost_gem_mapping_get() fails then this means that user space has
indeed gone behind our back and freed the handle. In which case just
return an error code.

Reported-by: Rob Clark <robdclark@chromium.org>
Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver")
Signed-off-by: Steven Price <steven.price@arm.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221219140130.410578-1-steven.price@arm.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/panfrost/panfrost_drv.c | 27 ++++++++++++++++---------
 drivers/gpu/drm/panfrost/panfrost_gem.c | 16 +--------------
 drivers/gpu/drm/panfrost/panfrost_gem.h |  5 +----
 3 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 2fa5afe21288..919e6cc04982 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -82,6 +82,7 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data,
 	struct panfrost_gem_object *bo;
 	struct drm_panfrost_create_bo *args = data;
 	struct panfrost_gem_mapping *mapping;
+	int ret;
 
 	if (!args->size || args->pad ||
 	    (args->flags & ~(PANFROST_BO_NOEXEC | PANFROST_BO_HEAP)))
@@ -92,21 +93,29 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data,
 	    !(args->flags & PANFROST_BO_NOEXEC))
 		return -EINVAL;
 
-	bo = panfrost_gem_create_with_handle(file, dev, args->size, args->flags,
-					     &args->handle);
+	bo = panfrost_gem_create(dev, args->size, args->flags);
 	if (IS_ERR(bo))
 		return PTR_ERR(bo);
 
+	ret = drm_gem_handle_create(file, &bo->base.base, &args->handle);
+	if (ret)
+		goto out;
+
 	mapping = panfrost_gem_mapping_get(bo, priv);
-	if (!mapping) {
-		drm_gem_object_put(&bo->base.base);
-		return -EINVAL;
+	if (mapping) {
+		args->offset = mapping->mmnode.start << PAGE_SHIFT;
+		panfrost_gem_mapping_put(mapping);
+	} else {
+		/* This can only happen if the handle from
+		 * drm_gem_handle_create() has already been guessed and freed
+		 * by user space
+		 */
+		ret = -EINVAL;
 	}
 
-	args->offset = mapping->mmnode.start << PAGE_SHIFT;
-	panfrost_gem_mapping_put(mapping);
-
-	return 0;
+out:
+	drm_gem_object_put(&bo->base.base);
+	return ret;
 }
 
 /**
diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
index 293e799e2fe8..3c812fbd126f 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gem.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
@@ -235,12 +235,8 @@ struct drm_gem_object *panfrost_gem_create_object(struct drm_device *dev, size_t
 }
 
 struct panfrost_gem_object *
-panfrost_gem_create_with_handle(struct drm_file *file_priv,
-				struct drm_device *dev, size_t size,
-				u32 flags,
-				uint32_t *handle)
+panfrost_gem_create(struct drm_device *dev, size_t size, u32 flags)
 {
-	int ret;
 	struct drm_gem_shmem_object *shmem;
 	struct panfrost_gem_object *bo;
 
@@ -256,16 +252,6 @@ panfrost_gem_create_with_handle(struct drm_file *file_priv,
 	bo->noexec = !!(flags & PANFROST_BO_NOEXEC);
 	bo->is_heap = !!(flags & PANFROST_BO_HEAP);
 
-	/*
-	 * Allocate an id of idr table where the obj is registered
-	 * and handle has the id what user can see.
-	 */
-	ret = drm_gem_handle_create(file_priv, &shmem->base, handle);
-	/* drop reference from allocate - handle holds it now. */
-	drm_gem_object_put(&shmem->base);
-	if (ret)
-		return ERR_PTR(ret);
-
 	return bo;
 }
 
diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.h b/drivers/gpu/drm/panfrost/panfrost_gem.h
index 8088d5fd8480..ad2877eeeccd 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gem.h
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.h
@@ -69,10 +69,7 @@ panfrost_gem_prime_import_sg_table(struct drm_device *dev,
 				   struct sg_table *sgt);
 
 struct panfrost_gem_object *
-panfrost_gem_create_with_handle(struct drm_file *file_priv,
-				struct drm_device *dev, size_t size,
-				u32 flags,
-				uint32_t *handle);
+panfrost_gem_create(struct drm_device *dev, size_t size, u32 flags);
 
 int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv);
 void panfrost_gem_close(struct drm_gem_object *obj,
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 016/159] netfilter: nf_tables: consolidate set description
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (14 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 015/159] drm/panfrost: Fix GEM handle creation ref-counting Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 017/159] netfilter: nf_tables: add function to create set stateful expressions Greg Kroah-Hartman
                   ` (157 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Pablo Neira Ayuso, Sasha Levin

From: Pablo Neira Ayuso <pablo@netfilter.org>

[ Upstream commit bed4a63ea4ae77cfe5aae004ef87379f0655260a ]

Add the following fields to the set description:

- key type
- data type
- object type
- policy
- gc_int: garbage collection interval)
- timeout: element timeout

This prepares for stricter set type checks on updates in a follow up
patch.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Stable-dep-of: f6594c372afd ("netfilter: nf_tables: perform type checking for existing sets")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/net/netfilter/nf_tables.h | 12 +++++++
 net/netfilter/nf_tables_api.c     | 58 +++++++++++++++----------------
 2 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index cdb7db9b0e25..ddcdde230747 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -311,17 +311,29 @@ struct nft_set_iter {
 /**
  *	struct nft_set_desc - description of set elements
  *
+ *	@ktype: key type
  *	@klen: key length
+ *	@dtype: data type
  *	@dlen: data length
+ *	@objtype: object type
+ *	@flags: flags
  *	@size: number of set elements
+ *	@policy: set policy
+ *	@gc_int: garbage collector interval
  *	@field_len: length of each field in concatenation, bytes
  *	@field_count: number of concatenated fields in element
  *	@expr: set must support for expressions
  */
 struct nft_set_desc {
+	u32			ktype;
 	unsigned int		klen;
+	u32			dtype;
 	unsigned int		dlen;
+	u32			objtype;
 	unsigned int		size;
+	u32			policy;
+	u32			gc_int;
+	u64			timeout;
 	u8			field_len[NFT_REG32_COUNT];
 	u8			field_count;
 	bool			expr;
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 7a09421f19e1..a31f8dc40646 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3732,8 +3732,7 @@ static bool nft_set_ops_candidate(const struct nft_set_type *type, u32 flags)
 static const struct nft_set_ops *
 nft_select_set_ops(const struct nft_ctx *ctx,
 		   const struct nlattr * const nla[],
-		   const struct nft_set_desc *desc,
-		   enum nft_set_policies policy)
+		   const struct nft_set_desc *desc)
 {
 	struct nftables_pernet *nft_net = nft_pernet(ctx->net);
 	const struct nft_set_ops *ops, *bops;
@@ -3762,7 +3761,7 @@ nft_select_set_ops(const struct nft_ctx *ctx,
 		if (!ops->estimate(desc, flags, &est))
 			continue;
 
-		switch (policy) {
+		switch (desc->policy) {
 		case NFT_SET_POL_PERFORMANCE:
 			if (est.lookup < best.lookup)
 				break;
@@ -4344,7 +4343,6 @@ static int nf_tables_set_desc_parse(struct nft_set_desc *desc,
 static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 			    const struct nlattr * const nla[])
 {
-	u32 ktype, dtype, flags, policy, gc_int, objtype;
 	struct netlink_ext_ack *extack = info->extack;
 	u8 genmask = nft_genmask_next(info->net);
 	u8 family = info->nfmsg->nfgen_family;
@@ -4357,10 +4355,10 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 	struct nft_set *set;
 	struct nft_ctx ctx;
 	size_t alloc_size;
-	u64 timeout;
 	char *name;
 	int err, i;
 	u16 udlen;
+	u32 flags;
 	u64 size;
 
 	if (nla[NFTA_SET_TABLE] == NULL ||
@@ -4371,10 +4369,10 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 
 	memset(&desc, 0, sizeof(desc));
 
-	ktype = NFT_DATA_VALUE;
+	desc.ktype = NFT_DATA_VALUE;
 	if (nla[NFTA_SET_KEY_TYPE] != NULL) {
-		ktype = ntohl(nla_get_be32(nla[NFTA_SET_KEY_TYPE]));
-		if ((ktype & NFT_DATA_RESERVED_MASK) == NFT_DATA_RESERVED_MASK)
+		desc.ktype = ntohl(nla_get_be32(nla[NFTA_SET_KEY_TYPE]));
+		if ((desc.ktype & NFT_DATA_RESERVED_MASK) == NFT_DATA_RESERVED_MASK)
 			return -EINVAL;
 	}
 
@@ -4399,17 +4397,17 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 			return -EOPNOTSUPP;
 	}
 
-	dtype = 0;
+	desc.dtype = 0;
 	if (nla[NFTA_SET_DATA_TYPE] != NULL) {
 		if (!(flags & NFT_SET_MAP))
 			return -EINVAL;
 
-		dtype = ntohl(nla_get_be32(nla[NFTA_SET_DATA_TYPE]));
-		if ((dtype & NFT_DATA_RESERVED_MASK) == NFT_DATA_RESERVED_MASK &&
-		    dtype != NFT_DATA_VERDICT)
+		desc.dtype = ntohl(nla_get_be32(nla[NFTA_SET_DATA_TYPE]));
+		if ((desc.dtype & NFT_DATA_RESERVED_MASK) == NFT_DATA_RESERVED_MASK &&
+		    desc.dtype != NFT_DATA_VERDICT)
 			return -EINVAL;
 
-		if (dtype != NFT_DATA_VERDICT) {
+		if (desc.dtype != NFT_DATA_VERDICT) {
 			if (nla[NFTA_SET_DATA_LEN] == NULL)
 				return -EINVAL;
 			desc.dlen = ntohl(nla_get_be32(nla[NFTA_SET_DATA_LEN]));
@@ -4424,34 +4422,34 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 		if (!(flags & NFT_SET_OBJECT))
 			return -EINVAL;
 
-		objtype = ntohl(nla_get_be32(nla[NFTA_SET_OBJ_TYPE]));
-		if (objtype == NFT_OBJECT_UNSPEC ||
-		    objtype > NFT_OBJECT_MAX)
+		desc.objtype = ntohl(nla_get_be32(nla[NFTA_SET_OBJ_TYPE]));
+		if (desc.objtype == NFT_OBJECT_UNSPEC ||
+		    desc.objtype > NFT_OBJECT_MAX)
 			return -EOPNOTSUPP;
 	} else if (flags & NFT_SET_OBJECT)
 		return -EINVAL;
 	else
-		objtype = NFT_OBJECT_UNSPEC;
+		desc.objtype = NFT_OBJECT_UNSPEC;
 
-	timeout = 0;
+	desc.timeout = 0;
 	if (nla[NFTA_SET_TIMEOUT] != NULL) {
 		if (!(flags & NFT_SET_TIMEOUT))
 			return -EINVAL;
 
-		err = nf_msecs_to_jiffies64(nla[NFTA_SET_TIMEOUT], &timeout);
+		err = nf_msecs_to_jiffies64(nla[NFTA_SET_TIMEOUT], &desc.timeout);
 		if (err)
 			return err;
 	}
-	gc_int = 0;
+	desc.gc_int = 0;
 	if (nla[NFTA_SET_GC_INTERVAL] != NULL) {
 		if (!(flags & NFT_SET_TIMEOUT))
 			return -EINVAL;
-		gc_int = ntohl(nla_get_be32(nla[NFTA_SET_GC_INTERVAL]));
+		desc.gc_int = ntohl(nla_get_be32(nla[NFTA_SET_GC_INTERVAL]));
 	}
 
-	policy = NFT_SET_POL_PERFORMANCE;
+	desc.policy = NFT_SET_POL_PERFORMANCE;
 	if (nla[NFTA_SET_POLICY] != NULL)
-		policy = ntohl(nla_get_be32(nla[NFTA_SET_POLICY]));
+		desc.policy = ntohl(nla_get_be32(nla[NFTA_SET_POLICY]));
 
 	if (nla[NFTA_SET_DESC] != NULL) {
 		err = nf_tables_set_desc_parse(&desc, nla[NFTA_SET_DESC]);
@@ -4496,7 +4494,7 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 	if (!(info->nlh->nlmsg_flags & NLM_F_CREATE))
 		return -ENOENT;
 
-	ops = nft_select_set_ops(&ctx, nla, &desc, policy);
+	ops = nft_select_set_ops(&ctx, nla, &desc);
 	if (IS_ERR(ops))
 		return PTR_ERR(ops);
 
@@ -4536,18 +4534,18 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 	set->table = table;
 	write_pnet(&set->net, net);
 	set->ops = ops;
-	set->ktype = ktype;
+	set->ktype = desc.ktype;
 	set->klen = desc.klen;
-	set->dtype = dtype;
-	set->objtype = objtype;
+	set->dtype = desc.dtype;
+	set->objtype = desc.objtype;
 	set->dlen = desc.dlen;
 	set->flags = flags;
 	set->size = desc.size;
-	set->policy = policy;
+	set->policy = desc.policy;
 	set->udlen = udlen;
 	set->udata = udata;
-	set->timeout = timeout;
-	set->gc_int = gc_int;
+	set->timeout = desc.timeout;
+	set->gc_int = desc.gc_int;
 
 	set->field_count = desc.field_count;
 	for (i = 0; i < desc.field_count; i++)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 017/159] netfilter: nf_tables: add function to create set stateful expressions
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (15 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 016/159] netfilter: nf_tables: consolidate set description Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 018/159] netfilter: nf_tables: perform type checking for existing sets Greg Kroah-Hartman
                   ` (156 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Pablo Neira Ayuso, Sasha Levin

From: Pablo Neira Ayuso <pablo@netfilter.org>

[ Upstream commit a8fe4154fa5a1bae590b243ed60f871e5a5e1378 ]

Add a helper function to allocate and initialize the stateful expressions
that are defined in a set.

This patch allows to reuse this code from the set update path, to check
that type of the update matches the existing set in the kernel.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Stable-dep-of: f6594c372afd ("netfilter: nf_tables: perform type checking for existing sets")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/nf_tables_api.c | 106 ++++++++++++++++++++++------------
 1 file changed, 68 insertions(+), 38 deletions(-)

diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index a31f8dc40646..9f35a249c2c3 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -4340,6 +4340,59 @@ static int nf_tables_set_desc_parse(struct nft_set_desc *desc,
 	return err;
 }
 
+static int nft_set_expr_alloc(struct nft_ctx *ctx, struct nft_set *set,
+			      const struct nlattr * const *nla,
+			      struct nft_expr **exprs, int *num_exprs,
+			      u32 flags)
+{
+	struct nft_expr *expr;
+	int err, i;
+
+	if (nla[NFTA_SET_EXPR]) {
+		expr = nft_set_elem_expr_alloc(ctx, set, nla[NFTA_SET_EXPR]);
+		if (IS_ERR(expr)) {
+			err = PTR_ERR(expr);
+			goto err_set_expr_alloc;
+		}
+		exprs[0] = expr;
+		(*num_exprs)++;
+	} else if (nla[NFTA_SET_EXPRESSIONS]) {
+		struct nlattr *tmp;
+		int left;
+
+		if (!(flags & NFT_SET_EXPR)) {
+			err = -EINVAL;
+			goto err_set_expr_alloc;
+		}
+		i = 0;
+		nla_for_each_nested(tmp, nla[NFTA_SET_EXPRESSIONS], left) {
+			if (i == NFT_SET_EXPR_MAX) {
+				err = -E2BIG;
+				goto err_set_expr_alloc;
+			}
+			if (nla_type(tmp) != NFTA_LIST_ELEM) {
+				err = -EINVAL;
+				goto err_set_expr_alloc;
+			}
+			expr = nft_set_elem_expr_alloc(ctx, set, tmp);
+			if (IS_ERR(expr)) {
+				err = PTR_ERR(expr);
+				goto err_set_expr_alloc;
+			}
+			exprs[i++] = expr;
+			(*num_exprs)++;
+		}
+	}
+
+	return 0;
+
+err_set_expr_alloc:
+	for (i = 0; i < *num_exprs; i++)
+		nft_expr_destroy(ctx, exprs[i]);
+
+	return err;
+}
+
 static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 			    const struct nlattr * const nla[])
 {
@@ -4347,7 +4400,6 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 	u8 genmask = nft_genmask_next(info->net);
 	u8 family = info->nfmsg->nfgen_family;
 	const struct nft_set_ops *ops;
-	struct nft_expr *expr = NULL;
 	struct net *net = info->net;
 	struct nft_set_desc desc;
 	struct nft_table *table;
@@ -4355,6 +4407,7 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 	struct nft_set *set;
 	struct nft_ctx ctx;
 	size_t alloc_size;
+	int num_exprs = 0;
 	char *name;
 	int err, i;
 	u16 udlen;
@@ -4481,6 +4534,8 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 			return PTR_ERR(set);
 		}
 	} else {
+		struct nft_expr *exprs[NFT_SET_EXPR_MAX] = {};
+
 		if (info->nlh->nlmsg_flags & NLM_F_EXCL) {
 			NL_SET_BAD_ATTR(extack, nla[NFTA_SET_NAME]);
 			return -EEXIST;
@@ -4488,6 +4543,13 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 		if (info->nlh->nlmsg_flags & NLM_F_REPLACE)
 			return -EOPNOTSUPP;
 
+		err = nft_set_expr_alloc(&ctx, set, nla, exprs, &num_exprs, flags);
+		if (err < 0)
+			return err;
+
+		for (i = 0; i < num_exprs; i++)
+			nft_expr_destroy(&ctx, exprs[i]);
+
 		return 0;
 	}
 
@@ -4555,43 +4617,11 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 	if (err < 0)
 		goto err_set_init;
 
-	if (nla[NFTA_SET_EXPR]) {
-		expr = nft_set_elem_expr_alloc(&ctx, set, nla[NFTA_SET_EXPR]);
-		if (IS_ERR(expr)) {
-			err = PTR_ERR(expr);
-			goto err_set_expr_alloc;
-		}
-		set->exprs[0] = expr;
-		set->num_exprs++;
-	} else if (nla[NFTA_SET_EXPRESSIONS]) {
-		struct nft_expr *expr;
-		struct nlattr *tmp;
-		int left;
-
-		if (!(flags & NFT_SET_EXPR)) {
-			err = -EINVAL;
-			goto err_set_expr_alloc;
-		}
-		i = 0;
-		nla_for_each_nested(tmp, nla[NFTA_SET_EXPRESSIONS], left) {
-			if (i == NFT_SET_EXPR_MAX) {
-				err = -E2BIG;
-				goto err_set_expr_alloc;
-			}
-			if (nla_type(tmp) != NFTA_LIST_ELEM) {
-				err = -EINVAL;
-				goto err_set_expr_alloc;
-			}
-			expr = nft_set_elem_expr_alloc(&ctx, set, tmp);
-			if (IS_ERR(expr)) {
-				err = PTR_ERR(expr);
-				goto err_set_expr_alloc;
-			}
-			set->exprs[i++] = expr;
-			set->num_exprs++;
-		}
-	}
+	err = nft_set_expr_alloc(&ctx, set, nla, set->exprs, &num_exprs, flags);
+	if (err < 0)
+		goto err_set_destroy;
 
+	set->num_exprs = num_exprs;
 	set->handle = nf_tables_alloc_handle(table);
 
 	err = nft_trans_set_add(&ctx, NFT_MSG_NEWSET, set);
@@ -4605,7 +4635,7 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 err_set_expr_alloc:
 	for (i = 0; i < set->num_exprs; i++)
 		nft_expr_destroy(&ctx, set->exprs[i]);
-
+err_set_destroy:
 	ops->destroy(set);
 err_set_init:
 	kfree(set->name);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 018/159] netfilter: nf_tables: perform type checking for existing sets
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (16 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 017/159] netfilter: nf_tables: add function to create set stateful expressions Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 019/159] ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf Greg Kroah-Hartman
                   ` (155 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Florian Westphal, Pablo Neira Ayuso,
	Sasha Levin

From: Pablo Neira Ayuso <pablo@netfilter.org>

[ Upstream commit f6594c372afd5cec8b1e9ee9ea8f8819d59c6fb1 ]

If a ruleset declares a set name that matches an existing set in the
kernel, then validate that this declaration really refers to the same
set, otherwise bail out with EEXIST.

Currently, the kernel reports success when adding a set that already
exists in the kernel. This usually results in EINVAL errors at a later
stage, when the user adds elements to the set, if the set declaration
mismatches the existing set representation in the kernel.

Add a new function to check that the set declaration really refers to
the same existing set in the kernel.

Fixes: 96518518cc41 ("netfilter: add nftables")
Reported-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/nf_tables_api.c | 36 ++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 9f35a249c2c3..6e68cab474c2 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -4393,6 +4393,34 @@ static int nft_set_expr_alloc(struct nft_ctx *ctx, struct nft_set *set,
 	return err;
 }
 
+static bool nft_set_is_same(const struct nft_set *set,
+			    const struct nft_set_desc *desc,
+			    struct nft_expr *exprs[], u32 num_exprs, u32 flags)
+{
+	int i;
+
+	if (set->ktype != desc->ktype ||
+	    set->dtype != desc->dtype ||
+	    set->flags != flags ||
+	    set->klen != desc->klen ||
+	    set->dlen != desc->dlen ||
+	    set->field_count != desc->field_count ||
+	    set->num_exprs != num_exprs)
+		return false;
+
+	for (i = 0; i < desc->field_count; i++) {
+		if (set->field_len[i] != desc->field_len[i])
+			return false;
+	}
+
+	for (i = 0; i < num_exprs; i++) {
+		if (set->exprs[i]->ops != exprs[i]->ops)
+			return false;
+	}
+
+	return true;
+}
+
 static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 			    const struct nlattr * const nla[])
 {
@@ -4547,10 +4575,16 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 		if (err < 0)
 			return err;
 
+		err = 0;
+		if (!nft_set_is_same(set, &desc, exprs, num_exprs, flags)) {
+			NL_SET_BAD_ATTR(extack, nla[NFTA_SET_NAME]);
+			err = -EEXIST;
+		}
+
 		for (i = 0; i < num_exprs; i++)
 			nft_expr_destroy(&ctx, exprs[i]);
 
-		return 0;
+		return err;
 	}
 
 	if (!(info->nlh->nlmsg_flags & NLM_F_CREATE))
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 019/159] ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (17 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 018/159] netfilter: nf_tables: perform type checking for existing sets Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 020/159] net: vrf: determine the dst using the original ifindex for multicast Greg Kroah-Hartman
                   ` (154 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Maciej Fijalkowski, Tony Nguyen,
	Jakub Kicinski, Sasha Levin, Robin Cowley, Chandan Kumar Rout

From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

[ Upstream commit 53fc61be273a1e76dd5e356f91805dce00ff2d2c ]

Previously ice XDP xmit routine was changed in a way that it avoids
xdp_buff->xdp_frame conversion as it is simply not needed for handling
XDP_TX action and what is more it saves us CPU cycles. This routine is
re-used on ZC driver to handle XDP_TX action.

Although for XDP_TX on Rx ZC xdp_buff that comes from xsk_buff_pool is
converted to xdp_frame, xdp_frame itself is not stored inside
ice_tx_buf, we only store raw data pointer. Casting this pointer to
xdp_frame and calling against it xdp_return_frame in
ice_clean_xdp_tx_buf() results in undefined behavior.

To fix this, simply call page_frag_free() on tx_buf->raw_buf.
Later intention is to remove the buff->frame conversion in order to
simplify the codebase and improve XDP_TX performance on ZC.

Fixes: 126cdfe1007a ("ice: xsk: Improve AF_XDP ZC Tx and use batching API")
Reported-and-tested-by: Robin Cowley <robin.cowley@thehutgroup.com>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Reviewed-by: Piotr Raczynski <piotr.raczynski@.intel.com>
Link: https://lore.kernel.org/r/20221220175448.693999-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/ice/ice_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c
index 056c904b83cc..79fa65d1cf20 100644
--- a/drivers/net/ethernet/intel/ice/ice_xsk.c
+++ b/drivers/net/ethernet/intel/ice/ice_xsk.c
@@ -772,7 +772,7 @@ int ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring, int budget)
 static void
 ice_clean_xdp_tx_buf(struct ice_tx_ring *xdp_ring, struct ice_tx_buf *tx_buf)
 {
-	xdp_return_frame((struct xdp_frame *)tx_buf->raw_buf);
+	page_frag_free(tx_buf->raw_buf);
 	xdp_ring->xdp_tx_active--;
 	dma_unmap_single(xdp_ring->dev, dma_unmap_addr(tx_buf, dma),
 			 dma_unmap_len(tx_buf, len), DMA_TO_DEVICE);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 020/159] net: vrf: determine the dst using the original ifindex for multicast
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (18 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 019/159] ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 021/159] vmxnet3: correctly report csum_level for encapsulated packet Greg Kroah-Hartman
                   ` (153 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jianlin Shi, Antoine Tenart,
	David Ahern, Jakub Kicinski, Sasha Levin

From: Antoine Tenart <atenart@kernel.org>

[ Upstream commit f2575c8f404911da83f25b688e12afcf4273e640 ]

Multicast packets received on an interface bound to a VRF are marked as
belonging to the VRF and the skb device is updated to point to the VRF
device itself. This was fine even when a route was associated to a
device as when performing a fib table lookup 'oif' in fib6_table_lookup
(coming from 'skb->dev->ifindex' in ip6_route_input) was set to 0 when
FLOWI_FLAG_SKIP_NH_OIF was set.

With commit 40867d74c374 ("net: Add l3mdev index to flow struct and
avoid oif reset for port devices") this is not longer true and multicast
traffic is not received on the original interface.

Instead of adding back a similar check in fib6_table_lookup determine
the dst using the original ifindex for multicast VRF traffic. To make
things consistent across the function do the above for all strict
packets, which was the logic before commit 6f12fa775530 ("vrf: mark skb
for multicast or link-local as enslaved to VRF"). Note that reverting to
this behavior should be fine as the change was about marking packets
belonging to the VRF, not about their dst.

Fixes: 40867d74c374 ("net: Add l3mdev index to flow struct and avoid oif reset for port devices")
Reported-by: Jianlin Shi <jishi@redhat.com>
Signed-off-by: Antoine Tenart <atenart@kernel.org>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20221220171825.1172237-1-atenart@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/vrf.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index badf6f09ae51..f6dcec66f0a4 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -1385,8 +1385,8 @@ static struct sk_buff *vrf_ip6_rcv(struct net_device *vrf_dev,
 
 	/* loopback, multicast & non-ND link-local traffic; do not push through
 	 * packet taps again. Reset pkt_type for upper layers to process skb.
-	 * For strict packets with a source LLA, determine the dst using the
-	 * original ifindex.
+	 * For non-loopback strict packets, determine the dst using the original
+	 * ifindex.
 	 */
 	if (skb->pkt_type == PACKET_LOOPBACK || (need_strict && !is_ndisc)) {
 		skb->dev = vrf_dev;
@@ -1395,7 +1395,7 @@ static struct sk_buff *vrf_ip6_rcv(struct net_device *vrf_dev,
 
 		if (skb->pkt_type == PACKET_LOOPBACK)
 			skb->pkt_type = PACKET_HOST;
-		else if (ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)
+		else
 			vrf_ip6_input_dst(skb, vrf_dev, orig_iif);
 
 		goto out;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 021/159] vmxnet3: correctly report csum_level for encapsulated packet
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (19 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 020/159] net: vrf: determine the dst using the original ifindex for multicast Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 022/159] mptcp: fix deadlock in fastopen error path Greg Kroah-Hartman
                   ` (152 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ronak Doshi, Peng Li,
	Jakub Kicinski, Sasha Levin

From: Ronak Doshi <doshir@vmware.com>

[ Upstream commit 3d8f2c4269d08f8793e946279dbdf5e972cc4911 ]

Commit dacce2be3312 ("vmxnet3: add geneve and vxlan tunnel offload
support") added support for encapsulation offload. However, the
pathc did not report correctly the csum_level for encapsulated packet.

This patch fixes this issue by reporting correct csum level for the
encapsulated packet.

Fixes: dacce2be3312 ("vmxnet3: add geneve and vxlan tunnel offload support")
Signed-off-by: Ronak Doshi <doshir@vmware.com>
Acked-by: Peng Li <lpeng@vmware.com>
Link: https://lore.kernel.org/r/20221220202556.24421-1-doshir@vmware.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/vmxnet3/vmxnet3_drv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 6f1e560fb15c..56267c327f0b 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -1288,6 +1288,10 @@ vmxnet3_rx_csum(struct vmxnet3_adapter *adapter,
 		    (le32_to_cpu(gdesc->dword[3]) &
 		     VMXNET3_RCD_CSUM_OK) == VMXNET3_RCD_CSUM_OK) {
 			skb->ip_summed = CHECKSUM_UNNECESSARY;
+			if ((le32_to_cpu(gdesc->dword[0]) &
+				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))) {
+				skb->csum_level = 1;
+			}
 			WARN_ON_ONCE(!(gdesc->rcd.tcp || gdesc->rcd.udp) &&
 				     !(le32_to_cpu(gdesc->dword[0]) &
 				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT)));
@@ -1297,6 +1301,10 @@ vmxnet3_rx_csum(struct vmxnet3_adapter *adapter,
 		} else if (gdesc->rcd.v6 && (le32_to_cpu(gdesc->dword[3]) &
 					     (1 << VMXNET3_RCD_TUC_SHIFT))) {
 			skb->ip_summed = CHECKSUM_UNNECESSARY;
+			if ((le32_to_cpu(gdesc->dword[0]) &
+				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))) {
+				skb->csum_level = 1;
+			}
 			WARN_ON_ONCE(!(gdesc->rcd.tcp || gdesc->rcd.udp) &&
 				     !(le32_to_cpu(gdesc->dword[0]) &
 				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT)));
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 022/159] mptcp: fix deadlock in fastopen error path
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (20 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 021/159] vmxnet3: correctly report csum_level for encapsulated packet Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 023/159] mptcp: fix lockdep false positive Greg Kroah-Hartman
                   ` (151 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mat Martineau, Paolo Abeni,
	Jakub Kicinski, Sasha Levin

From: Paolo Abeni <pabeni@redhat.com>

[ Upstream commit 7d803344fdc3e38079fabcf38b1e4cb6f8faa655 ]

MatM reported a deadlock at fastopening time:

INFO: task syz-executor.0:11454 blocked for more than 143 seconds.
      Tainted: G S                 6.1.0-rc5-03226-gdb0157db5153 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz-executor.0  state:D stack:25104 pid:11454 ppid:424    flags:0x00004006
Call Trace:
 <TASK>
 context_switch kernel/sched/core.c:5191 [inline]
 __schedule+0x5c2/0x1550 kernel/sched/core.c:6503
 schedule+0xe8/0x1c0 kernel/sched/core.c:6579
 __lock_sock+0x142/0x260 net/core/sock.c:2896
 lock_sock_nested+0xdb/0x100 net/core/sock.c:3466
 __mptcp_close_ssk+0x1a3/0x790 net/mptcp/protocol.c:2328
 mptcp_destroy_common+0x16a/0x650 net/mptcp/protocol.c:3171
 mptcp_disconnect+0xb8/0x450 net/mptcp/protocol.c:3019
 __inet_stream_connect+0x897/0xa40 net/ipv4/af_inet.c:720
 tcp_sendmsg_fastopen+0x3dd/0x740 net/ipv4/tcp.c:1200
 mptcp_sendmsg_fastopen net/mptcp/protocol.c:1682 [inline]
 mptcp_sendmsg+0x128a/0x1a50 net/mptcp/protocol.c:1721
 inet6_sendmsg+0x11f/0x150 net/ipv6/af_inet6.c:663
 sock_sendmsg_nosec net/socket.c:714 [inline]
 sock_sendmsg+0xf7/0x190 net/socket.c:734
 ____sys_sendmsg+0x336/0x970 net/socket.c:2476
 ___sys_sendmsg+0x122/0x1c0 net/socket.c:2530
 __sys_sendmmsg+0x18d/0x460 net/socket.c:2616
 __do_sys_sendmmsg net/socket.c:2645 [inline]
 __se_sys_sendmmsg net/socket.c:2642 [inline]
 __x64_sys_sendmmsg+0x9d/0x110 net/socket.c:2642
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f5920a75e7d
RSP: 002b:00007f59201e8028 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
RAX: ffffffffffffffda RBX: 00007f5920bb4f80 RCX: 00007f5920a75e7d
RDX: 0000000000000001 RSI: 0000000020002940 RDI: 0000000000000005
RBP: 00007f5920ae7593 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000020004050 R11: 0000000000000246 R12: 0000000000000000
R13: 000000000000000b R14: 00007f5920bb4f80 R15: 00007f59201c8000
 </TASK>

In the error path, tcp_sendmsg_fastopen() ends-up calling
mptcp_disconnect(), and the latter tries to close each
subflow, acquiring the socket lock on each of them.

At fastopen time, we have a single subflow, and such subflow
socket lock is already held by the called, causing the deadlock.

We already track the 'fastopen in progress' status inside the msk
socket. Use it to address the issue, making mptcp_disconnect() a
no op when invoked from the fastopen (error) path and doing the
relevant cleanup after releasing the subflow socket lock.

While at the above, rename the fastopen status bit to something
more meaningful.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/321
Fixes: fa9e57468aa1 ("mptcp: fix abba deadlock on fastopen")
Reported-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/mptcp/protocol.c | 18 +++++++++++++++---
 net/mptcp/protocol.h |  2 +-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 1dbc62537259..e64ea2ca1c7a 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1673,6 +1673,8 @@ static void mptcp_set_nospace(struct sock *sk)
 	set_bit(MPTCP_NOSPACE, &mptcp_sk(sk)->flags);
 }
 
+static int mptcp_disconnect(struct sock *sk, int flags);
+
 static int mptcp_sendmsg_fastopen(struct sock *sk, struct sock *ssk, struct msghdr *msg,
 				  size_t len, int *copied_syn)
 {
@@ -1683,9 +1685,9 @@ static int mptcp_sendmsg_fastopen(struct sock *sk, struct sock *ssk, struct msgh
 	lock_sock(ssk);
 	msg->msg_flags |= MSG_DONTWAIT;
 	msk->connect_flags = O_NONBLOCK;
-	msk->is_sendmsg = 1;
+	msk->fastopening = 1;
 	ret = tcp_sendmsg_fastopen(ssk, msg, copied_syn, len, NULL);
-	msk->is_sendmsg = 0;
+	msk->fastopening = 0;
 	msg->msg_flags = saved_flags;
 	release_sock(ssk);
 
@@ -1699,6 +1701,8 @@ static int mptcp_sendmsg_fastopen(struct sock *sk, struct sock *ssk, struct msgh
 		 */
 		if (ret && ret != -EINPROGRESS && ret != -ERESTARTSYS && ret != -EINTR)
 			*copied_syn = 0;
+	} else if (ret && ret != -EINPROGRESS) {
+		mptcp_disconnect(sk, 0);
 	}
 
 	return ret;
@@ -3000,6 +3004,14 @@ static int mptcp_disconnect(struct sock *sk, int flags)
 {
 	struct mptcp_sock *msk = mptcp_sk(sk);
 
+	/* We are on the fastopen error path. We can't call straight into the
+	 * subflows cleanup code due to lock nesting (we are already under
+	 * msk->firstsocket lock). Do nothing and leave the cleanup to the
+	 * caller.
+	 */
+	if (msk->fastopening)
+		return 0;
+
 	inet_sk_state_store(sk, TCP_CLOSE);
 
 	mptcp_stop_timer(sk);
@@ -3566,7 +3578,7 @@ static int mptcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
 	/* if reaching here via the fastopen/sendmsg path, the caller already
 	 * acquired the subflow socket lock, too.
 	 */
-	if (msk->is_sendmsg)
+	if (msk->fastopening)
 		err = __inet_stream_connect(ssock, uaddr, addr_len, msk->connect_flags, 1);
 	else
 		err = inet_stream_connect(ssock, uaddr, addr_len, msk->connect_flags);
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 6a09ab99a12d..380bddbc52d4 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -286,7 +286,7 @@ struct mptcp_sock {
 	u8		recvmsg_inq:1,
 			cork:1,
 			nodelay:1,
-			is_sendmsg:1;
+			fastopening:1;
 	int		connect_flags;
 	struct work_struct work;
 	struct sk_buff  *ooo_last_skb;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 023/159] mptcp: fix lockdep false positive
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (21 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 022/159] mptcp: fix deadlock in fastopen error path Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 024/159] netfilter: nf_tables: honor set timeout and garbage collection updates Greg Kroah-Hartman
                   ` (150 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Matthieu Baerts, Mat Martineau,
	Paolo Abeni, Jakub Kicinski, Sasha Levin

From: Paolo Abeni <pabeni@redhat.com>

[ Upstream commit fec3adfd754ccc99a7230e8ab9f105b65fb07bcc ]

MattB reported a lockdep splat in the mptcp listener code cleanup:

 WARNING: possible circular locking dependency detected
 packetdrill/14278 is trying to acquire lock:
 ffff888017d868f0 ((work_completion)(&msk->work)){+.+.}-{0:0}, at: __flush_work (kernel/workqueue.c:3069)

 but task is already holding lock:
 ffff888017d84130 (sk_lock-AF_INET){+.+.}-{0:0}, at: mptcp_close (net/mptcp/protocol.c:2973)

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -> #1 (sk_lock-AF_INET){+.+.}-{0:0}:
        __lock_acquire (kernel/locking/lockdep.c:5055)
        lock_acquire (kernel/locking/lockdep.c:466)
        lock_sock_nested (net/core/sock.c:3463)
        mptcp_worker (net/mptcp/protocol.c:2614)
        process_one_work (kernel/workqueue.c:2294)
        worker_thread (include/linux/list.h:292)
        kthread (kernel/kthread.c:376)
        ret_from_fork (arch/x86/entry/entry_64.S:312)

 -> #0 ((work_completion)(&msk->work)){+.+.}-{0:0}:
        check_prev_add (kernel/locking/lockdep.c:3098)
        validate_chain (kernel/locking/lockdep.c:3217)
        __lock_acquire (kernel/locking/lockdep.c:5055)
        lock_acquire (kernel/locking/lockdep.c:466)
        __flush_work (kernel/workqueue.c:3070)
        __cancel_work_timer (kernel/workqueue.c:3160)
        mptcp_cancel_work (net/mptcp/protocol.c:2758)
        mptcp_subflow_queue_clean (net/mptcp/subflow.c:1817)
        __mptcp_close_ssk (net/mptcp/protocol.c:2363)
        mptcp_destroy_common (net/mptcp/protocol.c:3170)
        mptcp_destroy (include/net/sock.h:1495)
        __mptcp_destroy_sock (net/mptcp/protocol.c:2886)
        __mptcp_close (net/mptcp/protocol.c:2959)
        mptcp_close (net/mptcp/protocol.c:2974)
        inet_release (net/ipv4/af_inet.c:432)
        __sock_release (net/socket.c:651)
        sock_close (net/socket.c:1367)
        __fput (fs/file_table.c:320)
        task_work_run (kernel/task_work.c:181 (discriminator 1))
        exit_to_user_mode_prepare (include/linux/resume_user_mode.h:49)
        syscall_exit_to_user_mode (kernel/entry/common.c:130)
        do_syscall_64 (arch/x86/entry/common.c:87)
        entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)

 other info that might help us debug this:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(sk_lock-AF_INET);
                                lock((work_completion)(&msk->work));
                                lock(sk_lock-AF_INET);
   lock((work_completion)(&msk->work));

  *** DEADLOCK ***

The report is actually a false positive, since the only existing lock
nesting is the msk socket lock acquired by the mptcp work.
cancel_work_sync() is invoked without the relevant socket lock being
held, but under a different (the msk listener) socket lock.

We could silence the splat adding a per workqueue dynamic lockdep key,
but that looks overkill. Instead just tell lockdep the msk socket lock
is not held around cancel_work_sync().

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/322
Fixes: 30e51b923e43 ("mptcp: fix unreleased socket in accept queue")
Reported-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/mptcp/protocol.c |  2 +-
 net/mptcp/protocol.h |  2 +-
 net/mptcp/subflow.c  | 19 +++++++++++++++++--
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index e64ea2ca1c7a..e97465f0c667 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2371,7 +2371,7 @@ static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
 		/* otherwise tcp will dispose of the ssk and subflow ctx */
 		if (ssk->sk_state == TCP_LISTEN) {
 			tcp_set_state(ssk, TCP_CLOSE);
-			mptcp_subflow_queue_clean(ssk);
+			mptcp_subflow_queue_clean(sk, ssk);
 			inet_csk_listen_stop(ssk);
 		}
 		__tcp_close(ssk, 0);
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 380bddbc52d4..62e9ff237b6e 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -614,7 +614,7 @@ void mptcp_close_ssk(struct sock *sk, struct sock *ssk,
 		     struct mptcp_subflow_context *subflow);
 void __mptcp_subflow_send_ack(struct sock *ssk);
 void mptcp_subflow_reset(struct sock *ssk);
-void mptcp_subflow_queue_clean(struct sock *ssk);
+void mptcp_subflow_queue_clean(struct sock *sk, struct sock *ssk);
 void mptcp_sock_graft(struct sock *sk, struct socket *parent);
 struct socket *__mptcp_nmpc_socket(const struct mptcp_sock *msk);
 bool __mptcp_close(struct sock *sk, long timeout);
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 613f515fedf0..9d3701fdb293 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -1733,7 +1733,7 @@ static void subflow_state_change(struct sock *sk)
 	}
 }
 
-void mptcp_subflow_queue_clean(struct sock *listener_ssk)
+void mptcp_subflow_queue_clean(struct sock *listener_sk, struct sock *listener_ssk)
 {
 	struct request_sock_queue *queue = &inet_csk(listener_ssk)->icsk_accept_queue;
 	struct mptcp_sock *msk, *next, *head = NULL;
@@ -1782,8 +1782,23 @@ void mptcp_subflow_queue_clean(struct sock *listener_ssk)
 
 		do_cancel_work = __mptcp_close(sk, 0);
 		release_sock(sk);
-		if (do_cancel_work)
+		if (do_cancel_work) {
+			/* lockdep will report a false positive ABBA deadlock
+			 * between cancel_work_sync and the listener socket.
+			 * The involved locks belong to different sockets WRT
+			 * the existing AB chain.
+			 * Using a per socket key is problematic as key
+			 * deregistration requires process context and must be
+			 * performed at socket disposal time, in atomic
+			 * context.
+			 * Just tell lockdep to consider the listener socket
+			 * released here.
+			 */
+			mutex_release(&listener_sk->sk_lock.dep_map, _RET_IP_);
 			mptcp_cancel_work(sk);
+			mutex_acquire(&listener_sk->sk_lock.dep_map,
+				      SINGLE_DEPTH_NESTING, 0, _RET_IP_);
+		}
 		sock_put(sk);
 	}
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 024/159] netfilter: nf_tables: honor set timeout and garbage collection updates
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (22 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 023/159] mptcp: fix lockdep false positive Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 025/159] bonding: fix lockdep splat in bond_miimon_commit() Greg Kroah-Hartman
                   ` (149 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Florian Westphal, Pablo Neira Ayuso,
	Sasha Levin

From: Pablo Neira Ayuso <pablo@netfilter.org>

[ Upstream commit 123b99619cca94bdca0bf7bde9abe28f0a0dfe06 ]

Set timeout and garbage collection interval updates are ignored on
updates. Add transaction to update global set element timeout and
garbage collection interval.

Fixes: 96518518cc41 ("netfilter: add nftables")
Suggested-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/net/netfilter/nf_tables.h | 13 ++++++-
 net/netfilter/nf_tables_api.c     | 63 ++++++++++++++++++++++---------
 2 files changed, 57 insertions(+), 19 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index ddcdde230747..1daededfa75e 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -592,7 +592,9 @@ void *nft_set_catchall_gc(const struct nft_set *set);
 
 static inline unsigned long nft_set_gc_interval(const struct nft_set *set)
 {
-	return set->gc_int ? msecs_to_jiffies(set->gc_int) : HZ;
+	u32 gc_int = READ_ONCE(set->gc_int);
+
+	return gc_int ? msecs_to_jiffies(gc_int) : HZ;
 }
 
 /**
@@ -1563,6 +1565,9 @@ struct nft_trans_rule {
 struct nft_trans_set {
 	struct nft_set			*set;
 	u32				set_id;
+	u32				gc_int;
+	u64				timeout;
+	bool				update;
 	bool				bound;
 };
 
@@ -1572,6 +1577,12 @@ struct nft_trans_set {
 	(((struct nft_trans_set *)trans->data)->set_id)
 #define nft_trans_set_bound(trans)	\
 	(((struct nft_trans_set *)trans->data)->bound)
+#define nft_trans_set_update(trans)	\
+	(((struct nft_trans_set *)trans->data)->update)
+#define nft_trans_set_timeout(trans)	\
+	(((struct nft_trans_set *)trans->data)->timeout)
+#define nft_trans_set_gc_int(trans)	\
+	(((struct nft_trans_set *)trans->data)->gc_int)
 
 struct nft_trans_chain {
 	bool				update;
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 6e68cab474c2..3ba8c291fcaa 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -465,8 +465,9 @@ static int nft_delrule_by_chain(struct nft_ctx *ctx)
 	return 0;
 }
 
-static int nft_trans_set_add(const struct nft_ctx *ctx, int msg_type,
-			     struct nft_set *set)
+static int __nft_trans_set_add(const struct nft_ctx *ctx, int msg_type,
+			       struct nft_set *set,
+			       const struct nft_set_desc *desc)
 {
 	struct nft_trans *trans;
 
@@ -474,17 +475,28 @@ static int nft_trans_set_add(const struct nft_ctx *ctx, int msg_type,
 	if (trans == NULL)
 		return -ENOMEM;
 
-	if (msg_type == NFT_MSG_NEWSET && ctx->nla[NFTA_SET_ID] != NULL) {
+	if (msg_type == NFT_MSG_NEWSET && ctx->nla[NFTA_SET_ID] && !desc) {
 		nft_trans_set_id(trans) =
 			ntohl(nla_get_be32(ctx->nla[NFTA_SET_ID]));
 		nft_activate_next(ctx->net, set);
 	}
 	nft_trans_set(trans) = set;
+	if (desc) {
+		nft_trans_set_update(trans) = true;
+		nft_trans_set_gc_int(trans) = desc->gc_int;
+		nft_trans_set_timeout(trans) = desc->timeout;
+	}
 	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return 0;
 }
 
+static int nft_trans_set_add(const struct nft_ctx *ctx, int msg_type,
+			     struct nft_set *set)
+{
+	return __nft_trans_set_add(ctx, msg_type, set, NULL);
+}
+
 static int nft_delset(const struct nft_ctx *ctx, struct nft_set *set)
 {
 	int err;
@@ -3996,8 +4008,10 @@ static int nf_tables_fill_set_concat(struct sk_buff *skb,
 static int nf_tables_fill_set(struct sk_buff *skb, const struct nft_ctx *ctx,
 			      const struct nft_set *set, u16 event, u16 flags)
 {
-	struct nlmsghdr *nlh;
+	u64 timeout = READ_ONCE(set->timeout);
+	u32 gc_int = READ_ONCE(set->gc_int);
 	u32 portid = ctx->portid;
+	struct nlmsghdr *nlh;
 	struct nlattr *nest;
 	u32 seq = ctx->seq;
 	int i;
@@ -4033,13 +4047,13 @@ static int nf_tables_fill_set(struct sk_buff *skb, const struct nft_ctx *ctx,
 	    nla_put_be32(skb, NFTA_SET_OBJ_TYPE, htonl(set->objtype)))
 		goto nla_put_failure;
 
-	if (set->timeout &&
+	if (timeout &&
 	    nla_put_be64(skb, NFTA_SET_TIMEOUT,
-			 nf_jiffies64_to_msecs(set->timeout),
+			 nf_jiffies64_to_msecs(timeout),
 			 NFTA_SET_PAD))
 		goto nla_put_failure;
-	if (set->gc_int &&
-	    nla_put_be32(skb, NFTA_SET_GC_INTERVAL, htonl(set->gc_int)))
+	if (gc_int &&
+	    nla_put_be32(skb, NFTA_SET_GC_INTERVAL, htonl(gc_int)))
 		goto nla_put_failure;
 
 	if (set->policy != NFT_SET_POL_PERFORMANCE) {
@@ -4584,7 +4598,10 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
 		for (i = 0; i < num_exprs; i++)
 			nft_expr_destroy(&ctx, exprs[i]);
 
-		return err;
+		if (err < 0)
+			return err;
+
+		return __nft_trans_set_add(&ctx, NFT_MSG_NEWSET, set, &desc);
 	}
 
 	if (!(info->nlh->nlmsg_flags & NLM_F_CREATE))
@@ -6022,7 +6039,7 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
 			return err;
 	} else if (set->flags & NFT_SET_TIMEOUT &&
 		   !(flags & NFT_SET_ELEM_INTERVAL_END)) {
-		timeout = set->timeout;
+		timeout = READ_ONCE(set->timeout);
 	}
 
 	expiration = 0;
@@ -6123,7 +6140,7 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
 		if (err < 0)
 			goto err_parse_key_end;
 
-		if (timeout != set->timeout) {
+		if (timeout != READ_ONCE(set->timeout)) {
 			err = nft_set_ext_add(&tmpl, NFT_SET_EXT_TIMEOUT);
 			if (err < 0)
 				goto err_parse_key_end;
@@ -9039,14 +9056,20 @@ static int nf_tables_commit(struct net *net, struct sk_buff *skb)
 				nft_flow_rule_destroy(nft_trans_flow_rule(trans));
 			break;
 		case NFT_MSG_NEWSET:
-			nft_clear(net, nft_trans_set(trans));
-			/* This avoids hitting -EBUSY when deleting the table
-			 * from the transaction.
-			 */
-			if (nft_set_is_anonymous(nft_trans_set(trans)) &&
-			    !list_empty(&nft_trans_set(trans)->bindings))
-				trans->ctx.table->use--;
+			if (nft_trans_set_update(trans)) {
+				struct nft_set *set = nft_trans_set(trans);
 
+				WRITE_ONCE(set->timeout, nft_trans_set_timeout(trans));
+				WRITE_ONCE(set->gc_int, nft_trans_set_gc_int(trans));
+			} else {
+				nft_clear(net, nft_trans_set(trans));
+				/* This avoids hitting -EBUSY when deleting the table
+				 * from the transaction.
+				 */
+				if (nft_set_is_anonymous(nft_trans_set(trans)) &&
+				    !list_empty(&nft_trans_set(trans)->bindings))
+					trans->ctx.table->use--;
+			}
 			nf_tables_set_notify(&trans->ctx, nft_trans_set(trans),
 					     NFT_MSG_NEWSET, GFP_KERNEL);
 			nft_trans_destroy(trans);
@@ -9268,6 +9291,10 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action)
 			nft_trans_destroy(trans);
 			break;
 		case NFT_MSG_NEWSET:
+			if (nft_trans_set_update(trans)) {
+				nft_trans_destroy(trans);
+				break;
+			}
 			trans->ctx.table->use--;
 			if (nft_trans_set_bound(trans)) {
 				nft_trans_destroy(trans);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 025/159] bonding: fix lockdep splat in bond_miimon_commit()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (23 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 024/159] netfilter: nf_tables: honor set timeout and garbage collection updates Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 026/159] net: lan966x: Fix configuration of the PCS Greg Kroah-Hartman
                   ` (148 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Eric Dumazet, syzbot, Hangbin Liu,
	Jay Vosburgh, Veaceslav Falico, Andy Gospodarek, Paolo Abeni,
	Sasha Levin

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 42c7ded0eeacd2ba5db599205c71c279dc715de7 ]

bond_miimon_commit() is run while RTNL is held, not RCU.

WARNING: suspicious RCU usage
6.1.0-syzkaller-09671-g89529367293c #0 Not tainted
-----------------------------
drivers/net/bonding/bond_main.c:2704 suspicious rcu_dereference_check() usage!

Fixes: e95cc44763a4 ("bonding: do failover when high prio link up")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Cc: Hangbin Liu <liuhangbin@gmail.com>
Cc: Jay Vosburgh <j.vosburgh@gmail.com>
Cc: Veaceslav Falico <vfalico@gmail.com>
Cc: Andy Gospodarek <andy@greyhouse.net>
Link: https://lore.kernel.org/r/20221220130831.1480888-1-edumazet@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/bonding/bond_main.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index b108f2f4adc2..fce9301c8ebb 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2653,10 +2653,12 @@ static void bond_miimon_link_change(struct bonding *bond,
 
 static void bond_miimon_commit(struct bonding *bond)
 {
-	struct slave *slave, *primary;
+	struct slave *slave, *primary, *active;
 	bool do_failover = false;
 	struct list_head *iter;
 
+	ASSERT_RTNL();
+
 	bond_for_each_slave(bond, slave, iter) {
 		switch (slave->link_new_state) {
 		case BOND_LINK_NOCHANGE:
@@ -2699,8 +2701,8 @@ static void bond_miimon_commit(struct bonding *bond)
 
 			bond_miimon_link_change(bond, slave, BOND_LINK_UP);
 
-			if (!rcu_access_pointer(bond->curr_active_slave) || slave == primary ||
-			    slave->prio > rcu_dereference(bond->curr_active_slave)->prio)
+			active = rtnl_dereference(bond->curr_active_slave);
+			if (!active || slave == primary || slave->prio > active->prio)
 				do_failover = true;
 
 			continue;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 026/159] net: lan966x: Fix configuration of the PCS
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (24 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 025/159] bonding: fix lockdep splat in bond_miimon_commit() Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 027/159] veth: Fix race with AF_XDP exposing old or uninitialized descriptors Greg Kroah-Hartman
                   ` (147 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Horatiu Vultur, Piotr Raczynski,
	Paolo Abeni, Sasha Levin

From: Horatiu Vultur <horatiu.vultur@microchip.com>

[ Upstream commit d717f9474e3fb7e6bd3e43ca16e131f04320ed6f ]

When the PCS was taken out of reset, we were changing by mistake also
the speed to 100 Mbit. But in case the link was going down, the link
up routine was setting correctly the link speed. If the link was not
getting down then the speed was forced to run at 100 even if the
speed was something else.
On lan966x, to set the speed link to 1G or 2.5G a value of 1 needs to be
written in DEV_CLOCK_CFG_LINK_SPEED. This is similar to the procedure in
lan966x_port_init.

The issue was reproduced using 1000base-x sfp module using the commands:
ip link set dev eth2 up
ip link addr add 10.97.10.2/24 dev eth2
ethtool -s eth2 speed 1000 autoneg off

Fixes: d28d6d2e37d1 ("net: lan966x: add port module support")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Reviewed-by: Piotr Raczynski <piotr.raczynski@intel.com>
Link: https://lore.kernel.org/r/20221221093315.939133-1-horatiu.vultur@microchip.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/microchip/lan966x/lan966x_port.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_port.c b/drivers/net/ethernet/microchip/lan966x/lan966x_port.c
index 1a61c6cdb077..0050fcb988b7 100644
--- a/drivers/net/ethernet/microchip/lan966x/lan966x_port.c
+++ b/drivers/net/ethernet/microchip/lan966x/lan966x_port.c
@@ -381,7 +381,7 @@ int lan966x_port_pcs_set(struct lan966x_port *port,
 	}
 
 	/* Take PCS out of reset */
-	lan_rmw(DEV_CLOCK_CFG_LINK_SPEED_SET(2) |
+	lan_rmw(DEV_CLOCK_CFG_LINK_SPEED_SET(LAN966X_SPEED_1000) |
 		DEV_CLOCK_CFG_PCS_RX_RST_SET(0) |
 		DEV_CLOCK_CFG_PCS_TX_RST_SET(0),
 		DEV_CLOCK_CFG_LINK_SPEED |
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 027/159] veth: Fix race with AF_XDP exposing old or uninitialized descriptors
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (25 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 026/159] net: lan966x: Fix configuration of the PCS Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 028/159] nfsd: shut down the NFSv4 state objects before the filecache Greg Kroah-Hartman
                   ` (146 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Magnus Karlsson, Shawn Bohrer,
	Paolo Abeni, Sasha Levin

From: Shawn Bohrer <sbohrer@cloudflare.com>

[ Upstream commit fa349e396e4886d742fd6501c599ec627ef1353b ]

When AF_XDP is used on on a veth interface the RX ring is updated in two
steps.  veth_xdp_rcv() removes packet descriptors from the FILL ring
fills them and places them in the RX ring updating the cached_prod
pointer.  Later xdp_do_flush() syncs the RX ring prod pointer with the
cached_prod pointer allowing user-space to see the recently filled in
descriptors.  The rings are intended to be SPSC, however the existing
order in veth_poll allows the xdp_do_flush() to run concurrently with
another CPU creating a race condition that allows user-space to see old
or uninitialized descriptors in the RX ring.  This bug has been observed
in production systems.

To summarize, we are expecting this ordering:

CPU 0 __xsk_rcv_zc()
CPU 0 __xsk_map_flush()
CPU 2 __xsk_rcv_zc()
CPU 2 __xsk_map_flush()

But we are seeing this order:

CPU 0 __xsk_rcv_zc()
CPU 2 __xsk_rcv_zc()
CPU 0 __xsk_map_flush()
CPU 2 __xsk_map_flush()

This occurs because we rely on NAPI to ensure that only one napi_poll
handler is running at a time for the given veth receive queue.
napi_schedule_prep() will prevent multiple instances from getting
scheduled. However calling napi_complete_done() signals that this
napi_poll is complete and allows subsequent calls to
napi_schedule_prep() and __napi_schedule() to succeed in scheduling a
concurrent napi_poll before the xdp_do_flush() has been called.  For the
veth driver a concurrent call to napi_schedule_prep() and
__napi_schedule() can occur on a different CPU because the veth xmit
path can additionally schedule a napi_poll creating the race.

The fix as suggested by Magnus Karlsson, is to simply move the
xdp_do_flush() call before napi_complete_done().  This syncs the
producer ring pointers before another instance of napi_poll can be
scheduled on another CPU.  It will also slightly improve performance by
moving the flush closer to when the descriptors were placed in the
RX ring.

Fixes: d1396004dd86 ("veth: Add XDP TX and REDIRECT")
Suggested-by: Magnus Karlsson <magnus.karlsson@gmail.com>
Signed-off-by: Shawn Bohrer <sbohrer@cloudflare.com>
Link: https://lore.kernel.org/r/20221220185903.1105011-1-sbohrer@cloudflare.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/veth.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 09682ea3354e..bd385ccd0d18 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -974,6 +974,9 @@ static int veth_poll(struct napi_struct *napi, int budget)
 	xdp_set_return_frame_no_direct();
 	done = veth_xdp_rcv(rq, budget, &bq, &stats);
 
+	if (stats.xdp_redirect > 0)
+		xdp_do_flush();
+
 	if (done < budget && napi_complete_done(napi, done)) {
 		/* Write rx_notify_masked before reading ptr_ring */
 		smp_store_mb(rq->rx_notify_masked, false);
@@ -987,8 +990,6 @@ static int veth_poll(struct napi_struct *napi, int budget)
 
 	if (stats.xdp_tx > 0)
 		veth_xdp_flush(rq, &bq);
-	if (stats.xdp_redirect > 0)
-		xdp_do_flush();
 	xdp_clear_return_frame_no_direct();
 
 	return done;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 028/159] nfsd: shut down the NFSv4 state objects before the filecache
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (26 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 027/159] veth: Fix race with AF_XDP exposing old or uninitialized descriptors Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 029/159] net: hns3: add interrupts re-initialization while doing VF FLR Greg Kroah-Hartman
                   ` (145 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jeff Layton, Chuck Lever,
	Sasha Levin, Wang Yugui

From: Jeff Layton <jlayton@kernel.org>

[ Upstream commit 789e1e10f214c00ca18fc6610824c5b9876ba5f2 ]

Currently, we shut down the filecache before trying to clean up the
stateids that depend on it. This leads to the kernel trying to free an
nfsd_file twice, and a refcount overput on the nf_mark.

Change the shutdown procedure to tear down all of the stateids prior
to shutting down the filecache.

Reported-and-tested-by: Wang Yugui <wangyugui@e16-tech.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Fixes: 5e113224c17e ("nfsd: nfsd_file cache entries should be per net namespace")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/nfsd/nfssvc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index bfbd9f672f59..8b1afde19211 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -447,8 +447,8 @@ static void nfsd_shutdown_net(struct net *net)
 {
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 
-	nfsd_file_cache_shutdown_net(net);
 	nfs4_state_shutdown_net(net);
+	nfsd_file_cache_shutdown_net(net);
 	if (nn->lockd_up) {
 		lockd_down(net);
 		nn->lockd_up = false;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 029/159] net: hns3: add interrupts re-initialization while doing VF FLR
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (27 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 028/159] nfsd: shut down the NFSv4 state objects before the filecache Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 030/159] net: hns3: fix miss L3E checking for rx packet Greg Kroah-Hartman
                   ` (144 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jie Wang, Hao Lan, Jakub Kicinski,
	Sasha Levin

From: Jie Wang <wangjie125@huawei.com>

[ Upstream commit 09e6b30eeb254f1818a008cace3547159e908dfd ]

Currently keep alive message between PF and VF may be lost and the VF is
unalive in PF. So the VF will not do reset during PF FLR reset process.
This would make the allocated interrupt resources of VF invalid and VF
would't receive or respond to PF any more.

So this patch adds VF interrupts re-initialization during VF FLR for VF
recovery in above cases.

Fixes: 862d969a3a4d ("net: hns3: do VF's pci re-initialization while PF doing FLR")
Signed-off-by: Jie Wang <wangjie125@huawei.com>
Signed-off-by: Hao Lan <lanhao@huawei.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
index db6f7cdba958..081bd2c3f289 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
@@ -2767,7 +2767,8 @@ static int hclgevf_pci_reset(struct hclgevf_dev *hdev)
 	struct pci_dev *pdev = hdev->pdev;
 	int ret = 0;
 
-	if (hdev->reset_type == HNAE3_VF_FULL_RESET &&
+	if ((hdev->reset_type == HNAE3_VF_FULL_RESET ||
+	     hdev->reset_type == HNAE3_FLR_RESET) &&
 	    test_bit(HCLGEVF_STATE_IRQ_INITED, &hdev->state)) {
 		hclgevf_misc_irq_uninit(hdev);
 		hclgevf_uninit_msi(hdev);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 030/159] net: hns3: fix miss L3E checking for rx packet
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (28 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 029/159] net: hns3: add interrupts re-initialization while doing VF FLR Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:02 ` [PATCH 6.1 031/159] net: hns3: fix VF promisc mode not update when mac table full Greg Kroah-Hartman
                   ` (143 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jian Shen, Hao Lan, Jakub Kicinski,
	Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit 7d89b53cea1a702f97117fb4361523519bb1e52c ]

For device supports RXD advanced layout, the driver will
return directly if the hardware finish the checksum
calculate. It cause missing L3E checking for ip packets.
Fixes it.

Fixes: 1ddc028ac849 ("net: hns3: refactor out RX completion checksum")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Hao Lan <lanhao@huawei.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
index 028577943ec5..248f15dac86b 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
@@ -3855,18 +3855,16 @@ static int hns3_gro_complete(struct sk_buff *skb, u32 l234info)
 	return 0;
 }
 
-static bool hns3_checksum_complete(struct hns3_enet_ring *ring,
+static void hns3_checksum_complete(struct hns3_enet_ring *ring,
 				   struct sk_buff *skb, u32 ptype, u16 csum)
 {
 	if (ptype == HNS3_INVALID_PTYPE ||
 	    hns3_rx_ptype_tbl[ptype].ip_summed != CHECKSUM_COMPLETE)
-		return false;
+		return;
 
 	hns3_ring_stats_update(ring, csum_complete);
 	skb->ip_summed = CHECKSUM_COMPLETE;
 	skb->csum = csum_unfold((__force __sum16)csum);
-
-	return true;
 }
 
 static void hns3_rx_handle_csum(struct sk_buff *skb, u32 l234info,
@@ -3926,8 +3924,7 @@ static void hns3_rx_checksum(struct hns3_enet_ring *ring, struct sk_buff *skb,
 		ptype = hnae3_get_field(ol_info, HNS3_RXD_PTYPE_M,
 					HNS3_RXD_PTYPE_S);
 
-	if (hns3_checksum_complete(ring, skb, ptype, csum))
-		return;
+	hns3_checksum_complete(ring, skb, ptype, csum);
 
 	/* check if hardware has done checksum */
 	if (!(bd_base_info & BIT(HNS3_RXD_L3L4P_B)))
@@ -3936,6 +3933,7 @@ static void hns3_rx_checksum(struct hns3_enet_ring *ring, struct sk_buff *skb,
 	if (unlikely(l234info & (BIT(HNS3_RXD_L3E_B) | BIT(HNS3_RXD_L4E_B) |
 				 BIT(HNS3_RXD_OL3E_B) |
 				 BIT(HNS3_RXD_OL4E_B)))) {
+		skb->ip_summed = CHECKSUM_NONE;
 		hns3_ring_stats_update(ring, l3l4_csum_err);
 
 		return;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 031/159] net: hns3: fix VF promisc mode not update when mac table full
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (29 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 030/159] net: hns3: fix miss L3E checking for rx packet Greg Kroah-Hartman
@ 2023-01-10 18:02 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 032/159] net: sched: fix memory leak in tcindex_set_parms Greg Kroah-Hartman
                   ` (142 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:02 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jian Shen, Hao Lan, Jakub Kicinski,
	Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit 8ee57c7b8406c7aa8ca31e014440c87c6383f429 ]

Currently, it missed set HCLGE_VPORT_STATE_PROMISC_CHANGE
flag for VF when vport->overflow_promisc_flags changed.
So the VF won't check whether to update promisc mode in
this case. So add it.

Fixes: 1e6e76101fd9 ("net: hns3: configure promisc mode for VF asynchronously")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Hao Lan <lanhao@huawei.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 75 +++++++++++--------
 1 file changed, 43 insertions(+), 32 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 4e54f91f7a6c..6c2742f59c77 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -12754,60 +12754,71 @@ static int hclge_gro_en(struct hnae3_handle *handle, bool enable)
 	return ret;
 }
 
-static void hclge_sync_promisc_mode(struct hclge_dev *hdev)
+static int hclge_sync_vport_promisc_mode(struct hclge_vport *vport)
 {
-	struct hclge_vport *vport = &hdev->vport[0];
 	struct hnae3_handle *handle = &vport->nic;
+	struct hclge_dev *hdev = vport->back;
+	bool uc_en = false;
+	bool mc_en = false;
 	u8 tmp_flags;
+	bool bc_en;
 	int ret;
-	u16 i;
 
 	if (vport->last_promisc_flags != vport->overflow_promisc_flags) {
 		set_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE, &vport->state);
 		vport->last_promisc_flags = vport->overflow_promisc_flags;
 	}
 
-	if (test_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE, &vport->state)) {
+	if (!test_and_clear_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE,
+				&vport->state))
+		return 0;
+
+	/* for PF */
+	if (!vport->vport_id) {
 		tmp_flags = handle->netdev_flags | vport->last_promisc_flags;
 		ret = hclge_set_promisc_mode(handle, tmp_flags & HNAE3_UPE,
 					     tmp_flags & HNAE3_MPE);
-		if (!ret) {
-			clear_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE,
-				  &vport->state);
+		if (!ret)
 			set_bit(HCLGE_VPORT_STATE_VLAN_FLTR_CHANGE,
 				&vport->state);
-		}
+		else
+			set_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE,
+				&vport->state);
+		return ret;
 	}
 
-	for (i = 1; i < hdev->num_alloc_vport; i++) {
-		bool uc_en = false;
-		bool mc_en = false;
-		bool bc_en;
+	/* for VF */
+	if (vport->vf_info.trusted) {
+		uc_en = vport->vf_info.request_uc_en > 0 ||
+			vport->overflow_promisc_flags & HNAE3_OVERFLOW_UPE;
+		mc_en = vport->vf_info.request_mc_en > 0 ||
+			vport->overflow_promisc_flags & HNAE3_OVERFLOW_MPE;
+	}
+	bc_en = vport->vf_info.request_bc_en > 0;
 
-		vport = &hdev->vport[i];
+	ret = hclge_cmd_set_promisc_mode(hdev, vport->vport_id, uc_en,
+					 mc_en, bc_en);
+	if (ret) {
+		set_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE, &vport->state);
+		return ret;
+	}
+	hclge_set_vport_vlan_fltr_change(vport);
 
-		if (!test_and_clear_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE,
-					&vport->state))
-			continue;
+	return 0;
+}
 
-		if (vport->vf_info.trusted) {
-			uc_en = vport->vf_info.request_uc_en > 0 ||
-				vport->overflow_promisc_flags &
-				HNAE3_OVERFLOW_UPE;
-			mc_en = vport->vf_info.request_mc_en > 0 ||
-				vport->overflow_promisc_flags &
-				HNAE3_OVERFLOW_MPE;
-		}
-		bc_en = vport->vf_info.request_bc_en > 0;
+static void hclge_sync_promisc_mode(struct hclge_dev *hdev)
+{
+	struct hclge_vport *vport;
+	int ret;
+	u16 i;
 
-		ret = hclge_cmd_set_promisc_mode(hdev, vport->vport_id, uc_en,
-						 mc_en, bc_en);
-		if (ret) {
-			set_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE,
-				&vport->state);
+	for (i = 0; i < hdev->num_alloc_vport; i++) {
+		vport = &hdev->vport[i];
+
+		ret = hclge_sync_vport_promisc_mode(vport);
+		if (ret)
 			return;
-		}
-		hclge_set_vport_vlan_fltr_change(vport);
 	}
 }
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 032/159] net: sched: fix memory leak in tcindex_set_parms
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (30 preceding siblings ...)
  2023-01-10 18:02 ` [PATCH 6.1 031/159] net: hns3: fix VF promisc mode not update when mac table full Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 033/159] qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure Greg Kroah-Hartman
                   ` (141 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+232ebdbd36706c965ebf,
	Cong Wang, Jakub Kicinski, Paolo Abeni, Dmitry Vyukov,
	Hawkins Jiawei, David S. Miller, Sasha Levin

From: Hawkins Jiawei <yin31149@gmail.com>

[ Upstream commit 399ab7fe0fa0d846881685fd4e57e9a8ef7559f7 ]

Syzkaller reports a memory leak as follows:
====================================
BUG: memory leak
unreferenced object 0xffff88810c287f00 (size 256):
  comm "syz-executor105", pid 3600, jiffies 4294943292 (age 12.990s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff814cf9f0>] kmalloc_trace+0x20/0x90 mm/slab_common.c:1046
    [<ffffffff839c9e07>] kmalloc include/linux/slab.h:576 [inline]
    [<ffffffff839c9e07>] kmalloc_array include/linux/slab.h:627 [inline]
    [<ffffffff839c9e07>] kcalloc include/linux/slab.h:659 [inline]
    [<ffffffff839c9e07>] tcf_exts_init include/net/pkt_cls.h:250 [inline]
    [<ffffffff839c9e07>] tcindex_set_parms+0xa7/0xbe0 net/sched/cls_tcindex.c:342
    [<ffffffff839caa1f>] tcindex_change+0xdf/0x120 net/sched/cls_tcindex.c:553
    [<ffffffff8394db62>] tc_new_tfilter+0x4f2/0x1100 net/sched/cls_api.c:2147
    [<ffffffff8389e91c>] rtnetlink_rcv_msg+0x4dc/0x5d0 net/core/rtnetlink.c:6082
    [<ffffffff839eba67>] netlink_rcv_skb+0x87/0x1d0 net/netlink/af_netlink.c:2540
    [<ffffffff839eab87>] netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
    [<ffffffff839eab87>] netlink_unicast+0x397/0x4c0 net/netlink/af_netlink.c:1345
    [<ffffffff839eb046>] netlink_sendmsg+0x396/0x710 net/netlink/af_netlink.c:1921
    [<ffffffff8383e796>] sock_sendmsg_nosec net/socket.c:714 [inline]
    [<ffffffff8383e796>] sock_sendmsg+0x56/0x80 net/socket.c:734
    [<ffffffff8383eb08>] ____sys_sendmsg+0x178/0x410 net/socket.c:2482
    [<ffffffff83843678>] ___sys_sendmsg+0xa8/0x110 net/socket.c:2536
    [<ffffffff838439c5>] __sys_sendmmsg+0x105/0x330 net/socket.c:2622
    [<ffffffff83843c14>] __do_sys_sendmmsg net/socket.c:2651 [inline]
    [<ffffffff83843c14>] __se_sys_sendmmsg net/socket.c:2648 [inline]
    [<ffffffff83843c14>] __x64_sys_sendmmsg+0x24/0x30 net/socket.c:2648
    [<ffffffff84605fd5>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    [<ffffffff84605fd5>] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
    [<ffffffff84800087>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
====================================

Kernel uses tcindex_change() to change an existing
filter properties.

Yet the problem is that, during the process of changing,
if `old_r` is retrieved from `p->perfect`, then
kernel uses tcindex_alloc_perfect_hash() to newly
allocate filter results, uses tcindex_filter_result_init()
to clear the old filter result, without destroying
its tcf_exts structure, which triggers the above memory leak.

To be more specific, there are only two source for the `old_r`,
according to the tcindex_lookup(). `old_r` is retrieved from
`p->perfect`, or `old_r` is retrieved from `p->h`.

  * If `old_r` is retrieved from `p->perfect`, kernel uses
tcindex_alloc_perfect_hash() to newly allocate the
filter results. Then `r` is assigned with `cp->perfect + handle`,
which is newly allocated. So condition `old_r && old_r != r` is
true in this situation, and kernel uses tcindex_filter_result_init()
to clear the old filter result, without destroying
its tcf_exts structure

  * If `old_r` is retrieved from `p->h`, then `p->perfect` is NULL
according to the tcindex_lookup(). Considering that `cp->h`
is directly copied from `p->h` and `p->perfect` is NULL,
`r` is assigned with `tcindex_lookup(cp, handle)`, whose value
should be the same as `old_r`, so condition `old_r && old_r != r`
is false in this situation, kernel ignores using
tcindex_filter_result_init() to clear the old filter result.

So only when `old_r` is retrieved from `p->perfect` does kernel use
tcindex_filter_result_init() to clear the old filter result, which
triggers the above memory leak.

Considering that there already exists a tc_filter_wq workqueue
to destroy the old tcindex_data by tcindex_partial_destroy_work()
at the end of tcindex_set_parms(), this patch solves
this memory leak bug by removing this old filter result
clearing part and delegating it to the tc_filter_wq workqueue.

Note that this patch doesn't introduce any other issues. If
`old_r` is retrieved from `p->perfect`, this patch just
delegates old filter result clearing part to the
tc_filter_wq workqueue; If `old_r` is retrieved from `p->h`,
kernel doesn't reach the old filter result clearing part, so
removing this part has no effect.

[Thanks to the suggestion from Jakub Kicinski, Cong Wang, Paolo Abeni
and Dmitry Vyukov]

Fixes: b9a24bb76bf6 ("net_sched: properly handle failure case of tcf_exts_init()")
Link: https://lore.kernel.org/all/0000000000001de5c505ebc9ec59@google.com/
Reported-by: syzbot+232ebdbd36706c965ebf@syzkaller.appspotmail.com
Tested-by: syzbot+232ebdbd36706c965ebf@syzkaller.appspotmail.com
Cc: Cong Wang <cong.wang@bytedance.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/sched/cls_tcindex.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c
index 1c9eeb98d826..4bdcbee4bec5 100644
--- a/net/sched/cls_tcindex.c
+++ b/net/sched/cls_tcindex.c
@@ -332,7 +332,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
 		  struct tcindex_filter_result *r, struct nlattr **tb,
 		  struct nlattr *est, u32 flags, struct netlink_ext_ack *extack)
 {
-	struct tcindex_filter_result new_filter_result, *old_r = r;
+	struct tcindex_filter_result new_filter_result;
 	struct tcindex_data *cp = NULL, *oldp;
 	struct tcindex_filter *f = NULL; /* make gcc behave */
 	struct tcf_result cr = {};
@@ -401,7 +401,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
 	err = tcindex_filter_result_init(&new_filter_result, cp, net);
 	if (err < 0)
 		goto errout_alloc;
-	if (old_r)
+	if (r)
 		cr = r->res;
 
 	err = -EBUSY;
@@ -478,14 +478,6 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
 		tcf_bind_filter(tp, &cr, base);
 	}
 
-	if (old_r && old_r != r) {
-		err = tcindex_filter_result_init(old_r, cp, net);
-		if (err < 0) {
-			kfree(f);
-			goto errout_alloc;
-		}
-	}
-
 	oldp = p;
 	r->res = cr;
 	tcf_exts_change(&r->exts, &e);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 033/159] qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (31 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 032/159] net: sched: fix memory leak in tcindex_set_parms Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 034/159] net: dsa: mv88e6xxx: depend on PTP conditionally Greg Kroah-Hartman
                   ` (140 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Michal Swiatkowski, Daniil Tatianin,
	David S. Miller, Sasha Levin

From: Daniil Tatianin <d-tatianin@yandex-team.ru>

[ Upstream commit 13a7c8964afcd8ca43c0b6001ebb0127baa95362 ]

adapter->dcb would get silently freed inside qlcnic_dcb_enable() in
case qlcnic_dcb_attach() would return an error, which always happens
under OOM conditions. This would lead to use-after-free because both
of the existing callers invoke qlcnic_dcb_get_info() on the obtained
pointer, which is potentially freed at that point.

Propagate errors from qlcnic_dcb_enable(), and instead free the dcb
pointer at callsite using qlcnic_dcb_free(). This also removes the now
unused qlcnic_clear_dcb_ops() helper, which was a simple wrapper around
kfree() also causing memory leaks for partially initialized dcb.

Found by Linux Verification Center (linuxtesting.org) with the SVACE
static analysis tool.

Fixes: 3c44bba1d270 ("qlcnic: Disable DCB operations from SR-IOV VFs")
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Signed-off-by: Daniil Tatianin <d-tatianin@yandex-team.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c |  8 +++++++-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h       | 10 ++--------
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c      |  8 +++++++-
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
index dbb800769cb6..c95d56e56c59 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
@@ -2505,7 +2505,13 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter)
 		goto disable_mbx_intr;
 
 	qlcnic_83xx_clear_function_resources(adapter);
-	qlcnic_dcb_enable(adapter->dcb);
+
+	err = qlcnic_dcb_enable(adapter->dcb);
+	if (err) {
+		qlcnic_dcb_free(adapter->dcb);
+		goto disable_mbx_intr;
+	}
+
 	qlcnic_83xx_initialize_nic(adapter, 1);
 	qlcnic_dcb_get_info(adapter->dcb);
 
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
index 7519773eaca6..22afa2be85fd 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
@@ -41,11 +41,6 @@ struct qlcnic_dcb {
 	unsigned long			state;
 };
 
-static inline void qlcnic_clear_dcb_ops(struct qlcnic_dcb *dcb)
-{
-	kfree(dcb);
-}
-
 static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
 {
 	if (dcb && dcb->ops->get_hw_capability)
@@ -112,9 +107,8 @@ static inline void qlcnic_dcb_init_dcbnl_ops(struct qlcnic_dcb *dcb)
 		dcb->ops->init_dcbnl_ops(dcb);
 }
 
-static inline void qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
+static inline int qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
 {
-	if (dcb && qlcnic_dcb_attach(dcb))
-		qlcnic_clear_dcb_ops(dcb);
+	return dcb ? qlcnic_dcb_attach(dcb) : 0;
 }
 #endif
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 28476b982bab..44dac3c0908e 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -2599,7 +2599,13 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 			 "Device does not support MSI interrupts\n");
 
 	if (qlcnic_82xx_check(adapter)) {
-		qlcnic_dcb_enable(adapter->dcb);
+		err = qlcnic_dcb_enable(adapter->dcb);
+		if (err) {
+			qlcnic_dcb_free(adapter->dcb);
+			dev_err(&pdev->dev, "Failed to enable DCB\n");
+			goto err_out_free_hw;
+		}
+
 		qlcnic_dcb_get_info(adapter->dcb);
 		err = qlcnic_setup_intr(adapter);
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 034/159] net: dsa: mv88e6xxx: depend on PTP conditionally
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (32 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 033/159] qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 035/159] nfc: Fix potential resource leaks Greg Kroah-Hartman
                   ` (139 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Johnny S. Lee, David S. Miller, Sasha Levin

From: Johnny S. Lee <foss@jsl.io>

[ Upstream commit 30e725537546248bddc12eaac2fe0a258917f190 ]

PTP hardware timestamping related objects are not linked when PTP
support for MV88E6xxx (NET_DSA_MV88E6XXX_PTP) is disabled, therefore
NET_DSA_MV88E6XXX should not depend on PTP_1588_CLOCK_OPTIONAL
regardless of NET_DSA_MV88E6XXX_PTP.

Instead, condition more strictly on how NET_DSA_MV88E6XXX_PTP's
dependencies are met, making sure that it cannot be enabled when
NET_DSA_MV88E6XXX=y and PTP_1588_CLOCK=m.

In other words, this commit allows NET_DSA_MV88E6XXX to be built-in
while PTP_1588_CLOCK is a module, as long as NET_DSA_MV88E6XXX_PTP is
prevented from being enabled.

Fixes: e5f31552674e ("ethernet: fix PTP_1588_CLOCK dependencies")
Signed-off-by: Johnny S. Lee <foss@jsl.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/dsa/mv88e6xxx/Kconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/Kconfig b/drivers/net/dsa/mv88e6xxx/Kconfig
index 7a2445a34eb7..e3181d5471df 100644
--- a/drivers/net/dsa/mv88e6xxx/Kconfig
+++ b/drivers/net/dsa/mv88e6xxx/Kconfig
@@ -2,7 +2,6 @@
 config NET_DSA_MV88E6XXX
 	tristate "Marvell 88E6xxx Ethernet switch fabric support"
 	depends on NET_DSA
-	depends on PTP_1588_CLOCK_OPTIONAL
 	select IRQ_DOMAIN
 	select NET_DSA_TAG_EDSA
 	select NET_DSA_TAG_DSA
@@ -13,7 +12,8 @@ config NET_DSA_MV88E6XXX
 config NET_DSA_MV88E6XXX_PTP
 	bool "PTP support for Marvell 88E6xxx"
 	default n
-	depends on NET_DSA_MV88E6XXX && PTP_1588_CLOCK
+	depends on (NET_DSA_MV88E6XXX = y && PTP_1588_CLOCK = y) || \
+	           (NET_DSA_MV88E6XXX = m && PTP_1588_CLOCK)
 	help
 	  Say Y to enable PTP hardware timestamping on Marvell 88E6xxx switch
 	  chips that support it.
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 035/159] nfc: Fix potential resource leaks
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (33 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 034/159] net: dsa: mv88e6xxx: depend on PTP conditionally Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 036/159] bnxt_en: Simplify bnxt_xdp_buff_init() Greg Kroah-Hartman
                   ` (138 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Miaoqian Lin, David S. Miller, Sasha Levin

From: Miaoqian Lin <linmq006@gmail.com>

[ Upstream commit df49908f3c52d211aea5e2a14a93bbe67a2cb3af ]

nfc_get_device() take reference for the device, add missing
nfc_put_device() to release it when not need anymore.
Also fix the style warnning by use error EOPNOTSUPP instead of
ENOTSUPP.

Fixes: 5ce3f32b5264 ("NFC: netlink: SE API implementation")
Fixes: 29e76924cf08 ("nfc: netlink: Add capability to reply to vendor_cmd with data")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/nfc/netlink.c | 52 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 38 insertions(+), 14 deletions(-)

diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c
index 9d91087b9399..1fc339084d89 100644
--- a/net/nfc/netlink.c
+++ b/net/nfc/netlink.c
@@ -1497,6 +1497,7 @@ static int nfc_genl_se_io(struct sk_buff *skb, struct genl_info *info)
 	u32 dev_idx, se_idx;
 	u8 *apdu;
 	size_t apdu_len;
+	int rc;
 
 	if (!info->attrs[NFC_ATTR_DEVICE_INDEX] ||
 	    !info->attrs[NFC_ATTR_SE_INDEX] ||
@@ -1510,25 +1511,37 @@ static int nfc_genl_se_io(struct sk_buff *skb, struct genl_info *info)
 	if (!dev)
 		return -ENODEV;
 
-	if (!dev->ops || !dev->ops->se_io)
-		return -ENOTSUPP;
+	if (!dev->ops || !dev->ops->se_io) {
+		rc = -EOPNOTSUPP;
+		goto put_dev;
+	}
 
 	apdu_len = nla_len(info->attrs[NFC_ATTR_SE_APDU]);
-	if (apdu_len == 0)
-		return -EINVAL;
+	if (apdu_len == 0) {
+		rc = -EINVAL;
+		goto put_dev;
+	}
 
 	apdu = nla_data(info->attrs[NFC_ATTR_SE_APDU]);
-	if (!apdu)
-		return -EINVAL;
+	if (!apdu) {
+		rc = -EINVAL;
+		goto put_dev;
+	}
 
 	ctx = kzalloc(sizeof(struct se_io_ctx), GFP_KERNEL);
-	if (!ctx)
-		return -ENOMEM;
+	if (!ctx) {
+		rc = -ENOMEM;
+		goto put_dev;
+	}
 
 	ctx->dev_idx = dev_idx;
 	ctx->se_idx = se_idx;
 
-	return nfc_se_io(dev, se_idx, apdu, apdu_len, se_io_cb, ctx);
+	rc = nfc_se_io(dev, se_idx, apdu, apdu_len, se_io_cb, ctx);
+
+put_dev:
+	nfc_put_device(dev);
+	return rc;
 }
 
 static int nfc_genl_vendor_cmd(struct sk_buff *skb,
@@ -1551,14 +1564,21 @@ static int nfc_genl_vendor_cmd(struct sk_buff *skb,
 	subcmd = nla_get_u32(info->attrs[NFC_ATTR_VENDOR_SUBCMD]);
 
 	dev = nfc_get_device(dev_idx);
-	if (!dev || !dev->vendor_cmds || !dev->n_vendor_cmds)
+	if (!dev)
 		return -ENODEV;
 
+	if (!dev->vendor_cmds || !dev->n_vendor_cmds) {
+		err = -ENODEV;
+		goto put_dev;
+	}
+
 	if (info->attrs[NFC_ATTR_VENDOR_DATA]) {
 		data = nla_data(info->attrs[NFC_ATTR_VENDOR_DATA]);
 		data_len = nla_len(info->attrs[NFC_ATTR_VENDOR_DATA]);
-		if (data_len == 0)
-			return -EINVAL;
+		if (data_len == 0) {
+			err = -EINVAL;
+			goto put_dev;
+		}
 	} else {
 		data = NULL;
 		data_len = 0;
@@ -1573,10 +1593,14 @@ static int nfc_genl_vendor_cmd(struct sk_buff *skb,
 		dev->cur_cmd_info = info;
 		err = cmd->doit(dev, data, data_len);
 		dev->cur_cmd_info = NULL;
-		return err;
+		goto put_dev;
 	}
 
-	return -EOPNOTSUPP;
+	err = -EOPNOTSUPP;
+
+put_dev:
+	nfc_put_device(dev);
+	return err;
 }
 
 /* message building helper */
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 036/159] bnxt_en: Simplify bnxt_xdp_buff_init()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (34 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 035/159] nfc: Fix potential resource leaks Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 037/159] bnxt_en: Fix XDP RX path Greg Kroah-Hartman
                   ` (137 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andy Gospodarek, Somnath Kotur,
	Pavan Chebbi, Michael Chan, David S. Miller, Sasha Levin

From: Michael Chan <michael.chan@broadcom.com>

[ Upstream commit bbfc17e50ba2ed18dfef46b1c433d50a58566bf1 ]

bnxt_xdp_buff_init() does not modify the data_ptr or the len parameters,
so no need to pass in the addresses of these parameters.

Fixes: b231c3f3414c ("bnxt: refactor bnxt_rx_xdp to separate xdp_init_buff/xdp_prepare_buff")
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 6 +++---
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 9f8a6ce4b356..0166c99cb7c6 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1922,7 +1922,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 	dma_addr = rx_buf->mapping;
 
 	if (bnxt_xdp_attached(bp, rxr)) {
-		bnxt_xdp_buff_init(bp, rxr, cons, &data_ptr, &len, &xdp);
+		bnxt_xdp_buff_init(bp, rxr, cons, data_ptr, len, &xdp);
 		if (agg_bufs) {
 			u32 frag_len = bnxt_rx_agg_pages_xdp(bp, cpr, &xdp,
 							     cp_cons, agg_bufs,
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
index c3065ec0a479..1847f191577d 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
@@ -177,7 +177,7 @@ bool bnxt_xdp_attached(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
 }
 
 void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
-			u16 cons, u8 **data_ptr, unsigned int *len,
+			u16 cons, u8 *data_ptr, unsigned int len,
 			struct xdp_buff *xdp)
 {
 	struct bnxt_sw_rx_bd *rx_buf;
@@ -191,13 +191,13 @@ void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
 	offset = bp->rx_offset;
 
 	mapping = rx_buf->mapping - bp->rx_dma_offset;
-	dma_sync_single_for_cpu(&pdev->dev, mapping + offset, *len, bp->rx_dir);
+	dma_sync_single_for_cpu(&pdev->dev, mapping + offset, len, bp->rx_dir);
 
 	if (bp->xdp_has_frags)
 		buflen = BNXT_PAGE_MODE_BUF_SIZE + offset;
 
 	xdp_init_buff(xdp, buflen, &rxr->xdp_rxq);
-	xdp_prepare_buff(xdp, *data_ptr - offset, offset, *len, false);
+	xdp_prepare_buff(xdp, data_ptr - offset, offset, len, false);
 }
 
 void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr,
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h
index 505911ae095d..2bbdb8e7c506 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h
@@ -27,7 +27,7 @@ int bnxt_xdp_xmit(struct net_device *dev, int num_frames,
 bool bnxt_xdp_attached(struct bnxt *bp, struct bnxt_rx_ring_info *rxr);
 
 void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
-			u16 cons, u8 **data_ptr, unsigned int *len,
+			u16 cons, u8 *data_ptr, unsigned int len,
 			struct xdp_buff *xdp);
 void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr,
 			      struct xdp_buff *xdp);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 037/159] bnxt_en: Fix XDP RX path
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (35 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 036/159] bnxt_en: Simplify bnxt_xdp_buff_init() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 038/159] bnxt_en: Fix first buffer size calculations for XDP multi-buffer Greg Kroah-Hartman
                   ` (136 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andy Gospodarek, Pavan Chebbi,
	Michael Chan, David S. Miller, Sasha Levin

From: Michael Chan <michael.chan@broadcom.com>

[ Upstream commit 9b3e607871ea5ee90f10f5be3965fc07f2aa3ef7 ]

The XDP program can change the starting address of the RX data buffer and
this information needs to be passed back from bnxt_rx_xdp() to
bnxt_rx_pkt() for the XDP_PASS case so that the SKB can point correctly
to the modified buffer address.  Add back the data_ptr parameter to
bnxt_rx_xdp() to make this work.

Fixes: b231c3f3414c ("bnxt: refactor bnxt_rx_xdp to separate xdp_init_buff/xdp_prepare_buff")
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 7 +++++--
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h | 4 ++--
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 0166c99cb7c6..a83d534a096a 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1937,7 +1937,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 	}
 
 	if (xdp_active) {
-		if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &len, event)) {
+		if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &data_ptr, &len, event)) {
 			rc = 1;
 			goto next_rx;
 		}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
index 1847f191577d..2ceeaa818c1c 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
@@ -222,7 +222,8 @@ void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr,
  * false   - packet should be passed to the stack.
  */
 bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
-		 struct xdp_buff xdp, struct page *page, unsigned int *len, u8 *event)
+		 struct xdp_buff xdp, struct page *page, u8 **data_ptr,
+		 unsigned int *len, u8 *event)
 {
 	struct bpf_prog *xdp_prog = READ_ONCE(rxr->xdp_prog);
 	struct bnxt_tx_ring_info *txr;
@@ -255,8 +256,10 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
 		*event &= ~BNXT_RX_EVENT;
 
 	*len = xdp.data_end - xdp.data;
-	if (orig_data != xdp.data)
+	if (orig_data != xdp.data) {
 		offset = xdp.data - xdp.data_hard_start;
+		*data_ptr = xdp.data_hard_start + offset;
+	}
 
 	switch (act) {
 	case XDP_PASS:
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h
index 2bbdb8e7c506..ea430d6961df 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h
@@ -18,8 +18,8 @@ struct bnxt_sw_tx_bd *bnxt_xmit_bd(struct bnxt *bp,
 				   struct xdp_buff *xdp);
 void bnxt_tx_int_xdp(struct bnxt *bp, struct bnxt_napi *bnapi, int nr_pkts);
 bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
-		 struct xdp_buff xdp, struct page *page, unsigned int *len,
-		 u8 *event);
+		 struct xdp_buff xdp, struct page *page, u8 **data_ptr,
+		 unsigned int *len, u8 *event);
 int bnxt_xdp(struct net_device *dev, struct netdev_bpf *xdp);
 int bnxt_xdp_xmit(struct net_device *dev, int num_frames,
 		  struct xdp_frame **frames, u32 flags);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 038/159] bnxt_en: Fix first buffer size calculations for XDP multi-buffer
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (36 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 037/159] bnxt_en: Fix XDP RX path Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 039/159] bnxt_en: Fix HDS and jumbo thresholds for RX packets Greg Kroah-Hartman
                   ` (135 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Somnath Kotur, Andy Gospodarek,
	Michael Chan, David S. Miller, Sasha Levin

From: Michael Chan <michael.chan@broadcom.com>

[ Upstream commit 1abeacc1979fa4a756695f5030791d8f0fa934b9 ]

The size of the first buffer is always page size, and the useable
space is the page size minus the offset and the skb_shared_info size.
Make sure SKB and XDP buf sizes match so that the skb_shared_info
is at the same offset seen from the SKB and XDP_BUF.

build_skb() should be passed PAGE_SIZE.  xdp_init_buff() should
be passed PAGE_SIZE as well.  xdp_get_shared_info_from_buff() will
automatically deduct the skb_shared_info size if the XDP buffer
has frags.  There is no need to keep bp->xdp_has_frags.

Change BNXT_PAGE_MODE_BUF_SIZE to BNXT_MAX_PAGE_MODE_MTU_SBUF
since this constant is really the MTU with ethernet header size
subtracted.

Also fix the BNXT_MAX_PAGE_MODE_MTU macro with proper parentheses.

Fixes: 32861236190b ("bnxt: change receive ring space parameters")
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     |  9 +++++----
 drivers/net/ethernet/broadcom/bnxt/bnxt.h     | 15 +++++++++++----
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c |  7 +------
 3 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index a83d534a096a..b0c9c9813d23 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -988,8 +988,7 @@ static struct sk_buff *bnxt_rx_multi_page_skb(struct bnxt *bp,
 	dma_addr -= bp->rx_dma_offset;
 	dma_unmap_page_attrs(&bp->pdev->dev, dma_addr, PAGE_SIZE, bp->rx_dir,
 			     DMA_ATTR_WEAK_ORDERING);
-	skb = build_skb(page_address(page), BNXT_PAGE_MODE_BUF_SIZE +
-					    bp->rx_dma_offset);
+	skb = build_skb(page_address(page), PAGE_SIZE);
 	if (!skb) {
 		__free_page(page);
 		return NULL;
@@ -3966,8 +3965,10 @@ void bnxt_set_ring_params(struct bnxt *bp)
 		bp->rx_agg_ring_mask = (bp->rx_agg_nr_pages * RX_DESC_CNT) - 1;
 
 		if (BNXT_RX_PAGE_MODE(bp)) {
-			rx_space = BNXT_PAGE_MODE_BUF_SIZE;
-			rx_size = BNXT_MAX_PAGE_MODE_MTU;
+			rx_space = PAGE_SIZE;
+			rx_size = PAGE_SIZE -
+				  ALIGN(max(NET_SKB_PAD, XDP_PACKET_HEADROOM), 8) -
+				  SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
 		} else {
 			rx_size = SKB_DATA_ALIGN(BNXT_RX_COPY_THRESH + NET_IP_ALIGN);
 			rx_space = rx_size + NET_SKB_PAD +
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index d5fa43cfe524..02741d499bf4 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -591,12 +591,20 @@ struct nqe_cn {
 #define BNXT_RX_PAGE_SIZE (1 << BNXT_RX_PAGE_SHIFT)
 
 #define BNXT_MAX_MTU		9500
-#define BNXT_PAGE_MODE_BUF_SIZE \
+
+/* First RX buffer page in XDP multi-buf mode
+ *
+ * +-------------------------------------------------------------------------+
+ * | XDP_PACKET_HEADROOM | bp->rx_buf_use_size              | skb_shared_info|
+ * | (bp->rx_dma_offset) |                                  |                |
+ * +-------------------------------------------------------------------------+
+ */
+#define BNXT_MAX_PAGE_MODE_MTU_SBUF \
 	((unsigned int)PAGE_SIZE - VLAN_ETH_HLEN - NET_IP_ALIGN -	\
 	 XDP_PACKET_HEADROOM)
 #define BNXT_MAX_PAGE_MODE_MTU	\
-	BNXT_PAGE_MODE_BUF_SIZE - \
-	SKB_DATA_ALIGN((unsigned int)sizeof(struct skb_shared_info))
+	(BNXT_MAX_PAGE_MODE_MTU_SBUF - \
+	 SKB_DATA_ALIGN((unsigned int)sizeof(struct skb_shared_info)))
 
 #define BNXT_MIN_PKT_SIZE	52
 
@@ -2131,7 +2139,6 @@ struct bnxt {
 #define BNXT_DUMP_CRASH		1
 
 	struct bpf_prog		*xdp_prog;
-	u8			xdp_has_frags;
 
 	struct bnxt_ptp_cfg	*ptp_cfg;
 	u8			ptp_all_rx_tstamp;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
index 2ceeaa818c1c..36d5202c0aee 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
@@ -193,9 +193,6 @@ void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
 	mapping = rx_buf->mapping - bp->rx_dma_offset;
 	dma_sync_single_for_cpu(&pdev->dev, mapping + offset, len, bp->rx_dir);
 
-	if (bp->xdp_has_frags)
-		buflen = BNXT_PAGE_MODE_BUF_SIZE + offset;
-
 	xdp_init_buff(xdp, buflen, &rxr->xdp_rxq);
 	xdp_prepare_buff(xdp, data_ptr - offset, offset, len, false);
 }
@@ -404,10 +401,8 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog)
 		netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n");
 		return -EOPNOTSUPP;
 	}
-	if (prog) {
+	if (prog)
 		tx_xdp = bp->rx_nr_rings;
-		bp->xdp_has_frags = prog->aux->xdp_has_frags;
-	}
 
 	tc = netdev_get_num_tc(dev);
 	if (!tc)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 039/159] bnxt_en: Fix HDS and jumbo thresholds for RX packets
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (37 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 038/159] bnxt_en: Fix first buffer size calculations for XDP multi-buffer Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 040/159] vdpa/mlx5: Fix rule forwarding VLAN to TIR Greg Kroah-Hartman
                   ` (134 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mohammad Shuab Siddique,
	Ajit Khaparde, Andy Gospodarek, Michael Chan, David S. Miller,
	Sasha Levin

From: Michael Chan <michael.chan@broadcom.com>

[ Upstream commit a056ebcc30e2f78451d66f615d2f6bdada3e6438 ]

The recent XDP multi-buffer feature has introduced regressions in the
setting of HDS and jumbo thresholds.  HDS was accidentally disabled in
the nornmal mode without XDP.  This patch restores jumbo HDS placement
when not in XDP mode.  In XDP multi-buffer mode, HDS should be disabled
and the jumbo threshold should be set to the usable page size in the
first page buffer.

Fixes: 32861236190b ("bnxt: change receive ring space parameters")
Reviewed-by: Mohammad Shuab Siddique <mohammad-shuab.siddique@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index b0c9c9813d23..f5a8bae8d79a 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -5371,15 +5371,16 @@ static int bnxt_hwrm_vnic_set_hds(struct bnxt *bp, u16 vnic_id)
 	req->flags = cpu_to_le32(VNIC_PLCMODES_CFG_REQ_FLAGS_JUMBO_PLACEMENT);
 	req->enables = cpu_to_le32(VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID);
 
-	if (BNXT_RX_PAGE_MODE(bp) && !BNXT_RX_JUMBO_MODE(bp)) {
+	if (BNXT_RX_PAGE_MODE(bp)) {
+		req->jumbo_thresh = cpu_to_le16(bp->rx_buf_use_size);
+	} else {
 		req->flags |= cpu_to_le32(VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV4 |
 					  VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV6);
 		req->enables |=
 			cpu_to_le32(VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID);
+		req->jumbo_thresh = cpu_to_le16(bp->rx_copy_thresh);
+		req->hds_threshold = cpu_to_le16(bp->rx_copy_thresh);
 	}
-	/* thresholds not implemented in firmware yet */
-	req->jumbo_thresh = cpu_to_le16(bp->rx_copy_thresh);
-	req->hds_threshold = cpu_to_le16(bp->rx_copy_thresh);
 	req->vnic_id = cpu_to_le32(vnic->fw_vnic_id);
 	return hwrm_req_send(bp, req);
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 040/159] vdpa/mlx5: Fix rule forwarding VLAN to TIR
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (38 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 039/159] bnxt_en: Fix HDS and jumbo thresholds for RX packets Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 041/159] vdpa/mlx5: Fix wrong mac address deletion Greg Kroah-Hartman
                   ` (133 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jason Wang, Eli Cohen,
	Michael S. Tsirkin, Sasha Levin

From: Eli Cohen <elic@nvidia.com>

[ Upstream commit a6ce72c0fb6041f9871f880b2d02b294f7f49cb4 ]

Set the VLAN id to the header values field instead of overwriting the
headers criteria field.

Before this fix, VLAN filtering would not really work and tagged packets
would be forwarded unfiltered to the TIR.

Fixes: baf2ad3f6a98 ("vdpa/mlx5: Add RX MAC VLAN filter support")
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Eli Cohen <elic@nvidia.com>
Message-Id: <20221114131759.57883-2-elic@nvidia.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vdpa/mlx5/net/mlx5_vnet.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
index 90913365def4..3fb06dcee943 100644
--- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
+++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
@@ -1468,11 +1468,13 @@ static int mlx5_vdpa_add_mac_vlan_rules(struct mlx5_vdpa_net *ndev, u8 *mac,
 	dmac_v = MLX5_ADDR_OF(fte_match_param, headers_v, outer_headers.dmac_47_16);
 	eth_broadcast_addr(dmac_c);
 	ether_addr_copy(dmac_v, mac);
-	MLX5_SET(fte_match_set_lyr_2_4, headers_c, cvlan_tag, 1);
+	if (ndev->mvdev.actual_features & BIT_ULL(VIRTIO_NET_F_CTRL_VLAN)) {
+		MLX5_SET(fte_match_set_lyr_2_4, headers_c, cvlan_tag, 1);
+		MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, headers_c, first_vid);
+	}
 	if (tagged) {
 		MLX5_SET(fte_match_set_lyr_2_4, headers_v, cvlan_tag, 1);
-		MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, headers_c, first_vid);
-		MLX5_SET(fte_match_set_lyr_2_4, headers_c, first_vid, vid);
+		MLX5_SET(fte_match_set_lyr_2_4, headers_v, first_vid, vid);
 	}
 	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST;
 	dest.type = MLX5_FLOW_DESTINATION_TYPE_TIR;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 041/159] vdpa/mlx5: Fix wrong mac address deletion
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (39 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 040/159] vdpa/mlx5: Fix rule forwarding VLAN to TIR Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 042/159] vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init() Greg Kroah-Hartman
                   ` (132 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jason Wang, Eli Cohen,
	Michael S. Tsirkin, Sasha Levin

From: Eli Cohen <elic@nvidia.com>

[ Upstream commit 1ab53760d322c82fb4cb5e81b5817065801e3ec4 ]

Delete the old MAC from the table and not the new one which is not there
yet.

Fixes: baf2ad3f6a98 ("vdpa/mlx5: Add RX MAC VLAN filter support")
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Eli Cohen <elic@nvidia.com>
Message-Id: <20221114131759.57883-4-elic@nvidia.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vdpa/mlx5/net/mlx5_vnet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
index 3fb06dcee943..444d6572b2d0 100644
--- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
+++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
@@ -1686,7 +1686,7 @@ static virtio_net_ctrl_ack handle_ctrl_mac(struct mlx5_vdpa_dev *mvdev, u8 cmd)
 
 		/* Need recreate the flow table entry, so that the packet could forward back
 		 */
-		mac_vlan_del(ndev, ndev->config.mac, 0, false);
+		mac_vlan_del(ndev, mac_back, 0, false);
 
 		if (mac_vlan_add(ndev, ndev->config.mac, 0, false)) {
 			mlx5_vdpa_warn(mvdev, "failed to insert forward rules, try to restore\n");
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 042/159] vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (40 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 041/159] vdpa/mlx5: Fix wrong mac address deletion Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 043/159] vhost/vsock: Fix error handling in vhost_vsock_init() Greg Kroah-Hartman
                   ` (131 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, ruanjinjie, Stefano Garzarella,
	Michael S. Tsirkin, Jason Wang, Sasha Levin

From: ruanjinjie <ruanjinjie@huawei.com>

[ Upstream commit aeca7ff254843d49a8739f07f7dab1341450111d ]

Inject fault while probing module, if device_register() fails in
vdpasim_net_init() or vdpasim_blk_init(), but the refcount of kobject is
not decreased to 0, the name allocated in dev_set_name() is leaked.
Fix this by calling put_device(), so that name can be freed in
callback function kobject_cleanup().

(vdpa_sim_net)
unreferenced object 0xffff88807eebc370 (size 16):
  comm "modprobe", pid 3848, jiffies 4362982860 (age 18.153s)
  hex dump (first 16 bytes):
    76 64 70 61 73 69 6d 5f 6e 65 74 00 6b 6b 6b a5  vdpasim_net.kkk.
  backtrace:
    [<ffffffff8174f19e>] __kmalloc_node_track_caller+0x4e/0x150
    [<ffffffff81731d53>] kstrdup+0x33/0x60
    [<ffffffff83a5d421>] kobject_set_name_vargs+0x41/0x110
    [<ffffffff82d87aab>] dev_set_name+0xab/0xe0
    [<ffffffff82d91a23>] device_add+0xe3/0x1a80
    [<ffffffffa0270013>] 0xffffffffa0270013
    [<ffffffff81001c27>] do_one_initcall+0x87/0x2e0
    [<ffffffff813739cb>] do_init_module+0x1ab/0x640
    [<ffffffff81379d20>] load_module+0x5d00/0x77f0
    [<ffffffff8137bc40>] __do_sys_finit_module+0x110/0x1b0
    [<ffffffff83c4d505>] do_syscall_64+0x35/0x80
    [<ffffffff83e0006a>] entry_SYSCALL_64_after_hwframe+0x46/0xb0

(vdpa_sim_blk)
unreferenced object 0xffff8881070c1250 (size 16):
  comm "modprobe", pid 6844, jiffies 4364069319 (age 17.572s)
  hex dump (first 16 bytes):
    76 64 70 61 73 69 6d 5f 62 6c 6b 00 6b 6b 6b a5  vdpasim_blk.kkk.
  backtrace:
    [<ffffffff8174f19e>] __kmalloc_node_track_caller+0x4e/0x150
    [<ffffffff81731d53>] kstrdup+0x33/0x60
    [<ffffffff83a5d421>] kobject_set_name_vargs+0x41/0x110
    [<ffffffff82d87aab>] dev_set_name+0xab/0xe0
    [<ffffffff82d91a23>] device_add+0xe3/0x1a80
    [<ffffffffa0220013>] 0xffffffffa0220013
    [<ffffffff81001c27>] do_one_initcall+0x87/0x2e0
    [<ffffffff813739cb>] do_init_module+0x1ab/0x640
    [<ffffffff81379d20>] load_module+0x5d00/0x77f0
    [<ffffffff8137bc40>] __do_sys_finit_module+0x110/0x1b0
    [<ffffffff83c4d505>] do_syscall_64+0x35/0x80
    [<ffffffff83e0006a>] entry_SYSCALL_64_after_hwframe+0x46/0xb0

Fixes: 899c4d187f6a ("vdpa_sim_blk: add support for vdpa management tool")
Fixes: a3c06ae158dd ("vdpa_sim_net: Add support for user supported devices")

Signed-off-by: ruanjinjie <ruanjinjie@huawei.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20221110082348.4105476-1-ruanjinjie@huawei.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 4 +++-
 drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c
index c6db1a1baf76..f745926237a8 100644
--- a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c
+++ b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c
@@ -427,8 +427,10 @@ static int __init vdpasim_blk_init(void)
 	int ret;
 
 	ret = device_register(&vdpasim_blk_mgmtdev);
-	if (ret)
+	if (ret) {
+		put_device(&vdpasim_blk_mgmtdev);
 		return ret;
+	}
 
 	ret = vdpa_mgmtdev_register(&mgmt_dev);
 	if (ret)
diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
index c3cb225ea469..11f5a121df24 100644
--- a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
+++ b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
@@ -305,8 +305,10 @@ static int __init vdpasim_net_init(void)
 	int ret;
 
 	ret = device_register(&vdpasim_net_mgmtdev);
-	if (ret)
+	if (ret) {
+		put_device(&vdpasim_net_mgmtdev);
 		return ret;
+	}
 
 	ret = vdpa_mgmtdev_register(&mgmt_dev);
 	if (ret)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 043/159] vhost/vsock: Fix error handling in vhost_vsock_init()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (41 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 042/159] vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 044/159] vringh: fix range used in iotlb_translate() Greg Kroah-Hartman
                   ` (130 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Yuan Can, Michael S. Tsirkin,
	Stefano Garzarella, Jason Wang, Sasha Levin

From: Yuan Can <yuancan@huawei.com>

[ Upstream commit 7a4efe182ca61fb3e5307e69b261c57cbf434cd4 ]

A problem about modprobe vhost_vsock failed is triggered with the
following log given:

modprobe: ERROR: could not insert 'vhost_vsock': Device or resource busy

The reason is that vhost_vsock_init() returns misc_register() directly
without checking its return value, if misc_register() failed, it returns
without calling vsock_core_unregister() on vhost_transport, resulting the
vhost_vsock can never be installed later.
A simple call graph is shown as below:

 vhost_vsock_init()
   vsock_core_register() # register vhost_transport
   misc_register()
     device_create_with_groups()
       device_create_groups_vargs()
         dev = kzalloc(...) # OOM happened
   # return without unregister vhost_transport

Fix by calling vsock_core_unregister() when misc_register() returns error.

Fixes: 433fc58e6bf2 ("VSOCK: Introduce vhost_vsock.ko")
Signed-off-by: Yuan Can <yuancan@huawei.com>
Message-Id: <20221108101705.45981-1-yuancan@huawei.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vhost/vsock.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
index 5703775af129..10a7d23731fe 100644
--- a/drivers/vhost/vsock.c
+++ b/drivers/vhost/vsock.c
@@ -959,7 +959,14 @@ static int __init vhost_vsock_init(void)
 				  VSOCK_TRANSPORT_F_H2G);
 	if (ret < 0)
 		return ret;
-	return misc_register(&vhost_vsock_misc);
+
+	ret = misc_register(&vhost_vsock_misc);
+	if (ret) {
+		vsock_core_unregister(&vhost_transport.transport);
+		return ret;
+	}
+
+	return 0;
 };
 
 static void __exit vhost_vsock_exit(void)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 044/159] vringh: fix range used in iotlb_translate()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (42 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 043/159] vhost/vsock: Fix error handling in vhost_vsock_init() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 045/159] vhost: fix range used in translate_desc() Greg Kroah-Hartman
                   ` (129 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jason Wang, Stefano Garzarella,
	Michael S. Tsirkin, Sasha Levin

From: Stefano Garzarella <sgarzare@redhat.com>

[ Upstream commit f85efa9b0f5381874f727bd98f56787840313f0b ]

vhost_iotlb_itree_first() requires `start` and `last` parameters
to search for a mapping that overlaps the range.

In iotlb_translate() we cyclically call vhost_iotlb_itree_first(),
incrementing `addr` by the amount already translated, so rightly
we move the `start` parameter passed to vhost_iotlb_itree_first(),
but we should hold the `last` parameter constant.

Let's fix it by saving the `last` parameter value before incrementing
`addr` in the loop.

Fixes: 9ad9c49cfe97 ("vringh: IOTLB support")
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20221109102503.18816-2-sgarzare@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vhost/vringh.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
index 11f59dd06a74..828c29306565 100644
--- a/drivers/vhost/vringh.c
+++ b/drivers/vhost/vringh.c
@@ -1102,7 +1102,7 @@ static int iotlb_translate(const struct vringh *vrh,
 	struct vhost_iotlb_map *map;
 	struct vhost_iotlb *iotlb = vrh->iotlb;
 	int ret = 0;
-	u64 s = 0;
+	u64 s = 0, last = addr + len - 1;
 
 	spin_lock(vrh->iotlb_lock);
 
@@ -1114,8 +1114,7 @@ static int iotlb_translate(const struct vringh *vrh,
 			break;
 		}
 
-		map = vhost_iotlb_itree_first(iotlb, addr,
-					      addr + len - 1);
+		map = vhost_iotlb_itree_first(iotlb, addr, last);
 		if (!map || map->start > addr) {
 			ret = -EINVAL;
 			break;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 045/159] vhost: fix range used in translate_desc()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (43 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 044/159] vringh: fix range used in iotlb_translate() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 046/159] vhost-vdpa: fix an iotlb memory leak Greg Kroah-Hartman
                   ` (128 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jason Wang, Stefano Garzarella,
	Michael S. Tsirkin, Sasha Levin

From: Stefano Garzarella <sgarzare@redhat.com>

[ Upstream commit 98047313cdb46828093894d0ac8b1183b8b317f9 ]

vhost_iotlb_itree_first() requires `start` and `last` parameters
to search for a mapping that overlaps the range.

In translate_desc() we cyclically call vhost_iotlb_itree_first(),
incrementing `addr` by the amount already translated, so rightly
we move the `start` parameter passed to vhost_iotlb_itree_first(),
but we should hold the `last` parameter constant.

Let's fix it by saving the `last` parameter value before incrementing
`addr` in the loop.

Fixes: a9709d6874d5 ("vhost: convert pre sorted vhost memory array to interval tree")
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20221109102503.18816-3-sgarzare@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vhost/vhost.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 40097826cff0..3c2359570df9 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -2053,7 +2053,7 @@ static int translate_desc(struct vhost_virtqueue *vq, u64 addr, u32 len,
 	struct vhost_dev *dev = vq->dev;
 	struct vhost_iotlb *umem = dev->iotlb ? dev->iotlb : dev->umem;
 	struct iovec *_iov;
-	u64 s = 0;
+	u64 s = 0, last = addr + len - 1;
 	int ret = 0;
 
 	while ((u64)len > s) {
@@ -2063,7 +2063,7 @@ static int translate_desc(struct vhost_virtqueue *vq, u64 addr, u32 len,
 			break;
 		}
 
-		map = vhost_iotlb_itree_first(umem, addr, addr + len - 1);
+		map = vhost_iotlb_itree_first(umem, addr, last);
 		if (map == NULL || map->start > addr) {
 			if (umem != dev->iotlb) {
 				ret = -EFAULT;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 046/159] vhost-vdpa: fix an iotlb memory leak
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (44 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 045/159] vhost: fix range used in translate_desc() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 047/159] vdpa_sim: fix vringh initialization in vdpasim_queue_ready() Greg Kroah-Hartman
                   ` (127 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Stefano Garzarella,
	Michael S. Tsirkin, Jason Wang, Sasha Levin

From: Stefano Garzarella <sgarzare@redhat.com>

[ Upstream commit c070c1912a83432530cbb4271d5b9b11fa36b67a ]

Before commit 3d5698793897 ("vhost-vdpa: introduce asid based IOTLB")
we called vhost_vdpa_iotlb_unmap(v, iotlb, 0ULL, 0ULL - 1) during
release to free all the resources allocated when processing user IOTLB
messages through vhost_vdpa_process_iotlb_update().
That commit changed the handling of IOTLB a bit, and we accidentally
removed some code called during the release.

We partially fixed this with commit 037d4305569a ("vhost-vdpa: call
vhost_vdpa_cleanup during the release") but a potential memory leak is
still there as showed by kmemleak if the application does not send
VHOST_IOTLB_INVALIDATE or crashes:

  unreferenced object 0xffff888007fbaa30 (size 16):
    comm "blkio-bench", pid 914, jiffies 4294993521 (age 885.500s)
    hex dump (first 16 bytes):
      40 73 41 07 80 88 ff ff 00 00 00 00 00 00 00 00  @sA.............
    backtrace:
      [<0000000087736d2a>] kmem_cache_alloc_trace+0x142/0x1c0
      [<0000000060740f50>] vhost_vdpa_process_iotlb_msg+0x68c/0x901 [vhost_vdpa]
      [<0000000083e8e205>] vhost_chr_write_iter+0xc0/0x4a0 [vhost]
      [<000000008f2f414a>] vhost_vdpa_chr_write_iter+0x18/0x20 [vhost_vdpa]
      [<00000000de1cd4a0>] vfs_write+0x216/0x4b0
      [<00000000a2850200>] ksys_write+0x71/0xf0
      [<00000000de8e720b>] __x64_sys_write+0x19/0x20
      [<0000000018b12cbb>] do_syscall_64+0x3f/0x90
      [<00000000986ec465>] entry_SYSCALL_64_after_hwframe+0x63/0xcd

Let's fix this calling vhost_vdpa_iotlb_unmap() on the whole range in
vhost_vdpa_remove_as(). We move that call before vhost_dev_cleanup()
since we need a valid v->vdev.mm in vhost_vdpa_pa_unmap().
vhost_iotlb_reset() call can be removed, since vhost_vdpa_iotlb_unmap()
on the whole range removes all the entries.

The kmemleak log reported was observed with a vDPA device that has `use_va`
set to true (e.g. VDUSE). This patch has been tested with both types of
devices.

Fixes: 037d4305569a ("vhost-vdpa: call vhost_vdpa_cleanup during the release")
Fixes: 3d5698793897 ("vhost-vdpa: introduce asid based IOTLB")
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20221109154213.146789-1-sgarzare@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vhost/vdpa.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index 166044642fd5..b08e07fc7d1f 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -65,6 +65,10 @@ static DEFINE_IDA(vhost_vdpa_ida);
 
 static dev_t vhost_vdpa_major;
 
+static void vhost_vdpa_iotlb_unmap(struct vhost_vdpa *v,
+				   struct vhost_iotlb *iotlb,
+				   u64 start, u64 last);
+
 static inline u32 iotlb_to_asid(struct vhost_iotlb *iotlb)
 {
 	struct vhost_vdpa_as *as = container_of(iotlb, struct
@@ -135,7 +139,7 @@ static int vhost_vdpa_remove_as(struct vhost_vdpa *v, u32 asid)
 		return -EINVAL;
 
 	hlist_del(&as->hash_link);
-	vhost_iotlb_reset(&as->iotlb);
+	vhost_vdpa_iotlb_unmap(v, &as->iotlb, 0ULL, 0ULL - 1);
 	kfree(as);
 
 	return 0;
@@ -1162,14 +1166,14 @@ static void vhost_vdpa_cleanup(struct vhost_vdpa *v)
 	struct vhost_vdpa_as *as;
 	u32 asid;
 
-	vhost_dev_cleanup(&v->vdev);
-	kfree(v->vdev.vqs);
-
 	for (asid = 0; asid < v->vdpa->nas; asid++) {
 		as = asid_to_as(v, asid);
 		if (as)
 			vhost_vdpa_remove_as(v, asid);
 	}
+
+	vhost_dev_cleanup(&v->vdev);
+	kfree(v->vdev.vqs);
 }
 
 static int vhost_vdpa_open(struct inode *inode, struct file *filep)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 047/159] vdpa_sim: fix vringh initialization in vdpasim_queue_ready()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (45 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 046/159] vhost-vdpa: fix an iotlb memory leak Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 048/159] virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session() Greg Kroah-Hartman
                   ` (126 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Stefano Garzarella,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Sasha Levin

From: Stefano Garzarella <sgarzare@redhat.com>

[ Upstream commit 794ec498c9fa79e6bfd71b931410d5897a9c00d4 ]

When we initialize vringh, we should pass the features and the
number of elements in the virtqueue negotiated with the driver,
otherwise operations with vringh may fail.

This was discovered in a case where the driver sets a number of
elements in the virtqueue different from the value returned by
.get_vq_num_max().

In vdpasim_vq_reset() is safe to initialize the vringh with
default values, since the virtqueue will not be used until
vdpasim_queue_ready() is called again.

Fixes: 2c53d0f64c06 ("vdpasim: vDPA device simulator")
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20221110141335.62171-1-sgarzare@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Acked-by: Eugenio Pérez <eperezma@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vdpa/vdpa_sim/vdpa_sim.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c
index b071f0d842fb..b20689f8fe89 100644
--- a/drivers/vdpa/vdpa_sim/vdpa_sim.c
+++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c
@@ -67,8 +67,7 @@ static void vdpasim_queue_ready(struct vdpasim *vdpasim, unsigned int idx)
 {
 	struct vdpasim_virtqueue *vq = &vdpasim->vqs[idx];
 
-	vringh_init_iotlb(&vq->vring, vdpasim->dev_attr.supported_features,
-			  VDPASIM_QUEUE_MAX, false,
+	vringh_init_iotlb(&vq->vring, vdpasim->features, vq->num, false,
 			  (struct vring_desc *)(uintptr_t)vq->desc_addr,
 			  (struct vring_avail *)
 			  (uintptr_t)vq->driver_addr,
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 048/159] virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (46 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 047/159] vdpa_sim: fix vringh initialization in vdpasim_queue_ready() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 049/159] vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove Greg Kroah-Hartman
                   ` (125 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Wei Yongjun, Michael S. Tsirkin,
	Gonglei, zhenwei pi, Jason Wang, Sasha Levin

From: Wei Yongjun <weiyongjun1@huawei.com>

[ Upstream commit b1d65f717cd6305a396a8738e022c6f7c65cfbe8 ]

'vc_ctrl_req' is alloced in virtio_crypto_alg_skcipher_close_session(),
and should be freed in the invalid ctrl_status->status error handling
case. Otherwise there is a memory leak.

Fixes: 0756ad15b1fe ("virtio-crypto: use private buffer for control request")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Message-Id: <20221114110740.537276-1-weiyongjun@huaweicloud.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Gonglei <arei.gonglei@huawei.com>
Acked-by: zhenwei pi<pizhenwei@bytedance.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/crypto/virtio/virtio_crypto_skcipher_algs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c
index e553ccadbcbc..e5876286828b 100644
--- a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c
@@ -239,7 +239,8 @@ static int virtio_crypto_alg_skcipher_close_session(
 		pr_err("virtio_crypto: Close session failed status: %u, session_id: 0x%llx\n",
 			ctrl_status->status, destroy_session->session_id);
 
-		return -EINVAL;
+		err = -EINVAL;
+		goto out;
 	}
 
 	err = 0;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 049/159] vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (47 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 048/159] virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 050/159] vdpasim: fix memory leak when freeing IOTLBs Greg Kroah-Hartman
                   ` (124 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Rong Wang, Nanyong Sun,
	Michael S. Tsirkin, Cindy Lu, Jason Wang, Sasha Levin

From: Rong Wang <wangrong68@huawei.com>

[ Upstream commit ed843d6ed7310a27cf7c8ee0a82a482eed0cb4a6 ]

In vp_vdpa_remove(), the code kfree(&vp_vdpa_mgtdev->mgtdev.id_table) uses
a reference of pointer as the argument of kfree, which is the wrong pointer
and then may hit crash like this:

Unable to handle kernel paging request at virtual address 00ffff003363e30c
Internal error: Oops: 96000004 [#1] SMP
Call trace:
 rb_next+0x20/0x5c
 ext4_readdir+0x494/0x5c4 [ext4]
 iterate_dir+0x168/0x1b4
 __se_sys_getdents64+0x68/0x170
 __arm64_sys_getdents64+0x24/0x30
 el0_svc_common.constprop.0+0x7c/0x1bc
 do_el0_svc+0x2c/0x94
 el0_svc+0x20/0x30
 el0_sync_handler+0xb0/0xb4
 el0_sync+0x160/0x180
Code: 54000220 f9400441 b4000161 aa0103e0 (f9400821)
SMP: stopping secondary CPUs
Starting crashdump kernel...

Fixes: ffbda8e9df10 ("vdpa/vp_vdpa : add vdpa tool support in vp_vdpa")
Signed-off-by: Rong Wang <wangrong68@huawei.com>
Signed-off-by: Nanyong Sun <sunnanyong@huawei.com>
Message-Id: <20221207120813.2837529-1-sunnanyong@huawei.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cindy Lu <lulu@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vdpa/virtio_pci/vp_vdpa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/vdpa/virtio_pci/vp_vdpa.c b/drivers/vdpa/virtio_pci/vp_vdpa.c
index d448db0c4de3..8fe267ca3e76 100644
--- a/drivers/vdpa/virtio_pci/vp_vdpa.c
+++ b/drivers/vdpa/virtio_pci/vp_vdpa.c
@@ -647,7 +647,7 @@ static void vp_vdpa_remove(struct pci_dev *pdev)
 	mdev = vp_vdpa_mgtdev->mdev;
 	vp_modern_remove(mdev);
 	vdpa_mgmtdev_unregister(&vp_vdpa_mgtdev->mgtdev);
-	kfree(&vp_vdpa_mgtdev->mgtdev.id_table);
+	kfree(vp_vdpa_mgtdev->mgtdev.id_table);
 	kfree(mdev);
 	kfree(vp_vdpa_mgtdev);
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 050/159] vdpasim: fix memory leak when freeing IOTLBs
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (48 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 049/159] vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 051/159] net/mlx5: E-Switch, properly handle ingress tagged packets on VST Greg Kroah-Hartman
                   ` (123 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Gautam Dawar, Jason Wang,
	Michael S. Tsirkin, Gautam Dawar, Sasha Levin

From: Jason Wang <jasowang@redhat.com>

[ Upstream commit 0b7a04a30eef20e6b24926a45c0ce7906ae85bd6 ]

After commit bda324fd037a ("vdpasim: control virtqueue support"),
vdpasim->iommu became an array of IOTLB, so we should clean the
mappings of each free one by one instead of just deleting the ranges
in the first IOTLB which may leak maps.

Fixes: bda324fd037a ("vdpasim: control virtqueue support")
Cc: Gautam Dawar <gautam.dawar@xilinx.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20221213090717.61529-1-jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Gautam Dawar <gautam.dawar@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vdpa/vdpa_sim/vdpa_sim.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c
index b20689f8fe89..cb88891b44a8 100644
--- a/drivers/vdpa/vdpa_sim/vdpa_sim.c
+++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c
@@ -689,7 +689,9 @@ static void vdpasim_free(struct vdpa_device *vdpa)
 	}
 
 	kvfree(vdpasim->buffer);
-	vhost_iotlb_free(vdpasim->iommu);
+	for (i = 0; i < vdpasim->dev_attr.nas; i++)
+		vhost_iotlb_reset(&vdpasim->iommu[i]);
+	kfree(vdpasim->iommu);
 	kfree(vdpasim->vqs);
 	kfree(vdpasim->config);
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 051/159] net/mlx5: E-Switch, properly handle ingress tagged packets on VST
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (49 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 050/159] vdpasim: fix memory leak when freeing IOTLBs Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 052/159] net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path Greg Kroah-Hartman
                   ` (122 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Moshe Shemesh, Mark Bloch,
	Saeed Mahameed, Sasha Levin

From: Moshe Shemesh <moshe@nvidia.com>

[ Upstream commit 1f0ae22ab470946143485a02cc1cd7e05c0f9120 ]

Fix SRIOV VST mode behavior to insert cvlan when a guest tag is already
present in the frame. Previous VST mode behavior was to drop packets or
override existing tag, depending on the device version.

In this patch we fix this behavior by correctly building the HW steering
rule with a push vlan action, or for older devices we ask the FW to stack
the vlan when a vlan is already present.

Fixes: 07bab9502641 ("net/mlx5: E-Switch, Refactor eswitch ingress acl codes")
Fixes: dfcb1ed3c331 ("net/mlx5: E-Switch, Vport ingress/egress ACLs rules for VST mode")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../mellanox/mlx5/core/esw/acl/egress_lgcy.c  |  7 +++-
 .../mellanox/mlx5/core/esw/acl/ingress_lgcy.c | 33 ++++++++++++++++---
 .../net/ethernet/mellanox/mlx5/core/eswitch.c | 30 ++++++++++++-----
 .../net/ethernet/mellanox/mlx5/core/eswitch.h |  6 ++++
 include/linux/mlx5/device.h                   |  5 +++
 include/linux/mlx5/mlx5_ifc.h                 |  3 +-
 6 files changed, 68 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c b/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c
index 60a73990017c..6b4c9ffad95b 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c
@@ -67,6 +67,7 @@ static void esw_acl_egress_lgcy_groups_destroy(struct mlx5_vport *vport)
 int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 			      struct mlx5_vport *vport)
 {
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	struct mlx5_flow_destination drop_ctr_dst = {};
 	struct mlx5_flow_destination *dst = NULL;
 	struct mlx5_fc *drop_counter = NULL;
@@ -77,6 +78,7 @@ int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 	 */
 	int table_size = 2;
 	int dest_num = 0;
+	int actions_flag;
 	int err = 0;
 
 	if (vport->egress.legacy.drop_counter) {
@@ -119,8 +121,11 @@ int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 		  vport->vport, vport->info.vlan, vport->info.qos);
 
 	/* Allowed vlan rule */
+	actions_flag = MLX5_FLOW_CONTEXT_ACTION_ALLOW;
+	if (vst_mode_steering)
+		actions_flag |= MLX5_FLOW_CONTEXT_ACTION_VLAN_POP;
 	err = esw_egress_acl_vlan_create(esw, vport, NULL, vport->info.vlan,
-					 MLX5_FLOW_CONTEXT_ACTION_ALLOW);
+					 actions_flag);
 	if (err)
 		goto out;
 
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c b/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c
index b1a5199260f6..093ed86a0acd 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c
@@ -139,11 +139,14 @@ static void esw_acl_ingress_lgcy_groups_destroy(struct mlx5_vport *vport)
 int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 			       struct mlx5_vport *vport)
 {
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	struct mlx5_flow_destination drop_ctr_dst = {};
 	struct mlx5_flow_destination *dst = NULL;
 	struct mlx5_flow_act flow_act = {};
 	struct mlx5_flow_spec *spec = NULL;
 	struct mlx5_fc *counter = NULL;
+	bool vst_check_cvlan = false;
+	bool vst_push_cvlan = false;
 	/* The ingress acl table contains 4 groups
 	 * (2 active rules at the same time -
 	 *      1 allow rule from one of the first 3 groups.
@@ -203,7 +206,26 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		goto out;
 	}
 
-	if (vport->info.vlan || vport->info.qos)
+	if ((vport->info.vlan || vport->info.qos)) {
+		if (vst_mode_steering)
+			vst_push_cvlan = true;
+		else if (!MLX5_CAP_ESW(esw->dev, vport_cvlan_insert_always))
+			vst_check_cvlan = true;
+	}
+
+	if (vst_check_cvlan || vport->info.spoofchk)
+		spec->match_criteria_enable = MLX5_MATCH_OUTER_HEADERS;
+
+	/* Create ingress allow rule */
+	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_ALLOW;
+	if (vst_push_cvlan) {
+		flow_act.action |= MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH;
+		flow_act.vlan[0].prio = vport->info.qos;
+		flow_act.vlan[0].vid = vport->info.vlan;
+		flow_act.vlan[0].ethtype = ETH_P_8021Q;
+	}
+
+	if (vst_check_cvlan)
 		MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria,
 				 outer_headers.cvlan_tag);
 
@@ -218,9 +240,6 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		ether_addr_copy(smac_v, vport->info.mac);
 	}
 
-	/* Create ingress allow rule */
-	spec->match_criteria_enable = MLX5_MATCH_OUTER_HEADERS;
-	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_ALLOW;
 	vport->ingress.allow_rule = mlx5_add_flow_rules(vport->ingress.acl, spec,
 							&flow_act, NULL, 0);
 	if (IS_ERR(vport->ingress.allow_rule)) {
@@ -232,6 +251,9 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		goto out;
 	}
 
+	if (!vst_check_cvlan && !vport->info.spoofchk)
+		goto out;
+
 	memset(&flow_act, 0, sizeof(flow_act));
 	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_DROP;
 	/* Attach drop flow counter */
@@ -257,7 +279,8 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 	return 0;
 
 out:
-	esw_acl_ingress_lgcy_cleanup(esw, vport);
+	if (err)
+		esw_acl_ingress_lgcy_cleanup(esw, vport);
 	kvfree(spec);
 	return err;
 }
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
index 374e3fbdc2cf..788a6ab5c463 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
@@ -161,10 +161,17 @@ static int modify_esw_vport_cvlan(struct mlx5_core_dev *dev, u16 vport,
 			 esw_vport_context.vport_cvlan_strip, 1);
 
 	if (set_flags & SET_VLAN_INSERT) {
-		/* insert only if no vlan in packet */
-		MLX5_SET(modify_esw_vport_context_in, in,
-			 esw_vport_context.vport_cvlan_insert, 1);
-
+		if (MLX5_CAP_ESW(dev, vport_cvlan_insert_always)) {
+			/* insert either if vlan exist in packet or not */
+			MLX5_SET(modify_esw_vport_context_in, in,
+				 esw_vport_context.vport_cvlan_insert,
+				 MLX5_VPORT_CVLAN_INSERT_ALWAYS);
+		} else {
+			/* insert only if no vlan in packet */
+			MLX5_SET(modify_esw_vport_context_in, in,
+				 esw_vport_context.vport_cvlan_insert,
+				 MLX5_VPORT_CVLAN_INSERT_WHEN_NO_CVLAN);
+		}
 		MLX5_SET(modify_esw_vport_context_in, in,
 			 esw_vport_context.cvlan_pcp, qos);
 		MLX5_SET(modify_esw_vport_context_in, in,
@@ -774,6 +781,7 @@ static void esw_vport_cleanup_acl(struct mlx5_eswitch *esw,
 
 static int esw_vport_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport)
 {
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	u16 vport_num = vport->vport;
 	int flags;
 	int err;
@@ -800,8 +808,9 @@ static int esw_vport_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport)
 
 	flags = (vport->info.vlan || vport->info.qos) ?
 		SET_VLAN_STRIP | SET_VLAN_INSERT : 0;
-	modify_esw_vport_cvlan(esw->dev, vport_num, vport->info.vlan,
-			       vport->info.qos, flags);
+	if (esw->mode == MLX5_ESWITCH_OFFLOADS || !vst_mode_steering)
+		modify_esw_vport_cvlan(esw->dev, vport_num, vport->info.vlan,
+				       vport->info.qos, flags);
 
 	return 0;
 }
@@ -1805,6 +1814,7 @@ int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
 				  u16 vport, u16 vlan, u8 qos, u8 set_flags)
 {
 	struct mlx5_vport *evport = mlx5_eswitch_get_vport(esw, vport);
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	int err = 0;
 
 	if (IS_ERR(evport))
@@ -1812,9 +1822,11 @@ int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
 	if (vlan > 4095 || qos > 7)
 		return -EINVAL;
 
-	err = modify_esw_vport_cvlan(esw->dev, vport, vlan, qos, set_flags);
-	if (err)
-		return err;
+	if (esw->mode == MLX5_ESWITCH_OFFLOADS || !vst_mode_steering) {
+		err = modify_esw_vport_cvlan(esw->dev, vport, vlan, qos, set_flags);
+		if (err)
+			return err;
+	}
 
 	evport->info.vlan = vlan;
 	evport->info.qos = qos;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
index 3029bc1c0dd0..5db76af35d3f 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
@@ -518,6 +518,12 @@ int mlx5_eswitch_del_vlan_action(struct mlx5_eswitch *esw,
 int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
 				  u16 vport, u16 vlan, u8 qos, u8 set_flags);
 
+static inline bool esw_vst_mode_is_steering(struct mlx5_eswitch *esw)
+{
+	return (MLX5_CAP_ESW_EGRESS_ACL(esw->dev, pop_vlan) &&
+		MLX5_CAP_ESW_INGRESS_ACL(esw->dev, push_vlan));
+}
+
 static inline bool mlx5_eswitch_vlan_actions_supported(struct mlx5_core_dev *dev,
 						       u8 vlan_depth)
 {
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h
index 1ff91cb79ded..2383076a7306 100644
--- a/include/linux/mlx5/device.h
+++ b/include/linux/mlx5/device.h
@@ -1085,6 +1085,11 @@ enum {
 	MLX5_VPORT_ADMIN_STATE_AUTO  = 0x2,
 };
 
+enum {
+	MLX5_VPORT_CVLAN_INSERT_WHEN_NO_CVLAN  = 0x1,
+	MLX5_VPORT_CVLAN_INSERT_ALWAYS         = 0x3,
+};
+
 enum {
 	MLX5_L3_PROT_TYPE_IPV4		= 0,
 	MLX5_L3_PROT_TYPE_IPV6		= 1,
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index 5a4e914e2a6f..e45bdec73baf 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -907,7 +907,8 @@ struct mlx5_ifc_e_switch_cap_bits {
 	u8         vport_svlan_insert[0x1];
 	u8         vport_cvlan_insert_if_not_exist[0x1];
 	u8         vport_cvlan_insert_overwrite[0x1];
-	u8         reserved_at_5[0x2];
+	u8         reserved_at_5[0x1];
+	u8         vport_cvlan_insert_always[0x1];
 	u8         esw_shared_ingress_acl[0x1];
 	u8         esw_uplink_ingress_acl[0x1];
 	u8         root_ft_on_other_esw[0x1];
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 052/159] net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (50 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 051/159] net/mlx5: E-Switch, properly handle ingress tagged packets on VST Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 053/159] net/mlx5: Fix io_eq_size and event_eq_size params validation Greg Kroah-Hartman
                   ` (121 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jiri Pirko, Saeed Mahameed, Sasha Levin

From: Jiri Pirko <jiri@nvidia.com>

[ Upstream commit 2a35b2c2e6a252eda2134aae6a756861d9299531 ]

There are two cleanup calls missing in mlx5_init_once() error path.
Add them making the error path flow to be the same as
mlx5_cleanup_once().

Fixes: 52ec462eca9b ("net/mlx5: Add reserved-gids support")
Fixes: 7c39afb394c7 ("net/mlx5: PTP code migration to driver core section")
Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index e58775a7d955..6776bf5b8d55 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -1051,6 +1051,8 @@ static int mlx5_init_once(struct mlx5_core_dev *dev)
 err_tables_cleanup:
 	mlx5_geneve_destroy(dev->geneve);
 	mlx5_vxlan_destroy(dev->vxlan);
+	mlx5_cleanup_clock(dev);
+	mlx5_cleanup_reserved_gids(dev);
 	mlx5_cq_debugfs_cleanup(dev);
 	mlx5_fw_reset_cleanup(dev);
 err_events_cleanup:
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 053/159] net/mlx5: Fix io_eq_size and event_eq_size params validation
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (51 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 052/159] net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 054/159] net/mlx5: Avoid recovery in probe flows Greg Kroah-Hartman
                   ` (120 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Drory, Moshe Shemesh,
	Saeed Mahameed, Sasha Levin

From: Shay Drory <shayd@nvidia.com>

[ Upstream commit 44aee8ea15ac205490a41b00cbafcccbf9f7f82b ]

io_eq_size and event_eq_size params are of param type
DEVLINK_PARAM_TYPE_U32. But, the validation callback is addressing them
as DEVLINK_PARAM_TYPE_U16.

This cause mismatch in validation in big-endian systems, in which
values in range were rejected while 268500991 was accepted.
Fix it by checking the U32 value in the validation callback.

Fixes: 0844fa5f7b89 ("net/mlx5: Let user configure io_eq_size param")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
index 66c6a7017695..9e4e8d551884 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
@@ -563,7 +563,7 @@ static int mlx5_devlink_eq_depth_validate(struct devlink *devlink, u32 id,
 					  union devlink_param_value val,
 					  struct netlink_ext_ack *extack)
 {
-	return (val.vu16 >= 64 && val.vu16 <= 4096) ? 0 : -EINVAL;
+	return (val.vu32 >= 64 && val.vu32 <= 4096) ? 0 : -EINVAL;
 }
 
 static const struct devlink_param mlx5_devlink_params[] = {
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 054/159] net/mlx5: Avoid recovery in probe flows
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (52 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 053/159] net/mlx5: Fix io_eq_size and event_eq_size params validation Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 055/159] net/mlx5: Fix RoCE setting at HCA level Greg Kroah-Hartman
                   ` (119 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Drory, Moshe Shemesh,
	Saeed Mahameed, Sasha Levin

From: Shay Drory <shayd@nvidia.com>

[ Upstream commit 9078e843efec530f279a155f262793c58b0746bd ]

Currently, recovery is done without considering whether the device is
still in probe flow.
This may lead to recovery before device have finished probed
successfully. e.g.: while mlx5_init_one() is running. Recovery flow is
using functionality that is loaded only by mlx5_init_one(), and there
is no point in running recovery without mlx5_init_one() finished
successfully.

Fix it by waiting for probe flow to finish and checking whether the
device is probed before trying to perform recovery.

Fixes: 51d138c2610a ("net/mlx5: Fix health error state handling")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/health.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/health.c b/drivers/net/ethernet/mellanox/mlx5/core/health.c
index 86ed87d704f7..96417c5feed7 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/health.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/health.c
@@ -674,6 +674,12 @@ static void mlx5_fw_fatal_reporter_err_work(struct work_struct *work)
 	dev = container_of(priv, struct mlx5_core_dev, priv);
 	devlink = priv_to_devlink(dev);
 
+	mutex_lock(&dev->intf_state_mutex);
+	if (test_bit(MLX5_DROP_NEW_HEALTH_WORK, &health->flags)) {
+		mlx5_core_err(dev, "health works are not permitted at this stage\n");
+		return;
+	}
+	mutex_unlock(&dev->intf_state_mutex);
 	enter_error_state(dev, false);
 	if (IS_ERR_OR_NULL(health->fw_fatal_reporter)) {
 		devl_lock(devlink);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 055/159] net/mlx5: Fix RoCE setting at HCA level
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (53 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 054/159] net/mlx5: Avoid recovery in probe flows Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 056/159] net/mlx5e: IPoIB, Dont allow CQE compression to be turned on by default Greg Kroah-Hartman
                   ` (118 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Drory, Moshe Shemesh,
	Saeed Mahameed, Sasha Levin

From: Shay Drory <shayd@nvidia.com>

[ Upstream commit c4ad5f2bdad56265b23d3635494ecdb205431807 ]

mlx5 PF can disable RoCE for its VFs and SFs. In such case RoCE is
marked as unsupported on those VFs/SFs.
The cited patch added an option for disable (and enable) RoCE at HCA
level. However, that commit didn't check whether RoCE is supported on
the HCA and enabled user to try and set RoCE to on.
Fix it by checking whether the HCA supports RoCE.

Fixes: fbfa97b4d79f ("net/mlx5: Disable roce at HCA level")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 2 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
index 9e4e8d551884..97e9ec44a759 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
@@ -468,7 +468,7 @@ static int mlx5_devlink_enable_roce_validate(struct devlink *devlink, u32 id,
 	bool new_state = val.vbool;
 
 	if (new_state && !MLX5_CAP_GEN(dev, roce) &&
-	    !MLX5_CAP_GEN(dev, roce_rw_supported)) {
+	    !(MLX5_CAP_GEN(dev, roce_rw_supported) && MLX5_CAP_GEN_MAX(dev, roce))) {
 		NL_SET_ERR_MSG_MOD(extack, "Device doesn't support RoCE");
 		return -EOPNOTSUPP;
 	}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 6776bf5b8d55..00758312df06 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -614,7 +614,7 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx)
 		MLX5_SET(cmd_hca_cap, set_hca_cap, num_total_dynamic_vf_msix,
 			 MLX5_CAP_GEN_MAX(dev, num_total_dynamic_vf_msix));
 
-	if (MLX5_CAP_GEN(dev, roce_rw_supported))
+	if (MLX5_CAP_GEN(dev, roce_rw_supported) && MLX5_CAP_GEN_MAX(dev, roce))
 		MLX5_SET(cmd_hca_cap, set_hca_cap, roce,
 			 mlx5_is_roce_on(dev));
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 056/159] net/mlx5e: IPoIB, Dont allow CQE compression to be turned on by default
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (54 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 055/159] net/mlx5: Fix RoCE setting at HCA level Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 057/159] net/mlx5e: Fix RX reporter for XSK RQs Greg Kroah-Hartman
                   ` (117 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dragos Tatulea, Gal Pressman,
	Saeed Mahameed, Sasha Levin

From: Dragos Tatulea <dtatulea@nvidia.com>

[ Upstream commit b12d581e83e3ae1080c32ab83f123005bd89a840 ]

mlx5e_build_nic_params will turn CQE compression on if the hardware
capability is enabled and the slow_pci_heuristic condition is detected.
As IPoIB doesn't support CQE compression, make sure to disable the
feature in the IPoIB profile init.

Please note that the feature is not exposed to the user for IPoIB
interfaces, so it can't be subsequently turned on.

Fixes: b797a684b0dd ("net/mlx5e: Enable CQE compression when PCI is slower than link")
Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
Reviewed-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
index 4e3a75496dd9..84f5352b0ce1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
@@ -71,6 +71,10 @@ static void mlx5i_build_nic_params(struct mlx5_core_dev *mdev,
 	params->packet_merge.type = MLX5E_PACKET_MERGE_NONE;
 	params->hard_mtu = MLX5_IB_GRH_BYTES + MLX5_IPOIB_HARD_LEN;
 	params->tunneled_offload_en = false;
+
+	/* CQE compression is not supported for IPoIB */
+	params->rx_cqe_compress_def = false;
+	MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_CQE_COMPRESS, params->rx_cqe_compress_def);
 }
 
 /* Called directly after IPoIB netdevice was created to initialize SW structs */
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 057/159] net/mlx5e: Fix RX reporter for XSK RQs
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (55 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 056/159] net/mlx5e: IPoIB, Dont allow CQE compression to be turned on by default Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 058/159] net/mlx5e: CT: Fix ct debugfs folder name Greg Kroah-Hartman
                   ` (116 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Tariq Toukan, Gal Pressman,
	Saeed Mahameed, Sasha Levin

From: Tariq Toukan <tariqt@nvidia.com>

[ Upstream commit f8c18a5749cf917096f75dd59885b7a0fe9298ba ]

RX reporter mistakenly reads from the regular (inactive) RQ
when XSK RQ is active. Fix it here.

Fixes: 3db4c85cde7a ("net/mlx5e: xsk: Use queue indices starting from 0 for XSK queues")
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c
index 5f6f95ad6888..1ae15b8536a8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c
@@ -459,7 +459,11 @@ static int mlx5e_rx_reporter_diagnose(struct devlink_health_reporter *reporter,
 		goto unlock;
 
 	for (i = 0; i < priv->channels.num; i++) {
-		struct mlx5e_rq *rq = &priv->channels.c[i]->rq;
+		struct mlx5e_channel *c = priv->channels.c[i];
+		struct mlx5e_rq *rq;
+
+		rq = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state) ?
+			&c->xskrq : &c->rq;
 
 		err = mlx5e_rx_reporter_build_diagnose_output(rq, fmsg);
 		if (err)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 058/159] net/mlx5e: CT: Fix ct debugfs folder name
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (56 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 057/159] net/mlx5e: Fix RX reporter for XSK RQs Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 059/159] net/mlx5e: Always clear dest encap in neigh-update-del Greg Kroah-Hartman
                   ` (115 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Chris Mi, Roi Dayan, Saeed Mahameed,
	Sasha Levin

From: Chris Mi <cmi@nvidia.com>

[ Upstream commit 849190e3e4ccf452fbe2240eace30a9ca83fb8d2 ]

Need to use sprintf to build a string instead of sscanf. Otherwise
dirname is null and both "ct_nic" and "ct_fdb" won't be created.
But its redundant anyway as driver could be in switchdev mode but
still add nic rules. So use "ct" as folder name.

Fixes: 77422a8f6f61 ("net/mlx5e: CT: Add ct driver counters")
Signed-off-by: Chris Mi <cmi@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
index 864ce0c393e6..f01f7dfdbcf8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
@@ -2080,14 +2080,9 @@ mlx5_tc_ct_init_check_support(struct mlx5e_priv *priv,
 static void
 mlx5_ct_tc_create_dbgfs(struct mlx5_tc_ct_priv *ct_priv)
 {
-	bool is_fdb = ct_priv->ns_type == MLX5_FLOW_NAMESPACE_FDB;
 	struct mlx5_tc_ct_debugfs *ct_dbgfs = &ct_priv->debugfs;
-	char dirname[16] = {};
 
-	if (sscanf(dirname, "ct_%s", is_fdb ? "fdb" : "nic") < 0)
-		return;
-
-	ct_dbgfs->root = debugfs_create_dir(dirname, mlx5_debugfs_get_dev_root(ct_priv->dev));
+	ct_dbgfs->root = debugfs_create_dir("ct", mlx5_debugfs_get_dev_root(ct_priv->dev));
 	debugfs_create_atomic_t("offloaded", 0400, ct_dbgfs->root,
 				&ct_dbgfs->stats.offloaded);
 	debugfs_create_atomic_t("rx_dropped", 0400, ct_dbgfs->root,
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 059/159] net/mlx5e: Always clear dest encap in neigh-update-del
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (57 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 058/159] net/mlx5e: CT: Fix ct debugfs folder name Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 060/159] net/mlx5e: Fix hw mtu initializing at XDP SQ allocation Greg Kroah-Hartman
                   ` (114 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Chris Mi, Roi Dayan, Saeed Mahameed,
	Sasha Levin

From: Chris Mi <cmi@nvidia.com>

[ Upstream commit 2951b2e142ecf6e0115df785ba91e91b6da74602 ]

The cited commit introduced a bug for multiple encapsulations flow.
If one dest encap becomes invalid, the flow is set slow path flag.
But when other dests encap become invalid, they are not cleared due
to slow path flag of the flow. When neigh-update-add is running, it
will use invalid encap.

Fix it by checking slow path flag after clearing dest encap.

Fixes: 9a5f9cc794e1 ("net/mlx5e: Fix possible use-after-free deleting fdb rule")
Signed-off-by: Chris Mi <cmi@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c    | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
index ff73d25bc6eb..2aaf8ab857b8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
@@ -222,7 +222,7 @@ void mlx5e_tc_encap_flows_del(struct mlx5e_priv *priv,
 	int err;
 
 	list_for_each_entry(flow, flow_list, tmp_list) {
-		if (!mlx5e_is_offloaded_flow(flow) || flow_flag_test(flow, SLOW))
+		if (!mlx5e_is_offloaded_flow(flow))
 			continue;
 
 		attr = mlx5e_tc_get_encap_attr(flow);
@@ -231,6 +231,13 @@ void mlx5e_tc_encap_flows_del(struct mlx5e_priv *priv,
 		esw_attr->dests[flow->tmp_entry_index].flags &= ~MLX5_ESW_DEST_ENCAP_VALID;
 		esw_attr->dests[flow->tmp_entry_index].pkt_reformat = NULL;
 
+		/* Clear pkt_reformat before checking slow path flag. Because
+		 * in next iteration, the same flow is already set slow path
+		 * flag, but still need to clear the pkt_reformat.
+		 */
+		if (flow_flag_test(flow, SLOW))
+			continue;
+
 		/* update from encap rule to slow path rule */
 		spec = &flow->attr->parse_attr->spec;
 		rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 060/159] net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (58 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 059/159] net/mlx5e: Always clear dest encap in neigh-update-del Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 061/159] net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option Greg Kroah-Hartman
                   ` (113 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Adham Faris, Tariq Toukan,
	Saeed Mahameed, Sasha Levin

From: Adham Faris <afaris@nvidia.com>

[ Upstream commit 1e267ab88dc44c48f556218f7b7f14c76f7aa066 ]

Current xdp xmit functions logic (mlx5e_xmit_xdp_frame_mpwqe or
mlx5e_xmit_xdp_frame), validates xdp packet length by comparing it to
hw mtu (configured at xdp sq allocation) before xmiting it. This check
does not account for ethernet fcs length (calculated and filled by the
nic). Hence, when we try sending packets with length > (hw-mtu -
ethernet-fcs-size), the device port drops it and tx_errors_phy is
incremented. Desired behavior is to catch these packets and drop them
by the driver.

Fix this behavior in XDP SQ allocation function (mlx5e_alloc_xdpsq) by
subtracting ethernet FCS header size (4 Bytes) from current hw mtu
value, since ethernet FCS is calculated and written to ethernet frames
by the nic.

Fixes: d8bec2b29a82 ("net/mlx5e: Support bpf_xdp_adjust_head()")
Signed-off-by: Adham Faris <afaris@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 5e41dfdf79c8..951ede433813 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -1298,7 +1298,7 @@ static int mlx5e_alloc_xdpsq(struct mlx5e_channel *c,
 	sq->channel   = c;
 	sq->uar_map   = mdev->mlx5e_res.hw_objs.bfreg.map;
 	sq->min_inline_mode = params->tx_min_inline_mode;
-	sq->hw_mtu    = MLX5E_SW2HW_MTU(params, params->sw_mtu);
+	sq->hw_mtu    = MLX5E_SW2HW_MTU(params, params->sw_mtu) - ETH_FCS_LEN;
 	sq->xsk_pool  = xsk_pool;
 
 	sq->stats = sq->xsk_pool ?
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 061/159] net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (59 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 060/159] net/mlx5e: Fix hw mtu initializing at XDP SQ allocation Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 062/159] net/mlx5: Lag, fix failure to cancel delayed bond work Greg Kroah-Hartman
                   ` (112 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Maor Dickman, Roi Dayan,
	Saeed Mahameed, Sasha Levin

From: Maor Dickman <maord@nvidia.com>

[ Upstream commit e54638a8380bd9c146a883035fffd0a821813682 ]

The cited patch added support of matching on geneve option by setting
geneve_tlv_option_0_data mask and key but didn't set geneve_tlv_option_0_exist
bit which is required on some HWs when matching geneve_tlv_option_0_data parameter,
this may cause in some cases for packets to wrongly match on rules with different
geneve option.

Example of such case is packet with geneve_tlv_object class=789 and data=456
will wrongly match on rule with match geneve_tlv_object class=123 and data=456.

Fix it by setting geneve_tlv_option_0_exist bit when supported by the HW when matching
on geneve_tlv_option_0_data parameter.

Fixes: 9272e3df3023 ("net/mlx5e: Geneve, Add support for encap/decap flows offload")
Signed-off-by: Maor Dickman <maord@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
index f5b26f5a7de4..054d80c4e65c 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
@@ -273,6 +273,11 @@ static int mlx5e_tc_tun_parse_geneve_options(struct mlx5e_priv *priv,
 		 geneve_tlv_option_0_data, be32_to_cpu(opt_data_key));
 	MLX5_SET(fte_match_set_misc3, misc_3_c,
 		 geneve_tlv_option_0_data, be32_to_cpu(opt_data_mask));
+	if (MLX5_CAP_ESW_FLOWTABLE_FDB(priv->mdev,
+				       ft_field_support.geneve_tlv_option_0_exist)) {
+		MLX5_SET_TO_ONES(fte_match_set_misc, misc_c, geneve_tlv_option_0_exist);
+		MLX5_SET_TO_ONES(fte_match_set_misc, misc_v, geneve_tlv_option_0_exist);
+	}
 
 	spec->match_criteria_enable |= MLX5_MATCH_MISC_PARAMETERS_3;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 062/159] net/mlx5: Lag, fix failure to cancel delayed bond work
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (60 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 061/159] net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 063/159] bpf: Always use maximal size for copy_array() Greg Kroah-Hartman
                   ` (111 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Eli Cohen, Maor Dickman,
	Saeed Mahameed, Sasha Levin

From: Eli Cohen <elic@nvidia.com>

[ Upstream commit 4d1c1379d71777ddeda3e54f8fc26e9ecbfd1009 ]

Commit 0d4e8ed139d8 ("net/mlx5: Lag, avoid lockdep warnings")
accidentally removed a call to cancel delayed bond work thus it may
cause queued delay to expire and fall on an already destroyed work
queue.

Fix by restoring the call cancel_delayed_work_sync() before
destroying the workqueue.

This prevents call trace such as this:

[  329.230417] BUG: kernel NULL pointer dereference, address: 0000000000000000
 [  329.231444] #PF: supervisor write access in kernel mode
 [  329.232233] #PF: error_code(0x0002) - not-present page
 [  329.233007] PGD 0 P4D 0
 [  329.233476] Oops: 0002 [#1] SMP
 [  329.234012] CPU: 5 PID: 145 Comm: kworker/u20:4 Tainted: G OE      6.0.0-rc5_mlnx #1
 [  329.235282] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
 [  329.236868] Workqueue: mlx5_cmd_0000:08:00.1 cmd_work_handler [mlx5_core]
 [  329.237886] RIP: 0010:_raw_spin_lock+0xc/0x20
 [  329.238585] Code: f0 0f b1 17 75 02 f3 c3 89 c6 e9 6f 3c 5f ff 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 0f 1f 44 00 00 31 c0 ba 01 00 00 00 <f0> 0f b1 17 75 02 f3 c3 89 c6 e9 45 3c 5f ff 0f 1f 44 00 00 0f 1f
 [  329.241156] RSP: 0018:ffffc900001b0e98 EFLAGS: 00010046
 [  329.241940] RAX: 0000000000000000 RBX: ffffffff82374ae0 RCX: 0000000000000000
 [  329.242954] RDX: 0000000000000001 RSI: 0000000000000014 RDI: 0000000000000000
 [  329.243974] RBP: ffff888106ccf000 R08: ffff8881004000c8 R09: ffff888100400000
 [  329.244990] R10: 0000000000000000 R11: ffffffff826669f8 R12: 0000000000002000
 [  329.246009] R13: 0000000000000005 R14: ffff888100aa7ce0 R15: ffff88852ca80000
 [  329.247030] FS:  0000000000000000(0000) GS:ffff88852ca80000(0000) knlGS:0000000000000000
 [  329.248260] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
 [  329.249111] CR2: 0000000000000000 CR3: 000000016d675001 CR4: 0000000000770ee0
 [  329.250133] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
 [  329.251152] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
 [  329.252176] PKRU: 55555554

Fixes: 0d4e8ed139d8 ("net/mlx5: Lag, avoid lockdep warnings")
Signed-off-by: Eli Cohen <elic@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
index 32c3e0a649a7..ad32b80e8501 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
@@ -228,6 +228,7 @@ static void mlx5_ldev_free(struct kref *ref)
 	if (ldev->nb.notifier_call)
 		unregister_netdevice_notifier_net(&init_net, &ldev->nb);
 	mlx5_lag_mp_cleanup(ldev);
+	cancel_delayed_work_sync(&ldev->bond_work);
 	destroy_workqueue(ldev->wq);
 	mlx5_lag_mpesw_cleanup(ldev);
 	mutex_destroy(&ldev->lock);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 063/159] bpf: Always use maximal size for copy_array()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (61 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 062/159] net/mlx5: Lag, fix failure to cancel delayed bond work Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 064/159] tcp: Add TIME_WAIT sockets in bhash2 Greg Kroah-Hartman
                   ` (110 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hyunwoo Kim, Alexei Starovoitov,
	Daniel Borkmann, John Fastabend, Andrii Nakryiko,
	Martin KaFai Lau, Song Liu, Yonghong Song, KP Singh,
	Stanislav Fomichev, Hao Luo, Jiri Olsa, bpf, Kees Cook,
	Sasha Levin

From: Kees Cook <keescook@chromium.org>

[ Upstream commit 45435d8da71f9f3e6860e6e6ea9667b6ec17ec64 ]

Instead of counting on prior allocations to have sized allocations to
the next kmalloc bucket size, always perform a krealloc that is at least
ksize(dst) in size (which is a no-op), so the size can be correctly
tracked by all the various allocation size trackers (KASAN,
__alloc_size, etc).

Reported-by: Hyunwoo Kim <v4bel@theori.io>
Link: https://lore.kernel.org/bpf/20221223094551.GA1439509@ubuntu
Fixes: ceb35b666d42 ("bpf/verifier: Use kmalloc_size_roundup() to match ksize() usage")
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Martin KaFai Lau <martin.lau@linux.dev>
Cc: Song Liu <song@kernel.org>
Cc: Yonghong Song <yhs@fb.com>
Cc: KP Singh <kpsingh@kernel.org>
Cc: Stanislav Fomichev <sdf@google.com>
Cc: Hao Luo <haoluo@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: bpf@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20221223182836.never.866-kees@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/bpf/verifier.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 242fe307032f..b4d5b343c191 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -1000,6 +1000,8 @@ static void print_insn_state(struct bpf_verifier_env *env,
  */
 static void *copy_array(void *dst, const void *src, size_t n, size_t size, gfp_t flags)
 {
+	size_t alloc_bytes;
+	void *orig = dst;
 	size_t bytes;
 
 	if (ZERO_OR_NULL_PTR(src))
@@ -1008,11 +1010,11 @@ static void *copy_array(void *dst, const void *src, size_t n, size_t size, gfp_t
 	if (unlikely(check_mul_overflow(n, size, &bytes)))
 		return NULL;
 
-	if (ksize(dst) < ksize(src)) {
-		kfree(dst);
-		dst = kmalloc_track_caller(kmalloc_size_roundup(bytes), flags);
-		if (!dst)
-			return NULL;
+	alloc_bytes = max(ksize(orig), kmalloc_size_roundup(bytes));
+	dst = krealloc(orig, alloc_bytes, flags);
+	if (!dst) {
+		kfree(orig);
+		return NULL;
 	}
 
 	memcpy(dst, src, bytes);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 064/159] tcp: Add TIME_WAIT sockets in bhash2.
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (62 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 063/159] bpf: Always use maximal size for copy_array() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 065/159] net: hns3: refine the handling for VF heartbeat Greg Kroah-Hartman
                   ` (109 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jiri Slaby, Paolo Abeni,
	Kuniyuki Iwashima, Joanne Koong, David S. Miller, Sasha Levin

From: Kuniyuki Iwashima <kuniyu@amazon.com>

[ Upstream commit 936a192f974018b4f6040f6f77b1cc1e75bd8666 ]

Jiri Slaby reported regression of bind() with a simple repro. [0]

The repro creates a TIME_WAIT socket and tries to bind() a new socket
with the same local address and port.  Before commit 28044fc1d495 ("net:
Add a bhash2 table hashed by port and address"), the bind() failed with
-EADDRINUSE, but now it succeeds.

The cited commit should have put TIME_WAIT sockets into bhash2; otherwise,
inet_bhash2_conflict() misses TIME_WAIT sockets when validating bind()
requests if the address is not a wildcard one.

The straight option is to move sk_bind2_node from struct sock to struct
sock_common to add twsk to bhash2 as implemented as RFC. [1]  However, the
binary layout change in the struct sock could affect performances moving
hot fields on different cachelines.

To avoid that, we add another TIME_WAIT list in inet_bind2_bucket and check
it while validating bind().

[0]: https://lore.kernel.org/netdev/6b971a4e-c7d8-411e-1f92-fda29b5b2fb9@kernel.org/
[1]: https://lore.kernel.org/netdev/20221221151258.25748-2-kuniyu@amazon.com/

Fixes: 28044fc1d495 ("net: Add a bhash2 table hashed by port and address")
Reported-by: Jiri Slaby <jirislaby@kernel.org>
Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Acked-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/net/inet_hashtables.h    |  4 ++++
 include/net/inet_timewait_sock.h |  5 +++++
 net/ipv4/inet_connection_sock.c  | 26 ++++++++++++++++++++++----
 net/ipv4/inet_hashtables.c       |  8 +++++---
 net/ipv4/inet_timewait_sock.c    | 31 +++++++++++++++++++++++++++++--
 5 files changed, 65 insertions(+), 9 deletions(-)

diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index 69174093078f..99bd823e97f6 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -108,6 +108,10 @@ struct inet_bind2_bucket {
 	struct hlist_node	node;
 	/* List of sockets hashed to this bucket */
 	struct hlist_head	owners;
+	/* bhash has twsk in owners, but bhash2 has twsk in
+	 * deathrow not to add a member in struct sock_common.
+	 */
+	struct hlist_head	deathrow;
 };
 
 static inline struct net *ib_net(const struct inet_bind_bucket *ib)
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h
index 5b47545f22d3..4a8e578405cb 100644
--- a/include/net/inet_timewait_sock.h
+++ b/include/net/inet_timewait_sock.h
@@ -73,9 +73,14 @@ struct inet_timewait_sock {
 	u32			tw_priority;
 	struct timer_list	tw_timer;
 	struct inet_bind_bucket	*tw_tb;
+	struct inet_bind2_bucket	*tw_tb2;
+	struct hlist_node		tw_bind2_node;
 };
 #define tw_tclass tw_tos
 
+#define twsk_for_each_bound_bhash2(__tw, list) \
+	hlist_for_each_entry(__tw, list, tw_bind2_node)
+
 static inline struct inet_timewait_sock *inet_twsk(const struct sock *sk)
 {
 	return (struct inet_timewait_sock *)sk;
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 4a34bc7cb15e..0465ada82799 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -173,22 +173,40 @@ static bool inet_bind_conflict(const struct sock *sk, struct sock *sk2,
 	return false;
 }
 
+static bool __inet_bhash2_conflict(const struct sock *sk, struct sock *sk2,
+				   kuid_t sk_uid, bool relax,
+				   bool reuseport_cb_ok, bool reuseport_ok)
+{
+	if (sk->sk_family == AF_INET && ipv6_only_sock(sk2))
+		return false;
+
+	return inet_bind_conflict(sk, sk2, sk_uid, relax,
+				  reuseport_cb_ok, reuseport_ok);
+}
+
 static bool inet_bhash2_conflict(const struct sock *sk,
 				 const struct inet_bind2_bucket *tb2,
 				 kuid_t sk_uid,
 				 bool relax, bool reuseport_cb_ok,
 				 bool reuseport_ok)
 {
+	struct inet_timewait_sock *tw2;
 	struct sock *sk2;
 
 	sk_for_each_bound_bhash2(sk2, &tb2->owners) {
-		if (sk->sk_family == AF_INET && ipv6_only_sock(sk2))
-			continue;
+		if (__inet_bhash2_conflict(sk, sk2, sk_uid, relax,
+					   reuseport_cb_ok, reuseport_ok))
+			return true;
+	}
 
-		if (inet_bind_conflict(sk, sk2, sk_uid, relax,
-				       reuseport_cb_ok, reuseport_ok))
+	twsk_for_each_bound_bhash2(tw2, &tb2->deathrow) {
+		sk2 = (struct sock *)tw2;
+
+		if (__inet_bhash2_conflict(sk, sk2, sk_uid, relax,
+					   reuseport_cb_ok, reuseport_ok))
 			return true;
 	}
+
 	return false;
 }
 
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index 3cec471a2cd2..67f5e5440802 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -116,6 +116,7 @@ static void inet_bind2_bucket_init(struct inet_bind2_bucket *tb,
 #endif
 		tb->rcv_saddr = sk->sk_rcv_saddr;
 	INIT_HLIST_HEAD(&tb->owners);
+	INIT_HLIST_HEAD(&tb->deathrow);
 	hlist_add_head(&tb->node, &head->chain);
 }
 
@@ -137,7 +138,7 @@ struct inet_bind2_bucket *inet_bind2_bucket_create(struct kmem_cache *cachep,
 /* Caller must hold hashbucket lock for this tb with local BH disabled */
 void inet_bind2_bucket_destroy(struct kmem_cache *cachep, struct inet_bind2_bucket *tb)
 {
-	if (hlist_empty(&tb->owners)) {
+	if (hlist_empty(&tb->owners) && hlist_empty(&tb->deathrow)) {
 		__hlist_del(&tb->node);
 		kmem_cache_free(cachep, tb);
 	}
@@ -1103,15 +1104,16 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row,
 	/* Head lock still held and bh's disabled */
 	inet_bind_hash(sk, tb, tb2, port);
 
-	spin_unlock(&head2->lock);
-
 	if (sk_unhashed(sk)) {
 		inet_sk(sk)->inet_sport = htons(port);
 		inet_ehash_nolisten(sk, (struct sock *)tw, NULL);
 	}
 	if (tw)
 		inet_twsk_bind_unhash(tw, hinfo);
+
+	spin_unlock(&head2->lock);
 	spin_unlock(&head->lock);
+
 	if (tw)
 		inet_twsk_deschedule_put(tw);
 	local_bh_enable();
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c
index 66fc940f9521..1d77d992e6e7 100644
--- a/net/ipv4/inet_timewait_sock.c
+++ b/net/ipv4/inet_timewait_sock.c
@@ -29,6 +29,7 @@
 void inet_twsk_bind_unhash(struct inet_timewait_sock *tw,
 			  struct inet_hashinfo *hashinfo)
 {
+	struct inet_bind2_bucket *tb2 = tw->tw_tb2;
 	struct inet_bind_bucket *tb = tw->tw_tb;
 
 	if (!tb)
@@ -37,6 +38,11 @@ void inet_twsk_bind_unhash(struct inet_timewait_sock *tw,
 	__hlist_del(&tw->tw_bind_node);
 	tw->tw_tb = NULL;
 	inet_bind_bucket_destroy(hashinfo->bind_bucket_cachep, tb);
+
+	__hlist_del(&tw->tw_bind2_node);
+	tw->tw_tb2 = NULL;
+	inet_bind2_bucket_destroy(hashinfo->bind2_bucket_cachep, tb2);
+
 	__sock_put((struct sock *)tw);
 }
 
@@ -45,7 +51,7 @@ static void inet_twsk_kill(struct inet_timewait_sock *tw)
 {
 	struct inet_hashinfo *hashinfo = tw->tw_dr->hashinfo;
 	spinlock_t *lock = inet_ehash_lockp(hashinfo, tw->tw_hash);
-	struct inet_bind_hashbucket *bhead;
+	struct inet_bind_hashbucket *bhead, *bhead2;
 
 	spin_lock(lock);
 	sk_nulls_del_node_init_rcu((struct sock *)tw);
@@ -54,9 +60,13 @@ static void inet_twsk_kill(struct inet_timewait_sock *tw)
 	/* Disassociate with bind bucket. */
 	bhead = &hashinfo->bhash[inet_bhashfn(twsk_net(tw), tw->tw_num,
 			hashinfo->bhash_size)];
+	bhead2 = inet_bhashfn_portaddr(hashinfo, (struct sock *)tw,
+				       twsk_net(tw), tw->tw_num);
 
 	spin_lock(&bhead->lock);
+	spin_lock(&bhead2->lock);
 	inet_twsk_bind_unhash(tw, hashinfo);
+	spin_unlock(&bhead2->lock);
 	spin_unlock(&bhead->lock);
 
 	refcount_dec(&tw->tw_dr->tw_refcount);
@@ -93,6 +103,12 @@ static void inet_twsk_add_bind_node(struct inet_timewait_sock *tw,
 	hlist_add_head(&tw->tw_bind_node, list);
 }
 
+static void inet_twsk_add_bind2_node(struct inet_timewait_sock *tw,
+				     struct hlist_head *list)
+{
+	hlist_add_head(&tw->tw_bind2_node, list);
+}
+
 /*
  * Enter the time wait state. This is called with locally disabled BH.
  * Essentially we whip up a timewait bucket, copy the relevant info into it
@@ -105,17 +121,28 @@ void inet_twsk_hashdance(struct inet_timewait_sock *tw, struct sock *sk,
 	const struct inet_connection_sock *icsk = inet_csk(sk);
 	struct inet_ehash_bucket *ehead = inet_ehash_bucket(hashinfo, sk->sk_hash);
 	spinlock_t *lock = inet_ehash_lockp(hashinfo, sk->sk_hash);
-	struct inet_bind_hashbucket *bhead;
+	struct inet_bind_hashbucket *bhead, *bhead2;
+
 	/* Step 1: Put TW into bind hash. Original socket stays there too.
 	   Note, that any socket with inet->num != 0 MUST be bound in
 	   binding cache, even if it is closed.
 	 */
 	bhead = &hashinfo->bhash[inet_bhashfn(twsk_net(tw), inet->inet_num,
 			hashinfo->bhash_size)];
+	bhead2 = inet_bhashfn_portaddr(hashinfo, sk, twsk_net(tw), inet->inet_num);
+
 	spin_lock(&bhead->lock);
+	spin_lock(&bhead2->lock);
+
 	tw->tw_tb = icsk->icsk_bind_hash;
 	WARN_ON(!icsk->icsk_bind_hash);
 	inet_twsk_add_bind_node(tw, &tw->tw_tb->owners);
+
+	tw->tw_tb2 = icsk->icsk_bind2_hash;
+	WARN_ON(!icsk->icsk_bind2_hash);
+	inet_twsk_add_bind2_node(tw, &tw->tw_tb2->deathrow);
+
+	spin_unlock(&bhead2->lock);
 	spin_unlock(&bhead->lock);
 
 	spin_lock(lock);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 065/159] net: hns3: refine the handling for VF heartbeat
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (63 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 064/159] tcp: Add TIME_WAIT sockets in bhash2 Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 066/159] net: amd-xgbe: add missed tasklet_kill Greg Kroah-Hartman
                   ` (108 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jian Shen, Hao Lan,
	kernel test robot, David S. Miller, Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit fec7352117fa301bfbc31bacc14bb9a579376b36 ]

Currently, the PF check the VF alive by the KEEP_ALVE
mailbox from VF. VF keep sending the mailbox per 2
seconds. Once PF lost the mailbox for more than 8
seconds, it will regards the VF is abnormal, and stop
notifying the state change to VF, include link state,
vf mac, reset, even though it receives the KEEP_ALIVE
mailbox again. It's inreasonable.

This patch fixes it. PF will record the state change which
need to notify VF when lost the VF's KEEP_ALIVE mailbox.
And notify VF when receive the mailbox again. Introduce a
new flag HCLGE_VPORT_STATE_INITED, used to distinguish the
case whether VF driver loaded or not. For VF will query
these states when initializing, so it's unnecessary to
notify it in this case.

Fixes: aa5c4f175be6 ("net: hns3: add reset handling for VF when doing PF reset")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Hao Lan <lanhao@huawei.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 57 +++++++++++----
 .../hisilicon/hns3/hns3pf/hclge_main.h        |  7 ++
 .../hisilicon/hns3/hns3pf/hclge_mbx.c         | 71 ++++++++++++++++---
 3 files changed, 112 insertions(+), 23 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 6c2742f59c77..07ad5f35219e 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -3910,9 +3910,17 @@ static int hclge_set_all_vf_rst(struct hclge_dev *hdev, bool reset)
 			return ret;
 		}
 
-		if (!reset || !test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
+		if (!reset ||
+		    !test_bit(HCLGE_VPORT_STATE_INITED, &vport->state))
 			continue;
 
+		if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state) &&
+		    hdev->reset_type == HNAE3_FUNC_RESET) {
+			set_bit(HCLGE_VPORT_NEED_NOTIFY_RESET,
+				&vport->need_notify);
+			continue;
+		}
+
 		/* Inform VF to process the reset.
 		 * hclge_inform_reset_assert_to_vf may fail if VF
 		 * driver is not loaded.
@@ -4609,18 +4617,25 @@ static void hclge_reset_service_task(struct hclge_dev *hdev)
 
 static void hclge_update_vport_alive(struct hclge_dev *hdev)
 {
+#define HCLGE_ALIVE_SECONDS_NORMAL		8
+
+	unsigned long alive_time = HCLGE_ALIVE_SECONDS_NORMAL * HZ;
 	int i;
 
 	/* start from vport 1 for PF is always alive */
 	for (i = 1; i < hdev->num_alloc_vport; i++) {
 		struct hclge_vport *vport = &hdev->vport[i];
 
-		if (time_after(jiffies, vport->last_active_jiffies + 8 * HZ))
+		if (!test_bit(HCLGE_VPORT_STATE_INITED, &vport->state) ||
+		    !test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
+			continue;
+		if (time_after(jiffies, vport->last_active_jiffies +
+			       alive_time)) {
 			clear_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
-
-		/* If vf is not alive, set to default value */
-		if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
-			vport->mps = HCLGE_MAC_DEFAULT_FRAME;
+			dev_warn(&hdev->pdev->dev,
+				 "VF %u heartbeat timeout\n",
+				 i - HCLGE_VF_VPORT_START_NUM);
+		}
 	}
 }
 
@@ -8064,9 +8079,11 @@ int hclge_vport_start(struct hclge_vport *vport)
 {
 	struct hclge_dev *hdev = vport->back;
 
+	set_bit(HCLGE_VPORT_STATE_INITED, &vport->state);
 	set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
 	set_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE, &vport->state);
 	vport->last_active_jiffies = jiffies;
+	vport->need_notify = 0;
 
 	if (test_bit(vport->vport_id, hdev->vport_config_block)) {
 		if (vport->vport_id) {
@@ -8084,7 +8101,9 @@ int hclge_vport_start(struct hclge_vport *vport)
 
 void hclge_vport_stop(struct hclge_vport *vport)
 {
+	clear_bit(HCLGE_VPORT_STATE_INITED, &vport->state);
 	clear_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
+	vport->need_notify = 0;
 }
 
 static int hclge_client_start(struct hnae3_handle *handle)
@@ -9208,7 +9227,8 @@ static int hclge_set_vf_mac(struct hnae3_handle *handle, int vf,
 		return 0;
 	}
 
-	dev_info(&hdev->pdev->dev, "MAC of VF %d has been set to %s\n",
+	dev_info(&hdev->pdev->dev,
+		 "MAC of VF %d has been set to %s, will be active after VF reset\n",
 		 vf, format_mac_addr);
 	return 0;
 }
@@ -10465,12 +10485,16 @@ static int hclge_set_vf_vlan_filter(struct hnae3_handle *handle, int vfid,
 	 * for DEVICE_VERSION_V3, vf doesn't need to know about the port based
 	 * VLAN state.
 	 */
-	if (ae_dev->dev_version < HNAE3_DEVICE_VERSION_V3 &&
-	    test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
-		(void)hclge_push_vf_port_base_vlan_info(&hdev->vport[0],
-							vport->vport_id,
-							state, &vlan_info);
-
+	if (ae_dev->dev_version < HNAE3_DEVICE_VERSION_V3) {
+		if (test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
+			(void)hclge_push_vf_port_base_vlan_info(&hdev->vport[0],
+								vport->vport_id,
+								state,
+								&vlan_info);
+		else
+			set_bit(HCLGE_VPORT_NEED_NOTIFY_VF_VLAN,
+				&vport->need_notify);
+	}
 	return 0;
 }
 
@@ -11941,7 +11965,7 @@ static void hclge_reset_vport_state(struct hclge_dev *hdev)
 	int i;
 
 	for (i = 0; i < hdev->num_alloc_vport; i++) {
-		hclge_vport_stop(vport);
+		clear_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
 		vport++;
 	}
 }
@@ -12955,6 +12979,11 @@ static void hclge_clear_vport_vf_info(struct hclge_vport *vport, int vfid)
 	struct hclge_vlan_info vlan_info;
 	int ret;
 
+	clear_bit(HCLGE_VPORT_STATE_INITED, &vport->state);
+	clear_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
+	vport->need_notify = 0;
+	vport->mps = 0;
+
 	/* after disable sriov, clean VF rate configured by PF */
 	ret = hclge_tm_qs_shaper_cfg(vport, 0);
 	if (ret)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
index 495b639b0dc2..13f23d606e77 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
@@ -995,9 +995,15 @@ enum HCLGE_VPORT_STATE {
 	HCLGE_VPORT_STATE_MAC_TBL_CHANGE,
 	HCLGE_VPORT_STATE_PROMISC_CHANGE,
 	HCLGE_VPORT_STATE_VLAN_FLTR_CHANGE,
+	HCLGE_VPORT_STATE_INITED,
 	HCLGE_VPORT_STATE_MAX
 };
 
+enum HCLGE_VPORT_NEED_NOTIFY {
+	HCLGE_VPORT_NEED_NOTIFY_RESET,
+	HCLGE_VPORT_NEED_NOTIFY_VF_VLAN,
+};
+
 struct hclge_vlan_info {
 	u16 vlan_proto; /* so far support 802.1Q only */
 	u16 qos;
@@ -1044,6 +1050,7 @@ struct hclge_vport {
 	struct hnae3_handle roce;
 
 	unsigned long state;
+	unsigned long need_notify;
 	unsigned long last_active_jiffies;
 	u32 mps; /* Max packet size */
 	struct hclge_vf_info vf_info;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
index a7b06c63143c..04ff9bf12185 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
@@ -124,17 +124,26 @@ static int hclge_send_mbx_msg(struct hclge_vport *vport, u8 *msg, u16 msg_len,
 	return status;
 }
 
+static int hclge_inform_vf_reset(struct hclge_vport *vport, u16 reset_type)
+{
+	__le16 msg_data;
+	u8 dest_vfid;
+
+	dest_vfid = (u8)vport->vport_id;
+	msg_data = cpu_to_le16(reset_type);
+
+	/* send this requested info to VF */
+	return hclge_send_mbx_msg(vport, (u8 *)&msg_data, sizeof(msg_data),
+				  HCLGE_MBX_ASSERTING_RESET, dest_vfid);
+}
+
 int hclge_inform_reset_assert_to_vf(struct hclge_vport *vport)
 {
 	struct hclge_dev *hdev = vport->back;
-	__le16 msg_data;
 	u16 reset_type;
-	u8 dest_vfid;
 
 	BUILD_BUG_ON(HNAE3_MAX_RESET > U16_MAX);
 
-	dest_vfid = (u8)vport->vport_id;
-
 	if (hdev->reset_type == HNAE3_FUNC_RESET)
 		reset_type = HNAE3_VF_PF_FUNC_RESET;
 	else if (hdev->reset_type == HNAE3_FLR_RESET)
@@ -142,11 +151,7 @@ int hclge_inform_reset_assert_to_vf(struct hclge_vport *vport)
 	else
 		reset_type = HNAE3_VF_FUNC_RESET;
 
-	msg_data = cpu_to_le16(reset_type);
-
-	/* send this requested info to VF */
-	return hclge_send_mbx_msg(vport, (u8 *)&msg_data, sizeof(msg_data),
-				  HCLGE_MBX_ASSERTING_RESET, dest_vfid);
+	return hclge_inform_vf_reset(vport, reset_type);
 }
 
 static void hclge_free_vector_ring_chain(struct hnae3_ring_chain_node *head)
@@ -652,9 +657,56 @@ static int hclge_reset_vf(struct hclge_vport *vport)
 	return hclge_func_reset_cmd(hdev, vport->vport_id);
 }
 
+static void hclge_notify_vf_config(struct hclge_vport *vport)
+{
+	struct hclge_dev *hdev = vport->back;
+	struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
+	struct hclge_port_base_vlan_config *vlan_cfg;
+	int ret;
+
+	hclge_push_vf_link_status(vport);
+	if (test_bit(HCLGE_VPORT_NEED_NOTIFY_RESET, &vport->need_notify)) {
+		ret = hclge_inform_vf_reset(vport, HNAE3_VF_PF_FUNC_RESET);
+		if (ret) {
+			dev_err(&hdev->pdev->dev,
+				"failed to inform VF %u reset!",
+				vport->vport_id - HCLGE_VF_VPORT_START_NUM);
+			return;
+		}
+		vport->need_notify = 0;
+		return;
+	}
+
+	if (ae_dev->dev_version < HNAE3_DEVICE_VERSION_V3 &&
+	    test_bit(HCLGE_VPORT_NEED_NOTIFY_VF_VLAN, &vport->need_notify)) {
+		vlan_cfg = &vport->port_base_vlan_cfg;
+		ret = hclge_push_vf_port_base_vlan_info(&hdev->vport[0],
+							vport->vport_id,
+							vlan_cfg->state,
+							&vlan_cfg->vlan_info);
+		if (ret) {
+			dev_err(&hdev->pdev->dev,
+				"failed to inform VF %u port base vlan!",
+				vport->vport_id - HCLGE_VF_VPORT_START_NUM);
+			return;
+		}
+		clear_bit(HCLGE_VPORT_NEED_NOTIFY_VF_VLAN, &vport->need_notify);
+	}
+}
+
 static void hclge_vf_keep_alive(struct hclge_vport *vport)
 {
+	struct hclge_dev *hdev = vport->back;
+
 	vport->last_active_jiffies = jiffies;
+
+	if (test_bit(HCLGE_VPORT_STATE_INITED, &vport->state) &&
+	    !test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state)) {
+		set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
+		dev_info(&hdev->pdev->dev, "VF %u is alive!",
+			 vport->vport_id - HCLGE_VF_VPORT_START_NUM);
+		hclge_notify_vf_config(vport);
+	}
 }
 
 static int hclge_set_vf_mtu(struct hclge_vport *vport,
@@ -954,6 +1006,7 @@ static int hclge_mbx_vf_uninit_handler(struct hclge_mbx_ops_param *param)
 	hclge_rm_vport_all_mac_table(param->vport, true,
 				     HCLGE_MAC_ADDR_MC);
 	hclge_rm_vport_all_vlan_table(param->vport, true);
+	param->vport->mps = 0;
 	return 0;
 }
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 066/159] net: amd-xgbe: add missed tasklet_kill
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (64 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 065/159] net: hns3: refine the handling for VF heartbeat Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 067/159] net: ena: Fix toeplitz initial hash value Greg Kroah-Hartman
                   ` (107 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jiguang Xiao, David S. Miller, Sasha Levin

From: Jiguang Xiao <jiguang.xiao@windriver.com>

[ Upstream commit d530ece70f16f912e1d1bfeea694246ab78b0a4b ]

The driver does not call tasklet_kill in several places.
Add the calls to fix it.

Fixes: 85b85c853401 ("amd-xgbe: Re-issue interrupt if interrupt status not cleared")
Signed-off-by: Jiguang Xiao <jiguang.xiao@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c  | 3 +++
 drivers/net/ethernet/amd/xgbe/xgbe-i2c.c  | 4 +++-
 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 +++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 7b666106feee..614c0278419b 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -1064,6 +1064,9 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata)
 
 	devm_free_irq(pdata->dev, pdata->dev_irq, pdata);
 
+	tasklet_kill(&pdata->tasklet_dev);
+	tasklet_kill(&pdata->tasklet_ecc);
+
 	if (pdata->vdata->ecc_support && (pdata->dev_irq != pdata->ecc_irq))
 		devm_free_irq(pdata->dev, pdata->ecc_irq, pdata);
 
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-i2c.c b/drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
index 22d4fc547a0a..a9ccc4258ee5 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
@@ -447,8 +447,10 @@ static void xgbe_i2c_stop(struct xgbe_prv_data *pdata)
 	xgbe_i2c_disable(pdata);
 	xgbe_i2c_clear_all_interrupts(pdata);
 
-	if (pdata->dev_irq != pdata->i2c_irq)
+	if (pdata->dev_irq != pdata->i2c_irq) {
 		devm_free_irq(pdata->dev, pdata->i2c_irq, pdata);
+		tasklet_kill(&pdata->tasklet_i2c);
+	}
 }
 
 static int xgbe_i2c_start(struct xgbe_prv_data *pdata)
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
index 4e97b4869522..0c5c1b155683 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
@@ -1390,8 +1390,10 @@ static void xgbe_phy_stop(struct xgbe_prv_data *pdata)
 	/* Disable auto-negotiation */
 	xgbe_an_disable_all(pdata);
 
-	if (pdata->dev_irq != pdata->an_irq)
+	if (pdata->dev_irq != pdata->an_irq) {
 		devm_free_irq(pdata->dev, pdata->an_irq, pdata);
+		tasklet_kill(&pdata->tasklet_an);
+	}
 
 	pdata->phy_if.phy_impl.stop(pdata);
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 067/159] net: ena: Fix toeplitz initial hash value
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (65 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 066/159] net: amd-xgbe: add missed tasklet_kill Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 068/159] net: ena: Dont register memory info on XDP exchange Greg Kroah-Hartman
                   ` (106 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Nati Koler, David Arinzon,
	David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit 332b49ff637d6c1a75b971022a8b992cf3c57db1 ]

On driver initialization, RSS hash initial value is set to zero,
instead of the default value. This happens because we pass NULL as
the RSS key parameter, which caused us to never initialize
the RSS hash value.

This patch fixes it by making sure the initial value is set, no matter
what the value of the RSS key is.

Fixes: 91a65b7d3ed8 ("net: ena: fix potential crash when rxfh key is NULL")
Signed-off-by: Nati Koler <nkoler@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_com.c | 29 +++++++----------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
index 8c8b4c88c7de..451c3a1b6255 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.c
+++ b/drivers/net/ethernet/amazon/ena/ena_com.c
@@ -2400,29 +2400,18 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena_dev,
 		return -EOPNOTSUPP;
 	}
 
-	switch (func) {
-	case ENA_ADMIN_TOEPLITZ:
-		if (key) {
-			if (key_len != sizeof(hash_key->key)) {
-				netdev_err(ena_dev->net_device,
-					   "key len (%u) doesn't equal the supported size (%zu)\n",
-					   key_len, sizeof(hash_key->key));
-				return -EINVAL;
-			}
-			memcpy(hash_key->key, key, key_len);
-			rss->hash_init_val = init_val;
-			hash_key->key_parts = key_len / sizeof(hash_key->key[0]);
+	if ((func == ENA_ADMIN_TOEPLITZ) && key) {
+		if (key_len != sizeof(hash_key->key)) {
+			netdev_err(ena_dev->net_device,
+				   "key len (%u) doesn't equal the supported size (%zu)\n",
+				   key_len, sizeof(hash_key->key));
+			return -EINVAL;
 		}
-		break;
-	case ENA_ADMIN_CRC32:
-		rss->hash_init_val = init_val;
-		break;
-	default:
-		netdev_err(ena_dev->net_device, "Invalid hash function (%d)\n",
-			   func);
-		return -EINVAL;
+		memcpy(hash_key->key, key, key_len);
+		hash_key->key_parts = key_len / sizeof(hash_key->key[0]);
 	}
 
+	rss->hash_init_val = init_val;
 	old_func = rss->hash_func;
 	rss->hash_func = func;
 	rc = ena_com_set_hash_function(ena_dev);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 068/159] net: ena: Dont register memory info on XDP exchange
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (66 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 067/159] net: ena: Fix toeplitz initial hash value Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 069/159] net: ena: Account for the number of processed bytes in XDP Greg Kroah-Hartman
                   ` (105 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Agroskin, David Arinzon,
	David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit 9c9e539956fa67efb8a65e32b72a853740b33445 ]

Since the queues aren't destroyed when we only exchange XDP programs,
there's no need to re-register them again.

Fixes: 548c4940b9f1 ("net: ena: Implement XDP_TX action")
Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_netdev.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 5a454b58498f..e313bb45319c 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -512,16 +512,18 @@ static void ena_xdp_exchange_program_rx_in_range(struct ena_adapter *adapter,
 						 struct bpf_prog *prog,
 						 int first, int count)
 {
+	struct bpf_prog *old_bpf_prog;
 	struct ena_ring *rx_ring;
 	int i = 0;
 
 	for (i = first; i < count; i++) {
 		rx_ring = &adapter->rx_ring[i];
-		xchg(&rx_ring->xdp_bpf_prog, prog);
-		if (prog) {
+		old_bpf_prog = xchg(&rx_ring->xdp_bpf_prog, prog);
+
+		if (!old_bpf_prog && prog) {
 			ena_xdp_register_rxq_info(rx_ring);
 			rx_ring->rx_headroom = XDP_PACKET_HEADROOM;
-		} else {
+		} else if (old_bpf_prog && !prog) {
 			ena_xdp_unregister_rxq_info(rx_ring);
 			rx_ring->rx_headroom = NET_SKB_PAD;
 		}
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 069/159] net: ena: Account for the number of processed bytes in XDP
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (67 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 068/159] net: ena: Dont register memory info on XDP exchange Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 070/159] net: ena: Use bitmask to indicate packet redirection Greg Kroah-Hartman
                   ` (104 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Agroskin, David Arinzon,
	David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit c7f5e34d906320fdc996afa616676161c029cc02 ]

The size of packets that were forwarded or dropped by XDP wasn't added
to the total processed bytes statistic.

Fixes: 548c4940b9f1 ("net: ena: Implement XDP_TX action")
Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_netdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index e313bb45319c..69f2364b8468 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -1719,6 +1719,7 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
 			}
 			if (xdp_verdict != XDP_PASS) {
 				xdp_flags |= xdp_verdict;
+				total_len += ena_rx_ctx.ena_bufs[0].len;
 				res_budget--;
 				continue;
 			}
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 070/159] net: ena: Use bitmask to indicate packet redirection
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (68 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 069/159] net: ena: Account for the number of processed bytes in XDP Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 071/159] net: ena: Fix rx_copybreak value update Greg Kroah-Hartman
                   ` (103 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Agroskin, David Arinzon,
	David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit 59811faa2c54dbcf44d575b5a8f6e7077da88dc2 ]

Redirecting packets with XDP Redirect is done in two phases:
1. A packet is passed by the driver to the kernel using
   xdp_do_redirect().
2. After finishing polling for new packets the driver lets the kernel
   know that it can now process the redirected packet using
   xdp_do_flush_map().
   The packets' redirection is handled in the napi context of the
   queue that called xdp_do_redirect()

To avoid calling xdp_do_flush_map() each time the driver first checks
whether any packets were redirected, using
	xdp_flags |= xdp_verdict;
and
	if (xdp_flags & XDP_REDIRECT)
	    xdp_do_flush_map()

essentially treating XDP instructions as a bitmask, which isn't the case:
    enum xdp_action {
	    XDP_ABORTED = 0,
	    XDP_DROP,
	    XDP_PASS,
	    XDP_TX,
	    XDP_REDIRECT,
    };

Given the current possible values of xdp_action, the current design
doesn't have a bug (since XDP_REDIRECT = 100b), but it is still
flawed.

This patch makes the driver use a bitmask instead, to avoid future
issues.

Fixes: a318c70ad152 ("net: ena: introduce XDP redirect implementation")
Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_netdev.c | 26 ++++++++++++--------
 drivers/net/ethernet/amazon/ena/ena_netdev.h |  9 +++++++
 2 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 69f2364b8468..821355c5db10 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -374,9 +374,9 @@ static int ena_xdp_xmit(struct net_device *dev, int n,
 
 static int ena_xdp_execute(struct ena_ring *rx_ring, struct xdp_buff *xdp)
 {
+	u32 verdict = ENA_XDP_PASS;
 	struct bpf_prog *xdp_prog;
 	struct ena_ring *xdp_ring;
-	u32 verdict = XDP_PASS;
 	struct xdp_frame *xdpf;
 	u64 *xdp_stat;
 
@@ -393,7 +393,7 @@ static int ena_xdp_execute(struct ena_ring *rx_ring, struct xdp_buff *xdp)
 		if (unlikely(!xdpf)) {
 			trace_xdp_exception(rx_ring->netdev, xdp_prog, verdict);
 			xdp_stat = &rx_ring->rx_stats.xdp_aborted;
-			verdict = XDP_ABORTED;
+			verdict = ENA_XDP_DROP;
 			break;
 		}
 
@@ -409,29 +409,35 @@ static int ena_xdp_execute(struct ena_ring *rx_ring, struct xdp_buff *xdp)
 
 		spin_unlock(&xdp_ring->xdp_tx_lock);
 		xdp_stat = &rx_ring->rx_stats.xdp_tx;
+		verdict = ENA_XDP_TX;
 		break;
 	case XDP_REDIRECT:
 		if (likely(!xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog))) {
 			xdp_stat = &rx_ring->rx_stats.xdp_redirect;
+			verdict = ENA_XDP_REDIRECT;
 			break;
 		}
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, verdict);
 		xdp_stat = &rx_ring->rx_stats.xdp_aborted;
-		verdict = XDP_ABORTED;
+		verdict = ENA_XDP_DROP;
 		break;
 	case XDP_ABORTED:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, verdict);
 		xdp_stat = &rx_ring->rx_stats.xdp_aborted;
+		verdict = ENA_XDP_DROP;
 		break;
 	case XDP_DROP:
 		xdp_stat = &rx_ring->rx_stats.xdp_drop;
+		verdict = ENA_XDP_DROP;
 		break;
 	case XDP_PASS:
 		xdp_stat = &rx_ring->rx_stats.xdp_pass;
+		verdict = ENA_XDP_PASS;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(rx_ring->netdev, xdp_prog, verdict);
 		xdp_stat = &rx_ring->rx_stats.xdp_invalid;
+		verdict = ENA_XDP_DROP;
 	}
 
 	ena_increase_stat(xdp_stat, 1, &rx_ring->syncp);
@@ -1621,12 +1627,12 @@ static int ena_xdp_handle_buff(struct ena_ring *rx_ring, struct xdp_buff *xdp)
 	 * we expect, then we simply drop it
 	 */
 	if (unlikely(rx_ring->ena_bufs[0].len > ENA_XDP_MAX_MTU))
-		return XDP_DROP;
+		return ENA_XDP_DROP;
 
 	ret = ena_xdp_execute(rx_ring, xdp);
 
 	/* The xdp program might expand the headers */
-	if (ret == XDP_PASS) {
+	if (ret == ENA_XDP_PASS) {
 		rx_info->page_offset = xdp->data - xdp->data_hard_start;
 		rx_ring->ena_bufs[0].len = xdp->data_end - xdp->data;
 	}
@@ -1665,7 +1671,7 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
 	xdp_init_buff(&xdp, ENA_PAGE_SIZE, &rx_ring->xdp_rxq);
 
 	do {
-		xdp_verdict = XDP_PASS;
+		xdp_verdict = ENA_XDP_PASS;
 		skb = NULL;
 		ena_rx_ctx.ena_bufs = rx_ring->ena_bufs;
 		ena_rx_ctx.max_bufs = rx_ring->sgl_size;
@@ -1693,7 +1699,7 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
 			xdp_verdict = ena_xdp_handle_buff(rx_ring, &xdp);
 
 		/* allocate skb and fill it */
-		if (xdp_verdict == XDP_PASS)
+		if (xdp_verdict == ENA_XDP_PASS)
 			skb = ena_rx_skb(rx_ring,
 					 rx_ring->ena_bufs,
 					 ena_rx_ctx.descs,
@@ -1711,13 +1717,13 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
 				/* Packets was passed for transmission, unmap it
 				 * from RX side.
 				 */
-				if (xdp_verdict == XDP_TX || xdp_verdict == XDP_REDIRECT) {
+				if (xdp_verdict & ENA_XDP_FORWARDED) {
 					ena_unmap_rx_buff(rx_ring,
 							  &rx_ring->rx_buffer_info[req_id]);
 					rx_ring->rx_buffer_info[req_id].page = NULL;
 				}
 			}
-			if (xdp_verdict != XDP_PASS) {
+			if (xdp_verdict != ENA_XDP_PASS) {
 				xdp_flags |= xdp_verdict;
 				total_len += ena_rx_ctx.ena_bufs[0].len;
 				res_budget--;
@@ -1763,7 +1769,7 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
 		ena_refill_rx_bufs(rx_ring, refill_required);
 	}
 
-	if (xdp_flags & XDP_REDIRECT)
+	if (xdp_flags & ENA_XDP_REDIRECT)
 		xdp_do_flush_map();
 
 	return work_done;
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
index 1bdce99bf688..290ae9bf47ee 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
@@ -409,6 +409,15 @@ enum ena_xdp_errors_t {
 	ENA_XDP_NO_ENOUGH_QUEUES,
 };
 
+enum ENA_XDP_ACTIONS {
+	ENA_XDP_PASS		= 0,
+	ENA_XDP_TX		= BIT(0),
+	ENA_XDP_REDIRECT	= BIT(1),
+	ENA_XDP_DROP		= BIT(2)
+};
+
+#define ENA_XDP_FORWARDED (ENA_XDP_TX | ENA_XDP_REDIRECT)
+
 static inline bool ena_xdp_present(struct ena_adapter *adapter)
 {
 	return !!adapter->xdp_bpf_prog;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 071/159] net: ena: Fix rx_copybreak value update
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (69 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 070/159] net: ena: Use bitmask to indicate packet redirection Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 072/159] net: ena: Set default value for RX interrupt moderation Greg Kroah-Hartman
                   ` (102 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Osama Abboud, Arthur Kiyanovski,
	David Arinzon, David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit c7062aaee099f2f43d6f07a71744b44b94b94b34 ]

Make the upper bound on rx_copybreak tighter, by
making sure it is smaller than the minimum of mtu and
ENA_PAGE_SIZE. With the current upper bound of mtu,
rx_copybreak can be larger than a page. Such large
rx_copybreak will not bring any performance benefit to
the user and therefore makes no sense.

In addition, the value update was only reflected in
the adapter structure, but not applied for each ring,
causing it to not take effect.

Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
Signed-off-by: Osama Abboud <osamaabb@amazon.com>
Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_ethtool.c |  6 +-----
 drivers/net/ethernet/amazon/ena/ena_netdev.c  | 18 ++++++++++++++++++
 drivers/net/ethernet/amazon/ena/ena_netdev.h  |  2 ++
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index 98d6386b7f39..444ccef76da2 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -887,11 +887,7 @@ static int ena_set_tunable(struct net_device *netdev,
 	switch (tuna->id) {
 	case ETHTOOL_RX_COPYBREAK:
 		len = *(u32 *)data;
-		if (len > adapter->netdev->mtu) {
-			ret = -EINVAL;
-			break;
-		}
-		adapter->rx_copybreak = len;
+		ret = ena_set_rx_copybreak(adapter, len);
 		break;
 	default:
 		ret = -EINVAL;
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 821355c5db10..663f9cd3babf 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -2814,6 +2814,24 @@ int ena_update_queue_sizes(struct ena_adapter *adapter,
 	return dev_was_up ? ena_up(adapter) : 0;
 }
 
+int ena_set_rx_copybreak(struct ena_adapter *adapter, u32 rx_copybreak)
+{
+	struct ena_ring *rx_ring;
+	int i;
+
+	if (rx_copybreak > min_t(u16, adapter->netdev->mtu, ENA_PAGE_SIZE))
+		return -EINVAL;
+
+	adapter->rx_copybreak = rx_copybreak;
+
+	for (i = 0; i < adapter->num_io_queues; i++) {
+		rx_ring = &adapter->rx_ring[i];
+		rx_ring->rx_copybreak = rx_copybreak;
+	}
+
+	return 0;
+}
+
 int ena_update_queue_count(struct ena_adapter *adapter, u32 new_channel_count)
 {
 	struct ena_com_dev *ena_dev = adapter->ena_dev;
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
index 290ae9bf47ee..f9d862b630fa 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
@@ -392,6 +392,8 @@ int ena_update_queue_sizes(struct ena_adapter *adapter,
 
 int ena_update_queue_count(struct ena_adapter *adapter, u32 new_channel_count);
 
+int ena_set_rx_copybreak(struct ena_adapter *adapter, u32 rx_copybreak);
+
 int ena_get_sset_count(struct net_device *netdev, int sset);
 
 static inline void ena_reset_device(struct ena_adapter *adapter,
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 072/159] net: ena: Set default value for RX interrupt moderation
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (70 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 071/159] net: ena: Fix rx_copybreak value update Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 073/159] net: ena: Update NUMA TPH hint register upon NUMA node update Greg Kroah-Hartman
                   ` (101 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, David Arinzon, David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit e712f3e4920b3a1a5e6b536827d118e14862896c ]

RX ring can be NULL in XDP use cases where only TX queues
are configured. In this scenario, the RX interrupt moderation
value sent to the device remains in its default value of 0.

In this change, setting the default value of the RX interrupt
moderation to be the same as of the TX.

Fixes: 548c4940b9f1 ("net: ena: Implement XDP_TX action")
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_netdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 663f9cd3babf..c4aff712b5d8 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -1823,8 +1823,9 @@ static void ena_adjust_adaptive_rx_intr_moderation(struct ena_napi *ena_napi)
 static void ena_unmask_interrupt(struct ena_ring *tx_ring,
 					struct ena_ring *rx_ring)
 {
+	u32 rx_interval = tx_ring->smoothed_interval;
 	struct ena_eth_io_intr_reg intr_reg;
-	u32 rx_interval = 0;
+
 	/* Rx ring can be NULL when for XDP tx queues which don't have an
 	 * accompanying rx_ring pair.
 	 */
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 073/159] net: ena: Update NUMA TPH hint register upon NUMA node update
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (71 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 072/159] net: ena: Set default value for RX interrupt moderation Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 074/159] net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe Greg Kroah-Hartman
                   ` (100 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, David Arinzon, David S. Miller, Sasha Levin

From: David Arinzon <darinzon@amazon.com>

[ Upstream commit a8ee104f986e720cea52133885cc822d459398c7 ]

The device supports a PCIe optimization hint, which indicates on
which NUMA the queue is currently processed. This hint is utilized
by PCIe in order to reduce its access time by accessing the
correct NUMA resources and maintaining cache coherence.

The driver calls the register update for the hint (called TPH -
TLP Processing Hint) during the NAPI loop.

Though the update is expected upon a NUMA change (when a queue
is moved from one NUMA to the other), the current logic performs
a register update when the queue is moved to a different CPU,
but the CPU is not necessarily in a different NUMA.

The changes include:
1. Performing the TPH update only when the queue has switched
a NUMA node.
2. Moving the TPH update call to be triggered only when NAPI was
scheduled from interrupt context, as opposed to a busy-polling loop.
This is due to the fact that during busy-polling, the frequency
of CPU switches for a particular queue is significantly higher,
thus, the likelihood to switch NUMA is much higher. Therefore,
providing the frequent updates to the device upon a NUMA update
are unlikely to be beneficial.

Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
Signed-off-by: David Arinzon <darinzon@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_netdev.c | 27 +++++++++++++-------
 drivers/net/ethernet/amazon/ena/ena_netdev.h |  6 +++--
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index c4aff712b5d8..5ce01ac72637 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -680,6 +680,7 @@ static void ena_init_io_rings_common(struct ena_adapter *adapter,
 	ring->ena_dev = adapter->ena_dev;
 	ring->per_napi_packets = 0;
 	ring->cpu = 0;
+	ring->numa_node = 0;
 	ring->no_interrupt_event_cnt = 0;
 	u64_stats_init(&ring->syncp);
 }
@@ -783,6 +784,7 @@ static int ena_setup_tx_resources(struct ena_adapter *adapter, int qid)
 	tx_ring->next_to_use = 0;
 	tx_ring->next_to_clean = 0;
 	tx_ring->cpu = ena_irq->cpu;
+	tx_ring->numa_node = node;
 	return 0;
 
 err_push_buf_intermediate_buf:
@@ -915,6 +917,7 @@ static int ena_setup_rx_resources(struct ena_adapter *adapter,
 	rx_ring->next_to_clean = 0;
 	rx_ring->next_to_use = 0;
 	rx_ring->cpu = ena_irq->cpu;
+	rx_ring->numa_node = node;
 
 	return 0;
 }
@@ -1863,20 +1866,27 @@ static void ena_update_ring_numa_node(struct ena_ring *tx_ring,
 	if (likely(tx_ring->cpu == cpu))
 		goto out;
 
+	tx_ring->cpu = cpu;
+	if (rx_ring)
+		rx_ring->cpu = cpu;
+
 	numa_node = cpu_to_node(cpu);
+
+	if (likely(tx_ring->numa_node == numa_node))
+		goto out;
+
 	put_cpu();
 
 	if (numa_node != NUMA_NO_NODE) {
 		ena_com_update_numa_node(tx_ring->ena_com_io_cq, numa_node);
-		if (rx_ring)
+		tx_ring->numa_node = numa_node;
+		if (rx_ring) {
+			rx_ring->numa_node = numa_node;
 			ena_com_update_numa_node(rx_ring->ena_com_io_cq,
 						 numa_node);
+		}
 	}
 
-	tx_ring->cpu = cpu;
-	if (rx_ring)
-		rx_ring->cpu = cpu;
-
 	return;
 out:
 	put_cpu();
@@ -1997,11 +2007,10 @@ static int ena_io_poll(struct napi_struct *napi, int budget)
 			if (ena_com_get_adaptive_moderation_enabled(rx_ring->ena_dev))
 				ena_adjust_adaptive_rx_intr_moderation(ena_napi);
 
+			ena_update_ring_numa_node(tx_ring, rx_ring);
 			ena_unmask_interrupt(tx_ring, rx_ring);
 		}
 
-		ena_update_ring_numa_node(tx_ring, rx_ring);
-
 		ret = rx_work_done;
 	} else {
 		ret = budget;
@@ -2386,7 +2395,7 @@ static int ena_create_io_tx_queue(struct ena_adapter *adapter, int qid)
 	ctx.mem_queue_type = ena_dev->tx_mem_queue_type;
 	ctx.msix_vector = msix_vector;
 	ctx.queue_size = tx_ring->ring_size;
-	ctx.numa_node = cpu_to_node(tx_ring->cpu);
+	ctx.numa_node = tx_ring->numa_node;
 
 	rc = ena_com_create_io_queue(ena_dev, &ctx);
 	if (rc) {
@@ -2454,7 +2463,7 @@ static int ena_create_io_rx_queue(struct ena_adapter *adapter, int qid)
 	ctx.mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST;
 	ctx.msix_vector = msix_vector;
 	ctx.queue_size = rx_ring->ring_size;
-	ctx.numa_node = cpu_to_node(rx_ring->cpu);
+	ctx.numa_node = rx_ring->numa_node;
 
 	rc = ena_com_create_io_queue(ena_dev, &ctx);
 	if (rc) {
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
index f9d862b630fa..2cb141079474 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
@@ -262,9 +262,11 @@ struct ena_ring {
 	bool disable_meta_caching;
 	u16 no_interrupt_event_cnt;
 
-	/* cpu for TPH */
+	/* cpu and NUMA for TPH */
 	int cpu;
-	 /* number of tx/rx_buffer_info's entries */
+	int numa_node;
+
+	/* number of tx/rx_buffer_info's entries */
 	int ring_size;
 
 	enum ena_admin_placement_policy_type tx_mem_queue_type;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 074/159] net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (72 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 073/159] net: ena: Update NUMA TPH hint register upon NUMA node update Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 075/159] gpio: pca953x: avoid to use uninitialized value pinctrl Greg Kroah-Hartman
                   ` (99 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Miaoqian Lin, David S. Miller, Sasha Levin

From: Miaoqian Lin <linmq006@gmail.com>

[ Upstream commit d039535850ee47079d59527e96be18d8e0daa84b ]

of_phy_find_device() return device node with refcount incremented.
Call put_device() to relese it when not needed anymore.

Fixes: ab4e6ee578e8 ("net: phy: xgmiitorgmii: Check phy_driver ready before accessing")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/xilinx_gmii2rgmii.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c b/drivers/net/phy/xilinx_gmii2rgmii.c
index 8dcb49ed1f3d..7fd9fe6a602b 100644
--- a/drivers/net/phy/xilinx_gmii2rgmii.c
+++ b/drivers/net/phy/xilinx_gmii2rgmii.c
@@ -105,6 +105,7 @@ static int xgmiitorgmii_probe(struct mdio_device *mdiodev)
 
 	if (!priv->phy_dev->drv) {
 		dev_info(dev, "Attached phy not ready\n");
+		put_device(&priv->phy_dev->mdio.dev);
 		return -EPROBE_DEFER;
 	}
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 075/159] gpio: pca953x: avoid to use uninitialized value pinctrl
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (73 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 074/159] net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 076/159] RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device Greg Kroah-Hartman
                   ` (98 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Haibo Chen, Andy Shevchenko,
	Bartosz Golaszewski, Sasha Levin

From: Haibo Chen <haibo.chen@nxp.com>

[ Upstream commit 90fee3dd5bfc1b9f4c8c0ba6cd2a35c9d79ca4de ]

There is a variable pinctrl declared without initializer. And then
has the case (switch operation chose the default case) to directly
use this uninitialized value, this is not a safe behavior. So here
initialize the pinctrl as 0 to avoid this issue.
This is reported by Coverity.

Fixes: 13c5d4ce8060 ("gpio: pca953x: Add support for PCAL6534")
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpio/gpio-pca953x.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
index ebe1943b85dd..bf21803a0036 100644
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
@@ -473,6 +473,9 @@ static u8 pcal6534_recalc_addr(struct pca953x_chip *chip, int reg, int off)
 	case PCAL6524_DEBOUNCE:
 		pinctrl = ((reg & PCAL_PINCTRL_MASK) >> 1) + 0x1c;
 		break;
+	default:
+		pinctrl = 0;
+		break;
 	}
 
 	return pinctrl + addr + (off / BANK_SZ);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 076/159] RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (74 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 075/159] gpio: pca953x: avoid to use uninitialized value pinctrl Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 077/159] RDMA/mlx5: Fix validation of max_rd_atomic caps for DC Greg Kroah-Hartman
                   ` (97 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Drory, Patrisious Haddad,
	Leon Romanovsky, Sasha Levin

From: Shay Drory <shayd@nvidia.com>

[ Upstream commit 38b50aa44495d5eb4218f0b82fc2da76505cec53 ]

Currently, when mlx5_ib_get_hw_stats() is used for device (port_num = 0),
there is a special handling in order to use the correct counters, but,
port_num is being passed down the stack without any change.  Also, some
functions assume that port_num >=1. As a result, the following oops can
occur.

 BUG: unable to handle page fault for address: ffff89510294f1a8
 #PF: supervisor write access in kernel mode
 #PF: error_code(0x0002) - not-present page
 PGD 0 P4D 0
 Oops: 0002 [#1] SMP
 CPU: 8 PID: 1382 Comm: devlink Tainted: G W          6.1.0-rc4_for_upstream_base_2022_11_10_16_12 #1
 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
 RIP: 0010:_raw_spin_lock+0xc/0x20
 Call Trace:
  <TASK>
  mlx5_ib_get_native_port_mdev+0x73/0xe0 [mlx5_ib]
  do_get_hw_stats.constprop.0+0x109/0x160 [mlx5_ib]
  mlx5_ib_get_hw_stats+0xad/0x180 [mlx5_ib]
  ib_setup_device_attrs+0xf0/0x290 [ib_core]
  ib_register_device+0x3bb/0x510 [ib_core]
  ? atomic_notifier_chain_register+0x67/0x80
  __mlx5_ib_add+0x2b/0x80 [mlx5_ib]
  mlx5r_probe+0xb8/0x150 [mlx5_ib]
  ? auxiliary_match_id+0x6a/0x90
  auxiliary_bus_probe+0x3c/0x70
  ? driver_sysfs_add+0x6b/0x90
  really_probe+0xcd/0x380
  __driver_probe_device+0x80/0x170
  driver_probe_device+0x1e/0x90
  __device_attach_driver+0x7d/0x100
  ? driver_allows_async_probing+0x60/0x60
  ? driver_allows_async_probing+0x60/0x60
  bus_for_each_drv+0x7b/0xc0
  __device_attach+0xbc/0x200
  bus_probe_device+0x87/0xa0
  device_add+0x404/0x940
  ? dev_set_name+0x53/0x70
  __auxiliary_device_add+0x43/0x60
  add_adev+0x99/0xe0 [mlx5_core]
  mlx5_attach_device+0xc8/0x120 [mlx5_core]
  mlx5_load_one_devl_locked+0xb2/0xe0 [mlx5_core]
  devlink_reload+0x133/0x250
  devlink_nl_cmd_reload+0x480/0x570
  ? devlink_nl_pre_doit+0x44/0x2b0
  genl_family_rcv_msg_doit.isra.0+0xc2/0x110
  genl_rcv_msg+0x180/0x2b0
  ? devlink_nl_cmd_region_read_dumpit+0x540/0x540
  ? devlink_reload+0x250/0x250
  ? devlink_put+0x50/0x50
  ? genl_family_rcv_msg_doit.isra.0+0x110/0x110
  netlink_rcv_skb+0x54/0x100
  genl_rcv+0x24/0x40
  netlink_unicast+0x1f6/0x2c0
  netlink_sendmsg+0x237/0x490
  sock_sendmsg+0x33/0x40
  __sys_sendto+0x103/0x160
  ? handle_mm_fault+0x10e/0x290
  ? do_user_addr_fault+0x1c0/0x5f0
  __x64_sys_sendto+0x25/0x30
  do_syscall_64+0x3d/0x90
  entry_SYSCALL_64_after_hwframe+0x46/0xb0

Fix it by setting port_num to 1 in order to get device status and remove
unused variable.

Fixes: aac4492ef23a ("IB/mlx5: Update counter implementation for dual port RoCE")
Link: https://lore.kernel.org/r/98b82994c3cd3fa593b8a75ed3f3901e208beb0f.1672231736.git.leonro@nvidia.com
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Patrisious Haddad <phaddad@nvidia.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/mlx5/counters.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/mlx5/counters.c b/drivers/infiniband/hw/mlx5/counters.c
index 945758f39523..3e1272695d99 100644
--- a/drivers/infiniband/hw/mlx5/counters.c
+++ b/drivers/infiniband/hw/mlx5/counters.c
@@ -278,7 +278,6 @@ static int do_get_hw_stats(struct ib_device *ibdev,
 	const struct mlx5_ib_counters *cnts = get_counters(dev, port_num - 1);
 	struct mlx5_core_dev *mdev;
 	int ret, num_counters;
-	u32 mdev_port_num;
 
 	if (!stats)
 		return -EINVAL;
@@ -299,8 +298,9 @@ static int do_get_hw_stats(struct ib_device *ibdev,
 	}
 
 	if (MLX5_CAP_GEN(dev->mdev, cc_query_allowed)) {
-		mdev = mlx5_ib_get_native_port_mdev(dev, port_num,
-						    &mdev_port_num);
+		if (!port_num)
+			port_num = 1;
+		mdev = mlx5_ib_get_native_port_mdev(dev, port_num, NULL);
 		if (!mdev) {
 			/* If port is not affiliated yet, its in down state
 			 * which doesn't have any counters yet, so it would be
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 077/159] RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (75 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 076/159] RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 078/159] selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier Greg Kroah-Hartman
                   ` (96 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Maor Gottlieb, Leon Romanovsky, Sasha Levin

From: Maor Gottlieb <maorg@nvidia.com>

[ Upstream commit 8de8482fe5732fbef4f5af82bc0c0362c804cd1f ]

Currently, when modifying DC, we validate max_rd_atomic user attribute
against the RC cap, validate against DC. RC and DC QP types have different
device limitations.

This can cause userspace created DC QPs to malfunction.

Fixes: c32a4f296e1d ("IB/mlx5: Add support for DC Initiator QP")
Link: https://lore.kernel.org/r/0c5aee72cea188c3bb770f4207cce7abc9b6fc74.1672231736.git.leonro@nvidia.com
Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/mlx5/qp.c | 49 +++++++++++++++++++++++----------
 1 file changed, 35 insertions(+), 14 deletions(-)

diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 40d9410ec303..cf953d23d18d 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -4502,6 +4502,40 @@ static bool mlx5_ib_modify_qp_allowed(struct mlx5_ib_dev *dev,
 	return false;
 }
 
+static int validate_rd_atomic(struct mlx5_ib_dev *dev, struct ib_qp_attr *attr,
+			      int attr_mask, enum ib_qp_type qp_type)
+{
+	int log_max_ra_res;
+	int log_max_ra_req;
+
+	if (qp_type == MLX5_IB_QPT_DCI) {
+		log_max_ra_res = 1 << MLX5_CAP_GEN(dev->mdev,
+						   log_max_ra_res_dc);
+		log_max_ra_req = 1 << MLX5_CAP_GEN(dev->mdev,
+						   log_max_ra_req_dc);
+	} else {
+		log_max_ra_res = 1 << MLX5_CAP_GEN(dev->mdev,
+						   log_max_ra_res_qp);
+		log_max_ra_req = 1 << MLX5_CAP_GEN(dev->mdev,
+						   log_max_ra_req_qp);
+	}
+
+	if (attr_mask & IB_QP_MAX_QP_RD_ATOMIC &&
+	    attr->max_rd_atomic > log_max_ra_res) {
+		mlx5_ib_dbg(dev, "invalid max_rd_atomic value %d\n",
+			    attr->max_rd_atomic);
+		return false;
+	}
+
+	if (attr_mask & IB_QP_MAX_DEST_RD_ATOMIC &&
+	    attr->max_dest_rd_atomic > log_max_ra_req) {
+		mlx5_ib_dbg(dev, "invalid max_dest_rd_atomic value %d\n",
+			    attr->max_dest_rd_atomic);
+		return false;
+	}
+	return true;
+}
+
 int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 		      int attr_mask, struct ib_udata *udata)
 {
@@ -4589,21 +4623,8 @@ int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 		goto out;
 	}
 
-	if (attr_mask & IB_QP_MAX_QP_RD_ATOMIC &&
-	    attr->max_rd_atomic >
-	    (1 << MLX5_CAP_GEN(dev->mdev, log_max_ra_res_qp))) {
-		mlx5_ib_dbg(dev, "invalid max_rd_atomic value %d\n",
-			    attr->max_rd_atomic);
-		goto out;
-	}
-
-	if (attr_mask & IB_QP_MAX_DEST_RD_ATOMIC &&
-	    attr->max_dest_rd_atomic >
-	    (1 << MLX5_CAP_GEN(dev->mdev, log_max_ra_req_qp))) {
-		mlx5_ib_dbg(dev, "invalid max_dest_rd_atomic value %d\n",
-			    attr->max_dest_rd_atomic);
+	if (!validate_rd_atomic(dev, attr, attr_mask, qp_type))
 		goto out;
-	}
 
 	if (cur_state == new_state && cur_state == IB_QPS_RESET) {
 		err = 0;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 078/159] selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (76 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 077/159] RDMA/mlx5: Fix validation of max_rd_atomic caps for DC Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 079/159] selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier Greg Kroah-Hartman
                   ` (95 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Po-Hsu Lin, David S. Miller, Sasha Levin

From: Po-Hsu Lin <po-hsu.lin@canonical.com>

[ Upstream commit 9c4d7f45d60745a1cea0e841fa5e3444c398d2f1 ]

The cleanup_v6() will cause the arp_ndisc_evict_nocarrier script exit
with 255 (No such file or directory), even the tests are good:

 # selftests: net: arp_ndisc_evict_nocarrier.sh
 # run arp_evict_nocarrier=1 test
 # RTNETLINK answers: File exists
 # ok
 # run arp_evict_nocarrier=0 test
 # RTNETLINK answers: File exists
 # ok
 # run all.arp_evict_nocarrier=0 test
 # RTNETLINK answers: File exists
 # ok
 # run ndisc_evict_nocarrier=1 test
 # ok
 # run ndisc_evict_nocarrier=0 test
 # ok
 # run all.ndisc_evict_nocarrier=0 test
 # ok
 not ok 1 selftests: net: arp_ndisc_evict_nocarrier.sh # exit=255

This is because it's trying to modify the parameter for ipv4 instead.

Also, tests for ipv6 (run_ndisc_evict_nocarrier_enabled() and
run_ndisc_evict_nocarrier_disabled() are working on veth1, reflect
this fact in cleanup_v6().

Fixes: f86ca07eb531 ("selftests: net: add arp_ndisc_evict_nocarrier")
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh b/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh
index b5af08af8559..b4ec1eeee6c9 100755
--- a/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh
+++ b/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh
@@ -24,8 +24,8 @@ cleanup_v6()
     ip netns del me
     ip netns del peer
 
-    sysctl -w net.ipv4.conf.veth0.ndisc_evict_nocarrier=1 >/dev/null 2>&1
-    sysctl -w net.ipv4.conf.all.ndisc_evict_nocarrier=1 >/dev/null 2>&1
+    sysctl -w net.ipv6.conf.veth1.ndisc_evict_nocarrier=1 >/dev/null 2>&1
+    sysctl -w net.ipv6.conf.all.ndisc_evict_nocarrier=1 >/dev/null 2>&1
 }
 
 create_ns()
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 079/159] selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (77 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 078/159] selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 080/159] drm/meson: Reduce the FIFO lines held when AFBC is not used Greg Kroah-Hartman
                   ` (94 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Po-Hsu Lin, David S. Miller, Sasha Levin

From: Po-Hsu Lin <po-hsu.lin@canonical.com>

[ Upstream commit 1856628baa17032531916984808d1bdfd62700d4 ]

Return non-zero return value if there is any failure reported in this
script during the test. Otherwise it can only reflect the status of
the last command.

Fixes: f86ca07eb531 ("selftests: net: add arp_ndisc_evict_nocarrier")
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../selftests/net/arp_ndisc_evict_nocarrier.sh        | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh b/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh
index b4ec1eeee6c9..4a110bb01e53 100755
--- a/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh
+++ b/tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh
@@ -18,6 +18,7 @@ readonly V4_ADDR1=10.0.10.2
 readonly V6_ADDR0=2001:db8:91::1
 readonly V6_ADDR1=2001:db8:91::2
 nsid=100
+ret=0
 
 cleanup_v6()
 {
@@ -61,7 +62,7 @@ setup_v6() {
     if [ $? -ne 0 ]; then
         cleanup_v6
         echo "failed"
-        exit
+        exit 1
     fi
 
     # Set veth2 down, which will put veth1 in NOCARRIER state
@@ -88,7 +89,7 @@ setup_v4() {
     if [ $? -ne 0 ]; then
         cleanup_v4
         echo "failed"
-        exit
+        exit 1
     fi
 
     # Set veth1 down, which will put veth0 in NOCARRIER state
@@ -115,6 +116,7 @@ run_arp_evict_nocarrier_enabled() {
 
     if [ $? -eq 0 ];then
         echo "failed"
+        ret=1
     else
         echo "ok"
     fi
@@ -134,6 +136,7 @@ run_arp_evict_nocarrier_disabled() {
         echo "ok"
     else
         echo "failed"
+        ret=1
     fi
 
     cleanup_v4
@@ -164,6 +167,7 @@ run_ndisc_evict_nocarrier_enabled() {
 
     if [ $? -eq 0 ];then
         echo "failed"
+        ret=1
     else
         echo "ok"
     fi
@@ -182,6 +186,7 @@ run_ndisc_evict_nocarrier_disabled() {
         echo "ok"
     else
         echo "failed"
+        ret=1
     fi
 
     cleanup_v6
@@ -198,6 +203,7 @@ run_ndisc_evict_nocarrier_disabled_all() {
         echo "ok"
     else
         echo "failed"
+        ret=1
     fi
 
     cleanup_v6
@@ -218,3 +224,4 @@ if [ "$(id -u)" -ne 0 ];then
 fi
 
 run_all_tests
+exit $ret
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 080/159] drm/meson: Reduce the FIFO lines held when AFBC is not used
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (78 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 079/159] selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 081/159] filelock: new helper: vfs_inode_has_locks Greg Kroah-Hartman
                   ` (93 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Carlo Caione, Martin Blumenstingl,
	Neil Armstrong, Sasha Levin

From: Carlo Caione <ccaione@baylibre.com>

[ Upstream commit 3b754ed6d1cd90017e66e5cc16f3923e4a952ffc ]

Having a bigger number of FIFO lines held after vsync is only useful to
SoCs using AFBC to give time to the AFBC decoder to be reset, configured
and enabled again.

For SoCs not using AFBC this, on the contrary, is causing on some
displays issues and a few pixels vertical offset in the displayed image.

Conditionally increase the number of lines held after vsync only for
SoCs using AFBC, leaving the default value for all the others.

Fixes: 24e0d4058eff ("drm/meson: hold 32 lines after vsync to give time for AFBC start")
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
[narmstrong: added fixes tag]
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20221216-afbc_s905x-v1-0-033bebf780d9@baylibre.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/meson/meson_viu.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/meson/meson_viu.c b/drivers/gpu/drm/meson/meson_viu.c
index d4b907889a21..cd399b0b7181 100644
--- a/drivers/gpu/drm/meson/meson_viu.c
+++ b/drivers/gpu/drm/meson/meson_viu.c
@@ -436,15 +436,14 @@ void meson_viu_init(struct meson_drm *priv)
 
 	/* Initialize OSD1 fifo control register */
 	reg = VIU_OSD_DDR_PRIORITY_URGENT |
-		VIU_OSD_HOLD_FIFO_LINES(31) |
 		VIU_OSD_FIFO_DEPTH_VAL(32) | /* fifo_depth_val: 32*8=256 */
 		VIU_OSD_WORDS_PER_BURST(4) | /* 4 words in 1 burst */
 		VIU_OSD_FIFO_LIMITS(2);      /* fifo_lim: 2*16=32 */
 
 	if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A))
-		reg |= VIU_OSD_BURST_LENGTH_32;
+		reg |= (VIU_OSD_BURST_LENGTH_32 | VIU_OSD_HOLD_FIFO_LINES(31));
 	else
-		reg |= VIU_OSD_BURST_LENGTH_64;
+		reg |= (VIU_OSD_BURST_LENGTH_64 | VIU_OSD_HOLD_FIFO_LINES(4));
 
 	writel_relaxed(reg, priv->io_base + _REG(VIU_OSD1_FIFO_CTRL_STAT));
 	writel_relaxed(reg, priv->io_base + _REG(VIU_OSD2_FIFO_CTRL_STAT));
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 081/159] filelock: new helper: vfs_inode_has_locks
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (79 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 080/159] drm/meson: Reduce the FIFO lines held when AFBC is not used Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 082/159] ceph: switch to vfs_inode_has_locks() to fix file lock bug Greg Kroah-Hartman
                   ` (92 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Xiubo Li, Christoph Hellwig,
	Jeff Layton, Sasha Levin

From: Jeff Layton <jlayton@kernel.org>

[ Upstream commit ab1ddef98a715eddb65309ffa83267e4e84a571e ]

Ceph has a need to know whether a particular inode has any locks set on
it. It's currently tracking that by a num_locks field in its
filp->private_data, but that's problematic as it tries to decrement this
field when releasing locks and that can race with the file being torn
down.

Add a new vfs_inode_has_locks helper that just returns whether any locks
are currently held on the inode.

Reviewed-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Stable-dep-of: 461ab10ef7e6 ("ceph: switch to vfs_inode_has_locks() to fix file lock bug")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/locks.c         | 23 +++++++++++++++++++++++
 include/linux/fs.h |  6 ++++++
 2 files changed, 29 insertions(+)

diff --git a/fs/locks.c b/fs/locks.c
index 607f94a0e789..7dc129cc1a26 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -2669,6 +2669,29 @@ int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
 }
 EXPORT_SYMBOL_GPL(vfs_cancel_lock);
 
+/**
+ * vfs_inode_has_locks - are any file locks held on @inode?
+ * @inode: inode to check for locks
+ *
+ * Return true if there are any FL_POSIX or FL_FLOCK locks currently
+ * set on @inode.
+ */
+bool vfs_inode_has_locks(struct inode *inode)
+{
+	struct file_lock_context *ctx;
+	bool ret;
+
+	ctx = smp_load_acquire(&inode->i_flctx);
+	if (!ctx)
+		return false;
+
+	spin_lock(&ctx->flc_lock);
+	ret = !list_empty(&ctx->flc_posix) || !list_empty(&ctx->flc_flock);
+	spin_unlock(&ctx->flc_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(vfs_inode_has_locks);
+
 #ifdef CONFIG_PROC_FS
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 6b115bce14b9..081d1f539628 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1170,6 +1170,7 @@ extern int locks_delete_block(struct file_lock *);
 extern int vfs_test_lock(struct file *, struct file_lock *);
 extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
 extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
+bool vfs_inode_has_locks(struct inode *inode);
 extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl);
 extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type);
 extern void lease_get_mtime(struct inode *, struct timespec64 *time);
@@ -1284,6 +1285,11 @@ static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
 	return 0;
 }
 
+static inline bool vfs_inode_has_locks(struct inode *inode)
+{
+	return false;
+}
+
 static inline int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)
 {
 	return -ENOLCK;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 082/159] ceph: switch to vfs_inode_has_locks() to fix file lock bug
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (80 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 081/159] filelock: new helper: vfs_inode_has_locks Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 083/159] gpio: sifive: Fix refcount leak in sifive_gpio_probe Greg Kroah-Hartman
                   ` (91 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Xiubo Li, Jeff Layton, Ilya Dryomov,
	Sasha Levin

From: Xiubo Li <xiubli@redhat.com>

[ Upstream commit 461ab10ef7e6ea9b41a0571a7fc6a72af9549a3c ]

For the POSIX locks they are using the same owner, which is the
thread id. And multiple POSIX locks could be merged into single one,
so when checking whether the 'file' has locks may fail.

For a file where some openers use locking and others don't is a
really odd usage pattern though. Locks are like stoplights -- they
only work if everyone pays attention to them.

Just switch ceph_get_caps() to check whether any locks are set on
the inode. If there are POSIX/OFD/FLOCK locks on the file at the
time, we should set CHECK_FILELOCK, regardless of what fd was used
to set the lock.

Fixes: ff5d913dfc71 ("ceph: return -EIO if read/write against filp that lost file locks")
Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/ceph/caps.c  | 2 +-
 fs/ceph/locks.c | 4 ----
 fs/ceph/super.h | 1 -
 3 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index e54814d0c2f7..cd69bf267d1b 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -2915,7 +2915,7 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
 
 	while (true) {
 		flags &= CEPH_FILE_MODE_MASK;
-		if (atomic_read(&fi->num_locks))
+		if (vfs_inode_has_locks(inode))
 			flags |= CHECK_FILELOCK;
 		_got = 0;
 		ret = try_get_cap_refs(inode, need, want, endoff,
diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c
index 3e2843e86e27..b191426bf880 100644
--- a/fs/ceph/locks.c
+++ b/fs/ceph/locks.c
@@ -32,18 +32,14 @@ void __init ceph_flock_init(void)
 
 static void ceph_fl_copy_lock(struct file_lock *dst, struct file_lock *src)
 {
-	struct ceph_file_info *fi = dst->fl_file->private_data;
 	struct inode *inode = file_inode(dst->fl_file);
 	atomic_inc(&ceph_inode(inode)->i_filelock_ref);
-	atomic_inc(&fi->num_locks);
 }
 
 static void ceph_fl_release_lock(struct file_lock *fl)
 {
-	struct ceph_file_info *fi = fl->fl_file->private_data;
 	struct inode *inode = file_inode(fl->fl_file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	atomic_dec(&fi->num_locks);
 	if (atomic_dec_and_test(&ci->i_filelock_ref)) {
 		/* clear error when all locks are released */
 		spin_lock(&ci->i_ceph_lock);
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 40630e6f691c..ae4126f63410 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -788,7 +788,6 @@ struct ceph_file_info {
 	struct list_head rw_contexts;
 
 	u32 filp_gen;
-	atomic_t num_locks;
 };
 
 struct ceph_dir_file_info {
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 083/159] gpio: sifive: Fix refcount leak in sifive_gpio_probe
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (81 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 082/159] ceph: switch to vfs_inode_has_locks() to fix file lock bug Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 084/159] net: sched: atm: dont intepret cls results when asked to drop Greg Kroah-Hartman
                   ` (90 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Miaoqian Lin, Bartosz Golaszewski,
	Sasha Levin

From: Miaoqian Lin <linmq006@gmail.com>

[ Upstream commit 694175cd8a1643cde3acb45c9294bca44a8e08e9 ]

of_irq_find_parent() returns a node pointer with refcount incremented,
We should use of_node_put() on it when not needed anymore.
Add missing of_node_put() to avoid refcount leak.

Fixes: 96868dce644d ("gpio/sifive: Add GPIO driver for SiFive SoCs")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpio/gpio-sifive.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpio/gpio-sifive.c b/drivers/gpio/gpio-sifive.c
index 238f3210970c..bc5660f61c57 100644
--- a/drivers/gpio/gpio-sifive.c
+++ b/drivers/gpio/gpio-sifive.c
@@ -215,6 +215,7 @@ static int sifive_gpio_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 	parent = irq_find_host(irq_parent);
+	of_node_put(irq_parent);
 	if (!parent) {
 		dev_err(dev, "no IRQ parent domain\n");
 		return -ENODEV;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 084/159] net: sched: atm: dont intepret cls results when asked to drop
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (82 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 083/159] gpio: sifive: Fix refcount leak in sifive_gpio_probe Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 085/159] net: sched: cbq: " Greg Kroah-Hartman
                   ` (89 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jamal Hadi Salim, David S. Miller,
	Sasha Levin

From: Jamal Hadi Salim <jhs@mojatatu.com>

[ Upstream commit a2965c7be0522eaa18808684b7b82b248515511b ]

If asked to drop a packet via TC_ACT_SHOT it is unsafe to assume
res.class contains a valid pointer
Fixes: b0188d4dbe5f ("[NET_SCHED]: sch_atm: Lindent")

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/sched/sch_atm.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index f52255fea652..4a981ca90b0b 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -393,10 +393,13 @@ static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
 				result = tcf_classify(skb, NULL, fl, &res, true);
 				if (result < 0)
 					continue;
+				if (result == TC_ACT_SHOT)
+					goto done;
+
 				flow = (struct atm_flow_data *)res.class;
 				if (!flow)
 					flow = lookup_flow(sch, res.classid);
-				goto done;
+				goto drop;
 			}
 		}
 		flow = NULL;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 085/159] net: sched: cbq: dont intepret cls results when asked to drop
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (83 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 084/159] net: sched: atm: dont intepret cls results when asked to drop Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 086/159] vxlan: Fix memory leaks in error path Greg Kroah-Hartman
                   ` (88 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Kyle Zeng, Jamal Hadi Salim,
	David S. Miller, Sasha Levin

From: Jamal Hadi Salim <jhs@mojatatu.com>

[ Upstream commit caa4b35b4317d5147b3ab0fbdc9c075c7d2e9c12 ]

If asked to drop a packet via TC_ACT_SHOT it is unsafe to assume that
res.class contains a valid pointer

Sample splat reported by Kyle Zeng

[    5.405624] 0: reclassify loop, rule prio 0, protocol 800
[    5.406326] ==================================================================
[    5.407240] BUG: KASAN: slab-out-of-bounds in cbq_enqueue+0x54b/0xea0
[    5.407987] Read of size 1 at addr ffff88800e3122aa by task poc/299
[    5.408731]
[    5.408897] CPU: 0 PID: 299 Comm: poc Not tainted 5.10.155+ #15
[    5.409516] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS 1.15.0-1 04/01/2014
[    5.410439] Call Trace:
[    5.410764]  dump_stack+0x87/0xcd
[    5.411153]  print_address_description+0x7a/0x6b0
[    5.411687]  ? vprintk_func+0xb9/0xc0
[    5.411905]  ? printk+0x76/0x96
[    5.412110]  ? cbq_enqueue+0x54b/0xea0
[    5.412323]  kasan_report+0x17d/0x220
[    5.412591]  ? cbq_enqueue+0x54b/0xea0
[    5.412803]  __asan_report_load1_noabort+0x10/0x20
[    5.413119]  cbq_enqueue+0x54b/0xea0
[    5.413400]  ? __kasan_check_write+0x10/0x20
[    5.413679]  __dev_queue_xmit+0x9c0/0x1db0
[    5.413922]  dev_queue_xmit+0xc/0x10
[    5.414136]  ip_finish_output2+0x8bc/0xcd0
[    5.414436]  __ip_finish_output+0x472/0x7a0
[    5.414692]  ip_finish_output+0x5c/0x190
[    5.414940]  ip_output+0x2d8/0x3c0
[    5.415150]  ? ip_mc_finish_output+0x320/0x320
[    5.415429]  __ip_queue_xmit+0x753/0x1760
[    5.415664]  ip_queue_xmit+0x47/0x60
[    5.415874]  __tcp_transmit_skb+0x1ef9/0x34c0
[    5.416129]  tcp_connect+0x1f5e/0x4cb0
[    5.416347]  tcp_v4_connect+0xc8d/0x18c0
[    5.416577]  __inet_stream_connect+0x1ae/0xb40
[    5.416836]  ? local_bh_enable+0x11/0x20
[    5.417066]  ? lock_sock_nested+0x175/0x1d0
[    5.417309]  inet_stream_connect+0x5d/0x90
[    5.417548]  ? __inet_stream_connect+0xb40/0xb40
[    5.417817]  __sys_connect+0x260/0x2b0
[    5.418037]  __x64_sys_connect+0x76/0x80
[    5.418267]  do_syscall_64+0x31/0x50
[    5.418477]  entry_SYSCALL_64_after_hwframe+0x61/0xc6
[    5.418770] RIP: 0033:0x473bb7
[    5.418952] Code: 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00
00 00 90 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2a 00 00
00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 18 89 54 24 0c 48 89 34
24 89
[    5.420046] RSP: 002b:00007fffd20eb0f8 EFLAGS: 00000246 ORIG_RAX:
000000000000002a
[    5.420472] RAX: ffffffffffffffda RBX: 00007fffd20eb578 RCX: 0000000000473bb7
[    5.420872] RDX: 0000000000000010 RSI: 00007fffd20eb110 RDI: 0000000000000007
[    5.421271] RBP: 00007fffd20eb150 R08: 0000000000000001 R09: 0000000000000004
[    5.421671] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
[    5.422071] R13: 00007fffd20eb568 R14: 00000000004fc740 R15: 0000000000000002
[    5.422471]
[    5.422562] Allocated by task 299:
[    5.422782]  __kasan_kmalloc+0x12d/0x160
[    5.423007]  kasan_kmalloc+0x5/0x10
[    5.423208]  kmem_cache_alloc_trace+0x201/0x2e0
[    5.423492]  tcf_proto_create+0x65/0x290
[    5.423721]  tc_new_tfilter+0x137e/0x1830
[    5.423957]  rtnetlink_rcv_msg+0x730/0x9f0
[    5.424197]  netlink_rcv_skb+0x166/0x300
[    5.424428]  rtnetlink_rcv+0x11/0x20
[    5.424639]  netlink_unicast+0x673/0x860
[    5.424870]  netlink_sendmsg+0x6af/0x9f0
[    5.425100]  __sys_sendto+0x58d/0x5a0
[    5.425315]  __x64_sys_sendto+0xda/0xf0
[    5.425539]  do_syscall_64+0x31/0x50
[    5.425764]  entry_SYSCALL_64_after_hwframe+0x61/0xc6
[    5.426065]
[    5.426157] The buggy address belongs to the object at ffff88800e312200
[    5.426157]  which belongs to the cache kmalloc-128 of size 128
[    5.426955] The buggy address is located 42 bytes to the right of
[    5.426955]  128-byte region [ffff88800e312200, ffff88800e312280)
[    5.427688] The buggy address belongs to the page:
[    5.427992] page:000000009875fabc refcount:1 mapcount:0
mapping:0000000000000000 index:0x0 pfn:0xe312
[    5.428562] flags: 0x100000000000200(slab)
[    5.428812] raw: 0100000000000200 dead000000000100 dead000000000122
ffff888007843680
[    5.429325] raw: 0000000000000000 0000000000100010 00000001ffffffff
ffff88800e312401
[    5.429875] page dumped because: kasan: bad access detected
[    5.430214] page->mem_cgroup:ffff88800e312401
[    5.430471]
[    5.430564] Memory state around the buggy address:
[    5.430846]  ffff88800e312180: fc fc fc fc fc fc fc fc fc fc fc fc
fc fc fc fc
[    5.431267]  ffff88800e312200: 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 fc
[    5.431705] >ffff88800e312280: fc fc fc fc fc fc fc fc fc fc fc fc
fc fc fc fc
[    5.432123]                                   ^
[    5.432391]  ffff88800e312300: 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 fc
[    5.432810]  ffff88800e312380: fc fc fc fc fc fc fc fc fc fc fc fc
fc fc fc fc
[    5.433229] ==================================================================
[    5.433648] Disabling lock debugging due to kernel taint

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: Kyle Zeng <zengyhkyle@gmail.com>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/sched/sch_cbq.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
index 6568e17c4c63..36db5f6782f2 100644
--- a/net/sched/sch_cbq.c
+++ b/net/sched/sch_cbq.c
@@ -230,6 +230,8 @@ cbq_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
 		result = tcf_classify(skb, NULL, fl, &res, true);
 		if (!fl || result < 0)
 			goto fallback;
+		if (result == TC_ACT_SHOT)
+			return NULL;
 
 		cl = (void *)res.class;
 		if (!cl) {
@@ -250,8 +252,6 @@ cbq_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
 		case TC_ACT_TRAP:
 			*qerr = NET_XMIT_SUCCESS | __NET_XMIT_STOLEN;
 			fallthrough;
-		case TC_ACT_SHOT:
-			return NULL;
 		case TC_ACT_RECLASSIFY:
 			return cbq_reclassify(skb, cl);
 		}
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 086/159] vxlan: Fix memory leaks in error path
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (84 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 085/159] net: sched: cbq: " Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 087/159] net: sparx5: Fix reading of the MAC address Greg Kroah-Hartman
                   ` (87 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ido Schimmel, Nikolay Aleksandrov,
	David S. Miller, Sasha Levin

From: Ido Schimmel <idosch@nvidia.com>

[ Upstream commit 06bf62944144a92d83dd14fd1378d2a288259561 ]

The memory allocated by vxlan_vnigroup_init() is not freed in the error
path, leading to memory leaks [1]. Fix by calling
vxlan_vnigroup_uninit() in the error path.

The leaks can be reproduced by annotating gro_cells_init() with
ALLOW_ERROR_INJECTION() and then running:

 # echo "100" > /sys/kernel/debug/fail_function/probability
 # echo "1" > /sys/kernel/debug/fail_function/times
 # echo "gro_cells_init" > /sys/kernel/debug/fail_function/inject
 # printf %#x -12 > /sys/kernel/debug/fail_function/gro_cells_init/retval
 # ip link add name vxlan0 type vxlan dstport 4789 external vnifilter
 RTNETLINK answers: Cannot allocate memory

[1]
unreferenced object 0xffff88810db84a00 (size 512):
  comm "ip", pid 330, jiffies 4295010045 (age 66.016s)
  hex dump (first 32 bytes):
    f8 d5 76 0e 81 88 ff ff 01 00 00 00 00 00 00 02  ..v.............
    03 00 04 00 48 00 00 00 00 00 00 01 04 00 01 00  ....H...........
  backtrace:
    [<ffffffff81a3097a>] kmalloc_trace+0x2a/0x60
    [<ffffffff82f049fc>] vxlan_vnigroup_init+0x4c/0x160
    [<ffffffff82ecd69e>] vxlan_init+0x1ae/0x280
    [<ffffffff836858ca>] register_netdevice+0x57a/0x16d0
    [<ffffffff82ef67b7>] __vxlan_dev_create+0x7c7/0xa50
    [<ffffffff82ef6ce6>] vxlan_newlink+0xd6/0x130
    [<ffffffff836d02ab>] __rtnl_newlink+0x112b/0x18a0
    [<ffffffff836d0a8c>] rtnl_newlink+0x6c/0xa0
    [<ffffffff836c0ddf>] rtnetlink_rcv_msg+0x43f/0xd40
    [<ffffffff83908ce0>] netlink_rcv_skb+0x170/0x440
    [<ffffffff839066af>] netlink_unicast+0x53f/0x810
    [<ffffffff839072d8>] netlink_sendmsg+0x958/0xe70
    [<ffffffff835c319f>] ____sys_sendmsg+0x78f/0xa90
    [<ffffffff835cd6da>] ___sys_sendmsg+0x13a/0x1e0
    [<ffffffff835cd94c>] __sys_sendmsg+0x11c/0x1f0
    [<ffffffff8424da78>] do_syscall_64+0x38/0x80
unreferenced object 0xffff88810e76d5f8 (size 192):
  comm "ip", pid 330, jiffies 4295010045 (age 66.016s)
  hex dump (first 32 bytes):
    04 00 00 00 00 00 00 00 db e1 4f e7 00 00 00 00  ..........O.....
    08 d6 76 0e 81 88 ff ff 08 d6 76 0e 81 88 ff ff  ..v.......v.....
  backtrace:
    [<ffffffff81a3162e>] __kmalloc_node+0x4e/0x90
    [<ffffffff81a0e166>] kvmalloc_node+0xa6/0x1f0
    [<ffffffff8276e1a3>] bucket_table_alloc.isra.0+0x83/0x460
    [<ffffffff8276f18b>] rhashtable_init+0x43b/0x7c0
    [<ffffffff82f04a1c>] vxlan_vnigroup_init+0x6c/0x160
    [<ffffffff82ecd69e>] vxlan_init+0x1ae/0x280
    [<ffffffff836858ca>] register_netdevice+0x57a/0x16d0
    [<ffffffff82ef67b7>] __vxlan_dev_create+0x7c7/0xa50
    [<ffffffff82ef6ce6>] vxlan_newlink+0xd6/0x130
    [<ffffffff836d02ab>] __rtnl_newlink+0x112b/0x18a0
    [<ffffffff836d0a8c>] rtnl_newlink+0x6c/0xa0
    [<ffffffff836c0ddf>] rtnetlink_rcv_msg+0x43f/0xd40
    [<ffffffff83908ce0>] netlink_rcv_skb+0x170/0x440
    [<ffffffff839066af>] netlink_unicast+0x53f/0x810
    [<ffffffff839072d8>] netlink_sendmsg+0x958/0xe70
    [<ffffffff835c319f>] ____sys_sendmsg+0x78f/0xa90

Fixes: f9c4bb0b245c ("vxlan: vni filtering support on collect metadata device")
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/vxlan/vxlan_core.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c
index 6ab669dcd1c6..d4be39b19a6b 100644
--- a/drivers/net/vxlan/vxlan_core.c
+++ b/drivers/net/vxlan/vxlan_core.c
@@ -2917,16 +2917,23 @@ static int vxlan_init(struct net_device *dev)
 		vxlan_vnigroup_init(vxlan);
 
 	dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
-	if (!dev->tstats)
-		return -ENOMEM;
+	if (!dev->tstats) {
+		err = -ENOMEM;
+		goto err_vnigroup_uninit;
+	}
 
 	err = gro_cells_init(&vxlan->gro_cells, dev);
-	if (err) {
-		free_percpu(dev->tstats);
-		return err;
-	}
+	if (err)
+		goto err_free_percpu;
 
 	return 0;
+
+err_free_percpu:
+	free_percpu(dev->tstats);
+err_vnigroup_uninit:
+	if (vxlan->cfg.flags & VXLAN_F_VNIFILTER)
+		vxlan_vnigroup_uninit(vxlan);
+	return err;
 }
 
 static void vxlan_fdb_delete_default(struct vxlan_dev *vxlan, __be32 vni)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 087/159] net: sparx5: Fix reading of the MAC address
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (85 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 086/159] vxlan: Fix memory leaks in error path Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 088/159] netfilter: ipset: fix hash:net,port,net hang with /0 subnet Greg Kroah-Hartman
                   ` (86 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Horatiu Vultur, David S. Miller,
	Sasha Levin

From: Horatiu Vultur <horatiu.vultur@microchip.com>

[ Upstream commit 588ab2dc25f60efeb516b4abedb6c551949cc185 ]

There is an issue with the checking of the return value of
'of_get_mac_address', which returns 0 on success and negative value on
failure. The driver interpretated the result the opposite way. Therefore
if there was a MAC address defined in the DT, then the driver was
generating a random MAC address otherwise it would use address 0.
Fix this by checking correctly the return value of 'of_get_mac_address'

Fixes: b74ef9f9cb91 ("net: sparx5: Do not use mac_addr uninitialized in mchp_sparx5_probe()")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/microchip/sparx5/sparx5_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_main.c b/drivers/net/ethernet/microchip/sparx5/sparx5_main.c
index b6bbb3c9bd7a..3423c95cc84a 100644
--- a/drivers/net/ethernet/microchip/sparx5/sparx5_main.c
+++ b/drivers/net/ethernet/microchip/sparx5/sparx5_main.c
@@ -824,7 +824,7 @@ static int mchp_sparx5_probe(struct platform_device *pdev)
 	if (err)
 		goto cleanup_config;
 
-	if (!of_get_mac_address(np, sparx5->base_mac)) {
+	if (of_get_mac_address(np, sparx5->base_mac)) {
 		dev_info(sparx5->dev, "MAC addr was not set, use random MAC\n");
 		eth_random_addr(sparx5->base_mac);
 		sparx5->base_mac[5] = 0;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 088/159] netfilter: ipset: fix hash:net,port,net hang with /0 subnet
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (86 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 087/159] net: sparx5: Fix reading of the MAC address Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 089/159] netfilter: ipset: Rework long task execution when adding/deleting entries Greg Kroah-Hartman
                   ` (85 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches,
	Марк
	Коренберг,
	Jozsef Kadlecsik, Pablo Neira Ayuso, Sasha Levin

From: Jozsef Kadlecsik <kadlec@netfilter.org>

[ Upstream commit a31d47be64b9b74f8cfedffe03e0a8a1f9e51f23 ]

The hash:net,port,net set type supports /0 subnets. However, the patch
commit 5f7b51bf09baca8e titled "netfilter: ipset: Limit the maximal range
of consecutive elements to add/delete" did not take into account it and
resulted in an endless loop. The bug is actually older but the patch
5f7b51bf09baca8e brings it out earlier.

Handle /0 subnets properly in hash:net,port,net set types.

Fixes: 5f7b51bf09ba ("netfilter: ipset: Limit the maximal range of consecutive elements to add/delete")
Reported-by: Марк Коренберг <socketpair@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/ipset/ip_set_hash_netportnet.c | 40 ++++++++++----------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/net/netfilter/ipset/ip_set_hash_netportnet.c b/net/netfilter/ipset/ip_set_hash_netportnet.c
index 19bcdb3141f6..005a7ce87217 100644
--- a/net/netfilter/ipset/ip_set_hash_netportnet.c
+++ b/net/netfilter/ipset/ip_set_hash_netportnet.c
@@ -173,17 +173,26 @@ hash_netportnet4_kadt(struct ip_set *set, const struct sk_buff *skb,
 	return adtfn(set, &e, &ext, &opt->ext, opt->cmdflags);
 }
 
+static u32
+hash_netportnet4_range_to_cidr(u32 from, u32 to, u8 *cidr)
+{
+	if (from == 0 && to == UINT_MAX) {
+		*cidr = 0;
+		return to;
+	}
+	return ip_set_range_to_cidr(from, to, cidr);
+}
+
 static int
 hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 		      enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_netportnet4 *h = set->data;
+	struct hash_netportnet4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_netportnet4_elem e = { };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
 	u32 ip = 0, ip_to = 0, p = 0, port, port_to;
-	u32 ip2_from = 0, ip2_to = 0, ip2, ipn;
-	u64 n = 0, m = 0;
+	u32 ip2_from = 0, ip2_to = 0, ip2, i = 0;
 	bool with_ports = false;
 	int ret;
 
@@ -285,19 +294,6 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 	} else {
 		ip_set_mask_from_to(ip2_from, ip2_to, e.cidr[1]);
 	}
-	ipn = ip;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip_to, &e.cidr[0]);
-		n++;
-	} while (ipn++ < ip_to);
-	ipn = ip2_from;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip2_to, &e.cidr[1]);
-		m++;
-	} while (ipn++ < ip2_to);
-
-	if (n*m*(port_to - port + 1) > IPSET_MAX_RANGE)
-		return -ERANGE;
 
 	if (retried) {
 		ip = ntohl(h->next.ip[0]);
@@ -310,13 +306,19 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 
 	do {
 		e.ip[0] = htonl(ip);
-		ip = ip_set_range_to_cidr(ip, ip_to, &e.cidr[0]);
+		ip = hash_netportnet4_range_to_cidr(ip, ip_to, &e.cidr[0]);
 		for (; p <= port_to; p++) {
 			e.port = htons(p);
 			do {
+				i++;
 				e.ip[1] = htonl(ip2);
-				ip2 = ip_set_range_to_cidr(ip2, ip2_to,
-							   &e.cidr[1]);
+				if (i > IPSET_MAX_RANGE) {
+					hash_netportnet4_data_next(&h->next,
+								   &e);
+					return -ERANGE;
+				}
+				ip2 = hash_netportnet4_range_to_cidr(ip2,
+							ip2_to, &e.cidr[1]);
 				ret = adtfn(set, &e, &ext, &ext, flags);
 				if (ret && !ip_set_eexist(ret, flags))
 					return ret;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 089/159] netfilter: ipset: Rework long task execution when adding/deleting entries
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (87 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 088/159] netfilter: ipset: fix hash:net,port,net hang with /0 subnet Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 090/159] drm/virtio: Fix memory leak in virtio_gpu_object_create() Greg Kroah-Hartman
                   ` (84 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+9204e7399656300bf271,
	Jozsef Kadlecsik, Pablo Neira Ayuso, Sasha Levin

From: Jozsef Kadlecsik <kadlec@netfilter.org>

[ Upstream commit 5e29dc36bd5e2166b834ceb19990d9e68a734d7d ]

When adding/deleting large number of elements in one step in ipset, it can
take a reasonable amount of time and can result in soft lockup errors. The
patch 5f7b51bf09ba ("netfilter: ipset: Limit the maximal range of
consecutive elements to add/delete") tried to fix it by limiting the max
elements to process at all. However it was not enough, it is still possible
that we get hung tasks. Lowering the limit is not reasonable, so the
approach in this patch is as follows: rely on the method used at resizing
sets and save the state when we reach a smaller internal batch limit,
unlock/lock and proceed from the saved state. Thus we can avoid long
continuous tasks and at the same time removed the limit to add/delete large
number of elements in one step.

The nfnl mutex is held during the whole operation which prevents one to
issue other ipset commands in parallel.

Fixes: 5f7b51bf09ba ("netfilter: ipset: Limit the maximal range of consecutive elements to add/delete")
Reported-by: syzbot+9204e7399656300bf271@syzkaller.appspotmail.com
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/netfilter/ipset/ip_set.h      |  2 +-
 net/netfilter/ipset/ip_set_core.c           |  7 ++++---
 net/netfilter/ipset/ip_set_hash_ip.c        | 14 ++++++-------
 net/netfilter/ipset/ip_set_hash_ipmark.c    | 13 ++++++------
 net/netfilter/ipset/ip_set_hash_ipport.c    | 13 ++++++------
 net/netfilter/ipset/ip_set_hash_ipportip.c  | 13 ++++++------
 net/netfilter/ipset/ip_set_hash_ipportnet.c | 13 +++++++-----
 net/netfilter/ipset/ip_set_hash_net.c       | 17 +++++++--------
 net/netfilter/ipset/ip_set_hash_netiface.c  | 15 ++++++--------
 net/netfilter/ipset/ip_set_hash_netnet.c    | 23 +++++++--------------
 net/netfilter/ipset/ip_set_hash_netport.c   | 19 +++++++----------
 11 files changed, 68 insertions(+), 81 deletions(-)

diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h
index ada1296c87d5..72f5ebc5c97a 100644
--- a/include/linux/netfilter/ipset/ip_set.h
+++ b/include/linux/netfilter/ipset/ip_set.h
@@ -197,7 +197,7 @@ struct ip_set_region {
 };
 
 /* Max range where every element is added/deleted in one step */
-#define IPSET_MAX_RANGE		(1<<20)
+#define IPSET_MAX_RANGE		(1<<14)
 
 /* The max revision number supported by any set type + 1 */
 #define IPSET_REVISION_MAX	9
diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
index e7ba5b6dd2b7..46ebee9400da 100644
--- a/net/netfilter/ipset/ip_set_core.c
+++ b/net/netfilter/ipset/ip_set_core.c
@@ -1698,9 +1698,10 @@ call_ad(struct net *net, struct sock *ctnl, struct sk_buff *skb,
 		ret = set->variant->uadt(set, tb, adt, &lineno, flags, retried);
 		ip_set_unlock(set);
 		retried = true;
-	} while (ret == -EAGAIN &&
-		 set->variant->resize &&
-		 (ret = set->variant->resize(set, retried)) == 0);
+	} while (ret == -ERANGE ||
+		 (ret == -EAGAIN &&
+		  set->variant->resize &&
+		  (ret = set->variant->resize(set, retried)) == 0));
 
 	if (!ret || (ret == -IPSET_ERR_EXIST && eexist))
 		return 0;
diff --git a/net/netfilter/ipset/ip_set_hash_ip.c b/net/netfilter/ipset/ip_set_hash_ip.c
index 75d556d71652..24adcdd7a0b1 100644
--- a/net/netfilter/ipset/ip_set_hash_ip.c
+++ b/net/netfilter/ipset/ip_set_hash_ip.c
@@ -98,11 +98,11 @@ static int
 hash_ip4_uadt(struct ip_set *set, struct nlattr *tb[],
 	      enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_ip4 *h = set->data;
+	struct hash_ip4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_ip4_elem e = { 0 };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 ip = 0, ip_to = 0, hosts;
+	u32 ip = 0, ip_to = 0, hosts, i = 0;
 	int ret = 0;
 
 	if (tb[IPSET_ATTR_LINENO])
@@ -147,14 +147,14 @@ hash_ip4_uadt(struct ip_set *set, struct nlattr *tb[],
 
 	hosts = h->netmask == 32 ? 1 : 2 << (32 - h->netmask - 1);
 
-	/* 64bit division is not allowed on 32bit */
-	if (((u64)ip_to - ip + 1) >> (32 - h->netmask) > IPSET_MAX_RANGE)
-		return -ERANGE;
-
 	if (retried)
 		ip = ntohl(h->next.ip);
-	for (; ip <= ip_to;) {
+	for (; ip <= ip_to; i++) {
 		e.ip = htonl(ip);
+		if (i > IPSET_MAX_RANGE) {
+			hash_ip4_data_next(&h->next, &e);
+			return -ERANGE;
+		}
 		ret = adtfn(set, &e, &ext, &ext, flags);
 		if (ret && !ip_set_eexist(ret, flags))
 			return ret;
diff --git a/net/netfilter/ipset/ip_set_hash_ipmark.c b/net/netfilter/ipset/ip_set_hash_ipmark.c
index 153de3457423..a22ec1a6f6ec 100644
--- a/net/netfilter/ipset/ip_set_hash_ipmark.c
+++ b/net/netfilter/ipset/ip_set_hash_ipmark.c
@@ -97,11 +97,11 @@ static int
 hash_ipmark4_uadt(struct ip_set *set, struct nlattr *tb[],
 		  enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_ipmark4 *h = set->data;
+	struct hash_ipmark4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_ipmark4_elem e = { };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 ip, ip_to = 0;
+	u32 ip, ip_to = 0, i = 0;
 	int ret;
 
 	if (tb[IPSET_ATTR_LINENO])
@@ -148,13 +148,14 @@ hash_ipmark4_uadt(struct ip_set *set, struct nlattr *tb[],
 		ip_set_mask_from_to(ip, ip_to, cidr);
 	}
 
-	if (((u64)ip_to - ip + 1) > IPSET_MAX_RANGE)
-		return -ERANGE;
-
 	if (retried)
 		ip = ntohl(h->next.ip);
-	for (; ip <= ip_to; ip++) {
+	for (; ip <= ip_to; ip++, i++) {
 		e.ip = htonl(ip);
+		if (i > IPSET_MAX_RANGE) {
+			hash_ipmark4_data_next(&h->next, &e);
+			return -ERANGE;
+		}
 		ret = adtfn(set, &e, &ext, &ext, flags);
 
 		if (ret && !ip_set_eexist(ret, flags))
diff --git a/net/netfilter/ipset/ip_set_hash_ipport.c b/net/netfilter/ipset/ip_set_hash_ipport.c
index 7303138e46be..10481760a9b2 100644
--- a/net/netfilter/ipset/ip_set_hash_ipport.c
+++ b/net/netfilter/ipset/ip_set_hash_ipport.c
@@ -105,11 +105,11 @@ static int
 hash_ipport4_uadt(struct ip_set *set, struct nlattr *tb[],
 		  enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_ipport4 *h = set->data;
+	struct hash_ipport4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_ipport4_elem e = { .ip = 0 };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 ip, ip_to = 0, p = 0, port, port_to;
+	u32 ip, ip_to = 0, p = 0, port, port_to, i = 0;
 	bool with_ports = false;
 	int ret;
 
@@ -173,17 +173,18 @@ hash_ipport4_uadt(struct ip_set *set, struct nlattr *tb[],
 			swap(port, port_to);
 	}
 
-	if (((u64)ip_to - ip + 1)*(port_to - port + 1) > IPSET_MAX_RANGE)
-		return -ERANGE;
-
 	if (retried)
 		ip = ntohl(h->next.ip);
 	for (; ip <= ip_to; ip++) {
 		p = retried && ip == ntohl(h->next.ip) ? ntohs(h->next.port)
 						       : port;
-		for (; p <= port_to; p++) {
+		for (; p <= port_to; p++, i++) {
 			e.ip = htonl(ip);
 			e.port = htons(p);
+			if (i > IPSET_MAX_RANGE) {
+				hash_ipport4_data_next(&h->next, &e);
+				return -ERANGE;
+			}
 			ret = adtfn(set, &e, &ext, &ext, flags);
 
 			if (ret && !ip_set_eexist(ret, flags))
diff --git a/net/netfilter/ipset/ip_set_hash_ipportip.c b/net/netfilter/ipset/ip_set_hash_ipportip.c
index 334fb1ad0e86..39a01934b153 100644
--- a/net/netfilter/ipset/ip_set_hash_ipportip.c
+++ b/net/netfilter/ipset/ip_set_hash_ipportip.c
@@ -108,11 +108,11 @@ static int
 hash_ipportip4_uadt(struct ip_set *set, struct nlattr *tb[],
 		    enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_ipportip4 *h = set->data;
+	struct hash_ipportip4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_ipportip4_elem e = { .ip = 0 };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 ip, ip_to = 0, p = 0, port, port_to;
+	u32 ip, ip_to = 0, p = 0, port, port_to, i = 0;
 	bool with_ports = false;
 	int ret;
 
@@ -180,17 +180,18 @@ hash_ipportip4_uadt(struct ip_set *set, struct nlattr *tb[],
 			swap(port, port_to);
 	}
 
-	if (((u64)ip_to - ip + 1)*(port_to - port + 1) > IPSET_MAX_RANGE)
-		return -ERANGE;
-
 	if (retried)
 		ip = ntohl(h->next.ip);
 	for (; ip <= ip_to; ip++) {
 		p = retried && ip == ntohl(h->next.ip) ? ntohs(h->next.port)
 						       : port;
-		for (; p <= port_to; p++) {
+		for (; p <= port_to; p++, i++) {
 			e.ip = htonl(ip);
 			e.port = htons(p);
+			if (i > IPSET_MAX_RANGE) {
+				hash_ipportip4_data_next(&h->next, &e);
+				return -ERANGE;
+			}
 			ret = adtfn(set, &e, &ext, &ext, flags);
 
 			if (ret && !ip_set_eexist(ret, flags))
diff --git a/net/netfilter/ipset/ip_set_hash_ipportnet.c b/net/netfilter/ipset/ip_set_hash_ipportnet.c
index 7df94f437f60..5c6de605a9fb 100644
--- a/net/netfilter/ipset/ip_set_hash_ipportnet.c
+++ b/net/netfilter/ipset/ip_set_hash_ipportnet.c
@@ -160,12 +160,12 @@ static int
 hash_ipportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 		     enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_ipportnet4 *h = set->data;
+	struct hash_ipportnet4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_ipportnet4_elem e = { .cidr = HOST_MASK - 1 };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
 	u32 ip = 0, ip_to = 0, p = 0, port, port_to;
-	u32 ip2_from = 0, ip2_to = 0, ip2;
+	u32 ip2_from = 0, ip2_to = 0, ip2, i = 0;
 	bool with_ports = false;
 	u8 cidr;
 	int ret;
@@ -253,9 +253,6 @@ hash_ipportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 			swap(port, port_to);
 	}
 
-	if (((u64)ip_to - ip + 1)*(port_to - port + 1) > IPSET_MAX_RANGE)
-		return -ERANGE;
-
 	ip2_to = ip2_from;
 	if (tb[IPSET_ATTR_IP2_TO]) {
 		ret = ip_set_get_hostipaddr4(tb[IPSET_ATTR_IP2_TO], &ip2_to);
@@ -282,9 +279,15 @@ hash_ipportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 		for (; p <= port_to; p++) {
 			e.port = htons(p);
 			do {
+				i++;
 				e.ip2 = htonl(ip2);
 				ip2 = ip_set_range_to_cidr(ip2, ip2_to, &cidr);
 				e.cidr = cidr - 1;
+				if (i > IPSET_MAX_RANGE) {
+					hash_ipportnet4_data_next(&h->next,
+								  &e);
+					return -ERANGE;
+				}
 				ret = adtfn(set, &e, &ext, &ext, flags);
 
 				if (ret && !ip_set_eexist(ret, flags))
diff --git a/net/netfilter/ipset/ip_set_hash_net.c b/net/netfilter/ipset/ip_set_hash_net.c
index 1422739d9aa2..ce0a9ce5a91f 100644
--- a/net/netfilter/ipset/ip_set_hash_net.c
+++ b/net/netfilter/ipset/ip_set_hash_net.c
@@ -136,11 +136,11 @@ static int
 hash_net4_uadt(struct ip_set *set, struct nlattr *tb[],
 	       enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_net4 *h = set->data;
+	struct hash_net4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_net4_elem e = { .cidr = HOST_MASK };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 ip = 0, ip_to = 0, ipn, n = 0;
+	u32 ip = 0, ip_to = 0, i = 0;
 	int ret;
 
 	if (tb[IPSET_ATTR_LINENO])
@@ -188,19 +188,16 @@ hash_net4_uadt(struct ip_set *set, struct nlattr *tb[],
 		if (ip + UINT_MAX == ip_to)
 			return -IPSET_ERR_HASH_RANGE;
 	}
-	ipn = ip;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip_to, &e.cidr);
-		n++;
-	} while (ipn++ < ip_to);
-
-	if (n > IPSET_MAX_RANGE)
-		return -ERANGE;
 
 	if (retried)
 		ip = ntohl(h->next.ip);
 	do {
+		i++;
 		e.ip = htonl(ip);
+		if (i > IPSET_MAX_RANGE) {
+			hash_net4_data_next(&h->next, &e);
+			return -ERANGE;
+		}
 		ip = ip_set_range_to_cidr(ip, ip_to, &e.cidr);
 		ret = adtfn(set, &e, &ext, &ext, flags);
 		if (ret && !ip_set_eexist(ret, flags))
diff --git a/net/netfilter/ipset/ip_set_hash_netiface.c b/net/netfilter/ipset/ip_set_hash_netiface.c
index 9810f5bf63f5..031073286236 100644
--- a/net/netfilter/ipset/ip_set_hash_netiface.c
+++ b/net/netfilter/ipset/ip_set_hash_netiface.c
@@ -202,7 +202,7 @@ hash_netiface4_uadt(struct ip_set *set, struct nlattr *tb[],
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_netiface4_elem e = { .cidr = HOST_MASK, .elem = 1 };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 ip = 0, ip_to = 0, ipn, n = 0;
+	u32 ip = 0, ip_to = 0, i = 0;
 	int ret;
 
 	if (tb[IPSET_ATTR_LINENO])
@@ -256,19 +256,16 @@ hash_netiface4_uadt(struct ip_set *set, struct nlattr *tb[],
 	} else {
 		ip_set_mask_from_to(ip, ip_to, e.cidr);
 	}
-	ipn = ip;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip_to, &e.cidr);
-		n++;
-	} while (ipn++ < ip_to);
-
-	if (n > IPSET_MAX_RANGE)
-		return -ERANGE;
 
 	if (retried)
 		ip = ntohl(h->next.ip);
 	do {
+		i++;
 		e.ip = htonl(ip);
+		if (i > IPSET_MAX_RANGE) {
+			hash_netiface4_data_next(&h->next, &e);
+			return -ERANGE;
+		}
 		ip = ip_set_range_to_cidr(ip, ip_to, &e.cidr);
 		ret = adtfn(set, &e, &ext, &ext, flags);
 
diff --git a/net/netfilter/ipset/ip_set_hash_netnet.c b/net/netfilter/ipset/ip_set_hash_netnet.c
index 3d09eefe998a..c07b70bf32db 100644
--- a/net/netfilter/ipset/ip_set_hash_netnet.c
+++ b/net/netfilter/ipset/ip_set_hash_netnet.c
@@ -163,13 +163,12 @@ static int
 hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 		  enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_netnet4 *h = set->data;
+	struct hash_netnet4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_netnet4_elem e = { };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
 	u32 ip = 0, ip_to = 0;
-	u32 ip2 = 0, ip2_from = 0, ip2_to = 0, ipn;
-	u64 n = 0, m = 0;
+	u32 ip2 = 0, ip2_from = 0, ip2_to = 0, i = 0;
 	int ret;
 
 	if (tb[IPSET_ATTR_LINENO])
@@ -245,19 +244,6 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 	} else {
 		ip_set_mask_from_to(ip2_from, ip2_to, e.cidr[1]);
 	}
-	ipn = ip;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip_to, &e.cidr[0]);
-		n++;
-	} while (ipn++ < ip_to);
-	ipn = ip2_from;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip2_to, &e.cidr[1]);
-		m++;
-	} while (ipn++ < ip2_to);
-
-	if (n*m > IPSET_MAX_RANGE)
-		return -ERANGE;
 
 	if (retried) {
 		ip = ntohl(h->next.ip[0]);
@@ -270,7 +256,12 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 		e.ip[0] = htonl(ip);
 		ip = ip_set_range_to_cidr(ip, ip_to, &e.cidr[0]);
 		do {
+			i++;
 			e.ip[1] = htonl(ip2);
+			if (i > IPSET_MAX_RANGE) {
+				hash_netnet4_data_next(&h->next, &e);
+				return -ERANGE;
+			}
 			ip2 = ip_set_range_to_cidr(ip2, ip2_to, &e.cidr[1]);
 			ret = adtfn(set, &e, &ext, &ext, flags);
 			if (ret && !ip_set_eexist(ret, flags))
diff --git a/net/netfilter/ipset/ip_set_hash_netport.c b/net/netfilter/ipset/ip_set_hash_netport.c
index 09cf72eb37f8..d1a0628df4ef 100644
--- a/net/netfilter/ipset/ip_set_hash_netport.c
+++ b/net/netfilter/ipset/ip_set_hash_netport.c
@@ -154,12 +154,11 @@ static int
 hash_netport4_uadt(struct ip_set *set, struct nlattr *tb[],
 		   enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
 {
-	const struct hash_netport4 *h = set->data;
+	struct hash_netport4 *h = set->data;
 	ipset_adtfn adtfn = set->variant->adt[adt];
 	struct hash_netport4_elem e = { .cidr = HOST_MASK - 1 };
 	struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
-	u32 port, port_to, p = 0, ip = 0, ip_to = 0, ipn;
-	u64 n = 0;
+	u32 port, port_to, p = 0, ip = 0, ip_to = 0, i = 0;
 	bool with_ports = false;
 	u8 cidr;
 	int ret;
@@ -236,14 +235,6 @@ hash_netport4_uadt(struct ip_set *set, struct nlattr *tb[],
 	} else {
 		ip_set_mask_from_to(ip, ip_to, e.cidr + 1);
 	}
-	ipn = ip;
-	do {
-		ipn = ip_set_range_to_cidr(ipn, ip_to, &cidr);
-		n++;
-	} while (ipn++ < ip_to);
-
-	if (n*(port_to - port + 1) > IPSET_MAX_RANGE)
-		return -ERANGE;
 
 	if (retried) {
 		ip = ntohl(h->next.ip);
@@ -255,8 +246,12 @@ hash_netport4_uadt(struct ip_set *set, struct nlattr *tb[],
 		e.ip = htonl(ip);
 		ip = ip_set_range_to_cidr(ip, ip_to, &cidr);
 		e.cidr = cidr - 1;
-		for (; p <= port_to; p++) {
+		for (; p <= port_to; p++, i++) {
 			e.port = htons(p);
+			if (i > IPSET_MAX_RANGE) {
+				hash_netport4_data_next(&h->next, &e);
+				return -ERANGE;
+			}
 			ret = adtfn(set, &e, &ext, &ext, flags);
 			if (ret && !ip_set_eexist(ret, flags))
 				return ret;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 090/159] drm/virtio: Fix memory leak in virtio_gpu_object_create()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (88 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 089/159] netfilter: ipset: Rework long task execution when adding/deleting entries Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:03 ` [PATCH 6.1 091/159] perf tools: Fix resources leak in perf_data__open_dir() Greg Kroah-Hartman
                   ` (83 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Xiu Jianfeng, Dmitry Osipenko, Sasha Levin

From: Xiu Jianfeng <xiujianfeng@huawei.com>

[ Upstream commit a764da46cd15f8b40292d2c0b29c4bf9a3e66c7e ]

The virtio_gpu_object_shmem_init() will alloc memory and save it in
@ents, so when virtio_gpu_array_alloc() fails, this memory should be
freed, this patch fixes it.

Fixes: e7fef0923303 ("drm/virtio: Simplify error handling of virtio_gpu_object_create()")
Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221109091905.55451-1-xiujianfeng@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/virtio/virtgpu_object.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c
index 8d7728181de0..c7e74cf13022 100644
--- a/drivers/gpu/drm/virtio/virtgpu_object.c
+++ b/drivers/gpu/drm/virtio/virtgpu_object.c
@@ -184,7 +184,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
 	struct virtio_gpu_object_array *objs = NULL;
 	struct drm_gem_shmem_object *shmem_obj;
 	struct virtio_gpu_object *bo;
-	struct virtio_gpu_mem_entry *ents;
+	struct virtio_gpu_mem_entry *ents = NULL;
 	unsigned int nents;
 	int ret;
 
@@ -210,7 +210,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
 		ret = -ENOMEM;
 		objs = virtio_gpu_array_alloc(1);
 		if (!objs)
-			goto err_put_id;
+			goto err_free_entry;
 		virtio_gpu_array_add_obj(objs, &bo->base.base);
 
 		ret = virtio_gpu_array_lock_resv(objs);
@@ -239,6 +239,8 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
 
 err_put_objs:
 	virtio_gpu_array_put_free(objs);
+err_free_entry:
+	kvfree(ents);
 err_put_id:
 	virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
 err_free_gem:
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 091/159] perf tools: Fix resources leak in perf_data__open_dir()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (89 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 090/159] drm/virtio: Fix memory leak in virtio_gpu_object_create() Greg Kroah-Hartman
@ 2023-01-10 18:03 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 092/159] drm/imx: ipuv3-plane: Fix overlay plane width Greg Kroah-Hartman
                   ` (82 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:03 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Adrian Hunter, Miaoqian Lin,
	Alexander Shishkin, Alexey Bayduraev, Ingo Molnar, Jiri Olsa,
	Mark Rutland, Namhyung Kim, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Sasha Levin

From: Miaoqian Lin <linmq006@gmail.com>

[ Upstream commit 0a6564ebd953c4590663c9a3c99a3ea9920ade6f ]

In perf_data__open_dir(), opendir() opens the directory stream.  Add
missing closedir() to release it after use.

Fixes: eb6176709b235b96 ("perf data: Add perf_data__open_dir_data function")
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20221229090903.1402395-1-linmq006@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/data.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/data.c b/tools/perf/util/data.c
index a7f68c309545..fc16299c915f 100644
--- a/tools/perf/util/data.c
+++ b/tools/perf/util/data.c
@@ -132,6 +132,7 @@ int perf_data__open_dir(struct perf_data *data)
 		file->size = st.st_size;
 	}
 
+	closedir(dir);
 	if (!files)
 		return -EINVAL;
 
@@ -140,6 +141,7 @@ int perf_data__open_dir(struct perf_data *data)
 	return 0;
 
 out_err:
+	closedir(dir);
 	close_dir(files, nr);
 	return ret;
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 092/159] drm/imx: ipuv3-plane: Fix overlay plane width
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (90 preceding siblings ...)
  2023-01-10 18:03 ` [PATCH 6.1 091/159] perf tools: Fix resources leak in perf_data__open_dir() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 093/159] fs/ntfs3: dont hold ni_lock when calling truncate_setsize() Greg Kroah-Hartman
                   ` (81 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Lucas Stach, Philipp Zabel, Ian Ray,
	Philipp Zabel, Sasha Levin

From: Philipp Zabel <p.zabel@pengutronix.de>

[ Upstream commit 92d43bd3bc9728c1fb114d7011d46f5ea9489e28 ]

ipu_src_rect_width() was introduced to support odd screen resolutions
such as 1366x768 by internally rounding up primary plane width to a
multiple of 8 and compensating with reduced horizontal blanking.
This also caused overlay plane width to be rounded up, which was not
intended. Fix overlay plane width by limiting the rounding up to the
primary plane.

drm_rect_width(&new_state->src) >> 16 is the same value as
drm_rect_width(dst) because there is no plane scaling support.

Fixes: 94dfec48fca7 ("drm/imx: Add 8 pixel alignment fix")
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Link: https://lore.kernel.org/r/20221108141420.176696-1-p.zabel@pengutronix.de
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20221108141420.176696-1-p.zabel@pengutronix.de
Tested-by: Ian Ray <ian.ray@ge.com>
(cherry picked from commit 4333472f8d7befe62359fecb1083cd57a6e07bfc)
Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/imx/ipuv3-plane.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/imx/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3-plane.c
index dba4f7d81d69..80142d9a4a55 100644
--- a/drivers/gpu/drm/imx/ipuv3-plane.c
+++ b/drivers/gpu/drm/imx/ipuv3-plane.c
@@ -614,6 +614,11 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		break;
 	}
 
+	if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_BG)
+		width = ipu_src_rect_width(new_state);
+	else
+		width = drm_rect_width(&new_state->src) >> 16;
+
 	eba = drm_plane_state_to_eba(new_state, 0);
 
 	/*
@@ -622,8 +627,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 	 */
 	if (ipu_state->use_pre) {
 		axi_id = ipu_chan_assign_axi_id(ipu_plane->dma);
-		ipu_prg_channel_configure(ipu_plane->ipu_ch, axi_id,
-					  ipu_src_rect_width(new_state),
+		ipu_prg_channel_configure(ipu_plane->ipu_ch, axi_id, width,
 					  drm_rect_height(&new_state->src) >> 16,
 					  fb->pitches[0], fb->format->format,
 					  fb->modifier, &eba);
@@ -678,9 +682,8 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		break;
 	}
 
-	ipu_dmfc_config_wait4eot(ipu_plane->dmfc, ALIGN(drm_rect_width(dst), 8));
+	ipu_dmfc_config_wait4eot(ipu_plane->dmfc, width);
 
-	width = ipu_src_rect_width(new_state);
 	height = drm_rect_height(&new_state->src) >> 16;
 	info = drm_format_info(fb->format->format);
 	ipu_calculate_bursts(width, info->cpp[0], fb->pitches[0],
@@ -744,8 +747,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		ipu_cpmem_set_burstsize(ipu_plane->ipu_ch, 16);
 
 		ipu_cpmem_zero(ipu_plane->alpha_ch);
-		ipu_cpmem_set_resolution(ipu_plane->alpha_ch,
-					 ipu_src_rect_width(new_state),
+		ipu_cpmem_set_resolution(ipu_plane->alpha_ch, width,
 					 drm_rect_height(&new_state->src) >> 16);
 		ipu_cpmem_set_format_passthrough(ipu_plane->alpha_ch, 8);
 		ipu_cpmem_set_high_priority(ipu_plane->alpha_ch);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 093/159] fs/ntfs3: dont hold ni_lock when calling truncate_setsize()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (91 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 092/159] drm/imx: ipuv3-plane: Fix overlay plane width Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 094/159] drivers/net/bonding/bond_3ad: return when theres no aggregator Greg Kroah-Hartman
                   ` (80 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot, Hillf Danton, Tetsuo Handa,
	Linus Torvalds, Sasha Levin

From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>

[ Upstream commit 0226635c304cfd5c9db9b78c259cb713819b057e ]

syzbot is reporting hung task at do_user_addr_fault() [1], for there is
a silent deadlock between PG_locked bit and ni_lock lock.

Since filemap_update_page() calls filemap_read_folio() after calling
folio_trylock() which will set PG_locked bit, ntfs_truncate() must not
call truncate_setsize() which will wait for PG_locked bit to be cleared
when holding ni_lock lock.

Link: https://lore.kernel.org/all/00000000000060d41f05f139aa44@google.com/
Link: https://syzkaller.appspot.com/bug?extid=bed15dbf10294aa4f2ae [1]
Reported-by: syzbot <syzbot+bed15dbf10294aa4f2ae@syzkaller.appspotmail.com>
Debugged-by: Linus Torvalds <torvalds@linux-foundation.org>
Co-developed-by: Hillf Danton <hdanton@sina.com>
Signed-off-by: Hillf Danton <hdanton@sina.com>
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation")
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/ntfs3/file.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c
index 4f2ffc7ef296..f31c0389a2e7 100644
--- a/fs/ntfs3/file.c
+++ b/fs/ntfs3/file.c
@@ -486,10 +486,10 @@ static int ntfs_truncate(struct inode *inode, loff_t new_size)
 
 	new_valid = ntfs_up_block(sb, min_t(u64, ni->i_valid, new_size));
 
-	ni_lock(ni);
-
 	truncate_setsize(inode, new_size);
 
+	ni_lock(ni);
+
 	down_write(&ni->file.run_lock);
 	err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run, new_size,
 			    &new_valid, ni->mi.sbi->options->prealloc, NULL);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 094/159] drivers/net/bonding/bond_3ad: return when theres no aggregator
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (92 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 093/159] fs/ntfs3: dont hold ni_lock when calling truncate_setsize() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 095/159] octeontx2-pf: Fix lmtst ID used in aura free Greg Kroah-Hartman
                   ` (79 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Daniil Tatianin, Jiri Pirko,
	David S. Miller, Sasha Levin

From: Daniil Tatianin <d-tatianin@yandex-team.ru>

[ Upstream commit 9c807965483f42df1d053b7436eedd6cf28ece6f ]

Otherwise we would dereference a NULL aggregator pointer when calling
__set_agg_ports_ready on the line below.

Found by Linux Verification Center (linuxtesting.org) with the SVACE
static analysis tool.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Daniil Tatianin <d-tatianin@yandex-team.ru>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/bonding/bond_3ad.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index e58a1e0cadd2..9270977e6c7f 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -1540,6 +1540,7 @@ static void ad_port_selection_logic(struct port *port, bool *update_slave_arr)
 			slave_err(bond->dev, port->slave->dev,
 				  "Port %d did not find a suitable aggregator\n",
 				  port->actor_port_number);
+			return;
 		}
 	}
 	/* if all aggregator's ports are READY_N == TRUE, set ready=TRUE
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 095/159] octeontx2-pf: Fix lmtst ID used in aura free
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (93 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 094/159] drivers/net/bonding/bond_3ad: return when theres no aggregator Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 096/159] usb: rndis_host: Secure rndis_query check against int overflow Greg Kroah-Hartman
                   ` (78 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Sunil Goutham, Geetha sowjanya,
	David S. Miller, Sasha Levin

From: Geetha sowjanya <gakula@marvell.com>

[ Upstream commit 4af1b64f80fbe1275fb02c5f1c0cef099a4a231f ]

Current code uses per_cpu pointer to get the lmtst_id mapped to
the core on which aura_free() is executed. Using per_cpu pointer
without preemption disable causing mismatch between lmtst_id and
core on which pointer gets freed. This patch fixes the issue by
disabling preemption around aura_free.

Fixes: ef6c8da71eaf ("octeontx2-pf: cn10K: Reserve LMTST lines per core")
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: Geetha sowjanya <gakula@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../marvell/octeontx2/nic/otx2_common.c       | 30 +++++++++++++------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index 9e10e7471b88..88f8772a61cd 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -1012,6 +1012,7 @@ static void otx2_pool_refill_task(struct work_struct *work)
 	rbpool = cq->rbpool;
 	free_ptrs = cq->pool_ptrs;
 
+	get_cpu();
 	while (cq->pool_ptrs) {
 		if (otx2_alloc_rbuf(pfvf, rbpool, &bufptr)) {
 			/* Schedule a WQ if we fails to free atleast half of the
@@ -1031,6 +1032,7 @@ static void otx2_pool_refill_task(struct work_struct *work)
 		pfvf->hw_ops->aura_freeptr(pfvf, qidx, bufptr + OTX2_HEAD_ROOM);
 		cq->pool_ptrs--;
 	}
+	put_cpu();
 	cq->refill_task_sched = false;
 }
 
@@ -1368,6 +1370,7 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
 	if (err)
 		goto fail;
 
+	get_cpu();
 	/* Allocate pointers and free them to aura/pool */
 	for (qidx = 0; qidx < hw->tot_tx_queues; qidx++) {
 		pool_id = otx2_get_pool_idx(pfvf, AURA_NIX_SQ, qidx);
@@ -1376,18 +1379,24 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
 		sq = &qset->sq[qidx];
 		sq->sqb_count = 0;
 		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_KERNEL);
-		if (!sq->sqb_ptrs)
-			return -ENOMEM;
+		if (!sq->sqb_ptrs) {
+			err = -ENOMEM;
+			goto err_mem;
+		}
 
 		for (ptr = 0; ptr < num_sqbs; ptr++) {
-			if (otx2_alloc_rbuf(pfvf, pool, &bufptr))
-				return -ENOMEM;
+			err = otx2_alloc_rbuf(pfvf, pool, &bufptr);
+			if (err)
+				goto err_mem;
 			pfvf->hw_ops->aura_freeptr(pfvf, pool_id, bufptr);
 			sq->sqb_ptrs[sq->sqb_count++] = (u64)bufptr;
 		}
 	}
 
-	return 0;
+err_mem:
+	put_cpu();
+	return err ? -ENOMEM : 0;
+
 fail:
 	otx2_mbox_reset(&pfvf->mbox.mbox, 0);
 	otx2_aura_pool_free(pfvf);
@@ -1426,18 +1435,21 @@ int otx2_rq_aura_pool_init(struct otx2_nic *pfvf)
 	if (err)
 		goto fail;
 
+	get_cpu();
 	/* Allocate pointers and free them to aura/pool */
 	for (pool_id = 0; pool_id < hw->rqpool_cnt; pool_id++) {
 		pool = &pfvf->qset.pool[pool_id];
 		for (ptr = 0; ptr < num_ptrs; ptr++) {
-			if (otx2_alloc_rbuf(pfvf, pool, &bufptr))
-				return -ENOMEM;
+			err = otx2_alloc_rbuf(pfvf, pool, &bufptr);
+			if (err)
+				goto err_mem;
 			pfvf->hw_ops->aura_freeptr(pfvf, pool_id,
 						   bufptr + OTX2_HEAD_ROOM);
 		}
 	}
-
-	return 0;
+err_mem:
+	put_cpu();
+	return err ? -ENOMEM : 0;
 fail:
 	otx2_mbox_reset(&pfvf->mbox.mbox, 0);
 	otx2_aura_pool_free(pfvf);
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 096/159] usb: rndis_host: Secure rndis_query check against int overflow
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (94 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 095/159] octeontx2-pf: Fix lmtst ID used in aura free Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 097/159] perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390 Greg Kroah-Hartman
                   ` (77 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Szymon Heidrich, David S. Miller,
	Sasha Levin

From: Szymon Heidrich <szymon.heidrich@gmail.com>

[ Upstream commit c7dd13805f8b8fc1ce3b6d40f6aff47e66b72ad2 ]

Variables off and len typed as uint32 in rndis_query function
are controlled by incoming RNDIS response message thus their
value may be manipulated. Setting off to a unexpectetly large
value will cause the sum with len and 8 to overflow and pass
the implemented validation step. Consequently the response
pointer will be referring to a location past the expected
buffer boundaries allowing information leakage e.g. via
RNDIS_OID_802_3_PERMANENT_ADDRESS OID.

Fixes: ddda08624013 ("USB: rndis_host, various cleanups")
Signed-off-by: Szymon Heidrich <szymon.heidrich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/usb/rndis_host.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index f79333fe1783..7b3739b29c8f 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -255,7 +255,8 @@ static int rndis_query(struct usbnet *dev, struct usb_interface *intf,
 
 	off = le32_to_cpu(u.get_c->offset);
 	len = le32_to_cpu(u.get_c->len);
-	if (unlikely((8 + off + len) > CONTROL_BUFFER_SIZE))
+	if (unlikely((off > CONTROL_BUFFER_SIZE - 8) ||
+		     (len > CONTROL_BUFFER_SIZE - 8 - off)))
 		goto response_error;
 
 	if (*reply_len != -1 && len != *reply_len)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 097/159] perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (95 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 096/159] usb: rndis_host: Secure rndis_query check against int overflow Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 098/159] perf stat: Fix handling of unsupported cgroup events when using BPF counters Greg Kroah-Hartman
                   ` (76 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Thomas Richter, Namhyung Kim,
	Heiko Carstens, Sumanth Korikkar, Sven Schnelle, Vasily Gorbik,
	Arnaldo Carvalho de Melo, Sasha Levin

From: Thomas Richter <tmricht@linux.ibm.com>

[ Upstream commit d8d85ce86dc82de4f88b821a78f533b9d5b22a45 ]

The test case perf lock contention dumps core on s390. Run the following
commands:

  # ./perf lock record -- ./perf bench sched messaging
  # Running 'sched/messaging' benchmark:
  # 20 sender and receiver processes per group
  # 10 groups == 400 processes run

      Total time: 2.799 [sec]
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.073 MB perf.data (100 samples) ]
  #
  # ./perf lock contention
  Segmentation fault (core dumped)
  #

The function call stack is lengthy, here are the top 5 functions:

  # gdb ./perf core.24048
  GNU gdb (GDB) Fedora Linux 12.1-6.fc37
  Core was generated by `./perf lock contention'.
  Program terminated with signal SIGSEGV, Segmentation fault.
  #0  0x00000000011dd25c in machine__is_lock_function (machine=0x3029e28, addr=1789230) at util/machine.c:3356
         3356 machine->sched.text_end = kmap->unmap_ip(kmap, sym->start);

 (gdb) where
  #0  0x00000000011dd25c in machine__is_lock_function (machine=0x3029e28, addr=1789230) at util/machine.c:3356
  #1  0x000000000109f244 in callchain_id (evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:957
  #2  0x000000000109e094 in get_key_by_aggr_mode (key=0x3ffea4f7290, addr=27758136, evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:586
  #3  0x000000000109f4d0 in report_lock_contention_begin_event (evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:1004
  #4  0x00000000010a00ae in evsel__process_contention_begin (evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:1254
  #5  0x00000000010a0e14 in process_sample_event (tool=0x3ffea4f8480, event=0x3ff85601ef8, sample=0x3ffea4f77d0, evsel=0x30313e0, machine=0x3029e28) at builtin-lock.c:1464
  .....

The issue is in function machine__is_lock_function() in file
./util/machine.c lines 3355:

   /* should not fail from here */
   sym = machine__find_kernel_symbol_by_name(machine, "__sched_text_end", &kmap);
   machine->sched.text_end = kmap->unmap_ip(kmap, sym->start)

On s390 the symbol __sched_text_end is *NOT* in the symbol list and the
resulting pointer sym is set to NULL. The sym->start is then a NULL pointer
access and generates the core dump.

The reason why __sched_text_end is not in the symbol list on s390 is
simple:

When the symbol list is created at perf start up with function calls

  dso__load
  +--> dso__load_vmlinux_path
       +--> dso__load_vmlinux
            +--> dso__load_sym
	         +--> dso__load_sym_internal (reads kernel symbols)
		 +--> symbols__fixup_end
		 +--> symbols__fixup_duplicate

The issue is in function symbols__fixup_duplicate(). It deletes all
symbols with have the same address. On s390:

  # nm -g  ~/linux/vmlinux| fgrep c68390
  0000000000c68390 T __cpuidle_text_start
  0000000000c68390 T __sched_text_end
  #

two symbols have identical addresses and __sched_text_end is considered
duplicate (in ascending sort order) and removed from the symbol list.
Therefore it is missing and an invalid pointer reference occurs.  The
code checks for symbol __sched_text_start and when it exists assumes
symbol __sched_text_end is also in the symbol table. However this is not
the case on s390.

Same situation exists for symbol __lock_text_start:

0000000000c68770 T __cpuidle_text_end
0000000000c68770 T __lock_text_start

This symbol is also removed from the symbol table but used in function
machine__is_lock_function().

To fix this and keep duplicate symbols in the symbol table, set
symbol_conf.allow_aliases to true. This prevents the removal of
duplicate symbols in function symbols__fixup_duplicate().

Output After:

 # ./perf lock contention
 contended total wait  max wait  avg wait    type   caller

        48   124.39 ms 123.99 ms   2.59 ms rwsem:W unlink_anon_vmas+0x24a
        47    83.68 ms  83.26 ms   1.78 ms rwsem:W free_pgtables+0x132
         5    41.22 us  10.55 us   8.24 us rwsem:W free_pgtables+0x140
         4    40.12 us  20.55 us  10.03 us rwsem:W copy_process+0x1ac8
 #

Fixes: 0d2997f750d1de39 ("perf lock: Look up callchain for the contended locks")
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Link: https://lore.kernel.org/r/20221230102627.2410847-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/builtin-lock.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
index 66520712a167..470106643ed5 100644
--- a/tools/perf/builtin-lock.c
+++ b/tools/perf/builtin-lock.c
@@ -1582,6 +1582,7 @@ static int __cmd_report(bool display_info)
 
 	/* for lock function check */
 	symbol_conf.sort_by_name = true;
+	symbol_conf.allow_aliases = true;
 	symbol__init(&session->header.env);
 
 	if (!perf_session__has_traces(session, "lock record"))
@@ -1660,6 +1661,7 @@ static int __cmd_contention(int argc, const char **argv)
 
 	/* for lock function check */
 	symbol_conf.sort_by_name = true;
+	symbol_conf.allow_aliases = true;
 	symbol__init(&session->header.env);
 
 	if (use_bpf) {
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 098/159] perf stat: Fix handling of unsupported cgroup events when using BPF counters
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (96 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 097/159] perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390 Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 099/159] perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode Greg Kroah-Hartman
                   ` (75 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Namhyung Kim,
	Arnaldo Carvalho de Melo, Adrian Hunter, Ian Rogers, Ingo Molnar,
	Jiri Olsa, Peter Zijlstra, Song Liu, Sasha Levin

From: Namhyung Kim <namhyung@kernel.org>

[ Upstream commit 2d656b0f81b22101db0447f890e39fdd736b745e ]

When --for-each-cgroup option is used, it fails when any of events is
not supported and exits immediately.  This is not how 'perf stat'
handles unsupported events.

Let's ignore the failure and proceed with others so that the output is
similar to when BPF counters are not used:

Before:

  $ sudo ./perf stat -a --bpf-counters -e L1-icache-loads,L1-dcache-loads --for-each-cgroup system.slice,user.slice sleep 1
  Failed to open first cgroup events
  $

After it shows output similat to when --bpf-counters isn't specified:

  $ sudo ./perf stat -a --bpf-counters -e L1-icache-loads,L1-dcache-loads --for-each-cgroup system.slice,user.slice sleep 1

   Performance counter stats for 'system wide':

     <not supported>      L1-icache-loads                  system.slice
          29,892,418      L1-dcache-loads                  system.slice
     <not supported>      L1-icache-loads                  user.slice
          52,497,220      L1-dcache-loads                  user.slice
  $

Fixes: 944138f048f7d759 ("perf stat: Enable BPF counter with --for-each-cgroup")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/r/20230104064402.1551516-4-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/bpf_counter_cgroup.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/tools/perf/util/bpf_counter_cgroup.c b/tools/perf/util/bpf_counter_cgroup.c
index 3c2df7522f6f..1c82377ed78b 100644
--- a/tools/perf/util/bpf_counter_cgroup.c
+++ b/tools/perf/util/bpf_counter_cgroup.c
@@ -116,27 +116,19 @@ static int bperf_load_program(struct evlist *evlist)
 
 			/* open single copy of the events w/o cgroup */
 			err = evsel__open_per_cpu(evsel, evsel->core.cpus, -1);
-			if (err) {
-				pr_err("Failed to open first cgroup events\n");
-				goto out;
-			}
+			if (err == 0)
+				evsel->supported = true;
 
 			map_fd = bpf_map__fd(skel->maps.events);
 			perf_cpu_map__for_each_cpu(cpu, j, evsel->core.cpus) {
 				int fd = FD(evsel, j);
 				__u32 idx = evsel->core.idx * total_cpus + cpu.cpu;
 
-				err = bpf_map_update_elem(map_fd, &idx, &fd,
-							  BPF_ANY);
-				if (err < 0) {
-					pr_err("Failed to update perf_event fd\n");
-					goto out;
-				}
+				bpf_map_update_elem(map_fd, &idx, &fd, BPF_ANY);
 			}
 
 			evsel->cgrp = leader_cgrp;
 		}
-		evsel->supported = true;
 
 		if (evsel->cgrp == cgrp)
 			continue;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 099/159] perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (97 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 098/159] perf stat: Fix handling of unsupported cgroup events when using BPF counters Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 100/159] drm/i915: unpin on error in intel_vgpu_shadow_mm_pin() Greg Kroah-Hartman
                   ` (74 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Namhyung Kim,
	Arnaldo Carvalho de Melo, Adrian Hunter, bpf, Ian Rogers,
	Ingo Molnar, Jiri Olsa, Peter Zijlstra, Song Liu, Sasha Levin

From: Namhyung Kim <namhyung@kernel.org>

[ Upstream commit 54b353a20c7e8be98414754f5aff98c8a68fcc1f ]

The --for-each-cgroup can have the same cgroup multiple times, but this
confuses BPF counters (since they have the same cgroup id), making only
the last cgroup events to be counted.

Let's check the cgroup name before adding a new entry to the cgroups
list.

Before:

  $ sudo ./perf stat -a --bpf-counters --for-each-cgroup /,/ sleep 1

   Performance counter stats for 'system wide':

       <not counted> msec cpu-clock                        /
       <not counted>      context-switches                 /
       <not counted>      cpu-migrations                   /
       <not counted>      page-faults                      /
       <not counted>      cycles                           /
       <not counted>      instructions                     /
       <not counted>      branches                         /
       <not counted>      branch-misses                    /
            8,016.04 msec cpu-clock                        /                #    7.998 CPUs utilized
               6,152      context-switches                 /                #  767.461 /sec
                 250      cpu-migrations                   /                #   31.187 /sec
                 442      page-faults                      /                #   55.139 /sec
         613,111,487      cycles                           /                #    0.076 GHz
         280,599,604      instructions                     /                #    0.46  insn per cycle
          57,692,724      branches                         /                #    7.197 M/sec
           3,385,168      branch-misses                    /                #    5.87% of all branches

         1.002220125 seconds time elapsed

After it becomes similar to the non-BPF mode:

  $ sudo ./perf stat -a --bpf-counters --for-each-cgroup /,/  sleep 1

   Performance counter stats for 'system wide':

            8,013.38 msec cpu-clock                        /                #    7.998 CPUs utilized
               6,859      context-switches                 /                #  855.944 /sec
                 334      cpu-migrations                   /                #   41.680 /sec
                 345      page-faults                      /                #   43.053 /sec
         782,326,119      cycles                           /                #    0.098 GHz
         471,645,724      instructions                     /                #    0.60  insn per cycle
          94,963,430      branches                         /                #   11.851 M/sec
           3,685,511      branch-misses                    /                #    3.88% of all branches

         1.001864539 seconds time elapsed

Committer notes:

As a reminder, to test with BPF counters one has to use BUILD_BPF_SKEL=1
in the make command line and have clang/llvm installed when building
perf, otherwise the --bpf-counters option will not be available:

  # perf stat -a --bpf-counters --for-each-cgroup /,/ sleep 1
  Error: unknown option `bpf-counters'

   Usage: perf stat [<options>] [<command>]

      -a, --all-cpus        system-wide collection from all CPUs
  <SNIP>
  #

Fixes: bb1c15b60b981d10 ("perf stat: Support regex pattern in --for-each-cgroup")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: bpf@vger.kernel.org
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/r/20230104064402.1551516-5-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/cgroup.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/tools/perf/util/cgroup.c b/tools/perf/util/cgroup.c
index e99b41f9be45..cd978c240e0d 100644
--- a/tools/perf/util/cgroup.c
+++ b/tools/perf/util/cgroup.c
@@ -224,6 +224,19 @@ static int add_cgroup_name(const char *fpath, const struct stat *sb __maybe_unus
 	return 0;
 }
 
+static int check_and_add_cgroup_name(const char *fpath)
+{
+	struct cgroup_name *cn;
+
+	list_for_each_entry(cn, &cgroup_list, list) {
+		if (!strcmp(cn->name, fpath))
+			return 0;
+	}
+
+	/* pretend if it's added by ftw() */
+	return add_cgroup_name(fpath, NULL, FTW_D, NULL);
+}
+
 static void release_cgroup_list(void)
 {
 	struct cgroup_name *cn;
@@ -242,7 +255,7 @@ static int list_cgroups(const char *str)
 	struct cgroup_name *cn;
 	char *s;
 
-	/* use given name as is - for testing purpose */
+	/* use given name as is when no regex is given */
 	for (;;) {
 		p = strchr(str, ',');
 		e = p ? p : eos;
@@ -253,13 +266,13 @@ static int list_cgroups(const char *str)
 			s = strndup(str, e - str);
 			if (!s)
 				return -1;
-			/* pretend if it's added by ftw() */
-			ret = add_cgroup_name(s, NULL, FTW_D, NULL);
+
+			ret = check_and_add_cgroup_name(s);
 			free(s);
-			if (ret)
+			if (ret < 0)
 				return -1;
 		} else {
-			if (add_cgroup_name("", NULL, FTW_D, NULL) < 0)
+			if (check_and_add_cgroup_name("/") < 0)
 				return -1;
 		}
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 100/159] drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (98 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 099/159] perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 101/159] drm/i915/gvt: fix double free bug in split_2MB_gtt_entry Greg Kroah-Hartman
                   ` (73 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Zhenyu Wang, Sasha Levin

From: Dan Carpenter <error27@gmail.com>

[ Upstream commit 3792fc508c095abd84b10ceae12bd773e61fdc36 ]

Call intel_vgpu_unpin_mm() on this error path.

Fixes: 418741480809 ("drm/i915/gvt: Adding ppgtt to GVT GEM context after shadow pdps settled.")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/Y3OQ5tgZIVxyQ/WV@kili
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/i915/gvt/scheduler.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index d6fe94cd0fdb..8342d95f56cb 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -696,6 +696,7 @@ intel_vgpu_shadow_mm_pin(struct intel_vgpu_workload *workload)
 
 	if (workload->shadow_mm->type != INTEL_GVT_MM_PPGTT ||
 	    !workload->shadow_mm->ppgtt_mm.shadowed) {
+		intel_vgpu_unpin_mm(workload->shadow_mm);
 		gvt_vgpu_err("workload shadow ppgtt isn't ready\n");
 		return -EINVAL;
 	}
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 101/159] drm/i915/gvt: fix double free bug in split_2MB_gtt_entry
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (99 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 100/159] drm/i915: unpin on error in intel_vgpu_shadow_mm_pin() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 102/159] ublk: honor IO_URING_F_NONBLOCK for handling control command Greg Kroah-Hartman
                   ` (72 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Zheng Wang, Zhenyu Wang, Sasha Levin

From: Zheng Wang <zyytlz.wz@163.com>

[ Upstream commit 4a61648af68f5ba4884f0e3b494ee1cabc4b6620 ]

If intel_gvt_dma_map_guest_page failed, it will call
ppgtt_invalidate_spt, which will finally free the spt.
But the caller function ppgtt_populate_spt_by_guest_entry
does not notice that, it will free spt again in its error
path.

Fix this by canceling the mapping of DMA address and freeing sub_spt.
Besides, leave the handle of spt destroy to caller function instead
of callee function when error occurs.

Fixes: b901b252b6cf ("drm/i915/gvt: Add 2M huge gtt support")
Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20221229165641.1192455-1-zyytlz.wz@163.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/i915/gvt/gtt.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c
index ce0eb03709c3..80c60754a5c1 100644
--- a/drivers/gpu/drm/i915/gvt/gtt.c
+++ b/drivers/gpu/drm/i915/gvt/gtt.c
@@ -1214,10 +1214,8 @@ static int split_2MB_gtt_entry(struct intel_vgpu *vgpu,
 	for_each_shadow_entry(sub_spt, &sub_se, sub_index) {
 		ret = intel_gvt_dma_map_guest_page(vgpu, start_gfn + sub_index,
 						   PAGE_SIZE, &dma_addr);
-		if (ret) {
-			ppgtt_invalidate_spt(spt);
-			return ret;
-		}
+		if (ret)
+			goto err;
 		sub_se.val64 = se->val64;
 
 		/* Copy the PAT field from PDE. */
@@ -1236,6 +1234,17 @@ static int split_2MB_gtt_entry(struct intel_vgpu *vgpu,
 	ops->set_pfn(se, sub_spt->shadow_page.mfn);
 	ppgtt_set_shadow_entry(spt, se, index);
 	return 0;
+err:
+	/* Cancel the existing addess mappings of DMA addr. */
+	for_each_present_shadow_entry(sub_spt, &sub_se, sub_index) {
+		gvt_vdbg_mm("invalidate 4K entry\n");
+		ppgtt_invalidate_pte(sub_spt, &sub_se);
+	}
+	/* Release the new allocated spt. */
+	trace_spt_change(sub_spt->vgpu->id, "release", sub_spt,
+		sub_spt->guest_page.gfn, sub_spt->shadow_page.type);
+	ppgtt_free_spt(sub_spt);
+	return ret;
 }
 
 static int split_64KB_gtt_entry(struct intel_vgpu *vgpu,
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 102/159] ublk: honor IO_URING_F_NONBLOCK for handling control command
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (100 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 101/159] drm/i915/gvt: fix double free bug in split_2MB_gtt_entry Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 103/159] qed: allow sleep in qed_mcp_trace_dump() Greg Kroah-Hartman
                   ` (71 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Jens Axboe, Ming Lei, Sasha Levin

From: Ming Lei <ming.lei@redhat.com>

[ Upstream commit fa8e442e832a3647cdd90f3e606c473a51bc1b26 ]

Most of control command handlers may sleep, so return -EAGAIN in case
of IO_URING_F_NONBLOCK to defer the handling into io wq context.

Fixes: 71f28f3136af ("ublk_drv: add io_uring based userspace block driver")
Reported-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230104133235.836536-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/block/ublk_drv.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
index e9de9d846b73..17b677b5d3b2 100644
--- a/drivers/block/ublk_drv.c
+++ b/drivers/block/ublk_drv.c
@@ -1992,6 +1992,9 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
 	struct ublksrv_ctrl_cmd *header = (struct ublksrv_ctrl_cmd *)cmd->cmd;
 	int ret = -EINVAL;
 
+	if (issue_flags & IO_URING_F_NONBLOCK)
+		return -EAGAIN;
+
 	ublk_ctrl_cmd_dump(cmd);
 
 	if (!(issue_flags & IO_URING_F_SQE128))
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 103/159] qed: allow sleep in qed_mcp_trace_dump()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (101 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 102/159] ublk: honor IO_URING_F_NONBLOCK for handling control command Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 104/159] net/ulp: prevent ULP without clone op from entering the LISTEN status Greg Kroah-Hartman
                   ` (70 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Caleb Sander, Alok Prasad,
	Jakub Kicinski, Sasha Levin

From: Caleb Sander <csander@purestorage.com>

[ Upstream commit 5401c3e0992860b11fb4b25796e4c4f1921740df ]

By default, qed_mcp_cmd_and_union() delays 10us at a time in a loop
that can run 500K times, so calls to qed_mcp_nvm_rd_cmd()
may block the current thread for over 5s.
We observed thread scheduling delays over 700ms in production,
with stacktraces pointing to this code as the culprit.

qed_mcp_trace_dump() is called from ethtool, so sleeping is permitted.
It already can sleep in qed_mcp_halt(), which calls qed_mcp_cmd().
Add a "can sleep" parameter to qed_find_nvram_image() and
qed_nvram_read() so they can sleep during qed_mcp_trace_dump().
qed_mcp_trace_get_meta_info() and qed_mcp_trace_read_meta(),
called only by qed_mcp_trace_dump(), allow these functions to sleep.
I can't tell if the other caller (qed_grc_dump_mcp_hw_dump()) can sleep,
so keep b_can_sleep set to false when it calls these functions.

An example stacktrace from a custom warning we added to the kernel
showing a thread that has not scheduled despite long needing resched:
[ 2745.362925,17] ------------[ cut here ]------------
[ 2745.362941,17] WARNING: CPU: 23 PID: 5640 at arch/x86/kernel/irq.c:233 do_IRQ+0x15e/0x1a0()
[ 2745.362946,17] Thread not rescheduled for 744 ms after irq 99
[ 2745.362956,17] Modules linked in: ...
[ 2745.363339,17] CPU: 23 PID: 5640 Comm: lldpd Tainted: P           O    4.4.182+ #202104120910+6d1da174272d.61x
[ 2745.363343,17] Hardware name: FOXCONN MercuryB/Quicksilver Controller, BIOS H11P1N09 07/08/2020
[ 2745.363346,17]  0000000000000000 ffff885ec07c3ed8 ffffffff8131eb2f ffff885ec07c3f20
[ 2745.363358,17]  ffffffff81d14f64 ffff885ec07c3f10 ffffffff81072ac2 ffff88be98ed0000
[ 2745.363369,17]  0000000000000063 0000000000000174 0000000000000074 0000000000000000
[ 2745.363379,17] Call Trace:
[ 2745.363382,17]  <IRQ>  [<ffffffff8131eb2f>] dump_stack+0x8e/0xcf
[ 2745.363393,17]  [<ffffffff81072ac2>] warn_slowpath_common+0x82/0xc0
[ 2745.363398,17]  [<ffffffff81072b4c>] warn_slowpath_fmt+0x4c/0x50
[ 2745.363404,17]  [<ffffffff810d5a8e>] ? rcu_irq_exit+0xae/0xc0
[ 2745.363408,17]  [<ffffffff817c99fe>] do_IRQ+0x15e/0x1a0
[ 2745.363413,17]  [<ffffffff817c7ac9>] common_interrupt+0x89/0x89
[ 2745.363416,17]  <EOI>  [<ffffffff8132aa74>] ? delay_tsc+0x24/0x50
[ 2745.363425,17]  [<ffffffff8132aa04>] __udelay+0x34/0x40
[ 2745.363457,17]  [<ffffffffa04d45ff>] qed_mcp_cmd_and_union+0x36f/0x7d0 [qed]
[ 2745.363473,17]  [<ffffffffa04d5ced>] qed_mcp_nvm_rd_cmd+0x4d/0x90 [qed]
[ 2745.363490,17]  [<ffffffffa04e1dc7>] qed_mcp_trace_dump+0x4a7/0x630 [qed]
[ 2745.363504,17]  [<ffffffffa04e2556>] ? qed_fw_asserts_dump+0x1d6/0x1f0 [qed]
[ 2745.363520,17]  [<ffffffffa04e4ea7>] qed_dbg_mcp_trace_get_dump_buf_size+0x37/0x80 [qed]
[ 2745.363536,17]  [<ffffffffa04ea881>] qed_dbg_feature_size+0x61/0xa0 [qed]
[ 2745.363551,17]  [<ffffffffa04eb427>] qed_dbg_all_data_size+0x247/0x260 [qed]
[ 2745.363560,17]  [<ffffffffa0482c10>] qede_get_regs_len+0x30/0x40 [qede]
[ 2745.363566,17]  [<ffffffff816c9783>] ethtool_get_drvinfo+0xe3/0x190
[ 2745.363570,17]  [<ffffffff816cc152>] dev_ethtool+0x1362/0x2140
[ 2745.363575,17]  [<ffffffff8109bcc6>] ? finish_task_switch+0x76/0x260
[ 2745.363580,17]  [<ffffffff817c2116>] ? __schedule+0x3c6/0x9d0
[ 2745.363585,17]  [<ffffffff810dbd50>] ? hrtimer_start_range_ns+0x1d0/0x370
[ 2745.363589,17]  [<ffffffff816c1e5b>] ? dev_get_by_name_rcu+0x6b/0x90
[ 2745.363594,17]  [<ffffffff816de6a8>] dev_ioctl+0xe8/0x710
[ 2745.363599,17]  [<ffffffff816a58a8>] sock_do_ioctl+0x48/0x60
[ 2745.363603,17]  [<ffffffff816a5d87>] sock_ioctl+0x1c7/0x280
[ 2745.363608,17]  [<ffffffff8111f393>] ? seccomp_phase1+0x83/0x220
[ 2745.363612,17]  [<ffffffff811e3503>] do_vfs_ioctl+0x2b3/0x4e0
[ 2745.363616,17]  [<ffffffff811e3771>] SyS_ioctl+0x41/0x70
[ 2745.363619,17]  [<ffffffff817c6ffe>] entry_SYSCALL_64_fastpath+0x1e/0x79
[ 2745.363622,17] ---[ end trace f6954aa440266421 ]---

Fixes: c965db4446291 ("qed: Add support for debug data collection")
Signed-off-by: Caleb Sander <csander@purestorage.com>
Acked-by: Alok Prasad <palok@marvell.com>
Link: https://lore.kernel.org/r/20230103233021.1457646-1-csander@purestorage.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/qlogic/qed/qed_debug.c | 28 +++++++++++++++------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_debug.c b/drivers/net/ethernet/qlogic/qed/qed_debug.c
index 86ecb080b153..cdcead614e9f 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_debug.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_debug.c
@@ -1832,7 +1832,8 @@ static enum dbg_status qed_find_nvram_image(struct qed_hwfn *p_hwfn,
 					    struct qed_ptt *p_ptt,
 					    u32 image_type,
 					    u32 *nvram_offset_bytes,
-					    u32 *nvram_size_bytes)
+					    u32 *nvram_size_bytes,
+					    bool b_can_sleep)
 {
 	u32 ret_mcp_resp, ret_mcp_param, ret_txn_size;
 	struct mcp_file_att file_att;
@@ -1846,7 +1847,8 @@ static enum dbg_status qed_find_nvram_image(struct qed_hwfn *p_hwfn,
 					&ret_mcp_resp,
 					&ret_mcp_param,
 					&ret_txn_size,
-					(u32 *)&file_att, false);
+					(u32 *)&file_att,
+					b_can_sleep);
 
 	/* Check response */
 	if (nvm_result || (ret_mcp_resp & FW_MSG_CODE_MASK) !=
@@ -1873,7 +1875,9 @@ static enum dbg_status qed_find_nvram_image(struct qed_hwfn *p_hwfn,
 static enum dbg_status qed_nvram_read(struct qed_hwfn *p_hwfn,
 				      struct qed_ptt *p_ptt,
 				      u32 nvram_offset_bytes,
-				      u32 nvram_size_bytes, u32 *ret_buf)
+				      u32 nvram_size_bytes,
+				      u32 *ret_buf,
+				      bool b_can_sleep)
 {
 	u32 ret_mcp_resp, ret_mcp_param, ret_read_size, bytes_to_copy;
 	s32 bytes_left = nvram_size_bytes;
@@ -1899,7 +1903,7 @@ static enum dbg_status qed_nvram_read(struct qed_hwfn *p_hwfn,
 				       &ret_mcp_resp,
 				       &ret_mcp_param, &ret_read_size,
 				       (u32 *)((u8 *)ret_buf + read_offset),
-				       false))
+				       b_can_sleep))
 			return DBG_STATUS_NVRAM_READ_FAILED;
 
 		/* Check response */
@@ -3380,7 +3384,8 @@ static u32 qed_grc_dump_mcp_hw_dump(struct qed_hwfn *p_hwfn,
 				      p_ptt,
 				      NVM_TYPE_HW_DUMP_OUT,
 				      &hw_dump_offset_bytes,
-				      &hw_dump_size_bytes);
+				      &hw_dump_size_bytes,
+				      false);
 	if (status != DBG_STATUS_OK)
 		return 0;
 
@@ -3397,7 +3402,9 @@ static u32 qed_grc_dump_mcp_hw_dump(struct qed_hwfn *p_hwfn,
 		status = qed_nvram_read(p_hwfn,
 					p_ptt,
 					hw_dump_offset_bytes,
-					hw_dump_size_bytes, dump_buf + offset);
+					hw_dump_size_bytes,
+					dump_buf + offset,
+					false);
 		if (status != DBG_STATUS_OK) {
 			DP_NOTICE(p_hwfn,
 				  "Failed to read MCP HW Dump image from NVRAM\n");
@@ -4123,7 +4130,9 @@ static enum dbg_status qed_mcp_trace_get_meta_info(struct qed_hwfn *p_hwfn,
 	return qed_find_nvram_image(p_hwfn,
 				    p_ptt,
 				    nvram_image_type,
-				    trace_meta_offset, trace_meta_size);
+				    trace_meta_offset,
+				    trace_meta_size,
+				    true);
 }
 
 /* Reads the MCP Trace meta data from NVRAM into the specified buffer */
@@ -4139,7 +4148,10 @@ static enum dbg_status qed_mcp_trace_read_meta(struct qed_hwfn *p_hwfn,
 	/* Read meta data from NVRAM */
 	status = qed_nvram_read(p_hwfn,
 				p_ptt,
-				nvram_offset_in_bytes, size_in_bytes, buf);
+				nvram_offset_in_bytes,
+				size_in_bytes,
+				buf,
+				true);
 	if (status != DBG_STATUS_OK)
 		return status;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 104/159] net/ulp: prevent ULP without clone op from entering the LISTEN status
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (102 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 103/159] qed: allow sleep in qed_mcp_trace_dump() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 105/159] caif: fix memory leak in cfctrl_linkup_request() Greg Kroah-Hartman
                   ` (69 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, slipper, Paolo Abeni,
	Jakub Kicinski, Sasha Levin

From: Paolo Abeni <pabeni@redhat.com>

[ Upstream commit 2c02d41d71f90a5168391b6a5f2954112ba2307c ]

When an ULP-enabled socket enters the LISTEN status, the listener ULP data
pointer is copied inside the child/accepted sockets by sk_clone_lock().

The relevant ULP can take care of de-duplicating the context pointer via
the clone() operation, but only MPTCP and SMC implement such op.

Other ULPs may end-up with a double-free at socket disposal time.

We can't simply clear the ULP data at clone time, as TLS replaces the
socket ops with custom ones assuming a valid TLS ULP context is
available.

Instead completely prevent clone-less ULP sockets from entering the
LISTEN status.

Fixes: 734942cc4ea6 ("tcp: ULP infrastructure")
Reported-by: slipper <slipper.alive@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Link: https://lore.kernel.org/r/4b80c3d1dbe3d0ab072f80450c202d9bc88b4b03.1672740602.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/ipv4/inet_connection_sock.c | 14 ++++++++++++++
 net/ipv4/tcp_ulp.c              |  4 ++++
 2 files changed, 18 insertions(+)

diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 0465ada82799..647b3c6b575e 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -1200,12 +1200,26 @@ void inet_csk_prepare_forced_close(struct sock *sk)
 }
 EXPORT_SYMBOL(inet_csk_prepare_forced_close);
 
+static int inet_ulp_can_listen(const struct sock *sk)
+{
+	const struct inet_connection_sock *icsk = inet_csk(sk);
+
+	if (icsk->icsk_ulp_ops && !icsk->icsk_ulp_ops->clone)
+		return -EINVAL;
+
+	return 0;
+}
+
 int inet_csk_listen_start(struct sock *sk)
 {
 	struct inet_connection_sock *icsk = inet_csk(sk);
 	struct inet_sock *inet = inet_sk(sk);
 	int err;
 
+	err = inet_ulp_can_listen(sk);
+	if (unlikely(err))
+		return err;
+
 	reqsk_queue_alloc(&icsk->icsk_accept_queue);
 
 	sk->sk_ack_backlog = 0;
diff --git a/net/ipv4/tcp_ulp.c b/net/ipv4/tcp_ulp.c
index 9ae50b1bd844..05b6077b9f2c 100644
--- a/net/ipv4/tcp_ulp.c
+++ b/net/ipv4/tcp_ulp.c
@@ -139,6 +139,10 @@ static int __tcp_set_ulp(struct sock *sk, const struct tcp_ulp_ops *ulp_ops)
 	if (sk->sk_socket)
 		clear_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags);
 
+	err = -EINVAL;
+	if (!ulp_ops->clone && sk->sk_state == TCP_LISTEN)
+		goto out_err;
+
 	err = ulp_ops->init(sk);
 	if (err)
 		goto out_err;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 105/159] caif: fix memory leak in cfctrl_linkup_request()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (103 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 104/159] net/ulp: prevent ULP without clone op from entering the LISTEN status Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 106/159] udf: Fix extension of the last extent in the file Greg Kroah-Hartman
                   ` (68 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Zhengchao Shao, Jiri Pirko,
	Paolo Abeni, Sasha Levin

From: Zhengchao Shao <shaozhengchao@huawei.com>

[ Upstream commit fe69230f05897b3de758427b574fc98025dfc907 ]

When linktype is unknown or kzalloc failed in cfctrl_linkup_request(),
pkt is not released. Add release process to error path.

Fixes: b482cd2053e3 ("net-caif: add CAIF core protocol stack")
Fixes: 8d545c8f958f ("caif: Disconnect without waiting for response")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20230104065146.1153009-1-shaozhengchao@huawei.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/caif/cfctrl.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c
index cc405d8c7c30..8480684f2762 100644
--- a/net/caif/cfctrl.c
+++ b/net/caif/cfctrl.c
@@ -269,11 +269,15 @@ int cfctrl_linkup_request(struct cflayer *layer,
 	default:
 		pr_warn("Request setup of bad link type = %d\n",
 			param->linktype);
+		cfpkt_destroy(pkt);
 		return -EINVAL;
 	}
 	req = kzalloc(sizeof(*req), GFP_KERNEL);
-	if (!req)
+	if (!req) {
+		cfpkt_destroy(pkt);
 		return -ENOMEM;
+	}
+
 	req->client_layer = user_layer;
 	req->cmd = CFCTRL_CMD_LINK_SETUP;
 	req->param = *param;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 106/159] udf: Fix extension of the last extent in the file
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (104 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 105/159] caif: fix memory leak in cfctrl_linkup_request() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 107/159] usb: dwc3: xilinx: include linux/gpio/consumer.h Greg Kroah-Hartman
                   ` (67 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Jan Kara, Sasha Levin

From: Jan Kara <jack@suse.cz>

[ Upstream commit 83c7423d1eb6806d13c521d1002cc1a012111719 ]

When extending the last extent in the file within the last block, we
wrongly computed the length of the last extent. This is mostly a
cosmetical problem since the extent does not contain any data and the
length will be fixed up by following operations but still.

Fixes: 1f3868f06855 ("udf: Fix extending file within last block")
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/udf/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index f713d108f21d..e92a16435a29 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -600,7 +600,7 @@ static void udf_do_extend_final_block(struct inode *inode,
 	 */
 	if (new_elen <= (last_ext->extLength & UDF_EXTENT_LENGTH_MASK))
 		return;
-	added_bytes = (last_ext->extLength & UDF_EXTENT_LENGTH_MASK) - new_elen;
+	added_bytes = new_elen - (last_ext->extLength & UDF_EXTENT_LENGTH_MASK);
 	last_ext->extLength += added_bytes;
 	UDF_I(inode)->i_lenExtents += added_bytes;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 107/159] usb: dwc3: xilinx: include linux/gpio/consumer.h
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (105 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 106/159] udf: Fix extension of the last extent in the file Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 108/159] hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling Greg Kroah-Hartman
                   ` (66 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Arnd Bergmann, Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit e498a04443240c15c3c857165f7b652b87f4fd96 ]

The newly added gpio consumer calls cause a build failure in configurations
that fail to include the right header implicitly:

drivers/usb/dwc3/dwc3-xilinx.c: In function 'dwc3_xlnx_init_zynqmp':
drivers/usb/dwc3/dwc3-xilinx.c:207:22: error: implicit declaration of function 'devm_gpiod_get_optional'; did you mean 'devm_clk_get_optional'? [-Werror=implicit-function-declaration]
  207 |         reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
      |                      devm_clk_get_optional

Fixes: ca05b38252d7 ("usb: dwc3: xilinx: Add gpio-reset support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20230103121755.956027-1-arnd@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/dwc3/dwc3-xilinx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/dwc3/dwc3-xilinx.c b/drivers/usb/dwc3/dwc3-xilinx.c
index 8607d4c23283..0745e9f11b2e 100644
--- a/drivers/usb/dwc3/dwc3-xilinx.c
+++ b/drivers/usb/dwc3/dwc3-xilinx.c
@@ -13,6 +13,7 @@
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
+#include <linux/gpio/consumer.h>
 #include <linux/of_gpio.h>
 #include <linux/of_platform.h>
 #include <linux/pm_runtime.h>
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 108/159] hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (106 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 107/159] usb: dwc3: xilinx: include linux/gpio/consumer.h Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 109/159] ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown" Greg Kroah-Hartman
                   ` (65 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+7bb7cd3595533513a9e7,
	Michael Schmitz, Arnd Bergmann, Matthew Wilcox,
	Viacheslav Dubeyko, Linus Torvalds, Sasha Levin

From: Linus Torvalds <torvalds@linux-foundation.org>

[ Upstream commit cb7a95af78d29442b8294683eca4897544b8ef46 ]

Commit 55d1cbbbb29e ("hfs/hfsplus: use WARN_ON for sanity check") fixed
a build warning by turning a comment into a WARN_ON(), but it turns out
that syzbot then complains because it can trigger said warning with a
corrupted hfs image.

The warning actually does warn about a bad situation, but we are much
better off just handling it as the error it is.  So rather than warn
about us doing bad things, stop doing the bad things and return -EIO.

While at it, also fix a memory leak that was introduced by an earlier
fix for a similar syzbot warning situation, and add a check for one case
that historically wasn't handled at all (ie neither comment nor
subsequent WARN_ON).

Reported-by: syzbot+7bb7cd3595533513a9e7@syzkaller.appspotmail.com
Fixes: 55d1cbbbb29e ("hfs/hfsplus: use WARN_ON for sanity check")
Fixes: 8d824e69d9f3 ("hfs: fix OOB Read in __hfs_brec_find")
Link: https://lore.kernel.org/lkml/000000000000dbce4e05f170f289@google.com/
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Viacheslav Dubeyko <slava@dubeyko.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/hfs/inode.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index a0746be3c1de..80d17c520d0b 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -458,15 +458,16 @@ int hfs_write_inode(struct inode *inode, struct writeback_control *wbc)
 		/* panic? */
 		return -EIO;
 
+	res = -EIO;
 	if (HFS_I(main_inode)->cat_key.CName.len > HFS_NAMELEN)
-		return -EIO;
+		goto out;
 	fd.search_key->cat = HFS_I(main_inode)->cat_key;
 	if (hfs_brec_find(&fd))
-		/* panic? */
 		goto out;
 
 	if (S_ISDIR(main_inode->i_mode)) {
-		WARN_ON(fd.entrylength < sizeof(struct hfs_cat_dir));
+		if (fd.entrylength < sizeof(struct hfs_cat_dir))
+			goto out;
 		hfs_bnode_read(fd.bnode, &rec, fd.entryoffset,
 			   sizeof(struct hfs_cat_dir));
 		if (rec.type != HFS_CDR_DIR ||
@@ -479,6 +480,8 @@ int hfs_write_inode(struct inode *inode, struct writeback_control *wbc)
 		hfs_bnode_write(fd.bnode, &rec, fd.entryoffset,
 			    sizeof(struct hfs_cat_dir));
 	} else if (HFS_IS_RSRC(inode)) {
+		if (fd.entrylength < sizeof(struct hfs_cat_file))
+			goto out;
 		hfs_bnode_read(fd.bnode, &rec, fd.entryoffset,
 			       sizeof(struct hfs_cat_file));
 		hfs_inode_write_fork(inode, rec.file.RExtRec,
@@ -486,7 +489,8 @@ int hfs_write_inode(struct inode *inode, struct writeback_control *wbc)
 		hfs_bnode_write(fd.bnode, &rec, fd.entryoffset,
 				sizeof(struct hfs_cat_file));
 	} else {
-		WARN_ON(fd.entrylength < sizeof(struct hfs_cat_file));
+		if (fd.entrylength < sizeof(struct hfs_cat_file))
+			goto out;
 		hfs_bnode_read(fd.bnode, &rec, fd.entryoffset,
 			   sizeof(struct hfs_cat_file));
 		if (rec.type != HFS_CDR_FIL ||
@@ -503,9 +507,10 @@ int hfs_write_inode(struct inode *inode, struct writeback_control *wbc)
 		hfs_bnode_write(fd.bnode, &rec, fd.entryoffset,
 			    sizeof(struct hfs_cat_file));
 	}
+	res = 0;
 out:
 	hfs_find_exit(&fd);
-	return 0;
+	return res;
 }
 
 static struct dentry *hfs_file_lookup(struct inode *dir, struct dentry *dentry,
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 109/159] ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown"
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (107 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 108/159] hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 110/159] 9p/client: fix data race on req->status Greg Kroah-Hartman
                   ` (64 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ricardo Ribalda, Kai Vehmanen,
	Pierre-Louis Bossart, Péter Ujfalusi, Ranjani Sridharan,
	Mark Brown, Sasha Levin

From: Kai Vehmanen <kai.vehmanen@linux.intel.com>

[ Upstream commit 44fda61d2bcfb74a942df93959e083a4e8eff75f ]

The unregister machine drivers call is not safe to do when
kexec is used. Kexec-lite gets blocked with following backtrace:

[   84.943749] Freezing user space processes ... (elapsed 0.111 seconds) done.
[  246.784446] INFO: task kexec-lite:5123 blocked for more than 122 seconds.
[  246.819035] Call Trace:
[  246.821782]  <TASK>
[  246.824186]  __schedule+0x5f9/0x1263
[  246.828231]  schedule+0x87/0xc5
[  246.831779]  snd_card_disconnect_sync+0xb5/0x127
...
[  246.889249]  snd_sof_device_shutdown+0xb4/0x150
[  246.899317]  pci_device_shutdown+0x37/0x61
[  246.903990]  device_shutdown+0x14c/0x1d6
[  246.908391]  kernel_kexec+0x45/0xb9

This reverts commit 83bfc7e793b555291785136c3ae86abcdc046887.

Reported-by: Ricardo Ribalda <ribalda@chromium.org>
Cc: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20221209114529.3909192-3-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/sof/core.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
index 3e6141d03770..625977a29d8a 100644
--- a/sound/soc/sof/core.c
+++ b/sound/soc/sof/core.c
@@ -475,19 +475,10 @@ EXPORT_SYMBOL(snd_sof_device_remove);
 int snd_sof_device_shutdown(struct device *dev)
 {
 	struct snd_sof_dev *sdev = dev_get_drvdata(dev);
-	struct snd_sof_pdata *pdata = sdev->pdata;
 
 	if (IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE))
 		cancel_work_sync(&sdev->probe_work);
 
-	/*
-	 * make sure clients and machine driver(s) are unregistered to force
-	 * all userspace devices to be closed prior to the DSP shutdown sequence
-	 */
-	sof_unregister_clients(sdev);
-
-	snd_sof_machine_unregister(sdev, pdata);
-
 	if (sdev->fw_state == SOF_FW_BOOT_COMPLETE)
 		return snd_sof_shutdown(sdev);
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 110/159] 9p/client: fix data race on req->status
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (108 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 109/159] ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown" Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 111/159] ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet Greg Kroah-Hartman
                   ` (63 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Naresh Kamboju, Marco Elver,
	Christian Schoenebeck, Dominique Martinet, Sasha Levin

From: Dominique Martinet <asmadeus@codewreck.org>

[ Upstream commit 1a4f69ef15ec29b213e2b086b2502644e8ef76ee ]

KCSAN reported a race between writing req->status in p9_client_cb and
accessing it in p9_client_rpc's wait_event.

Accesses to req itself is protected by the data barrier (writing req
fields, write barrier, writing status // reading status, read barrier,
reading other req fields), but status accesses themselves apparently
also must be annotated properly with WRITE_ONCE/READ_ONCE when we
access it without locks.

Follows:
 - error paths writing status in various threads all can notify
p9_client_rpc, so these all also need WRITE_ONCE
 - there's a similar read loop in trans_virtio for zc case that also
needs READ_ONCE
 - other reads in trans_fd should be protected by the trans_fd lock and
lists state machine, as corresponding writers all are within trans_fd
and should be under the same lock. If KCSAN complains on them we likely
will have something else to fix as well, so it's better to leave them
unmarked and look again if required.

Link: https://lkml.kernel.org/r/20221205124756.426350-1-asmadeus@codewreck.org
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Suggested-by: Marco Elver <elver@google.com>
Acked-by: Marco Elver <elver@google.com>
Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/9p/client.c       | 15 ++++++++-------
 net/9p/trans_fd.c     | 12 ++++++------
 net/9p/trans_rdma.c   |  4 ++--
 net/9p/trans_virtio.c |  9 +++++----
 net/9p/trans_xen.c    |  4 ++--
 5 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/net/9p/client.c b/net/9p/client.c
index b554f8357f96..b5aa25f82b78 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -443,7 +443,7 @@ void p9_client_cb(struct p9_client *c, struct p9_req_t *req, int status)
 	 * the status change is visible to another thread
 	 */
 	smp_wmb();
-	req->status = status;
+	WRITE_ONCE(req->status, status);
 
 	wake_up(&req->wq);
 	p9_debug(P9_DEBUG_MUX, "wakeup: %d\n", req->tc.tag);
@@ -605,7 +605,7 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq)
 	/* if we haven't received a response for oldreq,
 	 * remove it from the list
 	 */
-	if (oldreq->status == REQ_STATUS_SENT) {
+	if (READ_ONCE(oldreq->status) == REQ_STATUS_SENT) {
 		if (c->trans_mod->cancelled)
 			c->trans_mod->cancelled(c, oldreq);
 	}
@@ -702,7 +702,8 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
 	}
 again:
 	/* Wait for the response */
-	err = wait_event_killable(req->wq, req->status >= REQ_STATUS_RCVD);
+	err = wait_event_killable(req->wq,
+				  READ_ONCE(req->status) >= REQ_STATUS_RCVD);
 
 	/* Make sure our req is coherent with regard to updates in other
 	 * threads - echoes to wmb() in the callback
@@ -716,7 +717,7 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
 		goto again;
 	}
 
-	if (req->status == REQ_STATUS_ERROR) {
+	if (READ_ONCE(req->status) == REQ_STATUS_ERROR) {
 		p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err);
 		err = req->t_err;
 	}
@@ -729,7 +730,7 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
 			p9_client_flush(c, req);
 
 		/* if we received the response anyway, don't signal error */
-		if (req->status == REQ_STATUS_RCVD)
+		if (READ_ONCE(req->status) == REQ_STATUS_RCVD)
 			err = 0;
 	}
 recalc_sigpending:
@@ -798,7 +799,7 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type,
 		if (err != -ERESTARTSYS)
 			goto recalc_sigpending;
 	}
-	if (req->status == REQ_STATUS_ERROR) {
+	if (READ_ONCE(req->status) == REQ_STATUS_ERROR) {
 		p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err);
 		err = req->t_err;
 	}
@@ -811,7 +812,7 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type,
 			p9_client_flush(c, req);
 
 		/* if we received the response anyway, don't signal error */
-		if (req->status == REQ_STATUS_RCVD)
+		if (READ_ONCE(req->status) == REQ_STATUS_RCVD)
 			err = 0;
 	}
 recalc_sigpending:
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index 07db2f436d44..5a1aecf7fe48 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -202,11 +202,11 @@ static void p9_conn_cancel(struct p9_conn *m, int err)
 
 	list_for_each_entry_safe(req, rtmp, &m->req_list, req_list) {
 		list_move(&req->req_list, &cancel_list);
-		req->status = REQ_STATUS_ERROR;
+		WRITE_ONCE(req->status, REQ_STATUS_ERROR);
 	}
 	list_for_each_entry_safe(req, rtmp, &m->unsent_req_list, req_list) {
 		list_move(&req->req_list, &cancel_list);
-		req->status = REQ_STATUS_ERROR;
+		WRITE_ONCE(req->status, REQ_STATUS_ERROR);
 	}
 
 	spin_unlock(&m->req_lock);
@@ -467,7 +467,7 @@ static void p9_write_work(struct work_struct *work)
 
 		req = list_entry(m->unsent_req_list.next, struct p9_req_t,
 			       req_list);
-		req->status = REQ_STATUS_SENT;
+		WRITE_ONCE(req->status, REQ_STATUS_SENT);
 		p9_debug(P9_DEBUG_TRANS, "move req %p\n", req);
 		list_move_tail(&req->req_list, &m->req_list);
 
@@ -676,7 +676,7 @@ static int p9_fd_request(struct p9_client *client, struct p9_req_t *req)
 		return m->err;
 
 	spin_lock(&m->req_lock);
-	req->status = REQ_STATUS_UNSENT;
+	WRITE_ONCE(req->status, REQ_STATUS_UNSENT);
 	list_add_tail(&req->req_list, &m->unsent_req_list);
 	spin_unlock(&m->req_lock);
 
@@ -703,7 +703,7 @@ static int p9_fd_cancel(struct p9_client *client, struct p9_req_t *req)
 
 	if (req->status == REQ_STATUS_UNSENT) {
 		list_del(&req->req_list);
-		req->status = REQ_STATUS_FLSHD;
+		WRITE_ONCE(req->status, REQ_STATUS_FLSHD);
 		p9_req_put(client, req);
 		ret = 0;
 	}
@@ -732,7 +732,7 @@ static int p9_fd_cancelled(struct p9_client *client, struct p9_req_t *req)
 	 * remove it from the list.
 	 */
 	list_del(&req->req_list);
-	req->status = REQ_STATUS_FLSHD;
+	WRITE_ONCE(req->status, REQ_STATUS_FLSHD);
 	spin_unlock(&m->req_lock);
 
 	p9_req_put(client, req);
diff --git a/net/9p/trans_rdma.c b/net/9p/trans_rdma.c
index 6ff706760676..e9a830c69058 100644
--- a/net/9p/trans_rdma.c
+++ b/net/9p/trans_rdma.c
@@ -507,7 +507,7 @@ static int rdma_request(struct p9_client *client, struct p9_req_t *req)
 	 * because doing if after could erase the REQ_STATUS_RCVD
 	 * status in case of a very fast reply.
 	 */
-	req->status = REQ_STATUS_SENT;
+	WRITE_ONCE(req->status, REQ_STATUS_SENT);
 	err = ib_post_send(rdma->qp, &wr, NULL);
 	if (err)
 		goto send_error;
@@ -517,7 +517,7 @@ static int rdma_request(struct p9_client *client, struct p9_req_t *req)
 
  /* Handle errors that happened during or while preparing the send: */
  send_error:
-	req->status = REQ_STATUS_ERROR;
+	WRITE_ONCE(req->status, REQ_STATUS_ERROR);
 	kfree(c);
 	p9_debug(P9_DEBUG_ERROR, "Error %d in rdma_request()\n", err);
 
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index e757f0601304..3f3eb03cda7d 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -263,7 +263,7 @@ p9_virtio_request(struct p9_client *client, struct p9_req_t *req)
 
 	p9_debug(P9_DEBUG_TRANS, "9p debug: virtio request\n");
 
-	req->status = REQ_STATUS_SENT;
+	WRITE_ONCE(req->status, REQ_STATUS_SENT);
 req_retry:
 	spin_lock_irqsave(&chan->lock, flags);
 
@@ -469,7 +469,7 @@ p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req,
 			inlen = n;
 		}
 	}
-	req->status = REQ_STATUS_SENT;
+	WRITE_ONCE(req->status, REQ_STATUS_SENT);
 req_retry_pinned:
 	spin_lock_irqsave(&chan->lock, flags);
 
@@ -532,9 +532,10 @@ p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req,
 	spin_unlock_irqrestore(&chan->lock, flags);
 	kicked = 1;
 	p9_debug(P9_DEBUG_TRANS, "virtio request kicked\n");
-	err = wait_event_killable(req->wq, req->status >= REQ_STATUS_RCVD);
+	err = wait_event_killable(req->wq,
+			          READ_ONCE(req->status) >= REQ_STATUS_RCVD);
 	// RERROR needs reply (== error string) in static data
-	if (req->status == REQ_STATUS_RCVD &&
+	if (READ_ONCE(req->status) == REQ_STATUS_RCVD &&
 	    unlikely(req->rc.sdata[4] == P9_RERROR))
 		handle_rerror(req, in_hdr_len, offs, in_pages);
 
diff --git a/net/9p/trans_xen.c b/net/9p/trans_xen.c
index aaa5fd364691..cf1b89ba522b 100644
--- a/net/9p/trans_xen.c
+++ b/net/9p/trans_xen.c
@@ -157,7 +157,7 @@ static int p9_xen_request(struct p9_client *client, struct p9_req_t *p9_req)
 			      &masked_prod, masked_cons,
 			      XEN_9PFS_RING_SIZE(ring));
 
-	p9_req->status = REQ_STATUS_SENT;
+	WRITE_ONCE(p9_req->status, REQ_STATUS_SENT);
 	virt_wmb();			/* write ring before updating pointer */
 	prod += size;
 	ring->intf->out_prod = prod;
@@ -212,7 +212,7 @@ static void p9_xen_response(struct work_struct *work)
 			dev_warn(&priv->dev->dev,
 				 "requested packet size too big: %d for tag %d with capacity %zd\n",
 				 h.size, h.tag, req->rc.capacity);
-			req->status = REQ_STATUS_ERROR;
+			WRITE_ONCE(req->status, REQ_STATUS_ERROR);
 			goto recv_error;
 		}
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 111/159] ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (109 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 110/159] 9p/client: fix data race on req->status Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 112/159] ASoC: SOF: mediatek: initialize panic_info to zero Greg Kroah-Hartman
                   ` (62 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hans de Goede, Pierre-Louis Bossart,
	Mark Brown, Sasha Levin

From: Hans de Goede <hdegoede@redhat.com>

[ Upstream commit a1dec9d70b6ad97087b60b81d2492134a84208c6 ]

The Advantech MICA-071 tablet deviates from the defaults for
a non CR Bay Trail based tablet in several ways:

1. It uses an analog MIC on IN3 rather then using DMIC1
2. It only has 1 speaker
3. It needs the OVCD current threshold to be set to 1500uA instead of
   the default 2000uA to reliable differentiate between headphones vs
   headsets

Add a quirk with these settings for this tablet.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20221213123246.11226-1-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/intel/boards/bytcr_rt5640.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c
index fb9d9e271845..ddd2625bed90 100644
--- a/sound/soc/intel/boards/bytcr_rt5640.c
+++ b/sound/soc/intel/boards/bytcr_rt5640.c
@@ -570,6 +570,21 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = {
 					BYT_RT5640_SSP0_AIF1 |
 					BYT_RT5640_MCLK_EN),
 	},
+	{
+		/* Advantech MICA-071 */
+		.matches = {
+			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Advantech"),
+			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "MICA-071"),
+		},
+		/* OVCD Th = 1500uA to reliable detect head-phones vs -set */
+		.driver_data = (void *)(BYT_RT5640_IN3_MAP |
+					BYT_RT5640_JD_SRC_JD2_IN4N |
+					BYT_RT5640_OVCD_TH_1500UA |
+					BYT_RT5640_OVCD_SF_0P75 |
+					BYT_RT5640_MONO_SPEAKER |
+					BYT_RT5640_DIFF_MIC |
+					BYT_RT5640_MCLK_EN),
+	},
 	{
 		.matches = {
 			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ARCHOS"),
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 112/159] ASoC: SOF: mediatek: initialize panic_info to zero
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (110 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 111/159] ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 113/159] drm/amdgpu: Fix size validation for non-exclusive domains (v4) Greg Kroah-Hartman
                   ` (61 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, YC Hung, Curtis Malainey,
	Mark Brown, Sasha Levin

From: YC Hung <yc.hung@mediatek.com>

[ Upstream commit 7bd220f2ba9014b78f0304178103393554b8c4fe ]

Coverity spotted that panic_info is not initialized to zero in
mtk_adsp_dump. Using uninitialized value panic_info.linenum when
calling snd_sof_get_status. Fix this coverity by initializing
panic_info struct as zero.

Signed-off-by: YC Hung <yc.hung@mediatek.com>
Reviewed-by: Curtis Malainey <cujomalainey@chromium.org>
Link: https://lore.kernel.org/r/20221213115617.25086-1-yc.hung@mediatek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/sof/mediatek/mtk-adsp-common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/sof/mediatek/mtk-adsp-common.c b/sound/soc/sof/mediatek/mtk-adsp-common.c
index 1e0769c668a7..de8dbe27cd0d 100644
--- a/sound/soc/sof/mediatek/mtk-adsp-common.c
+++ b/sound/soc/sof/mediatek/mtk-adsp-common.c
@@ -60,7 +60,7 @@ void mtk_adsp_dump(struct snd_sof_dev *sdev, u32 flags)
 {
 	char *level = (flags & SOF_DBG_DUMP_OPTIONAL) ? KERN_DEBUG : KERN_ERR;
 	struct sof_ipc_dsp_oops_xtensa xoops;
-	struct sof_ipc_panic_info panic_info;
+	struct sof_ipc_panic_info panic_info = {};
 	u32 stack[MTK_ADSP_STACK_DUMP_SIZE];
 	u32 status;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 113/159] drm/amdgpu: Fix size validation for non-exclusive domains (v4)
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (111 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 112/159] ASoC: SOF: mediatek: initialize panic_info to zero Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 114/159] drm/amdkfd: Fix kfd_process_device_init_vm error handling Greg Kroah-Hartman
                   ` (60 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Alex Deucher, Christian König,
	AMD Graphics, Luben Tuikov, Alex Deucher, Sasha Levin

From: Luben Tuikov <luben.tuikov@amd.com>

[ Upstream commit 7554886daa31eacc8e7fac9e15bbce67d10b8f1f ]

Fix amdgpu_bo_validate_size() to check whether the TTM domain manager for the
requested memory exists, else we get a kernel oops when dereferencing "man".

v2: Make the patch standalone, i.e. not dependent on local patches.
v3: Preserve old behaviour and just check that the manager pointer is not
    NULL.
v4: Complain if GTT domain requested and it is uninitialized--most likely a
    bug.

Cc: Alex Deucher <Alexander.Deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: AMD Graphics <amd-gfx@lists.freedesktop.org>
Signed-off-by: Luben Tuikov <luben.tuikov@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 3df13d841e4d..3be3cba3a16d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -446,27 +446,24 @@ static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
 
 	/*
 	 * If GTT is part of requested domains the check must succeed to
-	 * allow fall back to GTT
+	 * allow fall back to GTT.
 	 */
 	if (domain & AMDGPU_GEM_DOMAIN_GTT) {
 		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
 
-		if (size < man->size)
+		if (man && size < man->size)
 			return true;
-		else
-			goto fail;
-	}
-
-	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
+		else if (!man)
+			WARN_ON_ONCE("GTT domain requested but GTT mem manager uninitialized");
+		goto fail;
+	} else if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
 		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
 
-		if (size < man->size)
+		if (man && size < man->size)
 			return true;
-		else
-			goto fail;
+		goto fail;
 	}
 
-
 	/* TODO add more domains checks, such as AMDGPU_GEM_DOMAIN_CPU */
 	return true;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 114/159] drm/amdkfd: Fix kfd_process_device_init_vm error handling
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (112 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 113/159] drm/amdgpu: Fix size validation for non-exclusive domains (v4) Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 115/159] drm/amdkfd: Fix double release compute pasid Greg Kroah-Hartman
                   ` (59 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Philip Yang, Felix Kuehling,
	Alex Deucher, Sasha Levin

From: Philip Yang <Philip.Yang@amd.com>

[ Upstream commit 29d48b87db64b6697ddad007548e51d032081c59 ]

Should only destroy the ib_mem and let process cleanup worker to free
the outstanding BOs. Reset the pointer in pdd->qpd structure, to avoid
NULL pointer access in process destroy worker.

 BUG: kernel NULL pointer dereference, address: 0000000000000010
 Call Trace:
  amdgpu_amdkfd_gpuvm_unmap_gtt_bo_from_kernel+0x46/0xb0 [amdgpu]
  kfd_process_device_destroy_cwsr_dgpu+0x40/0x70 [amdgpu]
  kfd_process_destroy_pdds+0x71/0x190 [amdgpu]
  kfd_process_wq_release+0x2a2/0x3b0 [amdgpu]
  process_one_work+0x2a1/0x600
  worker_thread+0x39/0x3d0

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 951b63677248..9821fa9268d3 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -689,13 +689,13 @@ void kfd_process_destroy_wq(void)
 }
 
 static void kfd_process_free_gpuvm(struct kgd_mem *mem,
-			struct kfd_process_device *pdd, void *kptr)
+			struct kfd_process_device *pdd, void **kptr)
 {
 	struct kfd_dev *dev = pdd->dev;
 
-	if (kptr) {
+	if (kptr && *kptr) {
 		amdgpu_amdkfd_gpuvm_unmap_gtt_bo_from_kernel(mem);
-		kptr = NULL;
+		*kptr = NULL;
 	}
 
 	amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(dev->adev, mem, pdd->drm_priv);
@@ -795,7 +795,7 @@ static void kfd_process_device_destroy_ib_mem(struct kfd_process_device *pdd)
 	if (!qpd->ib_kaddr || !qpd->ib_base)
 		return;
 
-	kfd_process_free_gpuvm(qpd->ib_mem, pdd, qpd->ib_kaddr);
+	kfd_process_free_gpuvm(qpd->ib_mem, pdd, &qpd->ib_kaddr);
 }
 
 struct kfd_process *kfd_create_process(struct file *filep)
@@ -1277,7 +1277,7 @@ static void kfd_process_device_destroy_cwsr_dgpu(struct kfd_process_device *pdd)
 	if (!dev->cwsr_enabled || !qpd->cwsr_kaddr || !qpd->cwsr_base)
 		return;
 
-	kfd_process_free_gpuvm(qpd->cwsr_mem, pdd, qpd->cwsr_kaddr);
+	kfd_process_free_gpuvm(qpd->cwsr_mem, pdd, &qpd->cwsr_kaddr);
 }
 
 void kfd_process_set_trap_handler(struct qcm_process_device *qpd,
@@ -1598,8 +1598,8 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
 	return 0;
 
 err_init_cwsr:
+	kfd_process_device_destroy_ib_mem(pdd);
 err_reserve_ib_mem:
-	kfd_process_device_free_bos(pdd);
 	pdd->drm_priv = NULL;
 
 	return ret;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 115/159] drm/amdkfd: Fix double release compute pasid
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (113 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 114/159] drm/amdkfd: Fix kfd_process_device_init_vm error handling Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 116/159] io_uring/cancel: re-grab ctx mutex after finishing wait Greg Kroah-Hartman
                   ` (58 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Philip Yang, Felix Kuehling,
	Alex Deucher, Sasha Levin

From: Philip Yang <Philip.Yang@amd.com>

[ Upstream commit 1a799c4c190ea9f0e81028e3eb3037ed0ab17ff5 ]

If kfd_process_device_init_vm returns failure after vm is converted to
compute vm and vm->pasid set to compute pasid, KFD will not take
pdd->drm_file reference. As a result, drm close file handler maybe
called to release the compute pasid before KFD process destroy worker to
release the same pasid and set vm->pasid to zero, this generates below
WARNING backtrace and NULL pointer access.

Add helper amdgpu_amdkfd_gpuvm_set_vm_pasid and call it at the last step
of kfd_process_device_init_vm, to ensure vm pasid is the original pasid
if acquiring vm failed or is the compute pasid with pdd->drm_file
reference taken to avoid double release same pasid.

 amdgpu: Failed to create process VM object
 ida_free called for id=32770 which is not allocated.
 WARNING: CPU: 57 PID: 72542 at ../lib/idr.c:522 ida_free+0x96/0x140
 RIP: 0010:ida_free+0x96/0x140
 Call Trace:
  amdgpu_pasid_free_delayed+0xe1/0x2a0 [amdgpu]
  amdgpu_driver_postclose_kms+0x2d8/0x340 [amdgpu]
  drm_file_free.part.13+0x216/0x270 [drm]
  drm_close_helper.isra.14+0x60/0x70 [drm]
  drm_release+0x6e/0xf0 [drm]
  __fput+0xcc/0x280
  ____fput+0xe/0x20
  task_work_run+0x96/0xc0
  do_exit+0x3d0/0xc10

 BUG: kernel NULL pointer dereference, address: 0000000000000000
 RIP: 0010:ida_free+0x76/0x140
 Call Trace:
  amdgpu_pasid_free_delayed+0xe1/0x2a0 [amdgpu]
  amdgpu_driver_postclose_kms+0x2d8/0x340 [amdgpu]
  drm_file_free.part.13+0x216/0x270 [drm]
  drm_close_helper.isra.14+0x60/0x70 [drm]
  drm_release+0x6e/0xf0 [drm]
  __fput+0xcc/0x280
  ____fput+0xe/0x20
  task_work_run+0x96/0xc0
  do_exit+0x3d0/0xc10

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h    |  4 +-
 .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c  | 39 +++++++++++++------
 drivers/gpu/drm/amd/amdkfd/kfd_process.c      | 12 ++++--
 3 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
index 647220a8762d..30f145dc8724 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
@@ -265,8 +265,10 @@ int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct amdgpu_device *adev, bool is_
 	(&((struct amdgpu_fpriv *)					\
 		((struct drm_file *)(drm_priv))->driver_priv)->vm)
 
+int amdgpu_amdkfd_gpuvm_set_vm_pasid(struct amdgpu_device *adev,
+				     struct file *filp, u32 pasid);
 int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
-					struct file *filp, u32 pasid,
+					struct file *filp,
 					void **process_info,
 					struct dma_fence **ef);
 void amdgpu_amdkfd_gpuvm_release_process_vm(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index fe87b3402f06..29f045079a3e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -1473,10 +1473,9 @@ static void amdgpu_amdkfd_gpuvm_unpin_bo(struct amdgpu_bo *bo)
 	amdgpu_bo_unreserve(bo);
 }
 
-int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
-					   struct file *filp, u32 pasid,
-					   void **process_info,
-					   struct dma_fence **ef)
+int amdgpu_amdkfd_gpuvm_set_vm_pasid(struct amdgpu_device *adev,
+				     struct file *filp, u32 pasid)
+
 {
 	struct amdgpu_fpriv *drv_priv;
 	struct amdgpu_vm *avm;
@@ -1487,10 +1486,6 @@ int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
 		return ret;
 	avm = &drv_priv->vm;
 
-	/* Already a compute VM? */
-	if (avm->process_info)
-		return -EINVAL;
-
 	/* Free the original amdgpu allocated pasid,
 	 * will be replaced with kfd allocated pasid.
 	 */
@@ -1499,14 +1494,36 @@ int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
 		amdgpu_vm_set_pasid(adev, avm, 0);
 	}
 
-	/* Convert VM into a compute VM */
-	ret = amdgpu_vm_make_compute(adev, avm);
+	ret = amdgpu_vm_set_pasid(adev, avm, pasid);
 	if (ret)
 		return ret;
 
-	ret = amdgpu_vm_set_pasid(adev, avm, pasid);
+	return 0;
+}
+
+int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
+					   struct file *filp,
+					   void **process_info,
+					   struct dma_fence **ef)
+{
+	struct amdgpu_fpriv *drv_priv;
+	struct amdgpu_vm *avm;
+	int ret;
+
+	ret = amdgpu_file_to_fpriv(filp, &drv_priv);
 	if (ret)
 		return ret;
+	avm = &drv_priv->vm;
+
+	/* Already a compute VM? */
+	if (avm->process_info)
+		return -EINVAL;
+
+	/* Convert VM into a compute VM */
+	ret = amdgpu_vm_make_compute(adev, avm);
+	if (ret)
+		return ret;
+
 	/* Initialize KFD part of the VM and process info */
 	ret = init_kfd_vm(avm, process_info, ef);
 	if (ret)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 9821fa9268d3..dd351105c1bc 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -1576,9 +1576,9 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
 	p = pdd->process;
 	dev = pdd->dev;
 
-	ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(
-		dev->adev, drm_file, p->pasid,
-		&p->kgd_process_info, &p->ef);
+	ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(dev->adev, drm_file,
+						     &p->kgd_process_info,
+						     &p->ef);
 	if (ret) {
 		pr_err("Failed to create process VM object\n");
 		return ret;
@@ -1593,10 +1593,16 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
 	if (ret)
 		goto err_init_cwsr;
 
+	ret = amdgpu_amdkfd_gpuvm_set_vm_pasid(dev->adev, drm_file, p->pasid);
+	if (ret)
+		goto err_set_pasid;
+
 	pdd->drm_file = drm_file;
 
 	return 0;
 
+err_set_pasid:
+	kfd_process_device_destroy_cwsr_dgpu(pdd);
 err_init_cwsr:
 	kfd_process_device_destroy_ib_mem(pdd);
 err_reserve_ib_mem:
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 116/159] io_uring/cancel: re-grab ctx mutex after finishing wait
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (114 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 115/159] drm/amdkfd: Fix double release compute pasid Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 117/159] nvme: fix multipath crash caused by flush request when blktrace is enabled Greg Kroah-Hartman
                   ` (57 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+7df055631cd1be4586fd,
	Jens Axboe, Sasha Levin

From: Jens Axboe <axboe@kernel.dk>

[ Upstream commit 23fffb2f09ce1145cbd751801d45ba74acaa6542 ]

If we have a signal pending during cancelations, it'll cause the
task_work run to return an error. Since we didn't run task_work, the
current task is left in TASK_INTERRUPTIBLE state when we need to
re-grab the ctx mutex, and the kernel will rightfully complain about
that.

Move the lock grabbing for the error cases outside the loop to avoid
that issue.

Reported-by: syzbot+7df055631cd1be4586fd@syzkaller.appspotmail.com
Link: https://lore.kernel.org/io-uring/0000000000003a14a905f05050b0@google.com/
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 io_uring/cancel.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/io_uring/cancel.c b/io_uring/cancel.c
index 2291a53cdabd..b4f5dfacc0c3 100644
--- a/io_uring/cancel.c
+++ b/io_uring/cancel.c
@@ -288,24 +288,23 @@ int io_sync_cancel(struct io_ring_ctx *ctx, void __user *arg)
 
 		ret = __io_sync_cancel(current->io_uring, &cd, sc.fd);
 
+		mutex_unlock(&ctx->uring_lock);
 		if (ret != -EALREADY)
 			break;
 
-		mutex_unlock(&ctx->uring_lock);
 		ret = io_run_task_work_sig(ctx);
-		if (ret < 0) {
-			mutex_lock(&ctx->uring_lock);
+		if (ret < 0)
 			break;
-		}
 		ret = schedule_hrtimeout(&timeout, HRTIMER_MODE_ABS);
-		mutex_lock(&ctx->uring_lock);
 		if (!ret) {
 			ret = -ETIME;
 			break;
 		}
+		mutex_lock(&ctx->uring_lock);
 	} while (1);
 
 	finish_wait(&ctx->cq_wait, &wait);
+	mutex_lock(&ctx->uring_lock);
 
 	if (ret == -ENOENT || ret > 0)
 		ret = 0;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 117/159] nvme: fix multipath crash caused by flush request when blktrace is enabled
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (115 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 116/159] io_uring/cancel: re-grab ctx mutex after finishing wait Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 118/159] ACPI: video: Allow GPU drivers to report no panels Greg Kroah-Hartman
                   ` (56 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Yanjun Zhang, Christoph Hellwig,
	Sasha Levin

From: Yanjun Zhang <zhangyanjun@cestc.cn>

[ Upstream commit 3659fb5ac29a5e6102bebe494ac789fd47fb78f4 ]

The flush request initialized by blk_kick_flush has NULL bio,
and it may be dealt with nvme_end_req during io completion.
When blktrace is enabled, nvme_trace_bio_complete with multipath
activated trying to access NULL pointer bio from flush request
results in the following crash:

[ 2517.831677] BUG: kernel NULL pointer dereference, address: 000000000000001a
[ 2517.835213] #PF: supervisor read access in kernel mode
[ 2517.838724] #PF: error_code(0x0000) - not-present page
[ 2517.842222] PGD 7b2d51067 P4D 0
[ 2517.845684] Oops: 0000 [#1] SMP NOPTI
[ 2517.849125] CPU: 2 PID: 732 Comm: kworker/2:1H Kdump: loaded Tainted: G S                5.15.67-0.cl9.x86_64 #1
[ 2517.852723] Hardware name: XFUSION 2288H V6/BC13MBSBC, BIOS 1.13 07/27/2022
[ 2517.856358] Workqueue: nvme_tcp_wq nvme_tcp_io_work [nvme_tcp]
[ 2517.859993] RIP: 0010:blk_add_trace_bio_complete+0x6/0x30
[ 2517.863628] Code: 1f 44 00 00 48 8b 46 08 31 c9 ba 04 00 10 00 48 8b 80 50 03 00 00 48 8b 78 50 e9 e5 fe ff ff 0f 1f 44 00 00 41 54 49 89 f4 55 <0f> b6 7a 1a 48 89 d5 e8 3e 1c 2b 00 48 89 ee 4c 89 e7 5d 89 c1 ba
[ 2517.871269] RSP: 0018:ff7f6a008d9dbcd0 EFLAGS: 00010286
[ 2517.875081] RAX: ff3d5b4be00b1d50 RBX: 0000000002040002 RCX: ff3d5b0a270f2000
[ 2517.878966] RDX: 0000000000000000 RSI: ff3d5b0b021fb9f8 RDI: 0000000000000000
[ 2517.882849] RBP: ff3d5b0b96a6fa00 R08: 0000000000000001 R09: 0000000000000000
[ 2517.886718] R10: 000000000000000c R11: 000000000000000c R12: ff3d5b0b021fb9f8
[ 2517.890575] R13: 0000000002000000 R14: ff3d5b0b021fb1b0 R15: 0000000000000018
[ 2517.894434] FS:  0000000000000000(0000) GS:ff3d5b42bfc80000(0000) knlGS:0000000000000000
[ 2517.898299] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2517.902157] CR2: 000000000000001a CR3: 00000004f023e005 CR4: 0000000000771ee0
[ 2517.906053] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 2517.909930] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 2517.913761] PKRU: 55555554
[ 2517.917558] Call Trace:
[ 2517.921294]  <TASK>
[ 2517.924982]  nvme_complete_rq+0x1c3/0x1e0 [nvme_core]
[ 2517.928715]  nvme_tcp_recv_pdu+0x4d7/0x540 [nvme_tcp]
[ 2517.932442]  nvme_tcp_recv_skb+0x4f/0x240 [nvme_tcp]
[ 2517.936137]  ? nvme_tcp_recv_pdu+0x540/0x540 [nvme_tcp]
[ 2517.939830]  tcp_read_sock+0x9c/0x260
[ 2517.943486]  nvme_tcp_try_recv+0x65/0xa0 [nvme_tcp]
[ 2517.947173]  nvme_tcp_io_work+0x64/0x90 [nvme_tcp]
[ 2517.950834]  process_one_work+0x1e8/0x390
[ 2517.954473]  worker_thread+0x53/0x3c0
[ 2517.958069]  ? process_one_work+0x390/0x390
[ 2517.961655]  kthread+0x10c/0x130
[ 2517.965211]  ? set_kthread_struct+0x40/0x40
[ 2517.968760]  ret_from_fork+0x1f/0x30
[ 2517.972285]  </TASK>

To avoid this situation, add a NULL check for req->bio before
calling trace_block_bio_complete.

Signed-off-by: Yanjun Zhang <zhangyanjun@cestc.cn>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/host/nvme.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index 8a0db9e06dc6..cbda8a19409b 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -888,7 +888,7 @@ static inline void nvme_trace_bio_complete(struct request *req)
 {
 	struct nvme_ns *ns = req->q->queuedata;
 
-	if (req->cmd_flags & REQ_NVME_MPATH)
+	if ((req->cmd_flags & REQ_NVME_MPATH) && req->bio)
 		trace_block_bio_complete(ns->head->disk->queue, req->bio);
 }
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 118/159] ACPI: video: Allow GPU drivers to report no panels
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (116 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 117/159] nvme: fix multipath crash caused by flush request when blktrace is enabled Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 119/159] drm/amd/display: Report to ACPI video if no panels were found Greg Kroah-Hartman
                   ` (55 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hans de Goede, Mario Limonciello,
	Rafael J. Wysocki, Sasha Levin

From: Mario Limonciello <mario.limonciello@amd.com>

[ Upstream commit 00a734104af7d878f1252d49eff9298785c6cbdc ]

The current logic for the ACPI backlight detection will create
a backlight device if no native or vendor drivers have created
8 seconds after the system has booted if the ACPI tables
included backlight control methods.

If the GPU drivers have loaded, they may be able to report whether
any LCD panels were found.  Allow using this information to factor
in whether to enable the fallback logic for making an acpi_video0
backlight device.

Suggested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/acpi/acpi_video.c | 11 +++++++++++
 include/acpi/video.h      |  2 ++
 2 files changed, 13 insertions(+)

diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
index 32953646caeb..f64fdb029090 100644
--- a/drivers/acpi/acpi_video.c
+++ b/drivers/acpi/acpi_video.c
@@ -2178,6 +2178,17 @@ static bool should_check_lcd_flag(void)
 	return false;
 }
 
+/*
+ * At least one graphics driver has reported that no LCD is connected
+ * via the native interface. cancel the registration for fallback acpi_video0.
+ * If another driver still deems this necessary, it can explicitly register it.
+ */
+void acpi_video_report_nolcd(void)
+{
+	cancel_delayed_work(&video_bus_register_backlight_work);
+}
+EXPORT_SYMBOL(acpi_video_report_nolcd);
+
 int acpi_video_register(void)
 {
 	int ret = 0;
diff --git a/include/acpi/video.h b/include/acpi/video.h
index a275c35e5249..8ed9bec03e53 100644
--- a/include/acpi/video.h
+++ b/include/acpi/video.h
@@ -53,6 +53,7 @@ enum acpi_backlight_type {
 };
 
 #if IS_ENABLED(CONFIG_ACPI_VIDEO)
+extern void acpi_video_report_nolcd(void);
 extern int acpi_video_register(void);
 extern void acpi_video_unregister(void);
 extern void acpi_video_register_backlight(void);
@@ -69,6 +70,7 @@ extern int acpi_video_get_levels(struct acpi_device *device,
 				 struct acpi_video_device_brightness **dev_br,
 				 int *pmax_level);
 #else
+static inline void acpi_video_report_nolcd(void) { return; };
 static inline int acpi_video_register(void) { return -ENODEV; }
 static inline void acpi_video_unregister(void) { return; }
 static inline void acpi_video_register_backlight(void) { return; }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 119/159] drm/amd/display: Report to ACPI video if no panels were found
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (117 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 118/159] ACPI: video: Allow GPU drivers to report no panels Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 120/159] ACPI: video: Dont enable fallback path for creating ACPI backlight by default Greg Kroah-Hartman
                   ` (54 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hans de Goede, Mario Limonciello,
	Rafael J. Wysocki, Sasha Levin

From: Mario Limonciello <mario.limonciello@amd.com>

[ Upstream commit c573e240609ff781a0246c0c8c8351abd0475287 ]

On desktop APUs amdgpu doesn't create a native backlight device
as no eDP panels are found.  However if the BIOS has reported
backlight control methods in the ACPI tables then an acpi_video0
backlight device will be made 8 seconds after boot.

This has manifested in a power slider on a number of desktop APUs
ranging from Ryzen 5000 through Ryzen 7000 on various motherboard
manufacturers. To avoid this, report to the acpi video detection
that the system does not have any panel connected in the native
driver.

Link: https://bugzilla.redhat.com/show_bug.cgi?id=1783786
Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index c2c26fbea512..6f1cc5ce4c7a 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -4372,6 +4372,10 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
 		amdgpu_set_panel_orientation(&aconnector->base);
 	}
 
+	/* If we didn't find a panel, notify the acpi video detection */
+	if (dm->adev->flags & AMD_IS_APU && dm->num_of_edps == 0)
+		acpi_video_report_nolcd();
+
 	/* Software is initialized. Now we can register interrupt handlers. */
 	switch (adev->asic_type) {
 #if defined(CONFIG_DRM_AMD_DC_SI)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 120/159] ACPI: video: Dont enable fallback path for creating ACPI backlight by default
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (118 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 119/159] drm/amd/display: Report to ACPI video if no panels were found Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 121/159] io_uring: check for valid register opcode earlier Greg Kroah-Hartman
                   ` (53 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hans de Goede, Mario Limonciello,
	Rafael J. Wysocki, Sasha Levin

From: Mario Limonciello <mario.limonciello@amd.com>

[ Upstream commit 5aa9d943e9b6bf6e6023645cbe7ce7d5ed84baf4 ]

The ACPI video detection code has a module parameter
`register_backlight_delay` which is currently configured to 8 seconds.
This means that if after 8 seconds of booting no native driver has created
a backlight device then the code will attempt to make an ACPI video
backlight device.

This was intended as a safety mechanism with the backlight overhaul that
occurred in kernel 6.1, but as it doesn't appear necesssary set it to be
disabled by default.

Suggested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/acpi/acpi_video.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
index f64fdb029090..0c79f463fbfd 100644
--- a/drivers/acpi/acpi_video.c
+++ b/drivers/acpi/acpi_video.c
@@ -70,11 +70,7 @@ module_param(device_id_scheme, bool, 0444);
 static int only_lcd = -1;
 module_param(only_lcd, int, 0444);
 
-/*
- * Display probing is known to take up to 5 seconds, so delay the fallback
- * backlight registration by 5 seconds + 3 seconds for some extra margin.
- */
-static int register_backlight_delay = 8;
+static int register_backlight_delay;
 module_param(register_backlight_delay, int, 0444);
 MODULE_PARM_DESC(register_backlight_delay,
 	"Delay in seconds before doing fallback (non GPU driver triggered) "
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 121/159] io_uring: check for valid register opcode earlier
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (119 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 120/159] ACPI: video: Dont enable fallback path for creating ACPI backlight by default Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 122/159] kunit: alloc_string_stream_fragment error handling bug fix Greg Kroah-Hartman
                   ` (52 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Jens Axboe, Sasha Levin

From: Jens Axboe <axboe@kernel.dk>

[ Upstream commit 343190841a1f22b96996d9f8cfab902a4d1bfd0e ]

We only check the register opcode value inside the restricted ring
section, move it into the main io_uring_register() function instead
and check it up front.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 io_uring/io_uring.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 71f1cabb9f3d..1bc68dfda340 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -3897,8 +3897,6 @@ static int __io_uring_register(struct io_ring_ctx *ctx, unsigned opcode,
 		return -EEXIST;
 
 	if (ctx->restricted) {
-		if (opcode >= IORING_REGISTER_LAST)
-			return -EINVAL;
 		opcode = array_index_nospec(opcode, IORING_REGISTER_LAST);
 		if (!test_bit(opcode, ctx->restrictions.register_op))
 			return -EACCES;
@@ -4054,6 +4052,9 @@ SYSCALL_DEFINE4(io_uring_register, unsigned int, fd, unsigned int, opcode,
 	long ret = -EBADF;
 	struct fd f;
 
+	if (opcode >= IORING_REGISTER_LAST)
+		return -EINVAL;
+
 	f = fdget(fd);
 	if (!f.file)
 		return -EBADF;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 122/159] kunit: alloc_string_stream_fragment error handling bug fix
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (120 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 121/159] io_uring: check for valid register opcode earlier Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 123/159] nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it Greg Kroah-Hartman
                   ` (51 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, YoungJun.park, David Gow,
	Shuah Khan, Sasha Levin

From: YoungJun.park <her0gyugyu@gmail.com>

[ Upstream commit 93ef83050e597634d2c7dc838a28caf5137b9404 ]

When it fails to allocate fragment, it does not free and return error.
And check the pointer inappropriately.

Fixed merge conflicts with
commit 618887768bb7 ("kunit: update NULL vs IS_ERR() tests")
Shuah Khan <skhan@linuxfoundation.org>

Signed-off-by: YoungJun.park <her0gyugyu@gmail.com>
Reviewed-by: David Gow <davidgow@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 lib/kunit/string-stream.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/kunit/string-stream.c b/lib/kunit/string-stream.c
index a608746020a9..7aeabe1a3dc5 100644
--- a/lib/kunit/string-stream.c
+++ b/lib/kunit/string-stream.c
@@ -23,8 +23,10 @@ static struct string_stream_fragment *alloc_string_stream_fragment(
 		return ERR_PTR(-ENOMEM);
 
 	frag->fragment = kunit_kmalloc(test, len, gfp);
-	if (!frag->fragment)
+	if (!frag->fragment) {
+		kunit_kfree(test, frag);
 		return ERR_PTR(-ENOMEM);
+	}
 
 	return frag;
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 123/159] nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (121 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 122/159] kunit: alloc_string_stream_fragment error handling bug fix Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 124/159] nvme: also return I/O command effects from nvme_command_effects Greg Kroah-Hartman
                   ` (50 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christoph Hellwig, Keith Busch,
	Sagi Grimberg, Kanchan Joshi, Chaitanya Kulkarni, Sasha Levin

From: Christoph Hellwig <hch@lst.de>

[ Upstream commit 61f37154c599cf9f2f84dcbd9be842f8645a7099 ]

Use NVME_CMD_EFFECTS_CSUPP instead of open coding it and assign a
single value to multiple array entries instead of repeated assignments.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/target/admin-cmd.c | 35 ++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c
index c8a061ce3ee5..76ceaadd6eea 100644
--- a/drivers/nvme/target/admin-cmd.c
+++ b/drivers/nvme/target/admin-cmd.c
@@ -164,26 +164,29 @@ static void nvmet_execute_get_log_page_smart(struct nvmet_req *req)
 
 static void nvmet_get_cmd_effects_nvm(struct nvme_effects_log *log)
 {
-	log->acs[nvme_admin_get_log_page]	= cpu_to_le32(1 << 0);
-	log->acs[nvme_admin_identify]		= cpu_to_le32(1 << 0);
-	log->acs[nvme_admin_abort_cmd]		= cpu_to_le32(1 << 0);
-	log->acs[nvme_admin_set_features]	= cpu_to_le32(1 << 0);
-	log->acs[nvme_admin_get_features]	= cpu_to_le32(1 << 0);
-	log->acs[nvme_admin_async_event]	= cpu_to_le32(1 << 0);
-	log->acs[nvme_admin_keep_alive]		= cpu_to_le32(1 << 0);
-
-	log->iocs[nvme_cmd_read]		= cpu_to_le32(1 << 0);
-	log->iocs[nvme_cmd_write]		= cpu_to_le32(1 << 0);
-	log->iocs[nvme_cmd_flush]		= cpu_to_le32(1 << 0);
-	log->iocs[nvme_cmd_dsm]			= cpu_to_le32(1 << 0);
-	log->iocs[nvme_cmd_write_zeroes]	= cpu_to_le32(1 << 0);
+	log->acs[nvme_admin_get_log_page] =
+	log->acs[nvme_admin_identify] =
+	log->acs[nvme_admin_abort_cmd] =
+	log->acs[nvme_admin_set_features] =
+	log->acs[nvme_admin_get_features] =
+	log->acs[nvme_admin_async_event] =
+	log->acs[nvme_admin_keep_alive] =
+		cpu_to_le32(NVME_CMD_EFFECTS_CSUPP);
+
+	log->iocs[nvme_cmd_read] =
+	log->iocs[nvme_cmd_write] =
+	log->iocs[nvme_cmd_flush] =
+	log->iocs[nvme_cmd_dsm]	=
+	log->iocs[nvme_cmd_write_zeroes] =
+		cpu_to_le32(NVME_CMD_EFFECTS_CSUPP);
 }
 
 static void nvmet_get_cmd_effects_zns(struct nvme_effects_log *log)
 {
-	log->iocs[nvme_cmd_zone_append]		= cpu_to_le32(1 << 0);
-	log->iocs[nvme_cmd_zone_mgmt_send]	= cpu_to_le32(1 << 0);
-	log->iocs[nvme_cmd_zone_mgmt_recv]	= cpu_to_le32(1 << 0);
+	log->iocs[nvme_cmd_zone_append] =
+	log->iocs[nvme_cmd_zone_mgmt_send] =
+	log->iocs[nvme_cmd_zone_mgmt_recv] =
+		cpu_to_le32(NVME_CMD_EFFECTS_CSUPP);
 }
 
 static void nvmet_execute_get_log_cmd_effects_ns(struct nvmet_req *req)
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 124/159] nvme: also return I/O command effects from nvme_command_effects
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (122 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 123/159] nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 125/159] ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed" Greg Kroah-Hartman
                   ` (49 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christoph Hellwig, Keith Busch,
	Kanchan Joshi, Sasha Levin

From: Christoph Hellwig <hch@lst.de>

[ Upstream commit 831ed60c2aca2d7c517b2da22897a90224a97d27 ]

To be able to use the Commands Supported and Effects Log for allowing
unprivileged passtrough, it needs to be corretly reported for I/O
commands as well.  Return the I/O command effects from
nvme_command_effects, and also add a default list of effects for the
NVM command set.  For other command sets, the Commands Supported and
Effects log is required to be present already.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/host/core.c | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 108b5022cead..1ded96d1bfd2 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1069,6 +1069,18 @@ static u32 nvme_known_admin_effects(u8 opcode)
 	return 0;
 }
 
+static u32 nvme_known_nvm_effects(u8 opcode)
+{
+	switch (opcode) {
+	case nvme_cmd_write:
+	case nvme_cmd_write_zeroes:
+	case nvme_cmd_write_uncor:
+		 return NVME_CMD_EFFECTS_LBCC;
+	default:
+		return 0;
+	}
+}
+
 u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode)
 {
 	u32 effects = 0;
@@ -1076,16 +1088,24 @@ u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode)
 	if (ns) {
 		if (ns->head->effects)
 			effects = le32_to_cpu(ns->head->effects->iocs[opcode]);
+		if (ns->head->ids.csi == NVME_CAP_CSS_NVM)
+			effects |= nvme_known_nvm_effects(opcode);
 		if (effects & ~(NVME_CMD_EFFECTS_CSUPP | NVME_CMD_EFFECTS_LBCC))
 			dev_warn_once(ctrl->device,
-				"IO command:%02x has unhandled effects:%08x\n",
+				"IO command:%02x has unusual effects:%08x\n",
 				opcode, effects);
-		return 0;
-	}
 
-	if (ctrl->effects)
-		effects = le32_to_cpu(ctrl->effects->acs[opcode]);
-	effects |= nvme_known_admin_effects(opcode);
+		/*
+		 * NVME_CMD_EFFECTS_CSE_MASK causes a freeze all I/O queues,
+		 * which would deadlock when done on an I/O command.  Note that
+		 * We already warn about an unusual effect above.
+		 */
+		effects &= ~NVME_CMD_EFFECTS_CSE_MASK;
+	} else {
+		if (ctrl->effects)
+			effects = le32_to_cpu(ctrl->effects->acs[opcode]);
+		effects |= nvme_known_admin_effects(opcode);
+	}
 
 	return effects;
 }
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 125/159] ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed"
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (123 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 124/159] nvme: also return I/O command effects from nvme_command_effects Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 126/159] x86/kexec: Fix double-free of elf header buffer Greg Kroah-Hartman
                   ` (48 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Archana Patni, Kai Vehmanen,
	Pierre-Louis Bossart, Péter Ujfalusi, Ranjani Sridharan,
	Mark Brown, Sasha Levin

From: Kai Vehmanen <kai.vehmanen@linux.intel.com>

[ Upstream commit 2aa2a5ead0ee0a358bf80a2984a641d1bf2adc2a ]

If system shutdown has not been completed cleanly, it is possible the
DMA stream shutdown has not been done, or was not clean.

If this is the case, Intel TGL/ADL HDA platforms may fail to shutdown
cleanly due to pending HDA DMA transactions. To avoid this, detect this
scenario in the shutdown callback, and perform an additional controller
reset. This has been tested to unblock S5 entry if this condition is
hit.

Co-developed-by: Archana Patni <archana.patni@intel.com>
Signed-off-by: Archana Patni <archana.patni@intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20221209114529.3909192-2-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/sof/intel/hda-dsp.c | 72 +++++++++++++++++++++++++++++++++++
 sound/soc/sof/intel/hda.h     |  1 +
 sound/soc/sof/intel/tgl.c     |  2 +-
 3 files changed, 74 insertions(+), 1 deletion(-)

diff --git a/sound/soc/sof/intel/hda-dsp.c b/sound/soc/sof/intel/hda-dsp.c
index 3c76f843454b..428aee8fd93b 100644
--- a/sound/soc/sof/intel/hda-dsp.c
+++ b/sound/soc/sof/intel/hda-dsp.c
@@ -903,6 +903,78 @@ int hda_dsp_suspend(struct snd_sof_dev *sdev, u32 target_state)
 	return snd_sof_dsp_set_power_state(sdev, &target_dsp_state);
 }
 
+static unsigned int hda_dsp_check_for_dma_streams(struct snd_sof_dev *sdev)
+{
+	struct hdac_bus *bus = sof_to_bus(sdev);
+	struct hdac_stream *s;
+	unsigned int active_streams = 0;
+	int sd_offset;
+	u32 val;
+
+	list_for_each_entry(s, &bus->stream_list, list) {
+		sd_offset = SOF_STREAM_SD_OFFSET(s);
+		val = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR,
+				       sd_offset);
+		if (val & SOF_HDA_SD_CTL_DMA_START)
+			active_streams |= BIT(s->index);
+	}
+
+	return active_streams;
+}
+
+static int hda_dsp_s5_quirk(struct snd_sof_dev *sdev)
+{
+	int ret;
+
+	/*
+	 * Do not assume a certain timing between the prior
+	 * suspend flow, and running of this quirk function.
+	 * This is needed if the controller was just put
+	 * to reset before calling this function.
+	 */
+	usleep_range(500, 1000);
+
+	/*
+	 * Take controller out of reset to flush DMA
+	 * transactions.
+	 */
+	ret = hda_dsp_ctrl_link_reset(sdev, false);
+	if (ret < 0)
+		return ret;
+
+	usleep_range(500, 1000);
+
+	/* Restore state for shutdown, back to reset */
+	ret = hda_dsp_ctrl_link_reset(sdev, true);
+	if (ret < 0)
+		return ret;
+
+	return ret;
+}
+
+int hda_dsp_shutdown_dma_flush(struct snd_sof_dev *sdev)
+{
+	unsigned int active_streams;
+	int ret, ret2;
+
+	/* check if DMA cleanup has been successful */
+	active_streams = hda_dsp_check_for_dma_streams(sdev);
+
+	sdev->system_suspend_target = SOF_SUSPEND_S3;
+	ret = snd_sof_suspend(sdev->dev);
+
+	if (active_streams) {
+		dev_warn(sdev->dev,
+			 "There were active DSP streams (%#x) at shutdown, trying to recover\n",
+			 active_streams);
+		ret2 = hda_dsp_s5_quirk(sdev);
+		if (ret2 < 0)
+			dev_err(sdev->dev, "shutdown recovery failed (%d)\n", ret2);
+	}
+
+	return ret;
+}
+
 int hda_dsp_shutdown(struct snd_sof_dev *sdev)
 {
 	sdev->system_suspend_target = SOF_SUSPEND_S3;
diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h
index 2ab3c3840b92..9acd21901e68 100644
--- a/sound/soc/sof/intel/hda.h
+++ b/sound/soc/sof/intel/hda.h
@@ -581,6 +581,7 @@ int hda_dsp_resume(struct snd_sof_dev *sdev);
 int hda_dsp_runtime_suspend(struct snd_sof_dev *sdev);
 int hda_dsp_runtime_resume(struct snd_sof_dev *sdev);
 int hda_dsp_runtime_idle(struct snd_sof_dev *sdev);
+int hda_dsp_shutdown_dma_flush(struct snd_sof_dev *sdev);
 int hda_dsp_shutdown(struct snd_sof_dev *sdev);
 int hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev);
 void hda_dsp_dump(struct snd_sof_dev *sdev, u32 flags);
diff --git a/sound/soc/sof/intel/tgl.c b/sound/soc/sof/intel/tgl.c
index 9ae2890e9dac..8637fe102c87 100644
--- a/sound/soc/sof/intel/tgl.c
+++ b/sound/soc/sof/intel/tgl.c
@@ -60,7 +60,7 @@ int sof_tgl_ops_init(struct snd_sof_dev *sdev)
 	memcpy(&sof_tgl_ops, &sof_hda_common_ops, sizeof(struct snd_sof_dsp_ops));
 
 	/* probe/remove/shutdown */
-	sof_tgl_ops.shutdown	= hda_dsp_shutdown;
+	sof_tgl_ops.shutdown	= hda_dsp_shutdown_dma_flush;
 
 	if (sdev->pdata->ipc_type == SOF_IPC) {
 		/* doorbell */
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 126/159] x86/kexec: Fix double-free of elf header buffer
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (124 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 125/159] ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed" Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 127/159] x86/bugs: Flush IBP in ib_prctl_set() Greg Kroah-Hartman
                   ` (47 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Takashi Iwai, Borislav Petkov (AMD),
	Baoquan He, Vlastimil Babka, stable

From: Takashi Iwai <tiwai@suse.de>

commit d00dd2f2645dca04cf399d8fc692f3f69b6dd996 upstream.

After

  b3e34a47f989 ("x86/kexec: fix memory leak of elf header buffer"),

freeing image->elf_headers in the error path of crash_load_segments()
is not needed because kimage_file_post_load_cleanup() will take
care of that later. And not clearing it could result in a double-free.

Drop the superfluous vfree() call at the error path of
crash_load_segments().

Fixes: b3e34a47f989 ("x86/kexec: fix memory leak of elf header buffer")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Acked-by: Baoquan He <bhe@redhat.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: <stable@kernel.org>
Link: https://lore.kernel.org/r/20221122115122.13937-1-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/x86/kernel/crash.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -401,10 +401,8 @@ int crash_load_segments(struct kimage *i
 	kbuf.buf_align = ELF_CORE_HEADER_ALIGN;
 	kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
 	ret = kexec_add_buffer(&kbuf);
-	if (ret) {
-		vfree((void *)image->elf_headers);
+	if (ret)
 		return ret;
-	}
 	image->elf_load_addr = kbuf.mem;
 	pr_debug("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
 		 image->elf_load_addr, kbuf.bufsz, kbuf.memsz);



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 127/159] x86/bugs: Flush IBP in ib_prctl_set()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (125 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 126/159] x86/kexec: Fix double-free of elf header buffer Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 128/159] nfsd: fix handling of readdir in v4root vs. mount upcall timeout Greg Kroah-Hartman
                   ` (46 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Rodrigo Branco,
	Borislav Petkov (AMD),
	Ingo Molnar

From: Rodrigo Branco <bsdaemon@google.com>

commit a664ec9158eeddd75121d39c9a0758016097fa96 upstream.

We missed the window between the TIF flag update and the next reschedule.

Signed-off-by: Rodrigo Branco <bsdaemon@google.com>
Reviewed-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/x86/kernel/cpu/bugs.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1951,6 +1951,8 @@ static int ib_prctl_set(struct task_stru
 		if (ctrl == PR_SPEC_FORCE_DISABLE)
 			task_set_spec_ib_force_disable(task);
 		task_update_spec_tif(task);
+		if (task == current)
+			indirect_branch_prediction_barrier();
 		break;
 	default:
 		return -ERANGE;



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 128/159] nfsd: fix handling of readdir in v4root vs. mount upcall timeout
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (126 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 127/159] x86/bugs: Flush IBP in ib_prctl_set() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 129/159] fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB Greg Kroah-Hartman
                   ` (45 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Steve Dickson, JianHong Yin,
	Jeff Layton, Chuck Lever

From: Jeff Layton <jlayton@kernel.org>

commit cad853374d85fe678d721512cecfabd7636e51f3 upstream.

If v4 READDIR operation hits a mountpoint and gets back an error,
then it will include that entry in the reply and set RDATTR_ERROR for it
to the error.

That's fine for "normal" exported filesystems, but on the v4root, we
need to be more careful to only expose the existence of dentries that
lead to exports.

If the mountd upcall times out while checking to see whether a
mountpoint on the v4root is exported, then we have no recourse other
than to fail the whole operation.

Cc: Steve Dickson <steved@redhat.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216777
Reported-by: JianHong Yin <yin-jianhong@163.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/nfsd/nfs4xdr.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -3570,6 +3570,17 @@ nfsd4_encode_dirent(void *ccdv, const ch
 	case nfserr_noent:
 		xdr_truncate_encode(xdr, start_offset);
 		goto skip_entry;
+	case nfserr_jukebox:
+		/*
+		 * The pseudoroot should only display dentries that lead to
+		 * exports. If we get EJUKEBOX here, then we can't tell whether
+		 * this entry should be included. Just fail the whole READDIR
+		 * with NFS4ERR_DELAY in that case, and hope that the situation
+		 * will resolve itself by the client's next attempt.
+		 */
+		if (cd->rd_fhp->fh_export->ex_flags & NFSEXP_V4ROOT)
+			goto fail;
+		fallthrough;
 	default:
 		/*
 		 * If the client requested the RDATTR_ERROR attribute,



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 129/159] fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (127 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 128/159] nfsd: fix handling of readdir in v4root vs. mount upcall timeout Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 130/159] bpf: Fix panic due to wrong pageattr of im->image Greg Kroah-Hartman
                   ` (44 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, it+linux-fbdev, Z. Liu, Rich Felker,
	Paul Menzel, Helge Deller

From: Paul Menzel <pmenzel@molgen.mpg.de>

commit f685dd7a8025f2554f73748cfdb8143a21fb92c7 upstream.

Commit 62d89a7d49af ("video: fbdev: matroxfb: set maxvram of vbG200eW to
the same as vbG200 to avoid black screen") accidently decreases the
maximum memory size for the Matrox G200eW (102b:0532) from 8 MB to 1 MB
by missing one zero. This caused the driver initialization to fail with
the messages below, as the minimum required VRAM size is 2 MB:

     [    9.436420] matroxfb: Matrox MGA-G200eW (PCI) detected
     [    9.444502] matroxfb: cannot determine memory size
     [    9.449316] matroxfb: probe of 0000:0a:03.0 failed with error -1

So, add the missing 0 to make it the intended 16 MB. Successfully tested on
the Dell PowerEdge R910/0KYD3D, BIOS 2.10.0 08/29/2013, that the warning is
gone.

While at it, add a leading 0 to the maxdisplayable entry, so it’s aligned
properly. The value could probably also be increased from 8 MB to 16 MB, as
the G200 uses the same values, but I have not checked any datasheet.

Note, matroxfb is obsolete and superseded by the maintained DRM driver
mga200, which is used by default on most systems where both drivers are
available. Therefore, on most systems it was only a cosmetic issue.

Fixes: 62d89a7d49af ("video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200 to avoid black screen")
Link: https://lore.kernel.org/linux-fbdev/972999d3-b75d-5680-fcef-6e6905c52ac5@suse.de/T/#mb6953a9995ebd18acc8552f99d6db39787aec775
Cc: it+linux-fbdev@molgen.mpg.de
Cc: Z. Liu <liuzx@knownsec.com>
Cc: Rich Felker <dalias@libc.org>
Cc: stable@vger.kernel.org
Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/video/fbdev/matrox/matroxfb_base.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/video/fbdev/matrox/matroxfb_base.c
+++ b/drivers/video/fbdev/matrox/matroxfb_base.c
@@ -1378,8 +1378,8 @@ static struct video_board vbG200 = {
 	.lowlevel = &matrox_G100
 };
 static struct video_board vbG200eW = {
-	.maxvram = 0x100000,
-	.maxdisplayable = 0x800000,
+	.maxvram = 0x1000000,
+	.maxdisplayable = 0x0800000,
 	.accelID = FB_ACCEL_MATROX_MGAG200,
 	.lowlevel = &matrox_G100
 };



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 130/159] bpf: Fix panic due to wrong pageattr of im->image
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (128 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 129/159] fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 131/159] Revert "drm/amd/display: Enable Freesync Video Mode by default" Greg Kroah-Hartman
                   ` (43 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Chuang Wang, Jiri Olsa, Song Liu,
	Alexei Starovoitov

From: Chuang Wang <nashuiliang@gmail.com>

commit 9ed1d9aeef5842ecacb660fce933613b58af1e00 upstream.

In the scenario where livepatch and kretfunc coexist, the pageattr of
im->image is rox after arch_prepare_bpf_trampoline in
bpf_trampoline_update, and then modify_fentry or register_fentry returns
-EAGAIN from bpf_tramp_ftrace_ops_func, the BPF_TRAMP_F_ORIG_STACK flag
will be configured, and arch_prepare_bpf_trampoline will be re-executed.

At this time, because the pageattr of im->image is rox,
arch_prepare_bpf_trampoline will read and write im->image, which causes
a fault. as follows:

  insmod livepatch-sample.ko    # samples/livepatch/livepatch-sample.c
  bpftrace -e 'kretfunc:cmdline_proc_show {}'

BUG: unable to handle page fault for address: ffffffffa0206000
PGD 322d067 P4D 322d067 PUD 322e063 PMD 1297e067 PTE d428061
Oops: 0003 [#1] PREEMPT SMP PTI
CPU: 2 PID: 270 Comm: bpftrace Tainted: G            E K    6.1.0 #5
RIP: 0010:arch_prepare_bpf_trampoline+0xed/0x8c0
RSP: 0018:ffffc90001083ad8 EFLAGS: 00010202
RAX: ffffffffa0206000 RBX: 0000000000000020 RCX: 0000000000000000
RDX: ffffffffa0206001 RSI: ffffffffa0206000 RDI: 0000000000000030
RBP: ffffc90001083b70 R08: 0000000000000066 R09: ffff88800f51b400
R10: 000000002e72c6e5 R11: 00000000d0a15080 R12: ffff8880110a68c8
R13: 0000000000000000 R14: ffff88800f51b400 R15: ffffffff814fec10
FS:  00007f87bc0dc780(0000) GS:ffff88803e600000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffffffa0206000 CR3: 0000000010b70000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
 bpf_trampoline_update+0x25a/0x6b0
 __bpf_trampoline_link_prog+0x101/0x240
 bpf_trampoline_link_prog+0x2d/0x50
 bpf_tracing_prog_attach+0x24c/0x530
 bpf_raw_tp_link_attach+0x73/0x1d0
 __sys_bpf+0x100e/0x2570
 __x64_sys_bpf+0x1c/0x30
 do_syscall_64+0x5b/0x80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

With this patch, when modify_fentry or register_fentry returns -EAGAIN
from bpf_tramp_ftrace_ops_func, the pageattr of im->image will be reset
to nx+rw.

Cc: stable@vger.kernel.org
Fixes: 00963a2e75a8 ("bpf: Support bpf_trampoline on functions with IPMODIFY (e.g. livepatch)")
Signed-off-by: Chuang Wang <nashuiliang@gmail.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20221224133146.780578-1-nashuiliang@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 kernel/bpf/trampoline.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/kernel/bpf/trampoline.c
+++ b/kernel/bpf/trampoline.c
@@ -489,6 +489,10 @@ again:
 		/* reset fops->func and fops->trampoline for re-register */
 		tr->fops->func = NULL;
 		tr->fops->trampoline = 0;
+
+		/* reset im->image memory attr for arch_prepare_bpf_trampoline */
+		set_memory_nx((long)im->image, 1);
+		set_memory_rw((long)im->image, 1);
 		goto again;
 	}
 #endif



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 131/159] Revert "drm/amd/display: Enable Freesync Video Mode by default"
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (129 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 130/159] bpf: Fix panic due to wrong pageattr of im->image Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 132/159] Revert "net: dsa: qca8k: cache lo and hi for mdio write" Greg Kroah-Hartman
                   ` (42 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Michel Dänzer, Alex Deucher

From: Michel Dänzer <mdaenzer@redhat.com>

commit 6fe6ece398f7431784847e922a2c8c385dc58a35 upstream.

This reverts commit de05abe6b9d0fe08f65d744f7f75a4cba4df27ad.

The bug referenced below was bisected to this commit. There has been no
activity toward fixing it in 3 months, so let's revert for now.

Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/2162
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h               |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c           |   27 ++++++++++++++++++++++
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |   12 +++++----
 3 files changed, 35 insertions(+), 5 deletions(-)

--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -196,6 +196,7 @@ extern int amdgpu_emu_mode;
 extern uint amdgpu_smu_memory_pool_size;
 extern int amdgpu_smu_pptable_id;
 extern uint amdgpu_dc_feature_mask;
+extern uint amdgpu_freesync_vid_mode;
 extern uint amdgpu_dc_debug_mask;
 extern uint amdgpu_dc_visual_confirm;
 extern uint amdgpu_dm_abm_level;
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -180,6 +180,7 @@ int amdgpu_mes_kiq;
 int amdgpu_noretry = -1;
 int amdgpu_force_asic_type = -1;
 int amdgpu_tmz = -1; /* auto */
+uint amdgpu_freesync_vid_mode;
 int amdgpu_reset_method = -1; /* auto */
 int amdgpu_num_kcq = -1;
 int amdgpu_smartshift_bias;
@@ -878,6 +879,32 @@ MODULE_PARM_DESC(tmz, "Enable TMZ featur
 module_param_named(tmz, amdgpu_tmz, int, 0444);
 
 /**
+ * DOC: freesync_video (uint)
+ * Enable the optimization to adjust front porch timing to achieve seamless
+ * mode change experience when setting a freesync supported mode for which full
+ * modeset is not needed.
+ *
+ * The Display Core will add a set of modes derived from the base FreeSync
+ * video mode into the corresponding connector's mode list based on commonly
+ * used refresh rates and VRR range of the connected display, when users enable
+ * this feature. From the userspace perspective, they can see a seamless mode
+ * change experience when the change between different refresh rates under the
+ * same resolution. Additionally, userspace applications such as Video playback
+ * can read this modeset list and change the refresh rate based on the video
+ * frame rate. Finally, the userspace can also derive an appropriate mode for a
+ * particular refresh rate based on the FreeSync Mode and add it to the
+ * connector's mode list.
+ *
+ * Note: This is an experimental feature.
+ *
+ * The default value: 0 (off).
+ */
+MODULE_PARM_DESC(
+	freesync_video,
+	"Enable freesync modesetting optimization feature (0 = off (default), 1 = on)");
+module_param_named(freesync_video, amdgpu_freesync_vid_mode, uint, 0444);
+
+/**
  * DOC: reset_method (int)
  * GPU reset method (-1 = auto (default), 0 = legacy, 1 = mode0, 2 = mode1, 3 = mode2, 4 = baco)
  */
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -5807,7 +5807,8 @@ create_stream_for_sink(struct amdgpu_dm_
 		 */
 		DRM_DEBUG_DRIVER("No preferred mode found\n");
 	} else {
-		recalculate_timing = is_freesync_video_mode(&mode, aconnector);
+		recalculate_timing = amdgpu_freesync_vid_mode &&
+				 is_freesync_video_mode(&mode, aconnector);
 		if (recalculate_timing) {
 			freesync_mode = get_highest_refresh_rate_mode(aconnector, false);
 			drm_mode_copy(&saved_mode, &mode);
@@ -6892,7 +6893,7 @@ static void amdgpu_dm_connector_add_free
 	struct amdgpu_dm_connector *amdgpu_dm_connector =
 		to_amdgpu_dm_connector(connector);
 
-	if (!edid)
+	if (!(amdgpu_freesync_vid_mode && edid))
 		return;
 
 	if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
@@ -8753,7 +8754,8 @@ static int dm_update_crtc_state(struct a
 		 * TODO: Refactor this function to allow this check to work
 		 * in all conditions.
 		 */
-		if (dm_new_crtc_state->stream &&
+		if (amdgpu_freesync_vid_mode &&
+		    dm_new_crtc_state->stream &&
 		    is_timing_unchanged_for_freesync(new_crtc_state, old_crtc_state))
 			goto skip_modeset;
 
@@ -8788,7 +8790,7 @@ static int dm_update_crtc_state(struct a
 		if (!dm_old_crtc_state->stream)
 			goto skip_modeset;
 
-		if (dm_new_crtc_state->stream &&
+		if (amdgpu_freesync_vid_mode && dm_new_crtc_state->stream &&
 		    is_timing_unchanged_for_freesync(new_crtc_state,
 						     old_crtc_state)) {
 			new_crtc_state->mode_changed = false;
@@ -8800,7 +8802,7 @@ static int dm_update_crtc_state(struct a
 			set_freesync_fixed_config(dm_new_crtc_state);
 
 			goto skip_modeset;
-		} else if (aconnector &&
+		} else if (amdgpu_freesync_vid_mode && aconnector &&
 			   is_freesync_video_mode(&new_crtc_state->mode,
 						  aconnector)) {
 			struct drm_display_mode *high_mode;



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 132/159] Revert "net: dsa: qca8k: cache lo and hi for mdio write"
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (130 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 131/159] Revert "drm/amd/display: Enable Freesync Video Mode by default" Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 133/159] net: dsa: qca8k: fix wrong length value for mgmt eth packet Greg Kroah-Hartman
                   ` (41 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ronald Wahl, Christian Marangi,
	David S. Miller

From: Christian Marangi <ansuelsmth@gmail.com>

commit 03cb9e6d0b32b768e3d9d473c5c4ca1100877664 upstream.

This reverts commit 2481d206fae7884cd07014fd1318e63af35e99eb.

The Documentation is very confusing about the topic.
The cache logic for hi and lo is wrong and actually miss some regs to be
actually written.

What the Documentation actually intended was that it's possible to skip
writing hi OR lo if half of the reg is not needed to be written or read.

Revert the change in favor of a better and correct implementation.

Reported-by: Ronald Wahl <ronald.wahl@raritan.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Cc: stable@vger.kernel.org # v5.18+
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/dsa/qca/qca8k-8xxx.c |   61 +++++++--------------------------------
 drivers/net/dsa/qca/qca8k.h      |    5 ---
 2 files changed, 12 insertions(+), 54 deletions(-)

--- a/drivers/net/dsa/qca/qca8k-8xxx.c
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
@@ -37,44 +37,6 @@ qca8k_split_addr(u32 regaddr, u16 *r1, u
 }
 
 static int
-qca8k_set_lo(struct qca8k_priv *priv, int phy_id, u32 regnum, u16 lo)
-{
-	u16 *cached_lo = &priv->mdio_cache.lo;
-	struct mii_bus *bus = priv->bus;
-	int ret;
-
-	if (lo == *cached_lo)
-		return 0;
-
-	ret = bus->write(bus, phy_id, regnum, lo);
-	if (ret < 0)
-		dev_err_ratelimited(&bus->dev,
-				    "failed to write qca8k 32bit lo register\n");
-
-	*cached_lo = lo;
-	return 0;
-}
-
-static int
-qca8k_set_hi(struct qca8k_priv *priv, int phy_id, u32 regnum, u16 hi)
-{
-	u16 *cached_hi = &priv->mdio_cache.hi;
-	struct mii_bus *bus = priv->bus;
-	int ret;
-
-	if (hi == *cached_hi)
-		return 0;
-
-	ret = bus->write(bus, phy_id, regnum, hi);
-	if (ret < 0)
-		dev_err_ratelimited(&bus->dev,
-				    "failed to write qca8k 32bit hi register\n");
-
-	*cached_hi = hi;
-	return 0;
-}
-
-static int
 qca8k_mii_read32(struct mii_bus *bus, int phy_id, u32 regnum, u32 *val)
 {
 	int ret;
@@ -97,7 +59,7 @@ qca8k_mii_read32(struct mii_bus *bus, in
 }
 
 static void
-qca8k_mii_write32(struct qca8k_priv *priv, int phy_id, u32 regnum, u32 val)
+qca8k_mii_write32(struct mii_bus *bus, int phy_id, u32 regnum, u32 val)
 {
 	u16 lo, hi;
 	int ret;
@@ -105,9 +67,12 @@ qca8k_mii_write32(struct qca8k_priv *pri
 	lo = val & 0xffff;
 	hi = (u16)(val >> 16);
 
-	ret = qca8k_set_lo(priv, phy_id, regnum, lo);
+	ret = bus->write(bus, phy_id, regnum, lo);
 	if (ret >= 0)
-		ret = qca8k_set_hi(priv, phy_id, regnum + 1, hi);
+		ret = bus->write(bus, phy_id, regnum + 1, hi);
+	if (ret < 0)
+		dev_err_ratelimited(&bus->dev,
+				    "failed to write qca8k 32bit register\n");
 }
 
 static int
@@ -417,7 +382,7 @@ qca8k_regmap_write(void *ctx, uint32_t r
 	if (ret < 0)
 		goto exit;
 
-	qca8k_mii_write32(priv, 0x10 | r2, r1, val);
+	qca8k_mii_write32(bus, 0x10 | r2, r1, val);
 
 exit:
 	mutex_unlock(&bus->mdio_lock);
@@ -450,7 +415,7 @@ qca8k_regmap_update_bits(void *ctx, uint
 
 	val &= ~mask;
 	val |= write_val;
-	qca8k_mii_write32(priv, 0x10 | r2, r1, val);
+	qca8k_mii_write32(bus, 0x10 | r2, r1, val);
 
 exit:
 	mutex_unlock(&bus->mdio_lock);
@@ -725,14 +690,14 @@ qca8k_mdio_write(struct qca8k_priv *priv
 	if (ret)
 		goto exit;
 
-	qca8k_mii_write32(priv, 0x10 | r2, r1, val);
+	qca8k_mii_write32(bus, 0x10 | r2, r1, val);
 
 	ret = qca8k_mdio_busy_wait(bus, QCA8K_MDIO_MASTER_CTRL,
 				   QCA8K_MDIO_MASTER_BUSY);
 
 exit:
 	/* even if the busy_wait timeouts try to clear the MASTER_EN */
-	qca8k_mii_write32(priv, 0x10 | r2, r1, 0);
+	qca8k_mii_write32(bus, 0x10 | r2, r1, 0);
 
 	mutex_unlock(&bus->mdio_lock);
 
@@ -762,7 +727,7 @@ qca8k_mdio_read(struct qca8k_priv *priv,
 	if (ret)
 		goto exit;
 
-	qca8k_mii_write32(priv, 0x10 | r2, r1, val);
+	qca8k_mii_write32(bus, 0x10 | r2, r1, val);
 
 	ret = qca8k_mdio_busy_wait(bus, QCA8K_MDIO_MASTER_CTRL,
 				   QCA8K_MDIO_MASTER_BUSY);
@@ -773,7 +738,7 @@ qca8k_mdio_read(struct qca8k_priv *priv,
 
 exit:
 	/* even if the busy_wait timeouts try to clear the MASTER_EN */
-	qca8k_mii_write32(priv, 0x10 | r2, r1, 0);
+	qca8k_mii_write32(bus, 0x10 | r2, r1, 0);
 
 	mutex_unlock(&bus->mdio_lock);
 
@@ -1943,8 +1908,6 @@ qca8k_sw_probe(struct mdio_device *mdiod
 	}
 
 	priv->mdio_cache.page = 0xffff;
-	priv->mdio_cache.lo = 0xffff;
-	priv->mdio_cache.hi = 0xffff;
 
 	/* Check the detected switch id */
 	ret = qca8k_read_switch_id(priv);
--- a/drivers/net/dsa/qca/qca8k.h
+++ b/drivers/net/dsa/qca/qca8k.h
@@ -375,11 +375,6 @@ struct qca8k_mdio_cache {
  * mdio writes
  */
 	u16 page;
-/* lo and hi can also be cached and from Documentation we can skip one
- * extra mdio write if lo or hi is didn't change.
- */
-	u16 lo;
-	u16 hi;
 };
 
 struct qca8k_pcs {



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 133/159] net: dsa: qca8k: fix wrong length value for mgmt eth packet
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (131 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 132/159] Revert "net: dsa: qca8k: cache lo and hi for mdio write" Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 134/159] net: dsa: tag_qca: fix wrong MGMT_DATA2 size Greg Kroah-Hartman
                   ` (40 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ronald Wahl, Christian Marangi,
	David S. Miller

From: Christian Marangi <ansuelsmth@gmail.com>

commit 9807ae69746196ee4bbffe7d22d22ab2b61c6ed0 upstream.

The assumption that Documentation was right about how this value work was
wrong. It was discovered that the length value of the mgmt header is in
step of word size.

As an example to process 4 byte of data the correct length to set is 2.
To process 8 byte 4, 12 byte 6, 16 byte 8...

Odd values will always return the next size on the ack packet.
(length of 3 (6 byte) will always return 8 bytes of data)

This means that a value of 15 (0xf) actually means reading/writing 32 bytes
of data instead of 16 bytes. This behaviour is totally absent and not
documented in the switch Documentation.

In fact from Documentation the max value that mgmt eth can process is
16 byte of data while in reality it can process 32 bytes at once.

To handle this we always round up the length after deviding it for word
size. We check if the result is odd and we round another time to align
to what the switch will provide in the ack packet.
The workaround for the length limit of 15 is still needed as the length
reg max value is 0xf(15)

Reported-by: Ronald Wahl <ronald.wahl@raritan.com>
Tested-by: Ronald Wahl <ronald.wahl@raritan.com>
Fixes: 90386223f44e ("net: dsa: qca8k: add support for larger read/write size with mgmt Ethernet")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Cc: stable@vger.kernel.org # v5.18+
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/dsa/qca/qca8k-8xxx.c |   45 ++++++++++++++++++++++++++++++---------
 1 file changed, 35 insertions(+), 10 deletions(-)

--- a/drivers/net/dsa/qca/qca8k-8xxx.c
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
@@ -111,7 +111,16 @@ static void qca8k_rw_reg_ack_handler(str
 
 	command = get_unaligned_le32(&mgmt_ethhdr->command);
 	cmd = FIELD_GET(QCA_HDR_MGMT_CMD, command);
+
 	len = FIELD_GET(QCA_HDR_MGMT_LENGTH, command);
+	/* Special case for len of 15 as this is the max value for len and needs to
+	 * be increased before converting it from word to dword.
+	 */
+	if (len == 15)
+		len++;
+
+	/* We can ignore odd value, we always round up them in the alloc function. */
+	len *= sizeof(u16);
 
 	/* Make sure the seq match the requested packet */
 	if (get_unaligned_le32(&mgmt_ethhdr->seq) == mgmt_eth_data->seq)
@@ -158,17 +167,33 @@ static struct sk_buff *qca8k_alloc_mdio_
 	if (!skb)
 		return NULL;
 
-	/* Max value for len reg is 15 (0xf) but the switch actually return 16 byte
-	 * Actually for some reason the steps are:
-	 * 0: nothing
-	 * 1-4: first 4 byte
-	 * 5-6: first 12 byte
-	 * 7-15: all 16 byte
+	/* Hdr mgmt length value is in step of word size.
+	 * As an example to process 4 byte of data the correct length to set is 2.
+	 * To process 8 byte 4, 12 byte 6, 16 byte 8...
+	 *
+	 * Odd values will always return the next size on the ack packet.
+	 * (length of 3 (6 byte) will always return 8 bytes of data)
+	 *
+	 * This means that a value of 15 (0xf) actually means reading/writing 32 bytes
+	 * of data.
+	 *
+	 * To correctly calculate the length we devide the requested len by word and
+	 * round up.
+	 * On the ack function we can skip the odd check as we already handle the
+	 * case here.
 	 */
-	if (len == 16)
-		real_len = 15;
-	else
-		real_len = len;
+	real_len = DIV_ROUND_UP(len, sizeof(u16));
+
+	/* We check if the result len is odd and we round up another time to
+	 * the next size. (length of 3 will be increased to 4 as switch will always
+	 * return 8 bytes)
+	 */
+	if (real_len % sizeof(u16) != 0)
+		real_len++;
+
+	/* Max reg value is 0xf(15) but switch will always return the next size (32 byte) */
+	if (real_len == 16)
+		real_len--;
 
 	skb_reset_mac_header(skb);
 	skb_set_network_header(skb, skb->len);



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 134/159] net: dsa: tag_qca: fix wrong MGMT_DATA2 size
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (132 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 133/159] net: dsa: qca8k: fix wrong length value for mgmt eth packet Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 135/159] block: dont allow splitting of a REQ_NOWAIT bio Greg Kroah-Hartman
                   ` (39 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ronald Wahl, Christian Marangi,
	David S. Miller

From: Christian Marangi <ansuelsmth@gmail.com>

commit d9dba91be71f03cc75bcf39fc0d5d99ff33f1ae0 upstream.

It was discovered that MGMT_DATA2 can contain up to 28 bytes of data
instead of the 12 bytes written in the Documentation by accounting the
limit of 16 bytes declared in Documentation subtracting the first 4 byte
in the packet header.

Update the define with the real world value.

Tested-by: Ronald Wahl <ronald.wahl@raritan.com>
Fixes: c2ee8181fddb ("net: dsa: tag_qca: add define for handling mgmt Ethernet packet")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Cc: stable@vger.kernel.org # v5.18+
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/linux/dsa/tag_qca.h |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/include/linux/dsa/tag_qca.h
+++ b/include/linux/dsa/tag_qca.h
@@ -45,8 +45,8 @@ struct sk_buff;
 					QCA_HDR_MGMT_COMMAND_LEN + \
 					QCA_HDR_MGMT_DATA1_LEN)
 
-#define QCA_HDR_MGMT_DATA2_LEN		12 /* Other 12 byte for the mdio data */
-#define QCA_HDR_MGMT_PADDING_LEN	34 /* Padding to reach the min Ethernet packet */
+#define QCA_HDR_MGMT_DATA2_LEN		28 /* Other 28 byte for the mdio data */
+#define QCA_HDR_MGMT_PADDING_LEN	18 /* Padding to reach the min Ethernet packet */
 
 #define QCA_HDR_MGMT_PKT_LEN		(QCA_HDR_MGMT_HEADER_LEN + \
 					QCA_HDR_LEN + \



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 135/159] block: dont allow splitting of a REQ_NOWAIT bio
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (133 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 134/159] net: dsa: tag_qca: fix wrong MGMT_DATA2 size Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 136/159] io_uring: pin context while queueing deferred tw Greg Kroah-Hartman
                   ` (38 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Michael Kelley, Keith Busch, Jens Axboe

From: Jens Axboe <axboe@kernel.dk>

commit 9cea62b2cbabff8ed46f2df17778b624ad9dd25a upstream.

If we split a bio marked with REQ_NOWAIT, then we can trigger spurious
EAGAIN if constituent parts of that split bio end up failing request
allocations. Parts will complete just fine, but just a single failure
in one of the chained bios will yield an EAGAIN final result for the
parent bio.

Return EAGAIN early if we end up needing to split such a bio, which
allows for saner recovery handling.

Cc: stable@vger.kernel.org # 5.15+
Link: https://github.com/axboe/liburing/issues/766
Reported-by: Michael Kelley <mikelley@microsoft.com>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 block/blk-merge.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -300,6 +300,16 @@ static struct bio *bio_split_rw(struct b
 	*segs = nsegs;
 	return NULL;
 split:
+	/*
+	 * We can't sanely support splitting for a REQ_NOWAIT bio. End it
+	 * with EAGAIN if splitting is required and return an error pointer.
+	 */
+	if (bio->bi_opf & REQ_NOWAIT) {
+		bio->bi_status = BLK_STS_AGAIN;
+		bio_endio(bio);
+		return ERR_PTR(-EAGAIN);
+	}
+
 	*segs = nsegs;
 
 	/*



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 136/159] io_uring: pin context while queueing deferred tw
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (134 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 135/159] block: dont allow splitting of a REQ_NOWAIT bio Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 137/159] io_uring: fix CQ waiting timeout handling Greg Kroah-Hartman
                   ` (37 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Pavel Begunkov, Jens Axboe

From: Pavel Begunkov <asml.silence@gmail.com>

commit 9ffa13ff78a0a55df968a72d6f0ebffccee5c9f4 upstream.

Unlike normal tw, nothing prevents deferred tw to be executed right
after an tw item added to ->work_llist in io_req_local_work_add(). For
instance, the waiting task may get waken up by CQ posting or a normal
tw. Thus we need to pin the ring for the rest of io_req_local_work_add()

Cc: stable@vger.kernel.org
Fixes: c0e0d6ba25f18 ("io_uring: add IORING_SETUP_DEFER_TASKRUN")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/1a79362b9c10b8523ef70b061d96523650a23344.1672795998.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 io_uring/io_uring.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -1109,13 +1109,18 @@ static void io_req_local_work_add(struct
 {
 	struct io_ring_ctx *ctx = req->ctx;
 
-	if (!llist_add(&req->io_task_work.node, &ctx->work_llist))
+	percpu_ref_get(&ctx->refs);
+
+	if (!llist_add(&req->io_task_work.node, &ctx->work_llist)) {
+		percpu_ref_put(&ctx->refs);
 		return;
+	}
 	/* need it for the following io_cqring_wake() */
 	smp_mb__after_atomic();
 
 	if (unlikely(atomic_read(&req->task->io_uring->in_idle))) {
 		io_move_task_work_from_local(ctx);
+		percpu_ref_put(&ctx->refs);
 		return;
 	}
 
@@ -1125,6 +1130,7 @@ static void io_req_local_work_add(struct
 	if (ctx->has_evfd)
 		io_eventfd_signal(ctx);
 	__io_cqring_wake(ctx);
+	percpu_ref_put(&ctx->refs);
 }
 
 static inline void __io_req_task_work_add(struct io_kiocb *req, bool allow_local)



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 137/159] io_uring: fix CQ waiting timeout handling
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (135 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 136/159] io_uring: pin context while queueing deferred tw Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 138/159] tpm: Allow system suspend to continue when TPM suspend fails Greg Kroah-Hartman
                   ` (36 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Pavel Begunkov, Jens Axboe

From: Pavel Begunkov <asml.silence@gmail.com>

commit 12521a5d5cb7ff0ad43eadfc9c135d86e1131fa8 upstream.

Jiffy to ktime CQ waiting conversion broke how we treat timeouts, in
particular we rearm it anew every time we get into
io_cqring_wait_schedule() without adjusting the timeout. Waiting for 2
CQEs and getting a task_work in the middle may double the timeout value,
or even worse in some cases task may wait indefinitely.

Cc: stable@vger.kernel.org
Fixes: 228339662b398 ("io_uring: don't convert to jiffies for waiting on timeouts")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/f7bffddd71b08f28a877d44d37ac953ddb01590d.1672915663.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 io_uring/io_uring.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -2364,7 +2364,7 @@ int io_run_task_work_sig(struct io_ring_
 /* when returns >0, the caller should retry */
 static inline int io_cqring_wait_schedule(struct io_ring_ctx *ctx,
 					  struct io_wait_queue *iowq,
-					  ktime_t timeout)
+					  ktime_t *timeout)
 {
 	int ret;
 	unsigned long check_cq;
@@ -2382,7 +2382,7 @@ static inline int io_cqring_wait_schedul
 		if (check_cq & BIT(IO_CHECK_CQ_DROPPED_BIT))
 			return -EBADR;
 	}
-	if (!schedule_hrtimeout(&timeout, HRTIMER_MODE_ABS))
+	if (!schedule_hrtimeout(timeout, HRTIMER_MODE_ABS))
 		return -ETIME;
 	return 1;
 }
@@ -2452,7 +2452,7 @@ static int io_cqring_wait(struct io_ring
 		}
 		prepare_to_wait_exclusive(&ctx->cq_wait, &iowq.wq,
 						TASK_INTERRUPTIBLE);
-		ret = io_cqring_wait_schedule(ctx, &iowq, timeout);
+		ret = io_cqring_wait_schedule(ctx, &iowq, &timeout);
 		cond_resched();
 	} while (ret > 0);
 



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 138/159] tpm: Allow system suspend to continue when TPM suspend fails
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (136 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 137/159] io_uring: fix CQ waiting timeout handling Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 139/159] vhost_vdpa: fix the crash in unmap a large memory Greg Kroah-Hartman
                   ` (35 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Vlastimil Babka, Linus Torvalds,
	Luigi Semenzato, Peter Huewe, Jarkko Sakkinen, James Bottomley,
	Johannes Altmanninger, Jason A. Donenfeld

From: Jason A. Donenfeld <Jason@zx2c4.com>

commit 1382999aa0548a171a272ca817f6c38e797c458c upstream.

TPM 1 is sometimes broken across system suspends, due to races or
locking issues or something else that haven't been diagnosed or fixed
yet, most likely having to do with concurrent reads from the TPM's
hardware random number generator driver. These issues prevent the system
from actually suspending, with errors like:

  tpm tpm0: A TPM error (28) occurred continue selftest
  ...
  tpm tpm0: A TPM error (28) occurred attempting get random
  ...
  tpm tpm0: Error (28) sending savestate before suspend
  tpm_tis 00:08: PM: __pnp_bus_suspend(): tpm_pm_suspend+0x0/0x80 returns 28
  tpm_tis 00:08: PM: dpm_run_callback(): pnp_bus_suspend+0x0/0x10 returns 28
  tpm_tis 00:08: PM: failed to suspend: error 28
  PM: Some devices failed to suspend, or early wake event detected

This issue was partially fixed by 23393c646142 ("char: tpm: Protect
tpm_pm_suspend with locks"), in a last minute 6.1 commit that Linus took
directly because the TPM maintainers weren't available. However, it
seems like this just addresses the most common cases of the bug, rather
than addressing it entirely. So there are more things to fix still,
apparently.

In lieu of actually fixing the underlying bug, just allow system suspend
to continue, so that laptops still go to sleep fine. Later, this can be
reverted when the real bug is fixed.

Link: https://lore.kernel.org/lkml/7cbe96cf-e0b5-ba63-d1b4-f63d2e826efa@suse.cz/
Cc: stable@vger.kernel.org # 6.1+
Reported-by: Vlastimil Babka <vbabka@suse.cz>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Acked-by: Luigi Semenzato <semenzato@chromium.org>
Cc: Peter Huewe <peterhuewe@gmx.de>
Cc: Jarkko Sakkinen <jarkko@kernel.org>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Johannes Altmanninger <aclopte@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/char/tpm/tpm-interface.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index d69905233aff..7e513b771832 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -412,7 +412,9 @@ int tpm_pm_suspend(struct device *dev)
 	}
 
 suspended:
-	return rc;
+	if (rc)
+		dev_err(dev, "Ignoring error %d while suspending\n", rc);
+	return 0;
 }
 EXPORT_SYMBOL_GPL(tpm_pm_suspend);
 
-- 
2.39.0




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 139/159] vhost_vdpa: fix the crash in unmap a large memory
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (137 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 138/159] tpm: Allow system suspend to continue when TPM suspend fails Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 140/159] thermal: int340x: Add missing attribute for data rate base Greg Kroah-Hartman
                   ` (34 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Cindy Lu, Michael S. Tsirkin

From: Cindy Lu <lulu@redhat.com>

commit e794070af224ade46db368271896b2685ff4f96b upstream.

While testing in vIOMMU, sometimes Guest will unmap very large memory,
which will cause the crash. To fix this, add a new function
vhost_vdpa_general_unmap(). This function will only unmap the memory
that saved in iotlb.

Call Trace:
[  647.820144] ------------[ cut here ]------------
[  647.820848] kernel BUG at drivers/iommu/intel/iommu.c:1174!
[  647.821486] invalid opcode: 0000 [#1] PREEMPT SMP PTI
[  647.822082] CPU: 10 PID: 1181 Comm: qemu-system-x86 Not tainted 6.0.0-rc1home_lulu_2452_lulu7_vhost+ #62
[  647.823139] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.15.0-29-g6a62e0cb0dfe-prebuilt.qem4
[  647.824365] RIP: 0010:domain_unmap+0x48/0x110
[  647.825424] Code: 48 89 fb 8d 4c f6 1e 39 c1 0f 4f c8 83 e9 0c 83 f9 3f 7f 18 48 89 e8 48 d3 e8 48 85 c0 75 59
[  647.828064] RSP: 0018:ffffae5340c0bbf0 EFLAGS: 00010202
[  647.828973] RAX: 0000000000000001 RBX: ffff921793d10540 RCX: 000000000000001b
[  647.830083] RDX: 00000000080000ff RSI: 0000000000000001 RDI: ffff921793d10540
[  647.831214] RBP: 0000000007fc0100 R08: ffffae5340c0bcd0 R09: 0000000000000003
[  647.832388] R10: 0000007fc0100000 R11: 0000000000100000 R12: 00000000080000ff
[  647.833668] R13: ffffae5340c0bcd0 R14: ffff921793d10590 R15: 0000008000100000
[  647.834782] FS:  00007f772ec90640(0000) GS:ffff921ce7a80000(0000) knlGS:0000000000000000
[  647.836004] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  647.836990] CR2: 00007f02c27a3a20 CR3: 0000000101b0c006 CR4: 0000000000372ee0
[  647.838107] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  647.839283] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  647.840666] Call Trace:
[  647.841437]  <TASK>
[  647.842107]  intel_iommu_unmap_pages+0x93/0x140
[  647.843112]  __iommu_unmap+0x91/0x1b0
[  647.844003]  iommu_unmap+0x6a/0x95
[  647.844885]  vhost_vdpa_unmap+0x1de/0x1f0 [vhost_vdpa]
[  647.845985]  vhost_vdpa_process_iotlb_msg+0xf0/0x90b [vhost_vdpa]
[  647.847235]  ? _raw_spin_unlock+0x15/0x30
[  647.848181]  ? _copy_from_iter+0x8c/0x580
[  647.849137]  vhost_chr_write_iter+0xb3/0x430 [vhost]
[  647.850126]  vfs_write+0x1e4/0x3a0
[  647.850897]  ksys_write+0x53/0xd0
[  647.851688]  do_syscall_64+0x3a/0x90
[  647.852508]  entry_SYSCALL_64_after_hwframe+0x63/0xcd
[  647.853457] RIP: 0033:0x7f7734ef9f4f
[  647.854408] Code: 89 54 24 18 48 89 74 24 10 89 7c 24 08 e8 29 76 f8 ff 48 8b 54 24 18 48 8b 74 24 10 41 89 c8
[  647.857217] RSP: 002b:00007f772ec8f040 EFLAGS: 00000293 ORIG_RAX: 0000000000000001
[  647.858486] RAX: ffffffffffffffda RBX: 00000000fef00000 RCX: 00007f7734ef9f4f
[  647.859713] RDX: 0000000000000048 RSI: 00007f772ec8f090 RDI: 0000000000000010
[  647.860942] RBP: 00007f772ec8f1a0 R08: 0000000000000000 R09: 0000000000000000
[  647.862206] R10: 0000000000000001 R11: 0000000000000293 R12: 0000000000000010
[  647.863446] R13: 0000000000000002 R14: 0000000000000000 R15: ffffffff01100000
[  647.864692]  </TASK>
[  647.865458] Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs v]
[  647.874688] ---[ end trace 0000000000000000 ]---

Cc: stable@vger.kernel.org
Fixes: 4c8cf31885f6 ("vhost: introduce vDPA-based backend")
Signed-off-by: Cindy Lu <lulu@redhat.com>
Message-Id: <20221219073331.556140-1-lulu@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/vhost/vdpa.c |   46 ++++++++++++++++++++++++++--------------------
 1 file changed, 26 insertions(+), 20 deletions(-)

--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -66,8 +66,8 @@ static DEFINE_IDA(vhost_vdpa_ida);
 static dev_t vhost_vdpa_major;
 
 static void vhost_vdpa_iotlb_unmap(struct vhost_vdpa *v,
-				   struct vhost_iotlb *iotlb,
-				   u64 start, u64 last);
+				   struct vhost_iotlb *iotlb, u64 start,
+				   u64 last, u32 asid);
 
 static inline u32 iotlb_to_asid(struct vhost_iotlb *iotlb)
 {
@@ -139,7 +139,7 @@ static int vhost_vdpa_remove_as(struct v
 		return -EINVAL;
 
 	hlist_del(&as->hash_link);
-	vhost_vdpa_iotlb_unmap(v, &as->iotlb, 0ULL, 0ULL - 1);
+	vhost_vdpa_iotlb_unmap(v, &as->iotlb, 0ULL, 0ULL - 1, asid);
 	kfree(as);
 
 	return 0;
@@ -687,10 +687,20 @@ static long vhost_vdpa_unlocked_ioctl(st
 	mutex_unlock(&d->mutex);
 	return r;
 }
+static void vhost_vdpa_general_unmap(struct vhost_vdpa *v,
+				     struct vhost_iotlb_map *map, u32 asid)
+{
+	struct vdpa_device *vdpa = v->vdpa;
+	const struct vdpa_config_ops *ops = vdpa->config;
+	if (ops->dma_map) {
+		ops->dma_unmap(vdpa, asid, map->start, map->size);
+	} else if (ops->set_map == NULL) {
+		iommu_unmap(v->domain, map->start, map->size);
+	}
+}
 
-static void vhost_vdpa_pa_unmap(struct vhost_vdpa *v,
-				struct vhost_iotlb *iotlb,
-				u64 start, u64 last)
+static void vhost_vdpa_pa_unmap(struct vhost_vdpa *v, struct vhost_iotlb *iotlb,
+				u64 start, u64 last, u32 asid)
 {
 	struct vhost_dev *dev = &v->vdev;
 	struct vhost_iotlb_map *map;
@@ -707,13 +717,13 @@ static void vhost_vdpa_pa_unmap(struct v
 			unpin_user_page(page);
 		}
 		atomic64_sub(PFN_DOWN(map->size), &dev->mm->pinned_vm);
+		vhost_vdpa_general_unmap(v, map, asid);
 		vhost_iotlb_map_free(iotlb, map);
 	}
 }
 
-static void vhost_vdpa_va_unmap(struct vhost_vdpa *v,
-				struct vhost_iotlb *iotlb,
-				u64 start, u64 last)
+static void vhost_vdpa_va_unmap(struct vhost_vdpa *v, struct vhost_iotlb *iotlb,
+				u64 start, u64 last, u32 asid)
 {
 	struct vhost_iotlb_map *map;
 	struct vdpa_map_file *map_file;
@@ -722,20 +732,21 @@ static void vhost_vdpa_va_unmap(struct v
 		map_file = (struct vdpa_map_file *)map->opaque;
 		fput(map_file->file);
 		kfree(map_file);
+		vhost_vdpa_general_unmap(v, map, asid);
 		vhost_iotlb_map_free(iotlb, map);
 	}
 }
 
 static void vhost_vdpa_iotlb_unmap(struct vhost_vdpa *v,
-				   struct vhost_iotlb *iotlb,
-				   u64 start, u64 last)
+				   struct vhost_iotlb *iotlb, u64 start,
+				   u64 last, u32 asid)
 {
 	struct vdpa_device *vdpa = v->vdpa;
 
 	if (vdpa->use_va)
-		return vhost_vdpa_va_unmap(v, iotlb, start, last);
+		return vhost_vdpa_va_unmap(v, iotlb, start, last, asid);
 
-	return vhost_vdpa_pa_unmap(v, iotlb, start, last);
+	return vhost_vdpa_pa_unmap(v, iotlb, start, last, asid);
 }
 
 static int perm_to_iommu_flags(u32 perm)
@@ -802,17 +813,12 @@ static void vhost_vdpa_unmap(struct vhos
 	const struct vdpa_config_ops *ops = vdpa->config;
 	u32 asid = iotlb_to_asid(iotlb);
 
-	vhost_vdpa_iotlb_unmap(v, iotlb, iova, iova + size - 1);
+	vhost_vdpa_iotlb_unmap(v, iotlb, iova, iova + size - 1, asid);
 
-	if (ops->dma_map) {
-		ops->dma_unmap(vdpa, asid, iova, size);
-	} else if (ops->set_map) {
+	if (ops->set_map) {
 		if (!v->in_batch)
 			ops->set_map(vdpa, asid, iotlb);
-	} else {
-		iommu_unmap(v->domain, iova, size);
 	}
-
 	/* If we are in the middle of batch processing, delay the free
 	 * of AS until BATCH_END.
 	 */



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 140/159] thermal: int340x: Add missing attribute for data rate base
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (138 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 139/159] vhost_vdpa: fix the crash in unmap a large memory Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 141/159] riscv: uaccess: fix type of 0 variable on error in get_user() Greg Kroah-Hartman
                   ` (33 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Srinivas Pandruvada, Rafael J. Wysocki

From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

commit b878d3ba9bb41cddb73ba4b56e5552f0a638daca upstream.

Commit 473be51142ad ("thermal: int340x: processor_thermal: Add RFIM
driver")' added rfi_restriction_data_rate_base string, mmio details and
documentation, but missed adding attribute to sysfs.

Add missing sysfs attribute.

Fixes: 473be51142ad ("thermal: int340x: processor_thermal: Add RFIM driver")
Cc: 5.11+ <stable@vger.kernel.org> # v5.11+
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c
+++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c
@@ -172,6 +172,7 @@ static const struct attribute_group fivr
 RFIM_SHOW(rfi_restriction_run_busy, 1)
 RFIM_SHOW(rfi_restriction_err_code, 1)
 RFIM_SHOW(rfi_restriction_data_rate, 1)
+RFIM_SHOW(rfi_restriction_data_rate_base, 1)
 RFIM_SHOW(ddr_data_rate_point_0, 1)
 RFIM_SHOW(ddr_data_rate_point_1, 1)
 RFIM_SHOW(ddr_data_rate_point_2, 1)
@@ -181,11 +182,13 @@ RFIM_SHOW(rfi_disable, 1)
 RFIM_STORE(rfi_restriction_run_busy, 1)
 RFIM_STORE(rfi_restriction_err_code, 1)
 RFIM_STORE(rfi_restriction_data_rate, 1)
+RFIM_STORE(rfi_restriction_data_rate_base, 1)
 RFIM_STORE(rfi_disable, 1)
 
 static DEVICE_ATTR_RW(rfi_restriction_run_busy);
 static DEVICE_ATTR_RW(rfi_restriction_err_code);
 static DEVICE_ATTR_RW(rfi_restriction_data_rate);
+static DEVICE_ATTR_RW(rfi_restriction_data_rate_base);
 static DEVICE_ATTR_RO(ddr_data_rate_point_0);
 static DEVICE_ATTR_RO(ddr_data_rate_point_1);
 static DEVICE_ATTR_RO(ddr_data_rate_point_2);
@@ -248,6 +251,7 @@ static struct attribute *dvfs_attrs[] =
 	&dev_attr_rfi_restriction_run_busy.attr,
 	&dev_attr_rfi_restriction_err_code.attr,
 	&dev_attr_rfi_restriction_data_rate.attr,
+	&dev_attr_rfi_restriction_data_rate_base.attr,
 	&dev_attr_ddr_data_rate_point_0.attr,
 	&dev_attr_ddr_data_rate_point_1.attr,
 	&dev_attr_ddr_data_rate_point_2.attr,



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 141/159] riscv: uaccess: fix type of 0 variable on error in get_user()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (139 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 140/159] thermal: int340x: Add missing attribute for data rate base Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 142/159] riscv, kprobes: Stricter c.jr/c.jalr decoding Greg Kroah-Hartman
                   ` (32 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Ben Dooks, Palmer Dabbelt

From: Ben Dooks <ben-linux@fluff.org>

commit b9b916aee6715cd7f3318af6dc360c4729417b94 upstream.

If the get_user(x, ptr) has x as a pointer, then the setting
of (x) = 0 is going to produce the following sparse warning,
so fix this by forcing the type of 'x' when access_ok() fails.

fs/aio.c:2073:21: warning: Using plain integer as NULL pointer

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
Link: https://lore.kernel.org/r/20221229170545.718264-1-ben-linux@fluff.org
Cc: stable@vger.kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/riscv/include/asm/uaccess.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/riscv/include/asm/uaccess.h
+++ b/arch/riscv/include/asm/uaccess.h
@@ -165,7 +165,7 @@ do {								\
 	might_fault();						\
 	access_ok(__p, sizeof(*__p)) ?		\
 		__get_user((x), __p) :				\
-		((x) = 0, -EFAULT);				\
+		((x) = (__force __typeof__(x))0, -EFAULT);	\
 })
 
 #define __put_user_asm(insn, x, ptr, err)			\



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 142/159] riscv, kprobes: Stricter c.jr/c.jalr decoding
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (140 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 141/159] riscv: uaccess: fix type of 0 variable on error in get_user() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 143/159] of/fdt: run soc memory setup when early_init_dt_scan_memory fails Greg Kroah-Hartman
                   ` (31 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Björn Töpel, Conor Dooley,
	Guo Ren, Palmer Dabbelt

From: Björn Töpel <bjorn@rivosinc.com>

commit b2d473a6019ef9a54b0156ecdb2e0398c9fa6a24 upstream.

In the compressed instruction extension, c.jr, c.jalr, c.mv, and c.add
is encoded the following way (each instruction is 16b):

---+-+-----------+-----------+--
100 0 rs1[4:0]!=0       00000 10 : c.jr
100 1 rs1[4:0]!=0       00000 10 : c.jalr
100 0  rd[4:0]!=0 rs2[4:0]!=0 10 : c.mv
100 1  rd[4:0]!=0 rs2[4:0]!=0 10 : c.add

The following logic is used to decode c.jr and c.jalr:

  insn & 0xf007 == 0x8002 => instruction is an c.jr
  insn & 0xf007 == 0x9002 => instruction is an c.jalr

When 0xf007 is used to mask the instruction, c.mv can be incorrectly
decoded as c.jr, and c.add as c.jalr.

Correct the decoding by changing the mask from 0xf007 to 0xf07f.

Fixes: c22b0bcb1dd0 ("riscv: Add kprobes supported")
Signed-off-by: Björn Töpel <bjorn@rivosinc.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Guo Ren <guoren@kernel.org>
Link: https://lore.kernel.org/r/20230102160748.1307289-1-bjorn@kernel.org
Cc: stable@vger.kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/riscv/kernel/probes/simulate-insn.h |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/riscv/kernel/probes/simulate-insn.h
+++ b/arch/riscv/kernel/probes/simulate-insn.h
@@ -31,9 +31,9 @@ __RISCV_INSN_FUNCS(fence,	0x7f, 0x0f);
 	} while (0)
 
 __RISCV_INSN_FUNCS(c_j,		0xe003, 0xa001);
-__RISCV_INSN_FUNCS(c_jr,	0xf007, 0x8002);
+__RISCV_INSN_FUNCS(c_jr,	0xf07f, 0x8002);
 __RISCV_INSN_FUNCS(c_jal,	0xe003, 0x2001);
-__RISCV_INSN_FUNCS(c_jalr,	0xf007, 0x9002);
+__RISCV_INSN_FUNCS(c_jalr,	0xf07f, 0x9002);
 __RISCV_INSN_FUNCS(c_beqz,	0xe003, 0xc001);
 __RISCV_INSN_FUNCS(c_bnez,	0xe003, 0xe001);
 __RISCV_INSN_FUNCS(c_ebreak,	0xffff, 0x9002);



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 143/159] of/fdt: run soc memory setup when early_init_dt_scan_memory fails
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (141 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 142/159] riscv, kprobes: Stricter c.jr/c.jalr decoding Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 144/159] drm/plane-helper: Add the missing declaration of drm_atomic_state Greg Kroah-Hartman
                   ` (30 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Andreas Rammhold, Rob Herring

From: Andreas Rammhold <andreas@rammhold.de>

commit 2a12187d5853d9fd5102278cecef7dac7c8ce7ea upstream.

If memory has been found early_init_dt_scan_memory now returns 1. If
it hasn't found any memory it will return 0, allowing other memory
setup mechanisms to carry on.

Previously early_init_dt_scan_memory always returned 0 without
distinguishing between any kind of memory setup being done or not. Any
code path after the early_init_dt_scan memory call in the ramips
plat_mem_setup code wouldn't be executed anymore. Making
early_init_dt_scan_memory the only way to initialize the memory.

Some boards, including my mt7621 based Cudy X6 board, depend on memory
initialization being done via the soc_info.mem_detect function
pointer. Those wouldn't be able to obtain memory and panic the kernel
during early bootup with the message "early_init_dt_alloc_memory_arch:
Failed to allocate 12416 bytes align=0x40".

Fixes: 1f012283e936 ("of/fdt: Rework early_init_dt_scan_memory() to call directly")
Cc: stable@vger.kernel.org
Signed-off-by: Andreas Rammhold <andreas@rammhold.de>
Link: https://lore.kernel.org/r/20221223112748.2935235-1-andreas@rammhold.de
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/mips/ralink/of.c |    2 +-
 drivers/of/fdt.c      |    6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

--- a/arch/mips/ralink/of.c
+++ b/arch/mips/ralink/of.c
@@ -64,7 +64,7 @@ void __init plat_mem_setup(void)
 	dtb = get_fdt();
 	__dt_setup_arch(dtb);
 
-	if (!early_init_dt_scan_memory())
+	if (early_init_dt_scan_memory())
 		return;
 
 	if (soc_info.mem_detect)
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1099,7 +1099,7 @@ u64 __init dt_mem_next_cell(int s, const
  */
 int __init early_init_dt_scan_memory(void)
 {
-	int node;
+	int node, found_memory = 0;
 	const void *fdt = initial_boot_params;
 
 	fdt_for_each_subnode(node, fdt, 0) {
@@ -1139,6 +1139,8 @@ int __init early_init_dt_scan_memory(voi
 
 			early_init_dt_add_memory_arch(base, size);
 
+			found_memory = 1;
+
 			if (!hotpluggable)
 				continue;
 
@@ -1147,7 +1149,7 @@ int __init early_init_dt_scan_memory(voi
 					base, base + size);
 		}
 	}
-	return 0;
+	return found_memory;
 }
 
 int __init early_init_dt_scan_chosen(char *cmdline)



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 144/159] drm/plane-helper: Add the missing declaration of drm_atomic_state
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (142 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 143/159] of/fdt: run soc memory setup when early_init_dt_scan_memory fails Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 145/159] drm/amdkfd: Fix kernel warning during topology setup Greg Kroah-Hartman
                   ` (29 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ma Jun, Thomas Zimmermann,
	Javier Martinez Canillas, Maarten Lankhorst, Maxime Ripard,
	David Airlie, Daniel Vetter, dri-devel

From: Ma Jun <majun@amd.com>

commit 4e699e34f923188175986ad8a74ab99f7034075e upstream.

Add the missing declaration of struct drm_atomic_state to fix the
compile error below:

error: 'struct drm_atomic_state' declared inside parameter
list will not be visible outside of this definition or declaration [-Werror]

Signed-off-by: Ma Jun <majun@amd.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 8401bd361f59 ("drm/plane-helper: Add a drm_plane_helper_atomic_check() helper")
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v6.1+
Link: https://patchwork.freedesktop.org/patch/msgid/20221216030526.1335609-1-majun@amd.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/drm/drm_plane_helper.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/drm/drm_plane_helper.h b/include/drm/drm_plane_helper.h
index ff83d2621687..3a574e8cd22f 100644
--- a/include/drm/drm_plane_helper.h
+++ b/include/drm/drm_plane_helper.h
@@ -26,6 +26,7 @@
 
 #include <linux/types.h>
 
+struct drm_atomic_state;
 struct drm_crtc;
 struct drm_framebuffer;
 struct drm_modeset_acquire_ctx;
-- 
2.39.0




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 145/159] drm/amdkfd: Fix kernel warning during topology setup
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (143 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 144/159] drm/plane-helper: Add the missing declaration of drm_atomic_state Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 146/159] drm/i915/gvt: fix gvt debugfs destroy Greg Kroah-Hartman
                   ` (28 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mukul Joshi, Felix Kuehling, Alex Deucher

From: Mukul Joshi <mukul.joshi@amd.com>

commit cf97eb7e47d4671084c7e114c5d88a3d0540ecbd upstream.

This patch fixes the following kernel warning seen during
driver load by correctly initializing the p2plink attr before
creating the sysfs file:

[  +0.002865] ------------[ cut here ]------------
[  +0.002327] kobject: '(null)' (0000000056260cfb): is not initialized, yet kobject_put() is being called.
[  +0.004780] WARNING: CPU: 32 PID: 1006 at lib/kobject.c:718 kobject_put+0xaa/0x1c0
[  +0.001361] Call Trace:
[  +0.001234]  <TASK>
[  +0.001067]  kfd_remove_sysfs_node_entry+0x24a/0x2d0 [amdgpu]
[  +0.003147]  kfd_topology_update_sysfs+0x3d/0x750 [amdgpu]
[  +0.002890]  kfd_topology_add_device+0xbd7/0xc70 [amdgpu]
[  +0.002844]  ? lock_release+0x13c/0x2e0
[  +0.001936]  ? smu_cmn_send_smc_msg_with_param+0x1e8/0x2d0 [amdgpu]
[  +0.003313]  ? amdgpu_dpm_get_mclk+0x54/0x60 [amdgpu]
[  +0.002703]  kgd2kfd_device_init.cold+0x39f/0x4ed [amdgpu]
[  +0.002930]  amdgpu_amdkfd_device_init+0x13d/0x1f0 [amdgpu]
[  +0.002944]  amdgpu_device_init.cold+0x1464/0x17b4 [amdgpu]
[  +0.002970]  ? pci_bus_read_config_word+0x43/0x80
[  +0.002380]  amdgpu_driver_load_kms+0x15/0x100 [amdgpu]
[  +0.002744]  amdgpu_pci_probe+0x147/0x370 [amdgpu]
[  +0.002522]  local_pci_probe+0x40/0x80
[  +0.001896]  work_for_cpu_fn+0x10/0x20
[  +0.001892]  process_one_work+0x26e/0x5a0
[  +0.002029]  worker_thread+0x1fd/0x3e0
[  +0.001890]  ? process_one_work+0x5a0/0x5a0
[  +0.002115]  kthread+0xea/0x110
[  +0.001618]  ? kthread_complete_and_exit+0x20/0x20
[  +0.002422]  ret_from_fork+0x1f/0x30
[  +0.001808]  </TASK>
[  +0.001103] irq event stamp: 59837
[  +0.001718] hardirqs last  enabled at (59849): [<ffffffffb30fab12>] __up_console_sem+0x52/0x60
[  +0.004414] hardirqs last disabled at (59860): [<ffffffffb30faaf7>] __up_console_sem+0x37/0x60
[  +0.004414] softirqs last  enabled at (59654): [<ffffffffb307d9c7>] irq_exit_rcu+0xd7/0x130
[  +0.004205] softirqs last disabled at (59649): [<ffffffffb307d9c7>] irq_exit_rcu+0xd7/0x130
[  +0.004203] ---[ end trace 0000000000000000 ]---

Fixes: 0f28cca87e9a ("drm/amdkfd: Extend KFD device topology to surface peer-to-peer links")
Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
@@ -801,7 +801,7 @@ static int kfd_build_sysfs_node_entry(st
 
 		p2plink->attr.name = "properties";
 		p2plink->attr.mode = KFD_SYSFS_FILE_MODE;
-		sysfs_attr_init(&iolink->attr);
+		sysfs_attr_init(&p2plink->attr);
 		ret = sysfs_create_file(p2plink->kobj, &p2plink->attr);
 		if (ret < 0)
 			return ret;



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 146/159] drm/i915/gvt: fix gvt debugfs destroy
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (144 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 145/159] drm/amdkfd: Fix kernel warning during topology setup Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 147/159] drm/i915/gvt: fix vgpu debugfs clean in remove Greg Kroah-Hartman
                   ` (27 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Wang, Zhi, He, Yu, Zhenyu Wang, Wang, He

From: Zhenyu Wang <zhenyuw@linux.intel.com>

commit c4b850d1f448a901fbf4f7f36dec38c84009b489 upstream.

When gvt debug fs is destroyed, need to have a sane check if drm
minor's debugfs root is still available or not, otherwise in case like
device remove through unbinding, drm minor's debugfs directory has
already been removed, then intel_gvt_debugfs_clean() would act upon
dangling pointer like below oops.

i915 0000:00:02.0: Direct firmware load for i915/gvt/vid_0x8086_did_0x1926_rid_0x0a.golden_hw_state failed with error -2
i915 0000:00:02.0: MDEV: Registered
Console: switching to colour dummy device 80x25
i915 0000:00:02.0: MDEV: Unregistering
BUG: kernel NULL pointer dereference, address: 00000000000000a0
PGD 0 P4D 0
Oops: 0002 [#1] PREEMPT SMP PTI
CPU: 2 PID: 2486 Comm: gfx-unbind.sh Tainted: G          I        6.1.0-rc8+ #15
Hardware name: Dell Inc. XPS 13 9350/0JXC1H, BIOS 1.13.0 02/10/2020
RIP: 0010:down_write+0x1f/0x90
Code: 1d ff ff 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 53 48 89 fb e8 62 c0 ff ff bf 01 00 00 00 e8 28 5e 31 ff 31 c0 ba 01 00 00 00 <f0> 48 0f b1 13 75 33 65 48 8b 04 25 c0 bd 01 00 48 89 43 08 bf 01
RSP: 0018:ffff9eb3036ffcc8 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 00000000000000a0 RCX: ffffff8100000000
RDX: 0000000000000001 RSI: 0000000000000064 RDI: ffffffffa48787a8
RBP: ffff9eb3036ffd30 R08: ffffeb1fc45a0608 R09: ffffeb1fc45a05c0
R10: 0000000000000002 R11: 0000000000000000 R12: 0000000000000000
R13: ffff91acc33fa328 R14: ffff91acc033f080 R15: ffff91acced533e0
FS:  00007f6947bba740(0000) GS:ffff91ae36d00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000000000a0 CR3: 00000001133a2002 CR4: 00000000003706e0
Call Trace:
 <TASK>
 simple_recursive_removal+0x9f/0x2a0
 ? start_creating.part.0+0x120/0x120
 ? _raw_spin_lock+0x13/0x40
 debugfs_remove+0x40/0x60
 intel_gvt_debugfs_clean+0x15/0x30 [kvmgt]
 intel_gvt_clean_device+0x49/0xe0 [kvmgt]
 intel_gvt_driver_remove+0x2f/0xb0
 i915_driver_remove+0xa4/0xf0
 i915_pci_remove+0x1a/0x30
 pci_device_remove+0x33/0xa0
 device_release_driver_internal+0x1b2/0x230
 unbind_store+0xe0/0x110
 kernfs_fop_write_iter+0x11b/0x1f0
 vfs_write+0x203/0x3d0
 ksys_write+0x63/0xe0
 do_syscall_64+0x37/0x90
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f6947cb5190
Code: 40 00 48 8b 15 71 9c 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 80 3d 51 24 0e 00 00 74 17 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 48 83 ec 28 48 89
RSP: 002b:00007ffcbac45a28 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 000000000000000d RCX: 00007f6947cb5190
RDX: 000000000000000d RSI: 0000555e35c866a0 RDI: 0000000000000001
RBP: 0000555e35c866a0 R08: 0000000000000002 R09: 0000555e358cb97c
R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000001
R13: 000000000000000d R14: 0000000000000000 R15: 0000555e358cb8e0
 </TASK>
Modules linked in: kvmgt
CR2: 00000000000000a0
---[ end trace 0000000000000000 ]---

Cc: Wang, Zhi <zhi.a.wang@intel.com>
Cc: He, Yu <yu.he@intel.com>
Cc: stable@vger.kernel.org
Reviewed-by: Zhi Wang <zhi.a.wang@intel.com>
Fixes: bc7b0be316ae ("drm/i915/gvt: Add basic debugfs infrastructure")
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20221219140357.769557-1-zhenyuw@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/i915/gvt/debugfs.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/i915/gvt/debugfs.c
+++ b/drivers/gpu/drm/i915/gvt/debugfs.c
@@ -199,6 +199,10 @@ void intel_gvt_debugfs_init(struct intel
  */
 void intel_gvt_debugfs_clean(struct intel_gvt *gvt)
 {
-	debugfs_remove_recursive(gvt->debugfs_root);
-	gvt->debugfs_root = NULL;
+	struct drm_minor *minor = gvt->gt->i915->drm.primary;
+
+	if (minor->debugfs_root) {
+		debugfs_remove_recursive(gvt->debugfs_root);
+		gvt->debugfs_root = NULL;
+	}
 }



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 147/159] drm/i915/gvt: fix vgpu debugfs clean in remove
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (145 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 146/159] drm/i915/gvt: fix gvt debugfs destroy Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 148/159] virtio-blk: use a helper to handle request queuing errors Greg Kroah-Hartman
                   ` (26 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Wang Zhi, He Yu, Alex Williamson,
	Zhenyu Wang

From: Zhenyu Wang <zhenyuw@linux.intel.com>

commit 704f3384f322b40ba24d958473edfb1c9750c8fd upstream.

Check carefully on root debugfs available when destroying vgpu,
e.g in remove case drm minor's debugfs root might already be destroyed,
which led to kernel oops like below.

Console: switching to colour dummy device 80x25
i915 0000:00:02.0: MDEV: Unregistering
intel_vgpu_mdev b1338b2d-a709-4c23-b766-cc436c36cdf0: Removing from iommu group 14
BUG: kernel NULL pointer dereference, address: 0000000000000150
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP
CPU: 3 PID: 1046 Comm: driverctl Not tainted 6.1.0-rc2+ #6
Hardware name: HP HP ProDesk 600 G3 MT/829D, BIOS P02 Ver. 02.44 09/13/2022
RIP: 0010:__lock_acquire+0x5e2/0x1f90
Code: 87 ad 09 00 00 39 05 e1 1e cc 02 0f 82 f1 09 00 00 ba 01 00 00 00 48 83 c4 48 89 d0 5b 5d 41 5c 41 5d 41 5e 41 5f c3 45 31 ff <48> 81 3f 60 9e c2 b6 45 0f 45 f8 83 fe 01 0f 87 55 fa ff ff 89 f0
RSP: 0018:ffff9f770274f948 EFLAGS: 00010046
RAX: 0000000000000003 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000150
RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
R10: ffff8895d1173300 R11: 0000000000000001 R12: 0000000000000000
R13: 0000000000000150 R14: 0000000000000000 R15: 0000000000000000
FS:  00007fc9b2ba0740(0000) GS:ffff889cdfcc0000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000150 CR3: 000000010fd93005 CR4: 00000000003706e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 lock_acquire+0xbf/0x2b0
 ? simple_recursive_removal+0xa5/0x2b0
 ? lock_release+0x13d/0x2d0
 down_write+0x2a/0xd0
 ? simple_recursive_removal+0xa5/0x2b0
 simple_recursive_removal+0xa5/0x2b0
 ? start_creating.part.0+0x110/0x110
 ? _raw_spin_unlock+0x29/0x40
 debugfs_remove+0x40/0x60
 intel_gvt_debugfs_remove_vgpu+0x15/0x30 [kvmgt]
 intel_gvt_destroy_vgpu+0x60/0x100 [kvmgt]
 intel_vgpu_release_dev+0xe/0x20 [kvmgt]
 device_release+0x30/0x80
 kobject_put+0x79/0x1b0
 device_release_driver_internal+0x1b8/0x230
 bus_remove_device+0xec/0x160
 device_del+0x189/0x400
 ? up_write+0x9c/0x1b0
 ? mdev_device_remove_common+0x60/0x60 [mdev]
 mdev_device_remove_common+0x22/0x60 [mdev]
 mdev_device_remove_cb+0x17/0x20 [mdev]
 device_for_each_child+0x56/0x80
 mdev_unregister_parent+0x5a/0x81 [mdev]
 intel_gvt_clean_device+0x2d/0xe0 [kvmgt]
 intel_gvt_driver_remove+0x2e/0xb0 [i915]
 i915_driver_remove+0xac/0x100 [i915]
 i915_pci_remove+0x1a/0x30 [i915]
 pci_device_remove+0x31/0xa0
 device_release_driver_internal+0x1b8/0x230
 unbind_store+0xd8/0x100
 kernfs_fop_write_iter+0x156/0x210
 vfs_write+0x236/0x4a0
 ksys_write+0x61/0xd0
 do_syscall_64+0x55/0x80
 ? find_held_lock+0x2b/0x80
 ? lock_release+0x13d/0x2d0
 ? up_read+0x17/0x20
 ? lock_is_held_type+0xe3/0x140
 ? asm_exc_page_fault+0x22/0x30
 ? lockdep_hardirqs_on+0x7d/0x100
 entry_SYSCALL_64_after_hwframe+0x46/0xb0
RIP: 0033:0x7fc9b2c9e0c4
Code: 15 71 7d 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 80 3d 3d 05 0e 00 00 74 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 48 89 54 24 18 48
RSP: 002b:00007ffec29c81c8 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 000000000000000d RCX: 00007fc9b2c9e0c4
RDX: 000000000000000d RSI: 0000559f8b5f48a0 RDI: 0000000000000001
RBP: 0000559f8b5f48a0 R08: 0000559f8b5f3540 R09: 00007fc9b2d76d30
R10: 0000000000000000 R11: 0000000000000202 R12: 000000000000000d
R13: 00007fc9b2d77780 R14: 000000000000000d R15: 00007fc9b2d72a00
 </TASK>
Modules linked in: sunrpc intel_rapl_msr intel_rapl_common intel_pmc_core_pltdrv intel_pmc_core intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel ee1004 igbvf rapl vfat fat intel_cstate intel_uncore pktcdvd i2c_i801 pcspkr wmi_bmof i2c_smbus acpi_pad vfio_pci vfio_pci_core vfio_virqfd zram fuse dm_multipath kvmgt mdev vfio_iommu_type1 vfio kvm irqbypass i915 nvme e1000e igb nvme_core crct10dif_pclmul crc32_pclmul crc32c_intel polyval_clmulni polyval_generic serio_raw ghash_clmulni_intel sha512_ssse3 dca drm_buddy intel_gtt video wmi drm_display_helper ttm
CR2: 0000000000000150
---[ end trace 0000000000000000 ]---

Cc: Wang Zhi <zhi.a.wang@intel.com>
Cc: He Yu <yu.he@intel.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: stable@vger.kernel.org
Reviewed-by: Zhi Wang <zhi.a.wang@intel.com>
Tested-by: Yu He <yu.he@intel.com>
Fixes: bc7b0be316ae ("drm/i915/gvt: Add basic debugfs infrastructure")
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20221219140357.769557-2-zhenyuw@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/i915/gvt/debugfs.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/i915/gvt/debugfs.c
+++ b/drivers/gpu/drm/i915/gvt/debugfs.c
@@ -175,8 +175,13 @@ void intel_gvt_debugfs_add_vgpu(struct i
  */
 void intel_gvt_debugfs_remove_vgpu(struct intel_vgpu *vgpu)
 {
-	debugfs_remove_recursive(vgpu->debugfs);
-	vgpu->debugfs = NULL;
+	struct intel_gvt *gvt = vgpu->gvt;
+	struct drm_minor *minor = gvt->gt->i915->drm.primary;
+
+	if (minor->debugfs_root && gvt->debugfs_root) {
+		debugfs_remove_recursive(vgpu->debugfs);
+		vgpu->debugfs = NULL;
+	}
 }
 
 /**



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 148/159] virtio-blk: use a helper to handle request queuing errors
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (146 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 147/159] drm/i915/gvt: fix vgpu debugfs clean in remove Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 149/159] virtio_blk: Fix signedness bug in virtblk_prep_rq() Greg Kroah-Hartman
                   ` (25 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dmitry Fomichev, Michael S. Tsirkin,
	Sasha Levin

From: Dmitry Fomichev <dmitry.fomichev@wdc.com>

[ Upstream commit 258896fcc786b4e7db238eba26f6dd080e0ff41e ]

Define a new helper function, virtblk_fail_to_queue(), to
clean up the error handling code in virtio_queue_rq().

Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Message-Id: <20221016034127.330942-2-dmitry.fomichev@wdc.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Stable-dep-of: a26116c1e740 ("virtio_blk: Fix signedness bug in virtblk_prep_rq()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/block/virtio_blk.c | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 19da5defd734..3efe3da5f8c2 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -315,6 +315,19 @@ static void virtio_commit_rqs(struct blk_mq_hw_ctx *hctx)
 		virtqueue_notify(vq->vq);
 }
 
+static blk_status_t virtblk_fail_to_queue(struct request *req, int rc)
+{
+	virtblk_cleanup_cmd(req);
+	switch (rc) {
+	case -ENOSPC:
+		return BLK_STS_DEV_RESOURCE;
+	case -ENOMEM:
+		return BLK_STS_RESOURCE;
+	default:
+		return BLK_STS_IOERR;
+	}
+}
+
 static blk_status_t virtblk_prep_rq(struct blk_mq_hw_ctx *hctx,
 					struct virtio_blk *vblk,
 					struct request *req,
@@ -327,10 +340,8 @@ static blk_status_t virtblk_prep_rq(struct blk_mq_hw_ctx *hctx,
 		return status;
 
 	vbr->sg_table.nents = virtblk_map_data(hctx, req, vbr);
-	if (unlikely(vbr->sg_table.nents < 0)) {
-		virtblk_cleanup_cmd(req);
-		return BLK_STS_RESOURCE;
-	}
+	if (unlikely(vbr->sg_table.nents < 0))
+		return virtblk_fail_to_queue(req, -ENOMEM);
 
 	blk_mq_start_request(req);
 
@@ -364,15 +375,7 @@ static blk_status_t virtio_queue_rq(struct blk_mq_hw_ctx *hctx,
 			blk_mq_stop_hw_queue(hctx);
 		spin_unlock_irqrestore(&vblk->vqs[qid].lock, flags);
 		virtblk_unmap_data(req, vbr);
-		virtblk_cleanup_cmd(req);
-		switch (err) {
-		case -ENOSPC:
-			return BLK_STS_DEV_RESOURCE;
-		case -ENOMEM:
-			return BLK_STS_RESOURCE;
-		default:
-			return BLK_STS_IOERR;
-		}
+		return virtblk_fail_to_queue(req, err);
 	}
 
 	if (bd->last && virtqueue_kick_prepare(vblk->vqs[qid].vq))
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 149/159] virtio_blk: Fix signedness bug in virtblk_prep_rq()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (147 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 148/159] virtio-blk: use a helper to handle request queuing errors Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 150/159] drm/amd/display: Add check for DET fetch latency hiding for dcn32 Greg Kroah-Hartman
                   ` (24 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Rafael Mendonca, Michael S. Tsirkin,
	Stefano Garzarella, Suwan Kim, Stefan Hajnoczi, Jason Wang,
	Sasha Levin

From: Rafael Mendonca <rafaelmendsr@gmail.com>

[ Upstream commit a26116c1e74028914f281851488546c91cbae57d ]

The virtblk_map_data() function returns negative error codes, however, the
'nents' field of vbr->sg_table is an unsigned int, which causes the error
handling not to work correctly.

Cc: stable@vger.kernel.org
Fixes: 0e9911fa768f ("virtio-blk: support mq_ops->queue_rqs()")
Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
Message-Id: <20221021204126.927603-1-rafaelmendsr@gmail.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Suwan Kim <suwan.kim027@gmail.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/block/virtio_blk.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 3efe3da5f8c2..a7697027ce43 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -334,14 +334,16 @@ static blk_status_t virtblk_prep_rq(struct blk_mq_hw_ctx *hctx,
 					struct virtblk_req *vbr)
 {
 	blk_status_t status;
+	int num;
 
 	status = virtblk_setup_cmd(vblk->vdev, req, vbr);
 	if (unlikely(status))
 		return status;
 
-	vbr->sg_table.nents = virtblk_map_data(hctx, req, vbr);
-	if (unlikely(vbr->sg_table.nents < 0))
+	num = virtblk_map_data(hctx, req, vbr);
+	if (unlikely(num < 0))
 		return virtblk_fail_to_queue(req, -ENOMEM);
+	vbr->sg_table.nents = num;
 
 	blk_mq_start_request(req);
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 150/159] drm/amd/display: Add check for DET fetch latency hiding for dcn32
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (148 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 149/159] virtio_blk: Fix signedness bug in virtblk_prep_rq() Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:04 ` [PATCH 6.1 151/159] drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0 Greg Kroah-Hartman
                   ` (23 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Alvin Lee, Jun Lei, Brian Chang,
	Dillon Varone, Daniel Wheeler, Alex Deucher, Sasha Levin

From: Dillon Varone <Dillon.Varone@amd.com>

[ Upstream commit 6d4727c80947de0e6fad58b196a9d215e3b32608 ]

[WHY?]
Some configurations are constructed with very marginal DET buffers relative to
the worst possible time required to fetch a swath.

[HOW?]
Add a check to see that the DET buffer allocated for each pipe can hide the
latency for all pipes to fetch at least one swath.

Reviewed-by: Alvin Lee <Alvin.Lee2@amd.com>
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Brian Chang <Brian.Chang@amd.com>
Signed-off-by: Dillon Varone <Dillon.Varone@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Stable-dep-of: f3c23bea598a ("drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../dc/dml/dcn32/display_mode_vba_32.c        | 39 +++++++++++
 .../dc/dml/dcn32/display_mode_vba_util_32.c   | 69 +++++++++++++++++++
 .../dc/dml/dcn32/display_mode_vba_util_32.h   | 18 +++++
 .../drm/amd/display/dc/dml/display_mode_vba.h |  2 +
 4 files changed, 128 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
index 9afd9ba23fb2..820042f6aaca 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
@@ -670,6 +670,25 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
 		v->cursor_bw[k] = mode_lib->vba.NumberOfCursors[k] * mode_lib->vba.CursorWidth[k][0] * mode_lib->vba.CursorBPP[k][0] / 8 / (mode_lib->vba.HTotal[k] / mode_lib->vba.PixelClock[k]) * mode_lib->vba.VRatio[k];
 	}
 
+	v->NotEnoughDETSwathFillLatencyHiding = dml32_CalculateDETSwathFillLatencyHiding(
+						mode_lib->vba.NumberOfActiveSurfaces,
+						mode_lib->vba.ReturnBW,
+						v->UrgentLatency,
+						mode_lib->vba.SwathHeightY,
+						mode_lib->vba.SwathHeightC,
+						v->swath_width_luma_ub,
+						v->swath_width_chroma_ub,
+						v->BytePerPixelDETY,
+						v->BytePerPixelDETC,
+						mode_lib->vba.DETBufferSizeY,
+						mode_lib->vba.DETBufferSizeC,
+						mode_lib->vba.DPPPerPlane,
+						mode_lib->vba.HTotal,
+						mode_lib->vba.PixelClock,
+						mode_lib->vba.VRatio,
+						mode_lib->vba.VRatioChroma,
+						mode_lib->vba.UsesMALLForPStateChange);
+
 	for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
 		v->MaxVStartupLines[k] = ((mode_lib->vba.Interlace[k] &&
 				!mode_lib->vba.ProgressiveToInterlaceUnitInOPP) ?
@@ -1664,6 +1683,7 @@ static void mode_support_configuration(struct vba_vars_st *v,
 				&& mode_lib->vba.PTEBufferSizeNotExceeded[i][j] == true
 				&& mode_lib->vba.DCCMetaBufferSizeNotExceeded[i][j] == true
 				&& mode_lib->vba.NonsupportedDSCInputBPC == false
+				&& mode_lib->vba.NotEnoughDETSwathFillLatencyHidingPerState[i][j] == false
 				&& !mode_lib->vba.ExceededMALLSize
 				&& ((mode_lib->vba.HostVMEnable == false
 				&& !mode_lib->vba.ImmediateFlipRequiredFinal)
@@ -3158,6 +3178,25 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
 					mode_lib->vba.UrgentBurstFactorChroma,
 					mode_lib->vba.UrgentBurstFactorCursor);
 
+			mode_lib->vba.NotEnoughDETSwathFillLatencyHidingPerState[i][j] = dml32_CalculateDETSwathFillLatencyHiding(
+					mode_lib->vba.NumberOfActiveSurfaces,
+					mode_lib->vba.ReturnBWPerState[i][j],
+					mode_lib->vba.UrgLatency[i],
+					mode_lib->vba.SwathHeightYThisState,
+					mode_lib->vba.SwathHeightCThisState,
+					mode_lib->vba.swath_width_luma_ub_this_state,
+					mode_lib->vba.swath_width_chroma_ub_this_state,
+					mode_lib->vba.BytePerPixelInDETY,
+					mode_lib->vba.BytePerPixelInDETC,
+					mode_lib->vba.DETBufferSizeYThisState,
+					mode_lib->vba.DETBufferSizeCThisState,
+					mode_lib->vba.NoOfDPPThisState,
+					mode_lib->vba.HTotal,
+					mode_lib->vba.PixelClock,
+					mode_lib->vba.VRatio,
+					mode_lib->vba.VRatioChroma,
+					mode_lib->vba.UsesMALLForPStateChange);
+
 			v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.VMDataOnlyReturnBWPerState = dml32_get_return_bw_mbps_vm_only(&mode_lib->vba.soc, i,
 					mode_lib->vba.DCFCLKState[i][j], mode_lib->vba.FabricClockPerState[i],
 					mode_lib->vba.DRAMSpeedPerState[i]);
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
index debe46b24a3e..5af601cff1a0 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
@@ -6228,3 +6228,72 @@ void dml32_CalculateImmediateFlipBandwithSupport(unsigned int NumberOfActiveSurf
 	*ImmediateFlipBandwidthSupport = (*TotalBandwidth <= ReturnBW);
 	*FractionOfUrgentBandwidth = *TotalBandwidth / ReturnBW;
 }
+
+bool dml32_CalculateDETSwathFillLatencyHiding(unsigned int NumberOfActiveSurfaces,
+		double ReturnBW,
+		double UrgentLatency,
+		unsigned int SwathHeightY[],
+		unsigned int SwathHeightC[],
+		unsigned int SwathWidthY[],
+		unsigned int SwathWidthC[],
+		double  BytePerPixelInDETY[],
+		double  BytePerPixelInDETC[],
+		unsigned int    DETBufferSizeY[],
+		unsigned int    DETBufferSizeC[],
+		unsigned int	NumOfDPP[],
+		unsigned int	HTotal[],
+		double	PixelClock[],
+		double	VRatioY[],
+		double	VRatioC[],
+		enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[DC__NUM_DPP__MAX])
+{
+	int k;
+	double SwathSizeAllSurfaces = 0;
+	double SwathSizeAllSurfacesInFetchTimeUs;
+	double DETSwathLatencyHidingUs;
+	double DETSwathLatencyHidingYUs;
+	double DETSwathLatencyHidingCUs;
+	double SwathSizePerSurfaceY[DC__NUM_DPP__MAX];
+	double SwathSizePerSurfaceC[DC__NUM_DPP__MAX];
+	bool NotEnoughDETSwathFillLatencyHiding = false;
+
+	/* calculate sum of single swath size for all pipes in bytes*/
+	for (k = 0; k < NumberOfActiveSurfaces; k++) {
+		SwathSizePerSurfaceY[k] += SwathHeightY[k] * SwathWidthY[k] * BytePerPixelInDETY[k] * NumOfDPP[k];
+
+		if (SwathHeightC[k] != 0)
+			SwathSizePerSurfaceC[k] += SwathHeightC[k] * SwathWidthC[k] * BytePerPixelInDETC[k] * NumOfDPP[k];
+		else
+			SwathSizePerSurfaceC[k] = 0;
+
+		SwathSizeAllSurfaces += SwathSizePerSurfaceY[k] + SwathSizePerSurfaceC[k];
+	}
+
+	SwathSizeAllSurfacesInFetchTimeUs = SwathSizeAllSurfaces / ReturnBW + UrgentLatency;
+
+	/* ensure all DET - 1 swath can hide a fetch for all surfaces */
+	for (k = 0; k < NumberOfActiveSurfaces; k++) {
+		double LineTime = HTotal[k] / PixelClock[k];
+
+		/* only care if surface is not phantom */
+		if (UsesMALLForPStateChange[k] != dm_use_mall_pstate_change_phantom_pipe) {
+			DETSwathLatencyHidingYUs = (dml_floor(DETBufferSizeY[k] / BytePerPixelInDETY[k] / SwathWidthY[k], 1.0) - SwathHeightY[k]) / VRatioY[k] * LineTime;
+
+			if (SwathHeightC[k] != 0) {
+				DETSwathLatencyHidingCUs = (dml_floor(DETBufferSizeC[k] / BytePerPixelInDETC[k] / SwathWidthC[k], 1.0) - SwathHeightC[k]) / VRatioC[k] * LineTime;
+
+				DETSwathLatencyHidingUs = dml_min(DETSwathLatencyHidingYUs, DETSwathLatencyHidingCUs);
+			} else {
+				DETSwathLatencyHidingUs = DETSwathLatencyHidingYUs;
+			}
+
+			/* DET must be able to hide time to fetch 1 swath for each surface */
+			if (DETSwathLatencyHidingUs < SwathSizeAllSurfacesInFetchTimeUs) {
+				NotEnoughDETSwathFillLatencyHiding = true;
+				break;
+			}
+		}
+	}
+
+	return NotEnoughDETSwathFillLatencyHiding;
+}
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h
index 3989c2a28fae..779c6805f599 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h
@@ -1141,4 +1141,22 @@ void dml32_CalculateImmediateFlipBandwithSupport(unsigned int NumberOfActiveSurf
 		double  *FractionOfUrgentBandwidth,
 		bool *ImmediateFlipBandwidthSupport);
 
+bool dml32_CalculateDETSwathFillLatencyHiding(unsigned int NumberOfActiveSurfaces,
+		double ReturnBW,
+		double UrgentLatency,
+		unsigned int SwathHeightY[],
+		unsigned int SwathHeightC[],
+		unsigned int SwathWidthY[],
+		unsigned int SwathWidthC[],
+		double  BytePerPixelInDETY[],
+		double  BytePerPixelInDETC[],
+		unsigned int    DETBufferSizeY[],
+		unsigned int    DETBufferSizeC[],
+		unsigned int	NumOfDPP[],
+		unsigned int	HTotal[],
+		double	PixelClock[],
+		double	VRatioY[],
+		double	VRatioC[],
+		enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[DC__NUM_DPP__MAX]);
+
 #endif
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
index a0207a8f8756..2b34b02dbd45 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
@@ -1041,6 +1041,7 @@ struct vba_vars_st {
 	double MinFullDETBufferingTime;
 	double AverageReadBandwidthGBytePerSecond;
 	bool   FirstMainPlane;
+	bool NotEnoughDETSwathFillLatencyHiding;
 
 	unsigned int ViewportWidthChroma[DC__NUM_DPP__MAX];
 	unsigned int ViewportHeightChroma[DC__NUM_DPP__MAX];
@@ -1224,6 +1225,7 @@ struct vba_vars_st {
 	unsigned int BlockWidthC[DC__NUM_DPP__MAX];
 	unsigned int SubViewportLinesNeededInMALL[DC__NUM_DPP__MAX];
 	bool VActiveBandwithSupport[DC__VOLTAGE_STATES][2];
+	bool NotEnoughDETSwathFillLatencyHidingPerState[DC__VOLTAGE_STATES][2];
 	struct dummy_vars dummy_vars;
 };
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 151/159] drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (149 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 150/159] drm/amd/display: Add check for DET fetch latency hiding for dcn32 Greg Kroah-Hartman
@ 2023-01-10 18:04 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 152/159] btrfs: handle case when repair happens with dev-replace Greg Kroah-Hartman
                   ` (22 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:04 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Aurabindo Pillai, Samson Tam,
	Aric Cyr, Daniel Wheeler, Alex Deucher, Sasha Levin

From: Samson Tam <samson.tam@amd.com>

[ Upstream commit f3c23bea598ab7e8e4b8c5ca66598921310f718e ]

[Why]
SwathSizePerSurfaceY[] and SwathSizePerSurfaceC[] values are uninitialized
 because we are using += instead of = operator.

[How]
Assign values in loop with = operator.

Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Samson Tam <samson.tam@amd.com>
Reviewed-by: Aric Cyr <aric.cyr@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org # 6.0.x, 6.1.x
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
index 5af601cff1a0..b53feeaf5cf1 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
@@ -6257,12 +6257,12 @@ bool dml32_CalculateDETSwathFillLatencyHiding(unsigned int NumberOfActiveSurface
 	double SwathSizePerSurfaceC[DC__NUM_DPP__MAX];
 	bool NotEnoughDETSwathFillLatencyHiding = false;
 
-	/* calculate sum of single swath size for all pipes in bytes*/
+	/* calculate sum of single swath size for all pipes in bytes */
 	for (k = 0; k < NumberOfActiveSurfaces; k++) {
-		SwathSizePerSurfaceY[k] += SwathHeightY[k] * SwathWidthY[k] * BytePerPixelInDETY[k] * NumOfDPP[k];
+		SwathSizePerSurfaceY[k] = SwathHeightY[k] * SwathWidthY[k] * BytePerPixelInDETY[k] * NumOfDPP[k];
 
 		if (SwathHeightC[k] != 0)
-			SwathSizePerSurfaceC[k] += SwathHeightC[k] * SwathWidthC[k] * BytePerPixelInDETC[k] * NumOfDPP[k];
+			SwathSizePerSurfaceC[k] = SwathHeightC[k] * SwathWidthC[k] * BytePerPixelInDETC[k] * NumOfDPP[k];
 		else
 			SwathSizePerSurfaceC[k] = 0;
 
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 152/159] btrfs: handle case when repair happens with dev-replace
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (150 preceding siblings ...)
  2023-01-10 18:04 ` [PATCH 6.1 151/159] drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0 Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 153/159] ksmbd: fix infinite loop in ksmbd_conn_handler_loop() Greg Kroah-Hartman
                   ` (21 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, 小太,
	Qu Wenruo, David Sterba, Sasha Levin

From: Qu Wenruo <wqu@suse.com>

[ Upstream commit d73a27b86fc722c28a26ec64002e3a7dc86d1c07 ]

[BUG]
There is a bug report that a BUG_ON() in btrfs_repair_io_failure()
(originally repair_io_failure() in v6.0 kernel) got triggered when
replacing a unreliable disk:

  BTRFS warning (device sda1): csum failed root 257 ino 2397453 off 39624704 csum 0xb0d18c75 expected csum 0x4dae9c5e mirror 3
  kernel BUG at fs/btrfs/extent_io.c:2380!
  invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
  CPU: 9 PID: 3614331 Comm: kworker/u257:2 Tainted: G           OE      6.0.0-5-amd64 #1  Debian 6.0.10-2
  Hardware name: Micro-Star International Co., Ltd. MS-7C60/TRX40 PRO WIFI (MS-7C60), BIOS 2.70 07/01/2021
  Workqueue: btrfs-endio btrfs_end_bio_work [btrfs]
  RIP: 0010:repair_io_failure+0x24a/0x260 [btrfs]
  Call Trace:
   <TASK>
   clean_io_failure+0x14d/0x180 [btrfs]
   end_bio_extent_readpage+0x412/0x6e0 [btrfs]
   ? __switch_to+0x106/0x420
   process_one_work+0x1c7/0x380
   worker_thread+0x4d/0x380
   ? rescuer_thread+0x3a0/0x3a0
   kthread+0xe9/0x110
   ? kthread_complete_and_exit+0x20/0x20
   ret_from_fork+0x22/0x30

[CAUSE]

Before the BUG_ON(), we got some read errors from the replace target
first, note the mirror number (3, which is beyond RAID1 duplication,
thus it's read from the replace target device).

Then at the BUG_ON() location, we are trying to writeback the repaired
sectors back the failed device.

The check looks like this:

		ret = btrfs_map_block(fs_info, BTRFS_MAP_WRITE, logical,
				      &map_length, &bioc, mirror_num);
		if (ret)
			goto out_counter_dec;
		BUG_ON(mirror_num != bioc->mirror_num);

But inside btrfs_map_block(), we can modify bioc->mirror_num especially
for dev-replace:

	if (dev_replace_is_ongoing && mirror_num == map->num_stripes + 1 &&
	    !need_full_stripe(op) && dev_replace->tgtdev != NULL) {
		ret = get_extra_mirror_from_replace(fs_info, logical, *length,
						    dev_replace->srcdev->devid,
						    &mirror_num,
					    &physical_to_patch_in_first_stripe);
		patch_the_first_stripe_for_dev_replace = 1;
	}

Thus if we're repairing the replace target device, we're going to
trigger that BUG_ON().

But in reality, the read failure from the replace target device may be
that, our replace hasn't reached the range we're reading, thus we're
reading garbage, but with replace running, the range would be properly
filled later.

Thus in that case, we don't need to do anything but let the replace
routine to handle it.

[FIX]
Instead of a BUG_ON(), just skip the repair if we're repairing the
device replace target device.

Reported-by: 小太 <nospam@kota.moe>
Link: https://lore.kernel.org/linux-btrfs/CACsxjPYyJGQZ+yvjzxA1Nn2LuqkYqTCcUH43S=+wXhyf8S00Ag@mail.gmail.com/
CC: stable@vger.kernel.org # 6.0+
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/btrfs/extent_io.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 4dcf22e051ff..acb3c5c3b025 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -580,7 +580,16 @@ static int repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
 				      &map_length, &bioc, mirror_num);
 		if (ret)
 			goto out_counter_dec;
-		BUG_ON(mirror_num != bioc->mirror_num);
+		/*
+		 * This happens when dev-replace is also running, and the
+		 * mirror_num indicates the dev-replace target.
+		 *
+		 * In this case, we don't need to do anything, as the read
+		 * error just means the replace progress hasn't reached our
+		 * read range, and later replace routine would handle it well.
+		 */
+		if (mirror_num != bioc->mirror_num)
+			goto out_counter_dec;
 	}
 
 	sector = bioc->stripes[bioc->mirror_num - 1].physical >> 9;
-- 
2.35.1




^ permalink raw reply related	[flat|nested] 176+ messages in thread

* [PATCH 6.1 153/159] ksmbd: fix infinite loop in ksmbd_conn_handler_loop()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (151 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 152/159] btrfs: handle case when repair happens with dev-replace Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 154/159] ksmbd: send proper error response in smb2_tree_connect() Greg Kroah-Hartman
                   ` (20 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Sergey Senozhatsky, Namjae Jeon,
	Steve French, zdi-disclosures

From: Namjae Jeon <linkinjeon@kernel.org>

commit 83dcedd5540d4ac61376ddff5362f7d9f866a6ec upstream.

If kernel_recvmsg() return -EAGAIN in ksmbd_tcp_readv() and go round
again, It will cause infinite loop issue. And all threads from next
connections would be doing that. This patch add max retry count(2) to
avoid it. kernel_recvmsg() will wait during 7sec timeout and try to
retry two time if -EAGAIN is returned. And add flags of kvmalloc to
__GFP_NOWARN and __GFP_NORETRY to disconnect immediately without
retrying on memory alloation failure.

Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
Cc: stable@vger.kernel.org
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-18259
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/ksmbd/connection.c    |    7 +++++--
 fs/ksmbd/transport_tcp.c |    5 ++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

--- a/fs/ksmbd/connection.c
+++ b/fs/ksmbd/connection.c
@@ -316,9 +316,12 @@ int ksmbd_conn_handler_loop(void *p)
 
 		/* 4 for rfc1002 length field */
 		size = pdu_size + 4;
-		conn->request_buf = kvmalloc(size, GFP_KERNEL);
+		conn->request_buf = kvmalloc(size,
+					     GFP_KERNEL |
+					     __GFP_NOWARN |
+					     __GFP_NORETRY);
 		if (!conn->request_buf)
-			continue;
+			break;
 
 		memcpy(conn->request_buf, hdr_buf, sizeof(hdr_buf));
 		if (!ksmbd_smb_request(conn))
--- a/fs/ksmbd/transport_tcp.c
+++ b/fs/ksmbd/transport_tcp.c
@@ -295,6 +295,7 @@ static int ksmbd_tcp_readv(struct tcp_tr
 	struct msghdr ksmbd_msg;
 	struct kvec *iov;
 	struct ksmbd_conn *conn = KSMBD_TRANS(t)->conn;
+	int max_retry = 2;
 
 	iov = get_conn_iovec(t, nr_segs);
 	if (!iov)
@@ -321,9 +322,11 @@ static int ksmbd_tcp_readv(struct tcp_tr
 		} else if (conn->status == KSMBD_SESS_NEED_RECONNECT) {
 			total_read = -EAGAIN;
 			break;
-		} else if (length == -ERESTARTSYS || length == -EAGAIN) {
+		} else if ((length == -ERESTARTSYS || length == -EAGAIN) &&
+			   max_retry) {
 			usleep_range(1000, 2000);
 			length = 0;
+			max_retry--;
 			continue;
 		} else if (length <= 0) {
 			total_read = -EAGAIN;



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 154/159] ksmbd: send proper error response in smb2_tree_connect()
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (152 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 153/159] ksmbd: fix infinite loop in ksmbd_conn_handler_loop() Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 155/159] ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob Greg Kroah-Hartman
                   ` (19 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Marios Makassikis, Namjae Jeon,
	Steve French

From: Marios Makassikis <mmakassikis@freebox.fr>

commit cdfb2fef522d0c3f9cf293db51de88e9b3d46846 upstream.

Currently, smb2_tree_connect doesn't send an error response packet on
error.

This causes libsmb2 to skip the specific error code and fail with the
following:
 smb2_service failed with : Failed to parse fixed part of command
 payload. Unexpected size of Error reply. Expected 9, got 8

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/ksmbd/smb2pdu.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -1926,13 +1926,13 @@ int smb2_tree_connect(struct ksmbd_work
 	if (conn->posix_ext_supported)
 		status.tree_conn->posix_extensions = true;
 
-out_err1:
 	rsp->StructureSize = cpu_to_le16(16);
+	inc_rfc1001_len(work->response_buf, 16);
+out_err1:
 	rsp->Capabilities = 0;
 	rsp->Reserved = 0;
 	/* default manual caching */
 	rsp->ShareFlags = SMB2_SHAREFLAG_MANUAL_CACHING;
-	inc_rfc1001_len(work->response_buf, 16);
 
 	if (!IS_ERR(treename))
 		kfree(treename);
@@ -1965,6 +1965,9 @@ out_err1:
 		rsp->hdr.Status = STATUS_ACCESS_DENIED;
 	}
 
+	if (status.ret != KSMBD_TREE_CONN_STATUS_OK)
+		smb2_set_err_rsp(work);
+
 	return rc;
 }
 



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 155/159] ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (153 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 154/159] ksmbd: send proper error response in smb2_tree_connect() Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 156/159] drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence Greg Kroah-Hartman
                   ` (18 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, William Liu,
	Hrvoje Mišetić,
	Namjae Jeon, Steve French

From: William Liu <will@willsroot.io>

commit 797805d81baa814f76cf7bdab35f86408a79d707 upstream.

"nt_len - CIFS_ENCPWD_SIZE" is passed directly from
ksmbd_decode_ntlmssp_auth_blob to ksmbd_auth_ntlmv2. Malicious requests
can set nt_len to less than CIFS_ENCPWD_SIZE, which results in a negative
number (or large unsigned value) used for a subsequent memcpy in
ksmbd_auth_ntlvm2 and can cause a panic.

Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3")
Cc: stable@vger.kernel.org
Signed-off-by: William Liu <will@willsroot.io>
Signed-off-by: Hrvoje Mišetić <misetichrvoje@gmail.com>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/ksmbd/auth.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/ksmbd/auth.c
+++ b/fs/ksmbd/auth.c
@@ -322,7 +322,8 @@ int ksmbd_decode_ntlmssp_auth_blob(struc
 	dn_off = le32_to_cpu(authblob->DomainName.BufferOffset);
 	dn_len = le16_to_cpu(authblob->DomainName.Length);
 
-	if (blob_len < (u64)dn_off + dn_len || blob_len < (u64)nt_off + nt_len)
+	if (blob_len < (u64)dn_off + dn_len || blob_len < (u64)nt_off + nt_len ||
+	    nt_len < CIFS_ENCPWD_SIZE)
 		return -EINVAL;
 
 	/* TODO : use domain name that imported from configuration file */



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 156/159] drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (154 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 155/159] ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 157/159] drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index Greg Kroah-Hartman
                   ` (17 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ville Syrjälä,
	Jani Nikula, Rodrigo Vivi

From: Jani Nikula <jani.nikula@intel.com>

commit 963bbdb32b47cfa67a449e715e1dcc525fbd01fc upstream.

Starting from ICL, the default for MIPI GPIO sequences seems to be using
native GPIOs i.e. GPIOs available in the GPU. These native GPIOs reuse
many pins that quite frankly seem scary to poke based on the VBT
sequences. We pretty much have to trust that the board is configured
such that the relevant HPD, PP_CONTROL and GPIO bits aren't used for
anything else.

MIPI sequence v4 also adds a flag to fall back to non-native sequences.

v5:
- Wrap SHOTPLUG_CTL_DDI modification in spin_lock() in icp_irq_handler()
  too (Ville)
- References instead of Closes issue 6131 because this does not fix everything

v4:
- Wrap SHOTPLUG_CTL_DDI modification in spin_lock_irq() (Ville)

v3:
- Fix -Wbitwise-conditional-parentheses (kernel test robot <lkp@intel.com>)

v2:
- Fix HPD pin output set (impacts GPIOs 0 and 5)
- Fix GPIO data output direction set (impacts GPIOs 4 and 9)
- Reduce register accesses to single intel_de_rwm()

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221219105955.4014451-1-jani.nikula@intel.com
(cherry picked from commit f087cfe6fcff58044f7aa3b284965af47f472fb0)
Cc: stable@vger.kernel.org # 6.1
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c |   94 ++++++++++++++++++++++++++-
 drivers/gpu/drm/i915/i915_irq.c              |    3 
 drivers/gpu/drm/i915/i915_reg.h              |    1 
 3 files changed, 95 insertions(+), 3 deletions(-)

--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -41,9 +41,11 @@
 
 #include "i915_drv.h"
 #include "i915_reg.h"
+#include "intel_de.h"
 #include "intel_display_types.h"
 #include "intel_dsi.h"
 #include "intel_dsi_vbt.h"
+#include "intel_gmbus_regs.h"
 #include "vlv_dsi.h"
 #include "vlv_dsi_regs.h"
 #include "vlv_sideband.h"
@@ -377,6 +379,85 @@ static void icl_exec_gpio(struct intel_c
 	drm_dbg_kms(&dev_priv->drm, "Skipping ICL GPIO element execution\n");
 }
 
+enum {
+	MIPI_RESET_1 = 0,
+	MIPI_AVDD_EN_1,
+	MIPI_BKLT_EN_1,
+	MIPI_AVEE_EN_1,
+	MIPI_VIO_EN_1,
+	MIPI_RESET_2,
+	MIPI_AVDD_EN_2,
+	MIPI_BKLT_EN_2,
+	MIPI_AVEE_EN_2,
+	MIPI_VIO_EN_2,
+};
+
+static void icl_native_gpio_set_value(struct drm_i915_private *dev_priv,
+				      int gpio, bool value)
+{
+	int index;
+
+	if (drm_WARN_ON(&dev_priv->drm, DISPLAY_VER(dev_priv) == 11 && gpio >= MIPI_RESET_2))
+		return;
+
+	switch (gpio) {
+	case MIPI_RESET_1:
+	case MIPI_RESET_2:
+		index = gpio == MIPI_RESET_1 ? HPD_PORT_A : HPD_PORT_B;
+
+		/*
+		 * Disable HPD to set the pin to output, and set output
+		 * value. The HPD pin should not be enabled for DSI anyway,
+		 * assuming the board design and VBT are sane, and the pin isn't
+		 * used by a non-DSI encoder.
+		 *
+		 * The locking protects against concurrent SHOTPLUG_CTL_DDI
+		 * modifications in irq setup and handling.
+		 */
+		spin_lock_irq(&dev_priv->irq_lock);
+		intel_de_rmw(dev_priv, SHOTPLUG_CTL_DDI,
+			     SHOTPLUG_CTL_DDI_HPD_ENABLE(index) |
+			     SHOTPLUG_CTL_DDI_HPD_OUTPUT_DATA(index),
+			     value ? SHOTPLUG_CTL_DDI_HPD_OUTPUT_DATA(index) : 0);
+		spin_unlock_irq(&dev_priv->irq_lock);
+		break;
+	case MIPI_AVDD_EN_1:
+	case MIPI_AVDD_EN_2:
+		index = gpio == MIPI_AVDD_EN_1 ? 0 : 1;
+
+		intel_de_rmw(dev_priv, PP_CONTROL(index), PANEL_POWER_ON,
+			     value ? PANEL_POWER_ON : 0);
+		break;
+	case MIPI_BKLT_EN_1:
+	case MIPI_BKLT_EN_2:
+		index = gpio == MIPI_AVDD_EN_1 ? 0 : 1;
+
+		intel_de_rmw(dev_priv, PP_CONTROL(index), EDP_BLC_ENABLE,
+			     value ? EDP_BLC_ENABLE : 0);
+		break;
+	case MIPI_AVEE_EN_1:
+	case MIPI_AVEE_EN_2:
+		index = gpio == MIPI_AVEE_EN_1 ? 1 : 2;
+
+		intel_de_rmw(dev_priv, GPIO(dev_priv, index),
+			     GPIO_CLOCK_VAL_OUT,
+			     GPIO_CLOCK_DIR_MASK | GPIO_CLOCK_DIR_OUT |
+			     GPIO_CLOCK_VAL_MASK | (value ? GPIO_CLOCK_VAL_OUT : 0));
+		break;
+	case MIPI_VIO_EN_1:
+	case MIPI_VIO_EN_2:
+		index = gpio == MIPI_VIO_EN_1 ? 1 : 2;
+
+		intel_de_rmw(dev_priv, GPIO(dev_priv, index),
+			     GPIO_DATA_VAL_OUT,
+			     GPIO_DATA_DIR_MASK | GPIO_DATA_DIR_OUT |
+			     GPIO_DATA_VAL_MASK | (value ? GPIO_DATA_VAL_OUT : 0));
+		break;
+	default:
+		MISSING_CASE(gpio);
+	}
+}
+
 static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
 {
 	struct drm_device *dev = intel_dsi->base.base.dev;
@@ -384,8 +465,7 @@ static const u8 *mipi_exec_gpio(struct i
 	struct intel_connector *connector = intel_dsi->attached_connector;
 	u8 gpio_source, gpio_index = 0, gpio_number;
 	bool value;
-
-	drm_dbg_kms(&dev_priv->drm, "\n");
+	bool native = DISPLAY_VER(dev_priv) >= 11;
 
 	if (connector->panel.vbt.dsi.seq_version >= 3)
 		gpio_index = *data++;
@@ -398,10 +478,18 @@ static const u8 *mipi_exec_gpio(struct i
 	else
 		gpio_source = 0;
 
+	if (connector->panel.vbt.dsi.seq_version >= 4 && *data & BIT(1))
+		native = false;
+
 	/* pull up/down */
 	value = *data++ & 1;
 
-	if (DISPLAY_VER(dev_priv) >= 11)
+	drm_dbg_kms(&dev_priv->drm, "GPIO index %u, number %u, source %u, native %s, set to %s\n",
+		    gpio_index, gpio_number, gpio_source, str_yes_no(native), str_on_off(value));
+
+	if (native)
+		icl_native_gpio_set_value(dev_priv, gpio_number, value);
+	else if (DISPLAY_VER(dev_priv) >= 11)
 		icl_exec_gpio(connector, gpio_source, gpio_index, value);
 	else if (IS_VALLEYVIEW(dev_priv))
 		vlv_exec_gpio(connector, gpio_source, gpio_number, value);
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1981,8 +1981,11 @@ static void icp_irq_handler(struct drm_i
 	if (ddi_hotplug_trigger) {
 		u32 dig_hotplug_reg;
 
+		/* Locking due to DSI native GPIO sequences */
+		spin_lock(&dev_priv->irq_lock);
 		dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, SHOTPLUG_CTL_DDI);
 		intel_uncore_write(&dev_priv->uncore, SHOTPLUG_CTL_DDI, dig_hotplug_reg);
+		spin_unlock(&dev_priv->irq_lock);
 
 		intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
 				   ddi_hotplug_trigger, dig_hotplug_reg,
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6035,6 +6035,7 @@
 
 #define SHOTPLUG_CTL_DDI				_MMIO(0xc4030)
 #define   SHOTPLUG_CTL_DDI_HPD_ENABLE(hpd_pin)			(0x8 << (_HPD_PIN_DDI(hpd_pin) * 4))
+#define   SHOTPLUG_CTL_DDI_HPD_OUTPUT_DATA(hpd_pin)		(0x4 << (_HPD_PIN_DDI(hpd_pin) * 4))
 #define   SHOTPLUG_CTL_DDI_HPD_STATUS_MASK(hpd_pin)		(0x3 << (_HPD_PIN_DDI(hpd_pin) * 4))
 #define   SHOTPLUG_CTL_DDI_HPD_NO_DETECT(hpd_pin)		(0x0 << (_HPD_PIN_DDI(hpd_pin) * 4))
 #define   SHOTPLUG_CTL_DDI_HPD_SHORT_DETECT(hpd_pin)		(0x1 << (_HPD_PIN_DDI(hpd_pin) * 4))



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 157/159] drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (155 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 156/159] drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 158/159] efi: random: combine bootloader provided RNG seed with RNG protocol output Greg Kroah-Hartman
                   ` (16 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Ville Syrjälä,
	Jani Nikula, Rodrigo Vivi

From: Jani Nikula <jani.nikula@intel.com>

commit 6217e9f05a74df48c77ee68993d587cdfdb1feb7 upstream.

Due to copy-paste fail, MIPI_BKLT_EN_1 would always use PPS index 1,
never 0. Fix the sloppiest commit in recent memory.

Fixes: 963bbdb32b47 ("drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence")
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221220140105.313333-1-jani.nikula@intel.com
(cherry picked from commit a561933c571798868b5fa42198427a7e6df56c09)
Cc: stable@vger.kernel.org # 6.1
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -430,7 +430,7 @@ static void icl_native_gpio_set_value(st
 		break;
 	case MIPI_BKLT_EN_1:
 	case MIPI_BKLT_EN_2:
-		index = gpio == MIPI_AVDD_EN_1 ? 0 : 1;
+		index = gpio == MIPI_BKLT_EN_1 ? 0 : 1;
 
 		intel_de_rmw(dev_priv, PP_CONTROL(index), EDP_BLC_ENABLE,
 			     value ? EDP_BLC_ENABLE : 0);



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 158/159] efi: random: combine bootloader provided RNG seed with RNG protocol output
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (156 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 157/159] drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 18:05 ` [PATCH 6.1 159/159] wifi: ath11k: Send PME message during wakeup from D3cold Greg Kroah-Hartman
                   ` (15 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Jason A. Donenfeld, Ard Biesheuvel

From: Ard Biesheuvel <ardb@kernel.org>

commit 196dff2712ca5a2e651977bb2fe6b05474111a83 upstream.

Instead of blindly creating the EFI random seed configuration table if
the RNG protocol is implemented and works, check whether such a EFI
configuration table was provided by an earlier boot stage and if so,
concatenate the existing and the new seeds, leaving it up to the core
code to mix it in and credit it the way it sees fit.

This can be used for, e.g., systemd-boot, to pass an additional seed to
Linux in a way that can be consumed by the kernel very early. In that
case, the following definitions should be used to pass the seed to the
EFI stub:

struct linux_efi_random_seed {
      u32     size; // of the 'seed' array in bytes
      u8      seed[];
};

The memory for the struct must be allocated as EFI_ACPI_RECLAIM_MEMORY
pool memory, and the address of the struct in memory should be installed
as a EFI configuration table using the following GUID:

LINUX_EFI_RANDOM_SEED_TABLE_GUID        1ce1e5bc-7ceb-42f2-81e5-8aadf180f57b

Note that doing so is safe even on kernels that were built without this
patch applied, but the seed will simply be overwritten with a seed
derived from the EFI RNG protocol, if available. The recommended seed
size is 32 bytes, and seeds larger than 512 bytes are considered
corrupted and ignored entirely.

In order to preserve forward secrecy, seeds from previous bootloaders
are memzero'd out, and in order to preserve memory, those older seeds
are also freed from memory. Freeing from memory without first memzeroing
is not safe to do, as it's possible that nothing else will ever
overwrite those pages used by EFI.

Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
[ardb: incorporate Jason's followup changes to extend the maximum seed
       size on the consumer end, memzero() it and drop a needless printk]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/firmware/efi/efi.c             |    4 +--
 drivers/firmware/efi/libstub/efistub.h |    2 +
 drivers/firmware/efi/libstub/random.c  |   42 ++++++++++++++++++++++++++++-----
 include/linux/efi.h                    |    2 -
 4 files changed, 40 insertions(+), 10 deletions(-)

--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -611,7 +611,7 @@ int __init efi_config_parse_tables(const
 
 		seed = early_memremap(efi_rng_seed, sizeof(*seed));
 		if (seed != NULL) {
-			size = min(seed->size, EFI_RANDOM_SEED_SIZE);
+			size = min_t(u32, seed->size, SZ_1K); // sanity check
 			early_memunmap(seed, sizeof(*seed));
 		} else {
 			pr_err("Could not map UEFI random seed!\n");
@@ -620,8 +620,8 @@ int __init efi_config_parse_tables(const
 			seed = early_memremap(efi_rng_seed,
 					      sizeof(*seed) + size);
 			if (seed != NULL) {
-				pr_notice("seeding entropy pool\n");
 				add_bootloader_randomness(seed->bits, size);
+				memzero_explicit(seed->bits, size);
 				early_memunmap(seed, sizeof(*seed) + size);
 			} else {
 				pr_err("Could not map UEFI random seed!\n");
--- a/drivers/firmware/efi/libstub/efistub.h
+++ b/drivers/firmware/efi/libstub/efistub.h
@@ -882,6 +882,8 @@ efi_status_t efi_get_random_bytes(unsign
 efi_status_t efi_random_alloc(unsigned long size, unsigned long align,
 			      unsigned long *addr, unsigned long random_seed);
 
+efi_status_t efi_random_get_seed(void);
+
 efi_status_t check_platform_features(void);
 
 void *get_efi_config_table(efi_guid_t guid);
--- a/drivers/firmware/efi/libstub/random.c
+++ b/drivers/firmware/efi/libstub/random.c
@@ -67,8 +67,9 @@ efi_status_t efi_random_get_seed(void)
 	efi_guid_t rng_proto = EFI_RNG_PROTOCOL_GUID;
 	efi_guid_t rng_algo_raw = EFI_RNG_ALGORITHM_RAW;
 	efi_guid_t rng_table_guid = LINUX_EFI_RANDOM_SEED_TABLE_GUID;
+	struct linux_efi_random_seed *prev_seed, *seed = NULL;
+	int prev_seed_size = 0, seed_size = EFI_RANDOM_SEED_SIZE;
 	efi_rng_protocol_t *rng = NULL;
-	struct linux_efi_random_seed *seed = NULL;
 	efi_status_t status;
 
 	status = efi_bs_call(locate_protocol, &rng_proto, NULL, (void **)&rng);
@@ -76,18 +77,33 @@ efi_status_t efi_random_get_seed(void)
 		return status;
 
 	/*
+	 * Check whether a seed was provided by a prior boot stage. In that
+	 * case, instead of overwriting it, let's create a new buffer that can
+	 * hold both, and concatenate the existing and the new seeds.
+	 * Note that we should read the seed size with caution, in case the
+	 * table got corrupted in memory somehow.
+	 */
+	prev_seed = get_efi_config_table(LINUX_EFI_RANDOM_SEED_TABLE_GUID);
+	if (prev_seed && prev_seed->size <= 512U) {
+		prev_seed_size = prev_seed->size;
+		seed_size += prev_seed_size;
+	}
+
+	/*
 	 * Use EFI_ACPI_RECLAIM_MEMORY here so that it is guaranteed that the
 	 * allocation will survive a kexec reboot (although we refresh the seed
 	 * beforehand)
 	 */
 	status = efi_bs_call(allocate_pool, EFI_ACPI_RECLAIM_MEMORY,
-			     sizeof(*seed) + EFI_RANDOM_SEED_SIZE,
+			     struct_size(seed, bits, seed_size),
 			     (void **)&seed);
-	if (status != EFI_SUCCESS)
-		return status;
+	if (status != EFI_SUCCESS) {
+		efi_warn("Failed to allocate memory for RNG seed.\n");
+		goto err_warn;
+	}
 
 	status = efi_call_proto(rng, get_rng, &rng_algo_raw,
-				 EFI_RANDOM_SEED_SIZE, seed->bits);
+				EFI_RANDOM_SEED_SIZE, seed->bits);
 
 	if (status == EFI_UNSUPPORTED)
 		/*
@@ -100,14 +116,28 @@ efi_status_t efi_random_get_seed(void)
 	if (status != EFI_SUCCESS)
 		goto err_freepool;
 
-	seed->size = EFI_RANDOM_SEED_SIZE;
+	seed->size = seed_size;
+	if (prev_seed_size)
+		memcpy(seed->bits + EFI_RANDOM_SEED_SIZE, prev_seed->bits,
+		       prev_seed_size);
+
 	status = efi_bs_call(install_configuration_table, &rng_table_guid, seed);
 	if (status != EFI_SUCCESS)
 		goto err_freepool;
 
+	if (prev_seed_size) {
+		/* wipe and free the old seed if we managed to install the new one */
+		memzero_explicit(prev_seed->bits, prev_seed_size);
+		efi_bs_call(free_pool, prev_seed);
+	}
 	return EFI_SUCCESS;
 
 err_freepool:
+	memzero_explicit(seed, struct_size(seed, bits, seed_size));
 	efi_bs_call(free_pool, seed);
+	efi_warn("Failed to obtain seed from EFI_RNG_PROTOCOL\n");
+err_warn:
+	if (prev_seed)
+		efi_warn("Retaining bootloader-supplied seed only");
 	return status;
 }
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -1170,8 +1170,6 @@ void efi_check_for_embedded_firmwares(vo
 static inline void efi_check_for_embedded_firmwares(void) { }
 #endif
 
-efi_status_t efi_random_get_seed(void);
-
 #define arch_efi_call_virt(p, f, args...)	((p)->f(args))
 
 /*



^ permalink raw reply	[flat|nested] 176+ messages in thread

* [PATCH 6.1 159/159] wifi: ath11k: Send PME message during wakeup from D3cold
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (157 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 158/159] efi: random: combine bootloader provided RNG seed with RNG protocol output Greg Kroah-Hartman
@ 2023-01-10 18:05 ` Greg Kroah-Hartman
  2023-01-10 19:34 ` [PATCH 6.1 000/159] 6.1.5-rc1 review Holger Hoffstätte
                   ` (14 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-10 18:05 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Baochen Qiang, Kalle Valo,
	Limonciello, Mario

From: Baochen Qiang <quic_bqiang@quicinc.com>

commit 3f9b09ccf7d5f23066b02881a737bee42def9d1a upstream.

We are seeing system stuck on some specific platforms due to
WLAN chip fails to wakeup from D3cold state.

With this flag, firmware will send PME message during wakeup
and this issue is gone.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Cc: "Limonciello, Mario" <Mario.Limonciello@amd.com>
Link: https://lore.kernel.org/r/20221010033237.415478-1-quic_bqiang@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/wireless/ath/ath11k/qmi.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/drivers/net/wireless/ath/ath11k/qmi.c
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
@@ -19,6 +19,7 @@
 #define SLEEP_CLOCK_SELECT_INTERNAL_BIT	0x02
 #define HOST_CSTATE_BIT			0x04
 #define PLATFORM_CAP_PCIE_GLOBAL_RESET	0x08
+#define PLATFORM_CAP_PCIE_PME_D3COLD	0x10
 
 #define FW_BUILD_ID_MASK "QC_IMAGE_VERSION_STRING="
 
@@ -1752,6 +1753,8 @@ static int ath11k_qmi_host_cap_send(stru
 	if (ab->hw_params.global_reset)
 		req.nm_modem |= PLATFORM_CAP_PCIE_GLOBAL_RESET;
 
+	req.nm_modem |= PLATFORM_CAP_PCIE_PME_D3COLD;
+
 	ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi host cap request\n");
 
 	ret = qmi_txn_init(&ab->qmi.handle, &txn,



^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (158 preceding siblings ...)
  2023-01-10 18:05 ` [PATCH 6.1 159/159] wifi: ath11k: Send PME message during wakeup from D3cold Greg Kroah-Hartman
@ 2023-01-10 19:34 ` Holger Hoffstätte
  2023-01-10 19:38 ` Florian Fainelli
                   ` (13 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Holger Hoffstätte @ 2023-01-10 19:34 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable

On 2023-01-10 19:02, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.

No behavioural or dmesg regressions on x64 (server, desktop) or my
AMD Zen2 Thinkpad; humming along just fine.

Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>

Thanks!

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (159 preceding siblings ...)
  2023-01-10 19:34 ` [PATCH 6.1 000/159] 6.1.5-rc1 review Holger Hoffstätte
@ 2023-01-10 19:38 ` Florian Fainelli
  2023-01-11  0:35 ` Shuah Khan
                   ` (12 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Florian Fainelli @ 2023-01-10 19:38 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
	lkft-triage, pavel, jonathanh, sudipm.mukherjee, srw, rwarsow

On 1/10/23 10:02, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h

On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on 
BMIPS_GENERIC:

Tested-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian


^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (160 preceding siblings ...)
  2023-01-10 19:38 ` Florian Fainelli
@ 2023-01-11  0:35 ` Shuah Khan
  2023-01-11  0:59 ` ogasawara takeshi
                   ` (11 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Shuah Khan @ 2023-01-11  0:35 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow, Shuah Khan

On 1/10/23 11:02, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 

Compiled and booted on my test system. No dmesg regressions.

Tested-by: Shuah Khan <skhan@linuxfoundation.org>

thanks,
-- Shuah


^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (161 preceding siblings ...)
  2023-01-11  0:35 ` Shuah Khan
@ 2023-01-11  0:59 ` ogasawara takeshi
  2023-01-11  6:55 ` Naresh Kamboju
                   ` (10 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: ogasawara takeshi @ 2023-01-11  0:59 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

Hi Greg

6.1.5-rc1 tested.

x86_64

build successfully completed
boot successfully completed

Lenovo ThinkPad X1 Nano Gen1(Intel i5-1130G7, arch linux)

Thanks

Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>

===================================
takeshi ogasawara
e-mail:takeshi.ogasawara@futuring-girl.com
Finger Print:666E954A
===================================


2023年1月11日(水) 3:16 Greg Kroah-Hartman <gregkh@linuxfoundation.org>:
>
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
> -------------
> Pseudo-Shortlog of commits:
>
> Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>     Linux 6.1.5-rc1
>
> Baochen Qiang <quic_bqiang@quicinc.com>
>     wifi: ath11k: Send PME message during wakeup from D3cold
>
> Ard Biesheuvel <ardb@kernel.org>
>     efi: random: combine bootloader provided RNG seed with RNG protocol output
>
> Jani Nikula <jani.nikula@intel.com>
>     drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index
>
> Jani Nikula <jani.nikula@intel.com>
>     drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence
>
> William Liu <will@willsroot.io>
>     ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob
>
> Marios Makassikis <mmakassikis@freebox.fr>
>     ksmbd: send proper error response in smb2_tree_connect()
>
> Namjae Jeon <linkinjeon@kernel.org>
>     ksmbd: fix infinite loop in ksmbd_conn_handler_loop()
>
> Qu Wenruo <wqu@suse.com>
>     btrfs: handle case when repair happens with dev-replace
>
> Samson Tam <samson.tam@amd.com>
>     drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0
>
> Dillon Varone <Dillon.Varone@amd.com>
>     drm/amd/display: Add check for DET fetch latency hiding for dcn32
>
> Rafael Mendonca <rafaelmendsr@gmail.com>
>     virtio_blk: Fix signedness bug in virtblk_prep_rq()
>
> Dmitry Fomichev <dmitry.fomichev@wdc.com>
>     virtio-blk: use a helper to handle request queuing errors
>
> Zhenyu Wang <zhenyuw@linux.intel.com>
>     drm/i915/gvt: fix vgpu debugfs clean in remove
>
> Zhenyu Wang <zhenyuw@linux.intel.com>
>     drm/i915/gvt: fix gvt debugfs destroy
>
> Mukul Joshi <mukul.joshi@amd.com>
>     drm/amdkfd: Fix kernel warning during topology setup
>
> Ma Jun <majun@amd.com>
>     drm/plane-helper: Add the missing declaration of drm_atomic_state
>
> Andreas Rammhold <andreas@rammhold.de>
>     of/fdt: run soc memory setup when early_init_dt_scan_memory fails
>
> Björn Töpel <bjorn@rivosinc.com>
>     riscv, kprobes: Stricter c.jr/c.jalr decoding
>
> Ben Dooks <ben-linux@fluff.org>
>     riscv: uaccess: fix type of 0 variable on error in get_user()
>
> Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
>     thermal: int340x: Add missing attribute for data rate base
>
> Cindy Lu <lulu@redhat.com>
>     vhost_vdpa: fix the crash in unmap a large memory
>
> Jason A. Donenfeld <Jason@zx2c4.com>
>     tpm: Allow system suspend to continue when TPM suspend fails
>
> Pavel Begunkov <asml.silence@gmail.com>
>     io_uring: fix CQ waiting timeout handling
>
> Pavel Begunkov <asml.silence@gmail.com>
>     io_uring: pin context while queueing deferred tw
>
> Jens Axboe <axboe@kernel.dk>
>     block: don't allow splitting of a REQ_NOWAIT bio
>
> Christian Marangi <ansuelsmth@gmail.com>
>     net: dsa: tag_qca: fix wrong MGMT_DATA2 size
>
> Christian Marangi <ansuelsmth@gmail.com>
>     net: dsa: qca8k: fix wrong length value for mgmt eth packet
>
> Christian Marangi <ansuelsmth@gmail.com>
>     Revert "net: dsa: qca8k: cache lo and hi for mdio write"
>
> Michel Dänzer <mdaenzer@redhat.com>
>     Revert "drm/amd/display: Enable Freesync Video Mode by default"
>
> Chuang Wang <nashuiliang@gmail.com>
>     bpf: Fix panic due to wrong pageattr of im->image
>
> Paul Menzel <pmenzel@molgen.mpg.de>
>     fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB
>
> Jeff Layton <jlayton@kernel.org>
>     nfsd: fix handling of readdir in v4root vs. mount upcall timeout
>
> Rodrigo Branco <bsdaemon@google.com>
>     x86/bugs: Flush IBP in ib_prctl_set()
>
> Takashi Iwai <tiwai@suse.de>
>     x86/kexec: Fix double-free of elf header buffer
>
> Kai Vehmanen <kai.vehmanen@linux.intel.com>
>     ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed"
>
> Christoph Hellwig <hch@lst.de>
>     nvme: also return I/O command effects from nvme_command_effects
>
> Christoph Hellwig <hch@lst.de>
>     nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
>
> YoungJun.park <her0gyugyu@gmail.com>
>     kunit: alloc_string_stream_fragment error handling bug fix
>
> Jens Axboe <axboe@kernel.dk>
>     io_uring: check for valid register opcode earlier
>
> Mario Limonciello <mario.limonciello@amd.com>
>     ACPI: video: Don't enable fallback path for creating ACPI backlight by default
>
> Mario Limonciello <mario.limonciello@amd.com>
>     drm/amd/display: Report to ACPI video if no panels were found
>
> Mario Limonciello <mario.limonciello@amd.com>
>     ACPI: video: Allow GPU drivers to report no panels
>
> Yanjun Zhang <zhangyanjun@cestc.cn>
>     nvme: fix multipath crash caused by flush request when blktrace is enabled
>
> Jens Axboe <axboe@kernel.dk>
>     io_uring/cancel: re-grab ctx mutex after finishing wait
>
> Philip Yang <Philip.Yang@amd.com>
>     drm/amdkfd: Fix double release compute pasid
>
> Philip Yang <Philip.Yang@amd.com>
>     drm/amdkfd: Fix kfd_process_device_init_vm error handling
>
> Luben Tuikov <luben.tuikov@amd.com>
>     drm/amdgpu: Fix size validation for non-exclusive domains (v4)
>
> YC Hung <yc.hung@mediatek.com>
>     ASoC: SOF: mediatek: initialize panic_info to zero
>
> Hans de Goede <hdegoede@redhat.com>
>     ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
>
> Dominique Martinet <asmadeus@codewreck.org>
>     9p/client: fix data race on req->status
>
> Kai Vehmanen <kai.vehmanen@linux.intel.com>
>     ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown"
>
> Linus Torvalds <torvalds@linux-foundation.org>
>     hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
>
> Arnd Bergmann <arnd@arndb.de>
>     usb: dwc3: xilinx: include linux/gpio/consumer.h
>
> Jan Kara <jack@suse.cz>
>     udf: Fix extension of the last extent in the file
>
> Zhengchao Shao <shaozhengchao@huawei.com>
>     caif: fix memory leak in cfctrl_linkup_request()
>
> Paolo Abeni <pabeni@redhat.com>
>     net/ulp: prevent ULP without clone op from entering the LISTEN status
>
> Caleb Sander <csander@purestorage.com>
>     qed: allow sleep in qed_mcp_trace_dump()
>
> Ming Lei <ming.lei@redhat.com>
>     ublk: honor IO_URING_F_NONBLOCK for handling control command
>
> Zheng Wang <zyytlz.wz@163.com>
>     drm/i915/gvt: fix double free bug in split_2MB_gtt_entry
>
> Dan Carpenter <error27@gmail.com>
>     drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
>
> Namhyung Kim <namhyung@kernel.org>
>     perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode
>
> Namhyung Kim <namhyung@kernel.org>
>     perf stat: Fix handling of unsupported cgroup events when using BPF counters
>
> Thomas Richter <tmricht@linux.ibm.com>
>     perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390
>
> Szymon Heidrich <szymon.heidrich@gmail.com>
>     usb: rndis_host: Secure rndis_query check against int overflow
>
> Geetha sowjanya <gakula@marvell.com>
>     octeontx2-pf: Fix lmtst ID used in aura free
>
> Daniil Tatianin <d-tatianin@yandex-team.ru>
>     drivers/net/bonding/bond_3ad: return when there's no aggregator
>
> Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
>     fs/ntfs3: don't hold ni_lock when calling truncate_setsize()
>
> Philipp Zabel <p.zabel@pengutronix.de>
>     drm/imx: ipuv3-plane: Fix overlay plane width
>
> Miaoqian Lin <linmq006@gmail.com>
>     perf tools: Fix resources leak in perf_data__open_dir()
>
> Xiu Jianfeng <xiujianfeng@huawei.com>
>     drm/virtio: Fix memory leak in virtio_gpu_object_create()
>
> Jozsef Kadlecsik <kadlec@netfilter.org>
>     netfilter: ipset: Rework long task execution when adding/deleting entries
>
> Jozsef Kadlecsik <kadlec@netfilter.org>
>     netfilter: ipset: fix hash:net,port,net hang with /0 subnet
>
> Horatiu Vultur <horatiu.vultur@microchip.com>
>     net: sparx5: Fix reading of the MAC address
>
> Ido Schimmel <idosch@nvidia.com>
>     vxlan: Fix memory leaks in error path
>
> Jamal Hadi Salim <jhs@mojatatu.com>
>     net: sched: cbq: dont intepret cls results when asked to drop
>
> Jamal Hadi Salim <jhs@mojatatu.com>
>     net: sched: atm: dont intepret cls results when asked to drop
>
> Miaoqian Lin <linmq006@gmail.com>
>     gpio: sifive: Fix refcount leak in sifive_gpio_probe
>
> Xiubo Li <xiubli@redhat.com>
>     ceph: switch to vfs_inode_has_locks() to fix file lock bug
>
> Jeff Layton <jlayton@kernel.org>
>     filelock: new helper: vfs_inode_has_locks
>
> Carlo Caione <ccaione@baylibre.com>
>     drm/meson: Reduce the FIFO lines held when AFBC is not used
>
> Po-Hsu Lin <po-hsu.lin@canonical.com>
>     selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier
>
> Po-Hsu Lin <po-hsu.lin@canonical.com>
>     selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier
>
> Maor Gottlieb <maorg@nvidia.com>
>     RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
>
> Shay Drory <shayd@nvidia.com>
>     RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device
>
> Haibo Chen <haibo.chen@nxp.com>
>     gpio: pca953x: avoid to use uninitialized value pinctrl
>
> Miaoqian Lin <linmq006@gmail.com>
>     net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Update NUMA TPH hint register upon NUMA node update
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Set default value for RX interrupt moderation
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Fix rx_copybreak value update
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Use bitmask to indicate packet redirection
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Account for the number of processed bytes in XDP
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Don't register memory info on XDP exchange
>
> David Arinzon <darinzon@amazon.com>
>     net: ena: Fix toeplitz initial hash value
>
> Jiguang Xiao <jiguang.xiao@windriver.com>
>     net: amd-xgbe: add missed tasklet_kill
>
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: refine the handling for VF heartbeat
>
> Kuniyuki Iwashima <kuniyu@amazon.com>
>     tcp: Add TIME_WAIT sockets in bhash2.
>
> Kees Cook <keescook@chromium.org>
>     bpf: Always use maximal size for copy_array()
>
> Eli Cohen <elic@nvidia.com>
>     net/mlx5: Lag, fix failure to cancel delayed bond work
>
> Maor Dickman <maord@nvidia.com>
>     net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option
>
> Adham Faris <afaris@nvidia.com>
>     net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
>
> Chris Mi <cmi@nvidia.com>
>     net/mlx5e: Always clear dest encap in neigh-update-del
>
> Chris Mi <cmi@nvidia.com>
>     net/mlx5e: CT: Fix ct debugfs folder name
>
> Tariq Toukan <tariqt@nvidia.com>
>     net/mlx5e: Fix RX reporter for XSK RQs
>
> Dragos Tatulea <dtatulea@nvidia.com>
>     net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default
>
> Shay Drory <shayd@nvidia.com>
>     net/mlx5: Fix RoCE setting at HCA level
>
> Shay Drory <shayd@nvidia.com>
>     net/mlx5: Avoid recovery in probe flows
>
> Shay Drory <shayd@nvidia.com>
>     net/mlx5: Fix io_eq_size and event_eq_size params validation
>
> Jiri Pirko <jiri@nvidia.com>
>     net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path
>
> Moshe Shemesh <moshe@nvidia.com>
>     net/mlx5: E-Switch, properly handle ingress tagged packets on VST
>
> Jason Wang <jasowang@redhat.com>
>     vdpasim: fix memory leak when freeing IOTLBs
>
> Rong Wang <wangrong68@huawei.com>
>     vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove
>
> Wei Yongjun <weiyongjun1@huawei.com>
>     virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session()
>
> Stefano Garzarella <sgarzare@redhat.com>
>     vdpa_sim: fix vringh initialization in vdpasim_queue_ready()
>
> Stefano Garzarella <sgarzare@redhat.com>
>     vhost-vdpa: fix an iotlb memory leak
>
> Stefano Garzarella <sgarzare@redhat.com>
>     vhost: fix range used in translate_desc()
>
> Stefano Garzarella <sgarzare@redhat.com>
>     vringh: fix range used in iotlb_translate()
>
> Yuan Can <yuancan@huawei.com>
>     vhost/vsock: Fix error handling in vhost_vsock_init()
>
> ruanjinjie <ruanjinjie@huawei.com>
>     vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()
>
> Eli Cohen <elic@nvidia.com>
>     vdpa/mlx5: Fix wrong mac address deletion
>
> Eli Cohen <elic@nvidia.com>
>     vdpa/mlx5: Fix rule forwarding VLAN to TIR
>
> Michael Chan <michael.chan@broadcom.com>
>     bnxt_en: Fix HDS and jumbo thresholds for RX packets
>
> Michael Chan <michael.chan@broadcom.com>
>     bnxt_en: Fix first buffer size calculations for XDP multi-buffer
>
> Michael Chan <michael.chan@broadcom.com>
>     bnxt_en: Fix XDP RX path
>
> Michael Chan <michael.chan@broadcom.com>
>     bnxt_en: Simplify bnxt_xdp_buff_init()
>
> Miaoqian Lin <linmq006@gmail.com>
>     nfc: Fix potential resource leaks
>
> Johnny S. Lee <foss@jsl.io>
>     net: dsa: mv88e6xxx: depend on PTP conditionally
>
> Daniil Tatianin <d-tatianin@yandex-team.ru>
>     qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
>
> Hawkins Jiawei <yin31149@gmail.com>
>     net: sched: fix memory leak in tcindex_set_parms
>
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: fix VF promisc mode not update when mac table full
>
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: fix miss L3E checking for rx packet
>
> Jie Wang <wangjie125@huawei.com>
>     net: hns3: add interrupts re-initialization while doing VF FLR
>
> Jeff Layton <jlayton@kernel.org>
>     nfsd: shut down the NFSv4 state objects before the filecache
>
> Shawn Bohrer <sbohrer@cloudflare.com>
>     veth: Fix race with AF_XDP exposing old or uninitialized descriptors
>
> Horatiu Vultur <horatiu.vultur@microchip.com>
>     net: lan966x: Fix configuration of the PCS
>
> Eric Dumazet <edumazet@google.com>
>     bonding: fix lockdep splat in bond_miimon_commit()
>
> Pablo Neira Ayuso <pablo@netfilter.org>
>     netfilter: nf_tables: honor set timeout and garbage collection updates
>
> Paolo Abeni <pabeni@redhat.com>
>     mptcp: fix lockdep false positive
>
> Paolo Abeni <pabeni@redhat.com>
>     mptcp: fix deadlock in fastopen error path
>
> Ronak Doshi <doshir@vmware.com>
>     vmxnet3: correctly report csum_level for encapsulated packet
>
> Antoine Tenart <atenart@kernel.org>
>     net: vrf: determine the dst using the original ifindex for multicast
>
> Maciej Fijalkowski <maciej.fijalkowski@intel.com>
>     ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf
>
> Pablo Neira Ayuso <pablo@netfilter.org>
>     netfilter: nf_tables: perform type checking for existing sets
>
> Pablo Neira Ayuso <pablo@netfilter.org>
>     netfilter: nf_tables: add function to create set stateful expressions
>
> Pablo Neira Ayuso <pablo@netfilter.org>
>     netfilter: nf_tables: consolidate set description
>
> Steven Price <steven.price@arm.com>
>     drm/panfrost: Fix GEM handle creation ref-counting
>
> Jakub Kicinski <kuba@kernel.org>
>     bpf: pull before calling skb_postpull_rcsum()
>
> Arnd Bergmann <arnd@arndb.de>
>     wifi: ath9k: use proper statements in conditionals
>
> minoura makoto <minoura@valinux.co.jp>
>     SUNRPC: ensure the matching upcall is in-flight upon downcall
>
> Sasha Levin <sashal@kernel.org>
>     btrfs: fix an error handling path in btrfs_defrag_leaves()
>
> Johan Hovold <johan+linaro@kernel.org>
>     phy: qcom-qmp-combo: fix broken power on
>
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
>     perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
>
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
>     perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
>
> Qu Wenruo <wqu@suse.com>
>     btrfs: fix compat_ro checks against remount
>
> Filipe Manana <fdmanana@suse.com>
>     btrfs: fix off-by-one in delalloc search during lseek
>
> Thinh Nguyen <Thinh.Nguyen@synopsys.com>
>     usb: dwc3: gadget: Ignore End Transfer delay on teardown
>
> Shyam Prasad N <sprasad@microsoft.com>
>     cifs: refcount only the selected iface during interface update
>
> Shyam Prasad N <sprasad@microsoft.com>
>     cifs: fix interface count calculation during refresh
>
> Sasha Levin <sashal@kernel.org>
>     btrfs: replace strncpy() with strscpy()
>
> Jens Axboe <axboe@kernel.dk>
>     ARM: renumber bits related to _TIF_WORK_MASK
>
>
> -------------
>
> Diffstat:
>
>  Makefile                                           |   4 +-
>  arch/arm/include/asm/thread_info.h                 |  13 +-
>  arch/mips/ralink/of.c                              |   2 +-
>  arch/riscv/include/asm/uaccess.h                   |   2 +-
>  arch/riscv/kernel/probes/simulate-insn.h           |   4 +-
>  arch/x86/kernel/cpu/bugs.c                         |   2 +
>  arch/x86/kernel/crash.c                            |   4 +-
>  block/blk-merge.c                                  |  10 +
>  drivers/acpi/acpi_video.c                          |  17 +-
>  drivers/block/ublk_drv.c                           |   3 +
>  drivers/block/virtio_blk.c                         |  33 +--
>  drivers/char/tpm/tpm-interface.c                   |   4 +-
>  .../crypto/virtio/virtio_crypto_skcipher_algs.c    |   3 +-
>  drivers/firmware/efi/efi.c                         |   4 +-
>  drivers/firmware/efi/libstub/efistub.h             |   2 +
>  drivers/firmware/efi/libstub/random.c              |  42 +++-
>  drivers/gpio/gpio-pca953x.c                        |   3 +
>  drivers/gpio/gpio-sifive.c                         |   1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h                |   1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h         |   4 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c   |  39 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c            |  27 +++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c         |  19 +-
>  drivers/gpu/drm/amd/amdkfd/kfd_process.c           |  24 +-
>  drivers/gpu/drm/amd/amdkfd/kfd_topology.c          |   2 +-
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  16 +-
>  .../amd/display/dc/dml/dcn32/display_mode_vba_32.c |  39 +++
>  .../dc/dml/dcn32/display_mode_vba_util_32.c        |  69 ++++++
>  .../dc/dml/dcn32/display_mode_vba_util_32.h        |  18 ++
>  .../gpu/drm/amd/display/dc/dml/display_mode_vba.h  |   2 +
>  drivers/gpu/drm/i915/display/intel_dsi_vbt.c       |  94 +++++++-
>  drivers/gpu/drm/i915/gvt/debugfs.c                 |  17 +-
>  drivers/gpu/drm/i915/gvt/gtt.c                     |  17 +-
>  drivers/gpu/drm/i915/gvt/scheduler.c               |   1 +
>  drivers/gpu/drm/i915/i915_irq.c                    |   3 +
>  drivers/gpu/drm/i915/i915_reg.h                    |   1 +
>  drivers/gpu/drm/imx/ipuv3-plane.c                  |  14 +-
>  drivers/gpu/drm/meson/meson_viu.c                  |   5 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c            |  27 ++-
>  drivers/gpu/drm/panfrost/panfrost_gem.c            |  16 +-
>  drivers/gpu/drm/panfrost/panfrost_gem.h            |   5 +-
>  drivers/gpu/drm/virtio/virtgpu_object.c            |   6 +-
>  drivers/infiniband/hw/mlx5/counters.c              |   6 +-
>  drivers/infiniband/hw/mlx5/qp.c                    |  49 ++--
>  drivers/net/bonding/bond_3ad.c                     |   1 +
>  drivers/net/bonding/bond_main.c                    |   8 +-
>  drivers/net/dsa/mv88e6xxx/Kconfig                  |   4 +-
>  drivers/net/dsa/qca/qca8k-8xxx.c                   | 106 ++++-----
>  drivers/net/dsa/qca/qca8k.h                        |   5 -
>  drivers/net/ethernet/amazon/ena/ena_com.c          |  29 +--
>  drivers/net/ethernet/amazon/ena/ena_ethtool.c      |   6 +-
>  drivers/net/ethernet/amazon/ena/ena_netdev.c       |  83 +++++--
>  drivers/net/ethernet/amazon/ena/ena_netdev.h       |  17 +-
>  drivers/net/ethernet/amd/xgbe/xgbe-drv.c           |   3 +
>  drivers/net/ethernet/amd/xgbe/xgbe-i2c.c           |   4 +-
>  drivers/net/ethernet/amd/xgbe/xgbe-mdio.c          |   4 +-
>  drivers/net/ethernet/broadcom/bnxt/bnxt.c          |  22 +-
>  drivers/net/ethernet/broadcom/bnxt/bnxt.h          |  15 +-
>  drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c      |  20 +-
>  drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h      |   6 +-
>  drivers/net/ethernet/hisilicon/hns3/hns3_enet.c    |  10 +-
>  .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c    | 132 +++++++----
>  .../ethernet/hisilicon/hns3/hns3pf/hclge_main.h    |   7 +
>  .../net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c |  71 +++++-
>  .../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c  |   3 +-
>  drivers/net/ethernet/intel/ice/ice_xsk.c           |   2 +-
>  .../ethernet/marvell/octeontx2/nic/otx2_common.c   |  30 ++-
>  drivers/net/ethernet/mellanox/mlx5/core/devlink.c  |   4 +-
>  .../ethernet/mellanox/mlx5/core/en/reporter_rx.c   |   6 +-
>  drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c |   7 +-
>  .../ethernet/mellanox/mlx5/core/en/tc_tun_encap.c  |   9 +-
>  .../ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c |   5 +
>  drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |   2 +-
>  .../mellanox/mlx5/core/esw/acl/egress_lgcy.c       |   7 +-
>  .../mellanox/mlx5/core/esw/acl/ingress_lgcy.c      |  33 ++-
>  drivers/net/ethernet/mellanox/mlx5/core/eswitch.c  |  30 ++-
>  drivers/net/ethernet/mellanox/mlx5/core/eswitch.h  |   6 +
>  drivers/net/ethernet/mellanox/mlx5/core/health.c   |   6 +
>  .../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c  |   4 +
>  drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c  |   1 +
>  drivers/net/ethernet/mellanox/mlx5/core/main.c     |   4 +-
>  .../net/ethernet/microchip/lan966x/lan966x_port.c  |   2 +-
>  .../net/ethernet/microchip/sparx5/sparx5_main.c    |   2 +-
>  drivers/net/ethernet/qlogic/qed/qed_debug.c        |  28 ++-
>  .../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c  |   8 +-
>  drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h    |  10 +-
>  drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |   8 +-
>  drivers/net/phy/xilinx_gmii2rgmii.c                |   1 +
>  drivers/net/usb/rndis_host.c                       |   3 +-
>  drivers/net/veth.c                                 |   5 +-
>  drivers/net/vmxnet3/vmxnet3_drv.c                  |   8 +
>  drivers/net/vrf.c                                  |   6 +-
>  drivers/net/vxlan/vxlan_core.c                     |  19 +-
>  drivers/net/wireless/ath/ath11k/qmi.c              |   3 +
>  drivers/net/wireless/ath/ath9k/htc.h               |  14 +-
>  drivers/nvme/host/core.c                           |  32 ++-
>  drivers/nvme/host/nvme.h                           |   2 +-
>  drivers/nvme/target/admin-cmd.c                    |  35 +--
>  drivers/of/fdt.c                                   |   6 +-
>  drivers/phy/qualcomm/phy-qcom-qmp-combo.c          |  20 +-
>  .../intel/int340x_thermal/processor_thermal_rfim.c |   4 +
>  drivers/usb/dwc3/dwc3-xilinx.c                     |   1 +
>  drivers/usb/dwc3/gadget.c                          |   5 +-
>  drivers/vdpa/mlx5/net/mlx5_vnet.c                  |  10 +-
>  drivers/vdpa/vdpa_sim/vdpa_sim.c                   |   7 +-
>  drivers/vdpa/vdpa_sim/vdpa_sim_blk.c               |   4 +-
>  drivers/vdpa/vdpa_sim/vdpa_sim_net.c               |   4 +-
>  drivers/vdpa/virtio_pci/vp_vdpa.c                  |   2 +-
>  drivers/vhost/vdpa.c                               |  52 ++--
>  drivers/vhost/vhost.c                              |   4 +-
>  drivers/vhost/vringh.c                             |   5 +-
>  drivers/vhost/vsock.c                              |   9 +-
>  drivers/video/fbdev/matrox/matroxfb_base.c         |   4 +-
>  fs/btrfs/disk-io.c                                 |   8 +-
>  fs/btrfs/disk-io.h                                 |   2 +-
>  fs/btrfs/extent-io-tree.c                          |   2 +-
>  fs/btrfs/extent_io.c                               |  11 +-
>  fs/btrfs/file.c                                    |   2 +-
>  fs/btrfs/ioctl.c                                   |   9 +-
>  fs/btrfs/rcu-string.h                              |   6 +-
>  fs/btrfs/super.c                                   |   2 +-
>  fs/btrfs/tree-defrag.c                             |   6 +-
>  fs/ceph/caps.c                                     |   2 +-
>  fs/ceph/locks.c                                    |   4 -
>  fs/ceph/super.h                                    |   1 -
>  fs/cifs/sess.c                                     |   3 +-
>  fs/cifs/smb2ops.c                                  |   3 +-
>  fs/hfs/inode.c                                     |  15 +-
>  fs/ksmbd/auth.c                                    |   3 +-
>  fs/ksmbd/connection.c                              |   7 +-
>  fs/ksmbd/smb2pdu.c                                 |   7 +-
>  fs/ksmbd/transport_tcp.c                           |   5 +-
>  fs/locks.c                                         |  23 ++
>  fs/nfsd/nfs4xdr.c                                  |  11 +
>  fs/nfsd/nfssvc.c                                   |   2 +-
>  fs/ntfs3/file.c                                    |   4 +-
>  fs/udf/inode.c                                     |   2 +-
>  include/acpi/video.h                               |   2 +
>  include/drm/drm_plane_helper.h                     |   1 +
>  include/linux/dsa/tag_qca.h                        |   4 +-
>  include/linux/efi.h                                |   2 -
>  include/linux/fs.h                                 |   6 +
>  include/linux/mlx5/device.h                        |   5 +
>  include/linux/mlx5/mlx5_ifc.h                      |   3 +-
>  include/linux/netfilter/ipset/ip_set.h             |   2 +-
>  include/linux/sunrpc/rpc_pipe_fs.h                 |   5 +
>  include/net/inet_hashtables.h                      |   4 +
>  include/net/inet_timewait_sock.h                   |   5 +
>  include/net/netfilter/nf_tables.h                  |  25 +-
>  io_uring/cancel.c                                  |   9 +-
>  io_uring/io_uring.c                                |  19 +-
>  kernel/bpf/trampoline.c                            |   4 +
>  kernel/bpf/verifier.c                              |  12 +-
>  lib/kunit/string-stream.c                          |   4 +-
>  net/9p/client.c                                    |  15 +-
>  net/9p/trans_fd.c                                  |  12 +-
>  net/9p/trans_rdma.c                                |   4 +-
>  net/9p/trans_virtio.c                              |   9 +-
>  net/9p/trans_xen.c                                 |   4 +-
>  net/caif/cfctrl.c                                  |   6 +-
>  net/core/filter.c                                  |   7 +-
>  net/ipv4/inet_connection_sock.c                    |  40 +++-
>  net/ipv4/inet_hashtables.c                         |   8 +-
>  net/ipv4/inet_timewait_sock.c                      |  31 ++-
>  net/ipv4/tcp_ulp.c                                 |   4 +
>  net/mptcp/protocol.c                               |  20 +-
>  net/mptcp/protocol.h                               |   4 +-
>  net/mptcp/subflow.c                                |  19 +-
>  net/netfilter/ipset/ip_set_core.c                  |   7 +-
>  net/netfilter/ipset/ip_set_hash_ip.c               |  14 +-
>  net/netfilter/ipset/ip_set_hash_ipmark.c           |  13 +-
>  net/netfilter/ipset/ip_set_hash_ipport.c           |  13 +-
>  net/netfilter/ipset/ip_set_hash_ipportip.c         |  13 +-
>  net/netfilter/ipset/ip_set_hash_ipportnet.c        |  13 +-
>  net/netfilter/ipset/ip_set_hash_net.c              |  17 +-
>  net/netfilter/ipset/ip_set_hash_netiface.c         |  15 +-
>  net/netfilter/ipset/ip_set_hash_netnet.c           |  23 +-
>  net/netfilter/ipset/ip_set_hash_netport.c          |  19 +-
>  net/netfilter/ipset/ip_set_hash_netportnet.c       |  40 ++--
>  net/netfilter/nf_tables_api.c                      | 261 ++++++++++++++-------
>  net/nfc/netlink.c                                  |  52 ++--
>  net/sched/cls_tcindex.c                            |  12 +-
>  net/sched/sch_atm.c                                |   5 +-
>  net/sched/sch_cbq.c                                |   4 +-
>  net/sunrpc/auth_gss/auth_gss.c                     |  19 +-
>  sound/soc/intel/boards/bytcr_rt5640.c              |  15 ++
>  sound/soc/sof/core.c                               |   9 -
>  sound/soc/sof/intel/hda-dsp.c                      |  72 ++++++
>  sound/soc/sof/intel/hda.h                          |   1 +
>  sound/soc/sof/intel/tgl.c                          |   2 +-
>  sound/soc/sof/mediatek/mtk-adsp-common.c           |   2 +-
>  tools/perf/builtin-lock.c                          |   2 +
>  tools/perf/util/bpf_counter_cgroup.c               |  14 +-
>  tools/perf/util/cgroup.c                           |  23 +-
>  tools/perf/util/data.c                             |   2 +
>  tools/perf/util/dwarf-aux.c                        |  23 +-
>  .../selftests/net/arp_ndisc_evict_nocarrier.sh     |  15 +-
>  197 files changed, 1988 insertions(+), 876 deletions(-)
>
>

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (162 preceding siblings ...)
  2023-01-11  0:59 ` ogasawara takeshi
@ 2023-01-11  6:55 ` Naresh Kamboju
  2023-01-11 14:18   ` Arnd Bergmann
  2023-01-11 10:58 ` Rudi Heitbaum
                   ` (9 subsequent siblings)
  173 siblings, 1 reply; 176+ messages in thread
From: Naresh Kamboju @ 2023-01-11  6:55 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow, Arnd Bergmann, Mark Brown

[-- Attachment #1: Type: text/plain, Size: 7572 bytes --]

On Tue, 10 Jan 2023 at 23:44, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h

Results from Linaro’s test farm.
Regressions on arm64 FVP.

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>

Following kernel panic and warning notices on FVP 64k page size
enabled gcc-12 build on 6.1 and 6.0 kernel Image while running
LTP mm test cases.

CONFIG_ARM64_64K_PAGES=y

   SError Interrupt on CPU3, code 0x00000000be000000 -- SError
    Kernel panic - not syncing: Asynchronous SError Interrupt
    WARNING: CPU: 3 PID: 685 at kernel/sched/core.c:3113 set_task_cpu

Boot log:
------------
mem.c:346: TINFO: child 1 continues...
mem.c:353: TINFO: child 1 allocates 128 MB filled with 'd' except one
page with 'e'
[  257.654082] SError Interrupt on CPU3, code 0x00000000be000000 -- SError
[  257.654122] CPU: 3 PID: 685 Comm: ksm03 Not tainted 6.1.5-rc1 #1
[  257.654181] Hardware name: FVP Base RevC (DT)
[  257.654205] pstate: 80000000 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  257.654276] pc : 000000000041f758
[  257.654298] lr : 000000000041f8c0
[  257.654319] sp : 0000ffffc9e14cb0
[  257.654341] x29: 0000ffffc9e14cc0 x28: 0000000008000000 x27: 00000000004296c0
[  257.654437] x26: 00000000194fa4b0 x25: 0000000000000064 x24: 0000000008000000
[  257.654530] x23: 0000000008000000 x22: 0000000000429550 x21: 0000000000000000
[  257.654626] x20: 0000ffffc9e14de8 x19: 0000000000000001 x18: 0000000000000000
[  257.654719] x17: 0000ffff93c6a290 x16: 0000000000441340 x15: 0000000000008000
[  257.654815] x14: 0000000000040000 x13: 2e746e65746e6f63 x12: 0000ffff93cd7160
[  257.654913] x11: 0000ffffc9e146b0 x10: 00000000ffffffd8 x9 : 00000000ffffff80
[  257.655009] x8 : 0000000000000040 x7 : 00000000ffffffff x6 : 0000000000000000
[  257.655100] x5 : 0000000000000063 x4 : 0000000000000020 x3 : 0000ffff93dbed60
[  257.655191] x2 : 0000000000000000 x1 : 0000ffff8bb90000 x0 : 00000000068af001
[  257.655293] Kernel panic - not syncing: Asynchronous SError Interrupt
[  257.655319] CPU: 3 PID: 685 Comm: ksm03 Not tainted 6.1.5-rc1 #1
[  257.655379] Hardware name: FVP Base RevC (DT)
[  257.655403] Call trace:
[  257.655419]  dump_backtrace+0xe4/0x140
[  257.655475]  show_stack+0x20/0x30
[  257.655528]  dump_stack_lvl+0x88/0xb4
[  257.655598]  dump_stack+0x18/0x34
[  257.655667]  panic+0x1a0/0x37c
[  257.655729]  add_taint+0x0/0xc0
[  257.655787]  arm64_serror_panic+0x78/0x84
[  257.655853]  do_serror+0x0/0x60
[  257.655911]  do_serror+0x3c/0x60
[  257.655970]  __el0_error_handler_common+0x48/0xc0
[  257.656050]  el0t_64_error_handler+0x10/0x20
[  257.656131]  el0t_64_error+0x18c/0x190
[  257.656191] SMP: stopping secondary CPUs
[  257.656326] Kernel Offset: 0x57c5cb540000 from 0xffff800008000000
[  257.656361] PHYS_OFFSET: 0x80000000
[  257.656383] CPU features: 0x00000,000a1cff,e69e772f
[  257.656414] Memory Limit: none
[  257.945661] ---[ end Kernel panic - not syncing: Asynchronous
SError Interrupt ]---
[  257.945856] ------------[ cut here ]------------
[  257.945873] WARNING: CPU: 3 PID: 685 at kernel/sched/core.c:3113
set_task_cpu+0x170/0x254
[  257.945960] Modules linked in: pl111_drm drm_dma_helper
crct10dif_ce arm_spe_pmu drm_kms_helper panel_simple cfg80211 rfkill
fuse drm
[  257.946182] CPU: 3 PID: 685 Comm: ksm03 Not tainted 6.1.5-rc1 #1
[  257.946243] Hardware name: FVP Base RevC (DT)
[  257.946267] pstate: 424020c9 (nZcv daIF +PAN -UAO +TCO -DIT -SSBS BTYPE=--)
[  257.946338] pc : set_task_cpu+0x170/0x254
[  257.946393] lr : try_to_wake_up+0x1a0/0x63c
[  257.946451] sp : ffff80000806fbe0
[  257.946474] x29: ffff80000806fbe0 x28: ffff00087f7c5680 x27: 0000000000000000
[  257.946572] x26: 0000000000000000 x25: ffffd7c5d609d410 x24: 0000000000000005
[  257.946666] x23: ffff000805633d04 x22: 0000000000000005 x21: ffffd7c5d6098a78
[  257.946762] x20: 0000000000000005 x19: ffff0008056334c0 x18: 0000000000000006
[  257.946858] x17: 75727265746e4920 x16: 726f727245532073 x15: 756f6e6f7268636e
[  257.946960] x14: 797341203a676e69 x13: 2d2d2d5d20747075 x12: 727265746e492072
[  257.947061] x11: 6f72724553207375 x10: ffffd7c5d6114d18 x9 : ffffd7c5d3617154
[  257.947161] x8 : ffffd7c5d574b000 x7 : ffff2842aa100000 x6 : 0000000000000003
[  257.947257] x5 : ffffd7c5d609d000 x4 : 0000000000000005 x3 : 00000000000000ff
[  257.947350] x2 : 0000000000000000 x1 : 0000000000000005 x0 : 0000000000000000
[  257.947440] Call trace:
[  257.947452]  set_task_cpu+0x170/0x254
[  257.947514]  try_to_wake_up+0x1a0/0x63c
[  257.947575]  default_wake_function+0x24/0x50
[  257.947639]  autoremove_wake_function+0x20/0x50
[  257.947734]  __wake_up_common+0x90/0x190
[  257.947815]  __wake_up_common_lock+0x80/0xd0
[  257.947903]  __wake_up+0x20/0x30
[  257.947981]  wake_up_klogd_work_func+0xac/0xc0
[  257.948059]  irq_work_single+0x7c/0xbc
[  257.948139]  irq_work_run_list+0x4c/0x70
[  257.948221]  irq_work_tick+0x28/0x6c
[  257.948299]  update_process_times+0xa4/0xc0
[  257.948394]  tick_sched_handle+0x3c/0x60
[  257.948465]  tick_sched_timer+0x54/0xac
[  257.948535]  __hrtimer_run_queues+0x2e4/0x380
[  257.948632]  hrtimer_interrupt+0xf0/0x250
[  257.948729]  arch_timer_handler_phys+0x34/0x50
[  257.948807]  handle_percpu_devid_irq+0x90/0x230
[  257.948873]  generic_handle_domain_irq+0x34/0x50
[  257.948962]  gic_handle_irq+0x58/0x140
[  257.949015]  call_on_irq_stack+0x2c/0x54
[  257.949088]  do_interrupt_handler+0x88/0x94
[  257.949172]  el1_interrupt+0x34/0x70
[  257.949245]  el1h_64_irq_handler+0x18/0x2c
[  257.949324]  el1h_64_irq+0x64/0x68
[  257.949380]  panic+0x324/0x37c
[  257.949444]  add_taint+0x0/0xc0
[  257.949505]  arm64_serror_panic+0x78/0x84
[  257.949566]  do_serror+0x0/0x60
[  257.949625]  do_serror+0x3c/0x60
[  257.949684]  __el0_error_handler_common+0x48/0xc0
[  257.949764]  el0t_64_error_handler+0x10/0x20
[  257.949845]  el0t_64_error+0x18c/0x190
[  257.949904] ---[ end trace 0000000000000000 ]---

https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.1.y/build/v6.1.4-160-g06bcfb15cd3b/testrun/14089643/suite/log-parser-test/tests/
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.0.y/build/v6.0.18-149-ga7ffaeeaf9bb/testrun/14090240/suite/log-parser-test/test/check-kernel-warning-de62c77a22d6287fbc68ad7f081dfc8e3020755f775d8857e304afa254d2322a/log

Kconfig:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2K9Is9mmM4gPI7HP7LIle0gAdm7/config

vmlinux:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2K9JI1PZ8qBcVmNXpYWvL8wgPTm/vmlinux.xz

System.map:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2K9JI1PZ8qBcVmNXpYWvL8wgPTm/System.map

Image:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2K9JI1PZ8qBcVmNXpYWvL8wgPTm/Image.gz


--
Linaro LKFT
https://lkft.linaro.org

[-- Attachment #2: fvp-kernel-panic-stable-rc-6.1.txt --]
[-- Type: text/plain, Size: 66190 bytes --]

EFI stub: Booting Linux Kernel...
EFI stub: EFI_RNG_PROTOCOL unavailable
EFI stub: Using DTB from command line
EFI stub: Exiting boot services...
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd0f0]
[    0.000000] Linux version 6.1.5-rc1 (tuxmake@tuxmake) (aarch64-linux-gnu-gcc (Debian 12.2.0-9) 12.2.0, GNU ld (GNU Binutils for Debian) 2.39) #1 SMP PREEMPT @1673381434
[    0.000000] Machine model: FVP Base RevC
[    0.000000] earlycon: pl11 at MMIO 0x000000001c090000 (options '')
[    0.000000] printk: bootconsole [pl11] enabled
[    0.000000] efi: EFI v2.70 by EDK II
[    0.000000] efi: ACPI 2.0=0xf5e30018 MEMATTR=0xfadaf018 MEMRESERVE=0xf5f8bf18 
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000018000000, size 8 MiB
[    0.000000] OF: reserved mem: initialized node vram@18000000, compatible id shared-dma-pool
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000080000000-0x00000008ffffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x8fff220c0-0x8fff24abf]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x00000008ffffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x00000000f59effff]
[    0.000000]   node   0: [mem 0x00000000f59f0000-0x00000000f5a5ffff]
[    0.000000]   node   0: [mem 0x00000000f5a60000-0x00000000f5b4ffff]
[    0.000000]   node   0: [mem 0x00000000f5b50000-0x00000000f5e2ffff]
[    0.000000]   node   0: [mem 0x00000000f5e30000-0x00000000f5e3ffff]
[    0.000000]   node   0: [mem 0x00000000f5e40000-0x00000000f5f7ffff]
[    0.000000]   node   0: [mem 0x00000000f5f80000-0x00000000faf4ffff]
[    0.000000]   node   0: [mem 0x00000000faf50000-0x00000000faf8ffff]
[    0.000000]   node   0: [mem 0x00000000faf90000-0x00000000faf9ffff]
[    0.000000]   node   0: [mem 0x00000000fafa0000-0x00000000fafeffff]
[    0.000000]   node   0: [mem 0x00000000faff0000-0x00000000feffffff]
[    0.000000]   node   0: [mem 0x0000000880000000-0x00000008ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000008ffffffff]
[    0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[    0.000000] cma: Reserved 512 MiB at 0x00000000c0000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 10 pages/cpu s574568 r8192 d72600 u655360
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: Address authentication (IMP DEF algorithm)
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: detected: Virtualization Host Extensions
[    0.000000] CPU features: detected: Hardware dirty bit management
[    0.000000] CPU features: detected: Memory Tagging Extension
[    0.000000] CPU features: detected: Asymmetric MTE Tag Check Fault
[    0.000000] CPU features: detected: Spectre-BHB
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Fallback order for Node 0: 0 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 65216
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: Image dtb=fvp-base-revc.dtb console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=dhcp
[    0.000000] Unknown kernel command line parameters \"Image dtb=fvp-base-revc.dtb\", will be passed to user space.
[    0.000000] random: crng init done
[    0.000000] Dentry cache hash table entries: 524288 (order: 6, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 5, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] software IO TLB: area num 8.
[    0.000000] software IO TLB: mapped [mem 0x00000000fb000000-0x00000000ff000000] (64MB)
[    0.000000] Memory: 3481472K/4177920K available (20096K kernel code, 5458K rwdata, 11072K rodata, 12416K init, 1571K bss, 172160K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] ftrace: allocating 66065 entries in 17 pages
[    0.000000] ftrace: allocated 17 pages with 2 groups
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=8.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 224 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x000000002f100000
[    0.000000] ITS [mem 0x2f020000-0x2f03ffff]
[    0.000000] ITS@0x000000002f020000: allocated 8192 Devices @880380000 (indirect, esz 8, psz 64K, shr 1)
[    0.000000] ITS@0x000000002f020000: allocated 8192 Virtual CPUs @880390000 (indirect, esz 8, psz 64K, shr 1)
[    0.000000] ITS@0x000000002f020000: allocated 8192 Interrupt Collections @8803a0000 (flat, esz 8, psz 64K, shr 1)
[    0.000000] GICv3: using LPI property table @0x00000008803b0000
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x00000008803d0000
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] timer_sp804: timer clock not found: -517
[    0.000000] timer_sp804: arm,sp804 clock not found: -2
[    0.000000] Failed to initialize '/bus@8000000/motherboard-bus@8000000/iofpga-bus@300000000/timer@110000': -22
[    0.000000] timer_sp804: timer clock not found: -517
[    0.000000] timer_sp804: arm,sp804 clock not found: -2
[    0.000000] Failed to initialize '/bus@8000000/motherboard-bus@8000000/iofpga-bus@300000000/timer@120000': -22
[    0.000000] arch_timer: cp15 timer(s) running at 100.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0x1ffffffffffffff max_cycles: 0x171024e7e0, max_idle_ns: 440795205315 ns
[    0.000003] sched_clock: 57 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
[    0.001503] kfence: initialized - using 33554432 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.002748] Console: colour dummy device 80x25
[    0.003735] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=400000)
[    0.003982] pid_max: default: 32768 minimum: 301
[    0.004833] LSM: Security Framework initializing
[    0.005532] Mount-cache hash table entries: 8192 (order: 0, 65536 bytes, linear)
[    0.005728] Mountpoint-cache hash table entries: 8192 (order: 0, 65536 bytes, linear)
[    0.013998] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.028721] cblist_init_generic: Setting adjustable number of callback queues.
[    0.028838] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.029938] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.031186] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.033853] rcu: Hierarchical SRCU implementation.
[    0.033982] rcu: 	Max phase no-delay instances is 1000.
[    0.046180] Platform MSI: msi-controller@2f020000 domain created
[    0.047156] PCI/MSI: /interrupt-controller@2f000000/msi-controller@2f020000 domain created
[    0.048340] fsl-mc MSI: msi-controller@2f020000 domain created
[    0.056223] Remapping and enabling EFI services.
[    0.062279] smp: Bringing up secondary CPUs ...
[    0.069599] Detected PIPT I-cache on CPU1
[    0.069911] cacheinfo: Unable to detect cache hierarchy for CPU 1
[    0.069951] GICv3: CPU1: found redistributor 100 region 0:0x000000002f120000
[    0.070007] GICv3: CPU1: using allocated LPI pending table @0x00000008803e0000
[    0.070115] CPU1: Booted secondary processor 0x0000000100 [0x410fd0f0]
[    0.078631] Detected PIPT I-cache on CPU2
[    0.078963] cacheinfo: Unable to detect cache hierarchy for CPU 2
[    0.079003] GICv3: CPU2: found redistributor 200 region 0:0x000000002f140000
[    0.079061] GICv3: CPU2: using allocated LPI pending table @0x00000008803f0000
[    0.079169] CPU2: Booted secondary processor 0x0000000200 [0x410fd0f0]
[    0.087806] Detected PIPT I-cache on CPU3
[    0.088146] cacheinfo: Unable to detect cache hierarchy for CPU 3
[    0.088199] GICv3: CPU3: found redistributor 300 region 0:0x000000002f160000
[    0.088257] GICv3: CPU3: using allocated LPI pending table @0x0000000880400000
[    0.088364] CPU3: Booted secondary processor 0x0000000300 [0x410fd0f0]
[    0.096621] Detected PIPT I-cache on CPU4
[    0.096990] cacheinfo: Unable to detect cache hierarchy for CPU 4
[    0.097034] GICv3: CPU4: found redistributor 10000 region 0:0x000000002f180000
[    0.097093] GICv3: CPU4: using allocated LPI pending table @0x0000000880410000
[    0.097201] CPU4: Booted secondary processor 0x0000010000 [0x410fd0f0]
[    0.105784] Detected PIPT I-cache on CPU5
[    0.106172] cacheinfo: Unable to detect cache hierarchy for CPU 5
[    0.106218] GICv3: CPU5: found redistributor 10100 region 0:0x000000002f1a0000
[    0.106274] GICv3: CPU5: using allocated LPI pending table @0x0000000880420000
[    0.106384] CPU5: Booted secondary processor 0x0000010100 [0x410fd0f0]
[    0.114878] Detected PIPT I-cache on CPU6
[    0.115276] cacheinfo: Unable to detect cache hierarchy for CPU 6
[    0.115331] GICv3: CPU6: found redistributor 10200 region 0:0x000000002f1c0000
[    0.115391] GICv3: CPU6: using allocated LPI pending table @0x0000000880430000
[    0.115498] CPU6: Booted secondary processor 0x0000010200 [0x410fd0f0]
[    0.124047] Detected PIPT I-cache on CPU7
[    0.124459] cacheinfo: Unable to detect cache hierarchy for CPU 7
[    0.124522] GICv3: CPU7: found redistributor 10300 region 0:0x000000002f1e0000
[    0.124582] GICv3: CPU7: using allocated LPI pending table @0x0000000880440000
[    0.124689] CPU7: Booted secondary processor 0x0000010300 [0x410fd0f0]
[    0.126408] smp: Brought up 1 node, 8 CPUs
[    0.128698] SMP: Total of 8 processors activated.
[    0.128834] CPU features: detected: Branch Target Identification
[    0.128977] CPU features: detected: 32-bit EL0 Support
[    0.129111] CPU features: detected: ARMv8.4 Translation Table Level
[    0.129256] CPU features: detected: Data cache clean to the PoU not required for I/D coherence
[    0.129417] CPU features: detected: Common not Private translations
[    0.129563] CPU features: detected: CRC32 instructions
[    0.130692] CPU features: detected: E0PD
[    0.130822] CPU features: detected: Enhanced Counter Virtualization
[    0.130967] CPU features: detected: Enhanced Privileged Access Never
[    0.131122] CPU features: detected: Generic authentication (IMP DEF algorithm)
[    0.131274] CPU features: detected: RCpc load-acquire (LDAPR)
[    0.131415] CPU features: detected: LSE atomic instructions
[    0.131556] CPU features: detected: Privileged Access Never
[    0.131697] CPU features: detected: RAS Extension Support
[    0.131836] CPU features: detected: Random Number Generator
[    0.131976] CPU features: detected: Speculation barrier (SB)
[    0.132118] CPU features: detected: Stage-2 Force Write-Back
[    0.132259] CPU features: detected: Trap EL0 IMPLEMENTATION DEFINED functionality
[    0.132413] CPU features: detected: TLB range maintenance instructions
[    0.132559] CPU features: detected: WFx with timeout
[    0.132696] CPU features: detected: Scalable Matrix Extension
[    0.132842] CPU features: detected: Scalable Vector Extension
[    0.133479] CPU features: detected CPU1: Activity Monitors Unit (AMU)
[    0.133479] CPU features: detected CPU5: Activity Monitors Unit (AMU)
[    0.133479] CPU features: detected CPU6: Activity Monitors Unit (AMU)
[    0.133480] CPU features: detected CPU4: Activity Monitors Unit (AMU)
[    0.133480] CPU features: detected CPU3: Activity Monitors Unit (AMU)
[    0.133480] CPU features: detected CPU2: Activity Monitors Unit (AMU)
[    0.133480] CPU features: detected CPU0: Activity Monitors Unit (AMU)
[    0.133480] CPU features: detected CPU7: Activity Monitors Unit (AMU)
[    0.134375] SVE: maximum available vector length 64 bytes per vector
[    0.134524] SVE: default vector length 64 bytes per vector
[    0.134732] SME: minimum available vector length 16 bytes per vector
[    0.134874] SME: maximum available vector length 64 bytes per vector
[    0.135019] SME: default vector length 32 bytes per vector
[    0.135160] CPU: All CPU(s) started at EL2
[    0.135285] alternatives: applying system-wide alternatives
[    0.178581] devtmpfs: initialized
[    0.213281] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.213546] futex hash table entries: 2048 (order: 1, 131072 bytes, linear)
[    0.221349] pinctrl core: initialized pinctrl subsystem
[    0.237878] DMI not present or invalid.
[    0.243351] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.493546] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.496267] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.497765] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.498419] audit: initializing netlink subsys (disabled)
[    0.500423] audit: type=2000 audit(0.460:1): state=initialized audit_enabled=0 res=1
[    0.508870] thermal_sys: Registered thermal governor 'step_wise'
[    0.508939] thermal_sys: Registered thermal governor 'power_allocator'
[    0.509801] cpuidle: using governor menu
[    0.511968] hw-breakpoint: found 16 breakpoint and 16 watchpoint registers.
[    0.514125] ASID allocator initialised with 65536 entries
[    0.534035] Serial: AMBA PL011 UART driver
[    0.736844] 1c090000.serial: ttyAMA0 at MMIO 0x1c090000 (irq = 16, base_baud = 0) is a PL011 rev2
[    0.737154] printk: console [ttyAMA0] enabled
[    0.737154] printk: console [ttyAMA0] enabled
[    0.737359] printk: bootconsole [pl11] disabled
[    0.737359] printk: bootconsole [pl11] disabled
[    0.752537] 1c0a0000.serial: ttyAMA1 at MMIO 0x1c0a0000 (irq = 17, base_baud = 0) is a PL011 rev2
[    0.767418] 1c0b0000.serial: ttyAMA2 at MMIO 0x1c0b0000 (irq = 18, base_baud = 0) is a PL011 rev2
[    0.782555] 1c0c0000.serial: ttyAMA3 at MMIO 0x1c0c0000 (irq = 19, base_baud = 0) is a PL011 rev2
[    0.928904] platform panel: Fixing up cyclic dependency with 1c1f0000.clcd
[    0.951529] KASLR enabled
[    1.089824] HugeTLB: registered 16.0 GiB page size, pre-allocated 0 pages
[    1.089987] HugeTLB: 16320 KiB vmemmap can be freed for a 16.0 GiB page
[    1.090158] HugeTLB: registered 512 MiB page size, pre-allocated 0 pages
[    1.090320] HugeTLB: 448 KiB vmemmap can be freed for a 512 MiB page
[    1.090493] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    1.090656] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    1.103721] cryptd: max_cpu_qlen set to 1000
[    1.122956] ACPI: Interpreter disabled.
[    1.161700] iommu: Default domain type: Translated 
[    1.161848] iommu: DMA domain TLB invalidation policy: strict mode 
[    1.164436] SCSI subsystem initialized
[    1.168584] usbcore: registered new interface driver usbfs
[    1.169107] usbcore: registered new interface driver hub
[    1.169924] usbcore: registered new device driver usb
[    1.181341] mc: Linux media interface: v0.10
[    1.181663] videodev: Linux video capture interface: v2.00
[    1.182031] pps_core: LinuxPPS API ver. 1 registered
[    1.182176] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.182424] PTP clock support registered
[    1.184233] EDAC MC: Ver: 3.0.0
[    1.196616] Registered efivars operations
[    1.212509] FPGA manager framework
[    1.213343] Advanced Linux Sound Architecture Driver Initialized.
[    1.221704] vgaarb: loaded
[    1.228147] clocksource: Switched to clocksource arch_sys_counter
[   11.493713] VFS: Disk quotas dquot_6.6.0
[   11.494681] VFS: Dquot-cache hash table entries: 8192 (order 0, 65536 bytes)
[   11.497772] pnp: PnP ACPI: disabled
[   11.572548] NET: Registered PF_INET protocol family
[   11.573589] IP idents hash table entries: 65536 (order: 3, 524288 bytes, linear)
[   11.631281] tcp_listen_portaddr_hash hash table entries: 4096 (order: 0, 65536 bytes, linear)
[   11.632782] Table-perturb hash table entries: 65536 (order: 2, 262144 bytes, linear)
[   11.633031] TCP established hash table entries: 32768 (order: 2, 262144 bytes, linear)
[   11.635895] TCP bind hash table entries: 32768 (order: 4, 1048576 bytes, linear)
[   11.641494] TCP: Hash tables configured (established 32768 bind 32768)
[   11.643141] MPTCP token hash table entries: 4096 (order: 0, 98304 bytes, linear)
[   11.644132] UDP hash table entries: 2048 (order: 0, 65536 bytes, linear)
[   11.644888] UDP-Lite hash table entries: 2048 (order: 0, 65536 bytes, linear)
[   11.646828] NET: Registered PF_UNIX/PF_LOCAL protocol family
[   11.650493] RPC: Registered named UNIX socket transport module.
[   11.650651] RPC: Registered udp transport module.
[   11.650801] RPC: Registered tcp transport module.
[   11.650950] RPC: Registered tcp NFSv4.1 backchannel transport module.
[   11.651158] PCI: CLS 0 bytes, default 64
[   11.663560] hw perfevents: enabled with armv8_pmuv3 PMU driver, 9 counters available
[   11.665617] kvm [1]: IPA Size Limit: 48 bits
[   11.665854] [Firmware Bug]: CPU interface incapable of MMIO access
[   11.665998] kvm [1]: disabling GICv2 emulation
[   11.666373] kvm [1]: GIC system register CPU interface enabled
[   11.668852] kvm [1]: vgic interrupt IRQ9
[   11.671600] kvm [1]: VHE mode initialized successfully
[   11.689669] Initialise system trusted keyrings
[   11.691194] workingset: timestamp_bits=42 max_order=16 bucket_order=0
[   11.799839] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[   11.806970] NFS: Registering the id_resolver key type
[   11.807214] Key type id_resolver registered
[   11.807342] Key type id_legacy registered
[   11.808390] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[   11.808560] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[   11.809821] 9p: Installing v9fs 9p2000 file system support
[   12.172427] NET: Registered PF_ALG protocol family
[   12.172601] Key type asymmetric registered
[   12.172746] Asymmetric key parser 'x509' registered
[   12.173251] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[   12.173427] io scheduler mq-deadline registered
[   12.173581] io scheduler kyber registered
[   12.390227] pci-host-generic 40000000.pci: host bridge /pci@40000000 ranges:
[   12.390865] pci-host-generic 40000000.pci:      MEM 0x0050000000..0x005fffffff -> 0x0050000000
[   12.391875] pci-host-generic 40000000.pci: ECAM at [mem 0x40000000-0x4fffffff] for [bus 00-01]
[   12.393278] pci-host-generic 40000000.pci: PCI host bridge to bus 0000:00
[   12.393470] pci_bus 0000:00: root bus resource [bus 00-01]
[   12.393655] pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
[   12.394270] pci 0000:00:00.0: [1af4:1001] type 00 class 0x018000
[   12.394754] pci 0000:00:00.0: reg 0x10: [mem 0x5000f000-0x5000ffff]
[   12.395202] pci 0000:00:00.0: reg 0x18: [mem 0x5000e000-0x5000efff]
[   12.395667] pci 0000:00:00.0: reg 0x20: [mem 0x5000d000-0x5000dfff]
[   12.396285] pci 0000:00:00.0: enabling Extended Tags
[   12.397843] pci 0000:00:00.0: PME# supported from D3hot
[   12.401186] pci 0000:00:02.0: [1af4:1001] type 00 class 0x018000
[   12.401669] pci 0000:00:02.0: reg 0x10: [mem 0x5000c000-0x5000cfff]
[   12.402126] pci 0000:00:02.0: reg 0x18: [mem 0x5000b000-0x5000bfff]
[   12.402582] pci 0000:00:02.0: reg 0x20: [mem 0x5000a000-0x5000afff]
[   12.403143] pci 0000:00:02.0: enabling Extended Tags
[   12.404756] pci 0000:00:02.0: PME# supported from D3hot
[   12.407793] pci 0000:00:03.0: [0abc:aced] type 00 class 0x010601
[   12.408333] pci 0000:00:03.0: reg 0x10: [mem 0x50006000-0x50007fff]
[   12.408661] pci 0000:00:03.0: reg 0x14: [mem 0x50004000-0x50005fff]
[   12.408988] pci 0000:00:03.0: reg 0x18: [mem 0x50009000-0x50009fff]
[   12.409316] pci 0000:00:03.0: reg 0x1c: [mem 0x50002000-0x50003fff]
[   12.409643] pci 0000:00:03.0: reg 0x20: [mem 0x50008000-0x50008fff]
[   12.409971] pci 0000:00:03.0: reg 0x24: [mem 0x50000000-0x50001fff]
[   12.411198] pci 0000:00:03.0: PME# supported from D3hot
[   12.418885] pci 0000:00:03.0: BAR 0: assigned [mem 0x50000000-0x50001fff]
[   12.419153] pci 0000:00:03.0: BAR 1: assigned [mem 0x50002000-0x50003fff]
[   12.419422] pci 0000:00:03.0: BAR 3: assigned [mem 0x50004000-0x50005fff]
[   12.419690] pci 0000:00:03.0: BAR 5: assigned [mem 0x50006000-0x50007fff]
[   12.419959] pci 0000:00:00.0: BAR 0: assigned [mem 0x50008000-0x50008fff]
[   12.420284] pci 0000:00:00.0: BAR 2: assigned [mem 0x50009000-0x50009fff]
[   12.420557] pci 0000:00:00.0: BAR 4: assigned [mem 0x5000a000-0x5000afff]
[   12.420827] pci 0000:00:02.0: BAR 0: assigned [mem 0x5000b000-0x5000bfff]
[   12.421097] pci 0000:00:02.0: BAR 2: assigned [mem 0x5000c000-0x5000cfff]
[   12.421367] pci 0000:00:02.0: BAR 4: assigned [mem 0x5000d000-0x5000dfff]
[   12.421638] pci 0000:00:03.0: BAR 2: assigned [mem 0x5000e000-0x5000efff]
[   12.421908] pci 0000:00:03.0: BAR 4: assigned [mem 0x5000f000-0x5000ffff]
[   12.454452] EINJ: ACPI disabled.
[   12.815079] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[   12.860880] SuperH (H)SCI(F) driver initialized
[   12.871460] msm_serial: driver initialized
[   12.892779] arm-smmu-v3 2b400000.iommu: command queue size <= 64 entries not supported
[   12.901211] cacheinfo: Unable to detect cache hierarchy for CPU 0
[   12.989818] loop: module loaded
[   12.990593] virtio_blk virtio0: 1/0/0 default/read/poll queues
[   12.998175] virtio_blk virtio0: [vda] 3351968 512-byte logical blocks (1.72 GB/1.60 GiB)
[   13.023477] basic-mmio-gpio: Failed to locate of_node [id: -2]
[   13.034087] basic-mmio-gpio: Failed to locate of_node [id: -2]
[   13.044828] basic-mmio-gpio: Failed to locate of_node [id: -2]
[   13.300576] megasas: 07.719.03.00-rc1
[   13.328358] physmap-flash 8000000.flash: physmap platform flash device: [mem 0x08000000-0x0bffffff]
[   13.328595] 8000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x000018
[   13.328826] Intel/Sharp Extended Query Table at 0x0031
[   13.328982] Intel/Sharp Extended Query Table at 0x0031
[   13.329164] Using buffer write method
[   13.329828] physmap-flash 8000000.flash: physmap platform flash device: [mem 0x0c000000-0x0fffffff]
[   13.330056] 8000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x000018
[   13.330291] Intel/Sharp Extended Query Table at 0x0031
[   13.330465] Intel/Sharp Extended Query Table at 0x0031
[   13.330634] Using buffer write method
[   13.330882] Concatenating MTD devices:
[   13.331013] (0): \"8000000.flash\"
[   13.331152] (1): \"8000000.flash\"
[   13.331291] into device \"8000000.flash\"
[   13.478865] virtio_net: probe of virtio2 failed with error -2
[   13.497593] thunder_xcv, ver 1.0
[   13.498190] thunder_bgx, ver 1.0
[   13.498791] nicpf, ver 1.0
[   13.523859] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
[   13.524089] hns3: Copyright (c) 2017 Huawei Corporation.
[   13.524838] hclge is initializing
[   13.525033] e1000: Intel(R) PRO/1000 Network Driver
[   13.525179] e1000: Copyright (c) 1999-2006 Intel Corporation.
[   13.525840] e1000e: Intel(R) PRO/1000 Network Driver
[   13.525980] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[   13.526656] igb: Intel(R) Gigabit Ethernet Network Driver
[   13.526805] igb: Copyright (c) 2007-2014 Intel Corporation.
[   13.527368] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[   13.527539] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[   13.534351] sky2: driver version 1.30
[   13.534956] QLogic FastLinQ 4xxxx Core Module qed
[   13.535111] qede init: QLogic FastLinQ 4xxxx Ethernet Driver qede
[   13.545770] smc91x 1a000000.ethernet (unnamed net_device) (uninitialized): smc91x: IOADDR 0000000014856b0f doesn't match configuration (300).
[   13.545999] smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
[   13.566172] smc91x 1a000000.ethernet eth0: SMC91C11xFD (rev 1) at 0000000014856b0f IRQ 26
[   13.566381] 
[   13.566511] smc91x 1a000000.ethernet eth0: Ethernet addr: 00:02:f7:ef:ab:7c
[   13.579475] usbcore: registered new interface driver asix
[   13.579929] usbcore: registered new interface driver ax88179_178a
[   13.581392] VFIO - User Level meta-driver version: 0.3
[   13.641655] usbcore: registered new interface driver usb-storage
[   13.705037] rtc-efi rtc-efi.0: registered as rtc0
[   13.705837] rtc-efi rtc-efi.0: setting system clock to 2023-01-10T22:00:20 UTC (1673388020)
[   13.723309] rtc-pl031 1c170000.rtc: registered as rtc1
[   13.735370] i2c_dev: i2c /dev entries driver
[   13.831208] sp805-wdt 1c0f0000.watchdog: registration successful
[   13.903654] mmci-pl18x 1c050000.mmc: Got CD GPIO
[   13.904270] mmci-pl18x 1c050000.mmc: Got WP GPIO
[   13.913811] mmci-pl18x 1c050000.mmc: mmc0: PL180 manf 41 rev0 at 0x1c050000 irq 31,32 (pio)
[   13.942723] sdhci: Secure Digital Host Controller Interface driver
[   13.942871] sdhci: Copyright(c) Pierre Ossman
[   13.956703] Synopsys Designware Multimedia Card Interface Driver
[   13.976971] sdhci-pltfm: SDHCI platform and OF driver helper
[   13.995355] input: AT Raw Set 2 keyboard as /devices/platform/bus@8000000/bus@8000000:motherboard-bus@8000000/bus@8000000:motherboard-bus@8000000:iofpga-bus@300000000/1c060000.kmi/serio0/input/input0
[   14.024311] ledtrig-cpu: registered to indicate activity on CPUs
[   14.054914] pstore: Registered efi as persistent store backend
[   14.060796] SMCCC: SOC_ID: ID = jep106:043b:0000 Revision = 0x00000002
[   14.110000] usbcore: registered new interface driver usbhid
[   14.110154] usbhid: USB HID core driver
[   14.178244]  cs_system_cfg: CoreSight Configuration manager initialised
[   14.267575] NET: Registered PF_INET6 protocol family
[   14.279049] Segment Routing with IPv6
[   14.279372] In-situ OAM (IOAM) with IPv6
[   14.280032] NET: Registered PF_PACKET protocol family
[   14.281675] 9pnet: Installing 9P2000 support
[   14.289141] Key type dns_resolver registered
[   14.303554] registered taskstats version 1
[   14.303829] Loading compiled-in X.509 certificates
[   14.306420] pstore: Using crash dump compression: deflate
[   16.267057] input: PS/2 Generic Mouse as /devices/platform/bus@8000000/bus@8000000:motherboard-bus@8000000/bus@8000000:motherboard-bus@8000000:iofpga-bus@300000000/1c070000.kmi/serio1/input/input2
[   16.334681] smc91x 1a000000.ethernet eth0: link up, 10Mbps, half-duplex, lpa 0x0000
[   16.360265] Sending DHCP requests ., OK
[   16.361506] IP-Config: Got DHCP answer from 172.20.51.254, my address is 172.20.51.1
[   16.361704] IP-Config: Complete:
[   16.361832]      device=eth0, hwaddr=00:02:f7:ef:ab:7c, ipaddr=172.20.51.1, mask=255.255.255.0, gw=172.20.51.254
[   16.362055]      host=172.20.51.1, domain=, nis-domain=(none)
[   16.362214]      bootserver=172.20.51.254, rootserver=172.20.51.254, rootpath=
[   16.362318]      nameserver0=172.20.51.254, nameserver1=172.20.51.252
[   16.367711] ALSA device list:
[   16.367854]   No soundcards found.
[   16.369353] uart-pl011 1c090000.serial: no DMA platform data
[   16.391600] EXT4-fs (vda): mounted filesystem with ordered data mode. Quota mode: none.
[   16.392020] VFS: Mounted root (ext4 filesystem) readonly on device 254:0.
[   16.393747] devtmpfs: mounted
[   16.504426] Freeing unused kernel memory: 12416K
[   16.505038] Run /sbin/init as init process
[   16.796592] systemd[1]: systemd 250.5+ running in system mode (-PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
[   16.813822] systemd[1]: Detected architecture arm64.

Welcome to [1mLinux-Kernel-Functional-Testing nodistro.0[0m!

[   16.917029] systemd[1]: Hostname set to <fvp-base>.
[   16.924161] systemd[1]: Initializing machine ID from random generator.
[   16.934559] systemd[1]: Installed transient /etc/machine-id file.
[   19.740921] systemd[1]: Queued start job for default target Multi-User System.
[   20.402256] systemd[1]: Created slice Slice /system/getty.
[[0;32m  OK  [0m] Created slice [0;1;39mSlice /system/getty[0m.
[   20.423469] systemd[1]: Created slice Slice /system/modprobe.
[[0;32m  OK  [0m] Created slice [0;1;39mSlice /system/modprobe[0m.
[   20.443847] systemd[1]: Created slice Slice /system/serial-getty.
[[0;32m  OK  [0m] Created slice [0;1;39mSlice /system/serial-getty[0m.
[   20.462118] systemd[1]: Created slice User and Session Slice.
[[0;32m  OK  [0m] Created slice [0;1;39mUser and Session Slice[0m.
[   20.475988] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[[0;32m  OK  [0m] Started [0;1;39mDispatch Password …ts to Console Directory Watch[0m.
[   20.480800] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[[0;32m  OK  [0m] Started [0;1;39mForward Password R…uests to Wall Directory Watch[0m.
[   20.484380] systemd[1]: Reached target Path Units.
[[0;32m  OK  [0m] Reached target [0;1;39mPath Units[0m.
[   20.486583] systemd[1]: Reached target Remote File Systems.
[[0;32m  OK  [0m] Reached target [0;1;39mRemote File Systems[0m.
[   20.489079] systemd[1]: Reached target Slice Units.
[[0;32m  OK  [0m] Reached target [0;1;39mSlice Units[0m.
[   20.491412] systemd[1]: Reached target Swaps.
[[0;32m  OK  [0m] Reached target [0;1;39mSwaps[0m.
[   20.660568] systemd[1]: Listening on RPCbind Server Activation Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mRPCbind Server Activation Socket[0m.
[   20.662964] systemd[1]: Reached target RPC Port Mapper.
[[0;32m  OK  [0m] Reached target [0;1;39mRPC Port Mapper[0m.
[   20.670642] systemd[1]: Listening on Syslog Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mSyslog Socket[0m.
[   20.674723] systemd[1]: Listening on initctl Compatibility Named Pipe.
[[0;32m  OK  [0m] Listening on [0;1;39minitctl Compatibility Named Pipe[0m.
[   20.694306] systemd[1]: Listening on Journal Audit Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mJournal Audit Socket[0m.
[   20.700809] systemd[1]: Listening on Journal Socket (/dev/log).
[[0;32m  OK  [0m] Listening on [0;1;39mJournal Socket (/dev/log)[0m.
[   20.708552] systemd[1]: Listening on Journal Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mJournal Socket[0m.
[   20.718282] systemd[1]: Listening on Network Service Netlink Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mNetwork Service Netlink Socket[0m.
[   20.726338] systemd[1]: Listening on udev Control Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mudev Control Socket[0m.
[   20.732677] systemd[1]: Listening on udev Kernel Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mudev Kernel Socket[0m.
[   20.738963] systemd[1]: Listening on User Database Manager Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mUser Database Manager Socket[0m.
[   20.806523] systemd[1]: Mounting Huge Pages File System...
         Mounting [0;1;39mHuge Pages File System[0m...
[   20.843551] systemd[1]: Mounting POSIX Message Queue File System...
         Mounting [0;1;39mPOSIX Message Queue File System[0m...
[   20.882265] systemd[1]: Mounting Kernel Debug File System...
         Mounting [0;1;39mKernel Debug File System[0m...
[   20.920596] systemd[1]: Mounting Kernel Trace File System...
         Mounting [0;1;39mKernel Trace File System[0m...
[   20.957583] systemd[1]: Mounting Temporary Directory /tmp...
         Mounting [0;1;39mTemporary Directory /tmp[0m...
[   20.999822] systemd[1]: Starting Create List of Static Device Nodes...
         Starting [0;1;39mCreate List of Static Device Nodes[0m...
[   21.038861] systemd[1]: Starting Load Kernel Module configfs...
         Starting [0;1;39mLoad Kernel Module configfs[0m...
[   21.077326] systemd[1]: Starting Load Kernel Module drm...
         Starting [0;1;39mLoad Kernel Module drm[0m...
[   21.115618] systemd[1]: Starting Load Kernel Module fuse...
         Starting [0;1;39mLoad Kernel Module fuse[0m...
[   21.155239] systemd[1]: Starting RPC Bind...
         Starting [0;1;39mRPC Bind[0m...
[   21.192671] systemd[1]: Starting File System Check on Root Device...
         Starting [0;1;39mFile System Check on Root Device[0m...
[   21.205865] fuse: init (API version 7.37)
[   21.267751] systemd[1]: Starting Journal Service...
         Starting [0;1;39mJournal Service[0m...
[   21.279507] systemd[1]: Load Kernel Modules was skipped because all trigger condition checks failed.
[   21.324971] systemd[1]: Starting Generate network units from Kernel command line...
         Starting [0;1;39mGenerate network …ts from Kernel command line[0m...
[   21.365902] systemd[1]: Starting Apply Kernel Variables...
         Starting [0;1;39mApply Kernel Variables[0m...
[   21.403173] systemd[1]: Starting Coldplug All udev Devices...
         Starting [0;1;39mColdplug All udev Devices[0m...
[   21.497201] systemd[1]: Started RPC Bind.
[[0;32m  OK  [0m] Started [0;1;39mRPC Bind[0m.
[   21.504281] systemd[1]: Mounted Huge Pages File System.
[[0;32m  OK  [0m] Mounted [0;1;39mHuge Pages File System[0m.
[   21.510714] systemd[1]: Mounted POSIX Message Queue File System.
[[0;32m  OK  [0m] Mounted [0;1;39mPOSIX Message Queue File System[0m.
[   21.517433] systemd[1]: Mounted Kernel Debug File System.
[[0;32m  OK  [0m] Mounted [0;1;39mKernel Debug File System[0m.
[   21.523754] systemd[1]: Mounted Kernel Trace File System.
[[0;32m  OK  [0m] Mounted [0;1;39mKernel Trace File System[0m.
[   21.530891] systemd[1]: Mounted Temporary Directory /tmp.
[[0;32m  OK  [0m] Mounted [0;1;39mTemporary Directory /tmp[0m.
[   21.550414] systemd[1]: Finished Create List of Static Device Nodes.
[[0;32m  OK  [0m] Finished [0;1;39mCreate List of Static Device Nodes[0m.
[   21.566969] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[   21.583683] systemd[1]: Finished Load Kernel Module configfs.
[[0;32m  OK  [0m] Finished [0;1;39mLoad Kernel Module configfs[0m.
[   21.597706] systemd[1]: modprobe@drm.service: Deactivated successfully.
[   21.614528] systemd[1]: Finished Load Kernel Module drm.
[[0;32m  OK  [0m] Finished [0;1;39mLoad Kernel Module drm[0m.
[   21.628526] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[   21.641422] systemd[1]: Finished Load Kernel Module fuse.
[[0;32m  OK  [0m] Finished [0;1;39mLoad Kernel Module fuse[0m.
[   21.665532] systemd[1]: Finished File System Check on Root Device.
[[0;32m  OK  [0m] Finished [0;1;39mFile System Check on Root Device[0m.
[   21.689064] systemd[1]: Finished Generate network units from Kernel command line.
[[0;32m  OK  [0m] Finished [0;1;39mGenerate network units from Kernel command line[0m.
[   21.709229] systemd[1]: Finished Apply Kernel Variables.
[[0;32m  OK  [0m] Finished [0;1;39mApply Kernel Variables[0m.
[   21.723460] systemd[1]: Reached target Preparation for Network.
[[0;32m  OK  [0m] Reached target [0;1;39mPreparation for Network[0m.
[   21.796391] systemd[1]: Mounting FUSE Control File System...
         Mounting [0;1;39mFUSE Control File System[0m...
[   21.838369] systemd[1]: Mounting Kernel Configuration File System...
         Mounting [0;1;39mKernel Configuration File System[0m...
[   21.875564] systemd[1]: Starting Remount Root and Kernel File Systems...
         Starting [0;1;39mRemount Root and Kernel File Systems[0m...
[   21.933459] systemd[1]: Mounted FUSE Control File System.
[[0;32m  OK  [0m] Mounted [0;1;39mFUSE Control File System[0m.
[   21.939761] systemd[1]: Mounted Kernel Configuration File System.
[[0;32m  OK  [0m] Mounted [0;1;39mKernel Configuration File System[0m.
[   22.032319] EXT4-fs (vda): re-mounted. Quota mode: none.
[   22.091688] systemd[1]: Finished Remount Root and Kernel File Systems.
[[0;32m  OK  [0m] Finished [0;1;39mRemount Root and Kernel File Systems[0m.
[   22.104363] systemd[1]: Rebuild Hardware Database was skipped because all trigger condition checks failed.
[   22.105726] systemd[1]: Platform Persistent Storage Archival was skipped because of a failed condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[   22.189828] systemd[1]: Starting Create System Users...
         Starting [0;1;39mCreate System Users[0m...
[   22.497668] systemd[1]: Finished Create System Users.
[[0;32m  OK  [0m] Finished [0;1;39mCreate System Users[0m.
[   22.578977] systemd[1]: Starting Create Static Device Nodes in /dev...
         Starting [0;1;39mCreate Static Device Nodes in /dev[0m...
[   22.848720] systemd[1]: Finished Create Static Device Nodes in /dev.
[[0;32m  OK  [0m] Finished [0;1;39mCreate Static Device Nodes in /dev[0m.
[   22.854298] systemd[1]: Reached target Preparation for Local File Systems.
[[0;32m  OK  [0m] Reached target [0;1;39mPreparation for Local File Systems[0m.
[   22.932501] systemd[1]: Mounting /var/volatile...
         Mounting [0;1;39m/var/volatile[0m...
[   22.989849] audit: type=1334 audit(1673388029.780:2): prog-id=5 op=LOAD
[   22.991935] audit: type=1334 audit(1673388029.780:3): prog-id=6 op=LOAD
[   23.021315] systemd[1]: Starting Rule-based Manager for Device Events and Files...
         Starting [0;1;39mRule-based Manage…for Device Events and Files[0m...
[   23.055005] systemd[1]: Started Journal Service.
[[0;32m  OK  [0m] Started [0;1;39mJournal Service[0m.
[[0;32m  OK  [0m] Mounted [0;1;39m/var/volatile[0m.
         Starting [0;1;39mFlush Journal to Persistent Storage[0m...
         Starting [0;1;39mLoad/Save Random Seed[0m...
[[0;32m  OK  [0m] Reached target [0;1;39mLocal File Systems[0m.
         Starting [0;1;39mRebuild Dynamic Linker Cache[0m...
[   23.335200] systemd-journald[239]: Received client request to flush runtime journal.
[[0;32m  OK  [0m] Finished [0;1;39mFlush Journal to Persistent Storage[0m.
         Starting [0;1;39mCreate Volatile Files and Directories[0m...
[[0;32m  OK  [0m] Finished [0;1;39mLoad/Save Random Seed[0m.
         Starting [0;1;39mCommit a transient machine-id on disk[0m...
[[0;32m  OK  [0m] Finished [0;1;39mRebuild Dynamic Linker Cache[0m.
[[0;32m  OK  [0m] Finished [0;1;39mCommit a transient machine-id on disk[0m.
[[0;32m  OK  [0m] Started [0;1;39mRule-based Manager for Device Events and Files[0m.
         Starting [0;1;39mNetwork Configuration[0m...
[[0;32m  OK  [0m] Finished [0;1;39mCreate Volatile Files and Directories[0m.
         Starting [0;1;39mRebuild Journal Catalog[0m...
         Starting [0;1;39mNetwork Time Synchronization[0m...
         Starting [0;1;39mRecord System Boot/Shutdown in UTMP[0m...
[[0;32m  OK  [0m] Finished [0;1;39mRecord System Boot/Shutdown in UTMP[0m.
[[0;32m  OK  [0m] Finished [0;1;39mRebuild Journal Catalog[0m.
         Starting [0;1;39mUpdate is Completed[0m...
[[0;32m  OK  [0m] Finished [0;1;39mUpdate is Completed[0m.
[[0;32m  OK  [0m] Listening on [0;1;39mLoad/Save RF …itch Status /dev/rfkill Watch[0m.
[   26.087535] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   26.145593] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   26.146420] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[   26.146650] cfg80211: failed to load regulatory.db
[   26.385260] virtio-pci 0000:00:00.0: deferred probe timeout, ignoring dependency
[   26.386459] virtio-pci 0000:00:00.0: enabling device (0000 -> 0002)
[   26.386852] virtio-pci 0000:00:00.0: virtio_pci: leaving for legacy driver
[[0;32m  OK  [0m] Started [0;1;39mNetwork Configuration[0m.
[   26.397486] virtio_blk virtio3: 1/0/0 default/read/poll queues
[   26.403419] virtio_blk virtio3: [vdb] 0 512-byte logical blocks (0 B/0 B)
[   26.448423] virtio-pci 0000:00:02.0: deferred probe timeout, ignoring dependency
[   26.449199] virtio-pci 0000:00:02.0: enabling device (0000 -> 0002)
[   26.449592] virtio-pci 0000:00:02.0: virtio_pci: leaving for legacy driver
[   26.462050] virtio_blk virtio4: 1/0/0 default/read/poll queues
[   26.474564] virtio_blk virtio4: [vdc] 0 512-byte logical blocks (0 B/0 B)
         Starting [0;1;39mNetwork Name Resolution[0m...
[   26.507052] ahci 0000:00:03.0: deferred probe timeout, ignoring dependency
[   26.508463] ahci 0000:00:03.0: enabling device (0000 -> 0002)
[   26.511324] ahci 0000:00:03.0: AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
[   26.511559] ahci 0000:00:03.0: flags: 64bit ncq only 
[   26.527368] scsi host0: ahci
[   26.531812] ata1: SATA max UDMA/133 abar m8192@0x50006000 port 0x50006100 irq 39
[   26.848773] ata1: SATA link down (SStatus 0 SControl 300)
[[0;32m  OK  [0m] Started [0;1;39mNetwork Time Synchronization[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mSystem Time Set[0m.
[[0;32m  OK  [0m] Started [0;1;39mNetwork Name Resolution[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mNetwork[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mHost and Network Name Lookups[0m.
[[0;32m  OK  [0m] Finished [0;1;39mColdplug All udev Devices[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mSystem Initialization[0m.
[[0;32m  OK  [0m] Started [0;1;39mDaily rotation of log files[0m.
[[0;32m  OK  [0m] Started [0;1;39mDaily Cleanup of Temporary Directories[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mTimer Units[0m.
[[0;32m  OK  [0m] Listening on [0;1;39mAvahi mDNS/DNS-SD Stack Activation Socket[0m.
[[0;32m  OK  [0m] Listening on [0;1;39mD-Bus System Message Bus Socket[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mSocket Units[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mBasic System[0m.
[   31.241281] panel-simple panel: supply power not found, using dummy regulator
[   31.243540] panel-simple panel: Specify missing connector_type
         Starting [0;1;39mAvahi mDNS/DNS-SD Stack[0m...
[[0;32m  OK  [0m] Started [0;1;39mKernel Logging Service[0m.
[[0;32m  OK  [0m] Started [0;1;39mSystem Logging Service[0m.
[[0;32m  OK  [0m] Started [0;1;39mPeriodic Command Scheduler[0m.
         Starting [0;1;39mD-Bus System Message Bus[0m...
[[0;32m  OK  [0m] Started [0;1;39mGetty on tty1[0m.
[[0;32m  OK  [0m] Started [0;1;39mSerial Getty on ttyAMA0[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mLogin Prompts[0m.
[   31.843659] audit: type=1334 audit(1673388038.624:4): prog-id=7 op=LOAD
[   31.844004] audit: type=1334 audit(1673388038.628:5): prog-id=8 op=LOAD
         Starting [0;1;39mUser Login Management[0m...
[[0;32m  OK  [0m] Started [0;1;39mD-Bus System Message Bus[0m.
[   32.042134] arm_spe_pmu spe-pmu: probed for CPUs 0-7 [max_record_sz 64, align 1, features 0xf]
[   32.262171] drm-clcd-pl111 1c1f0000.clcd: assigned reserved memory node vram@18000000
[   32.262361] drm-clcd-pl111 1c1f0000.clcd: using device-specific reserved memory
[   32.262567] drm-clcd-pl111 1c1f0000.clcd: no max memory bandwidth specified, assume unlimited
[   32.264765] drm-clcd-pl111 1c1f0000.clcd: DVI muxed to motherboard CLCD
[   32.276275] drm-clcd-pl111 1c1f0000.clcd: initializing Versatile Express PL111
[   32.278004] drm-clcd-pl111 1c1f0000.clcd: found panel on endpoint 0
[   32.296973] [drm] Initialized pl111 1.0.0 20170317 for 1c1f0000.clcd on minor 0
[   32.417023] Console: switching to colour frame buffer device 128x48
[   32.453287] drm-clcd-pl111 1c1f0000.clcd: [drm] fb0: pl111drmfb frame buffer device
[[0;32m  OK  [0m] Started [0;1;39mAvahi mDNS/DNS-SD Stack[0m.
[[0;32m  OK  [0m] Started [0;1;39mUser Login Management[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mMulti-User System[0m.
         Starting [0;1;39mRecord Runlevel Change in UTMP[0m...
[[0;32m  OK  [0m] Finished [0;1;39mRecord Runlevel Change in UTMP[0m.

Linux-Kernel-Functional-Testing nodistro.0 fvp-base ttyAMA0

fvp-base login: root
root
7[r[999;999H[6nroot@fvp-base:~# 

root@fvp-base:~# #
#
root@fvp-base:~# export SHELL=/bin/sh
export SHELL=/bin/sh
root@fvp-base:~# . /lava-1/environment
. /lava-1/environment
root@fvp-base:~# /lava-1/bin/lava-test-runner /lava-1/0
/lava-1/bin/lava-test-runner /lava-[   94.993242] systemd-journald[239]: Time jumped backwards, rotating.
1/0
+ export TESTRUN_ID=0_ltp-mm
+ TESTRUN_ID=0_ltp-mm
+ cd /lava-1/0/tests/0_ltp-mm
++ cat uuid
+ UUID=1_1.1.3.1
+ set +x
[   95.473945] <LAVA_SIGNAL_STARTRUN 0_ltp-mm 1_1.1.3.1>
+ cd ./automated/linux/ltp/
\a
Broadcast message from systemd-journald@fvp-base (Tue 2023-01-10 22:07:58 UTC):

kernel[319]: [   95.473945] <LAVA_SIGNAL_STARTRUN 0_ltp-mm 1_1.1.3.1>

+ ./ltp.sh -T mm -s true -v '' -M 5 -R root -b '' -d /scratch -g '' -e production -i /opt/ltp/ -S skipfile-lkft.yaml -p '' -u '' -t false -n 6 -c 4
+ . ../../lib/sh-test-lib
++ LANG=C
++ export LANG
++ export PATH=/lava-1/0/../bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/sbin:/usr/sbin:/usr/local/sbin
++ PATH=/lava-1/0/../bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/sbin:/usr/sbin:/usr/local/sbin
++ kernel_config=
++ pwd
+ OUTPUT=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ RESULT_FILE=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/result.txt
++ readlink -f ./ltp.sh
+ SCRIPT=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/ltp.sh
++ dirname /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/ltp.sh
+ SCRIPTPATH=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp
+ echo 'Script path is: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp'
Script path is: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp
+ TST_CMDFILES=
+ SKIPFILE=
+ SKIPFILE_YAML=
+ BOARD=
+ BRANCH=
+ ENVIRONMENT=
+ LTP_VERSION=20180926
+ TEST_PROGRAM=ltp
+ TEST_GIT_URL=
++ pwd
+ TEST_DIR=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/ltp
+ BUILD_FROM_TAR=false
+ SHARD_NUMBER=1
+ SHARD_INDEX=1
+ LTP_TMPDIR=/ltp-tmp
+ LTP_INSTALL_PATH=/opt/ltp
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ TST_CMDFILES=mm
++ echo mm
++ sed 's,\/,_,'
+ LOG_FILE=mm
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ SKIP_INSTALL=true
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ LTP_VERSION=
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export LTP_TIMEOUT_MUL=5
+ LTP_TIMEOUT_MUL=5
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export PASSWD=root
+ PASSWD=root
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export BOARD=
+ BOARD=
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export LTP_TMPDIR=/scratch
+ LTP_TMPDIR=/scratch
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export BRANCH=
+ BRANCH=
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export ENVIRONMENT=production
+ ENVIRONMENT=production
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export LTP_INSTALL_PATH=/opt/ltp/
+ LTP_INSTALL_PATH=/opt/ltp/
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ '[' -z skipfile-lkft.yaml ']'
+ '[' yaml = yaml ']'
+ SKIPFILE_YAML=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ [[ '' != '' ]]
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ [[ '' != '' ]]
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ BUILD_FROM_TAR=false
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ SHARD_NUMBER=6
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ SHARD_INDEX=4
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ TEST_TARFILE=https://github.com/linux-test-project/ltp/releases/download//ltp-full-.tar.xz
+ '[' -n /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml ']'
+ export SKIPFILE_PATH=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
+ SKIPFILE_PATH=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
+ generate_skipfile
+ info_msg 'Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml'
+ local 'msg=Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml'
+ '[' -z 'Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml' ']'
+ printf 'INFO: %s\n' 'Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml'
INFO: Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml
+ detect_abi
++ uname -m
+ abi=aarch64
+ case \"${abi}\" in
+ abi=arm64
+ local SKIPGEN_ARGS=
+ test -n ''
+ test -n ''
+ test -n production
+ SKIPGEN_ARGS=' --environment production'
+ ../../bin/arm64/skipgen --environment production /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml
+ test 0 -eq 0
+ info_msg 'Using the following generated skipfile contents (until EOF):'
+ local 'msg=Using the following generated skipfile contents (until EOF):'
+ '[' -z 'Using the following generated skipfile contents (until EOF):' ']'
+ printf 'INFO: %s\n' 'Using the following generated skipfile contents (until EOF):'
INFO: Using the following generated skipfile contents (until EOF):
+ cat /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
bind06
cve-2018-18559
dio10
dio12
dio13
dio14
dio15
dio16
dio17
dio18
dio19
dio20
dio21
dio22
dio23
dio24
dio25
dio26
dio27
dio28
dio29
dio30
fanotify07
fanotify08
fanotify09
fork13
ftrace_stress_test.sh
futex_wake04
gf01
gf14
gf15
gf18
hackbench01
hackbench02
hugemmap06
inotify07
inotify08
ksm01
memcg_stress
msgctl10
msgctl11
msgstress03
msgstress04
mtest06
perf_event_open02
ping01
ping602
pth_str01
pth_str02
pth_str03
sendfile09
sendfile09_64
setsockopt06
time-schedule01
+ info_msg EOF
+ local msg=EOF
+ '[' -z EOF ']'
+ printf 'INFO: %s\n' EOF
INFO: EOF
+ '[' '!' -f /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile ']'
+ SKIPFILE='-S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile'
+ check_root
++ id -ru
+ '[' 0 -eq 0 ']'
+ return 0
+ create_out_dir /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' -z /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output ']'
+ local OUTPUT=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' -d /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output ']'
+ mkdir -p /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' -d /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output ']'
+ info_msg 'About to run ltp test...'
+ local 'msg=About to run ltp test...'
+ '[' -z 'About to run ltp test...' ']'
+ printf 'INFO: %s\n' 'About to run ltp test...'
INFO: About to run ltp test...
+ info_msg 'Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output'
+ local 'msg=Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output'
+ '[' -z 'Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output' ']'
+ printf 'INFO: %s\n' 'Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output'
INFO: Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' true = true ']'
+ info_msg 'ltp installation skipped altogether'
+ local 'msg=ltp installation skipped altogether'
+ '[' -z 'ltp installation skipped altogether' ']'
+ printf 'INFO: %s\n' 'ltp installation skipped altogether'
INFO: ltp installation skipped altogether
+ '[' '!' -d /opt/ltp/ ']'
+ info_msg 'Running prep_system'
+ local 'msg=Running prep_system'
+ '[' -z 'Running prep_system' ']'
+ printf 'INFO: %s\n' 'Running prep_system'
INFO: Running prep_system
+ prep_system
+ systemctl is-active systemd-timesyncd
active
+ info_msg 'Stopping systemd-timesyncd'
+ local 'msg=Stopping systemd-timesyncd'
+ '[' -z 'Stopping systemd-timesyncd' ']'
+ printf 'INFO: %s\n' 'Stopping systemd-timesyncd'
INFO: Stopping systemd-timesyncd
+ systemctl stop systemd-timesyncd
<terminal_1> UEFI firmware (version  built at 06:55:08 on Oct 13 2022)
+ '[' -f /proc/sys/kernel/unprivileged_userns_clone ']'
+ info_msg 'Kernel has no support of unprivileged_userns_clone'
+ local 'msg=Kernel has no support of unprivileged_userns_clone'
+ '[' -z 'Kernel has no support of unprivileged_userns_clone' ']'
+ printf 'INFO: %s\n' 'Kernel has no support of unprivileged_userns_clone'
INFO: Kernel has no support of unprivileged_userns_clone
+ info_msg 'Running run_ltp'
+ local 'msg=Running run_ltp'
+ '[' -z 'Running run_ltp' ']'
+ printf 'INFO: %s\n' 'Running run_ltp'
INFO: Running run_ltp
+ run_ltp
+ cd /opt/ltp/
+ mkdir -m 777 -p /scratch
+ for file in ${TST_CMDFILES//,/ }
+ cat runtest/mm
+ sed -i 's/#.*$//;/^$/d' alltests
+ split --verbose --numeric-suffixes=1 -n l/4/6 alltests
+ echo '============== Tests to run ==============='
============== Tests to run ===============
+ cat runtest/shardfile
mmap10_2 mmap10 -s
mmap10_3 mmap10 -a -s
mmap10_4 mmap10 -a -s -i 60
ksm01 ksm01
ksm01_1 ksm01 -u 128
ksm02 ksm02
ksm02_1 ksm02 -u 128
ksm03 ksm03
ksm03_1 ksm03 -u 128
ksm04 ksm04
ksm04_1 ksm04 -u 128
ksm05 ksm05 -I 10
ksm06 ksm06
ksm06_1 ksm06 -n 10
ksm06_2 ksm06 -n 8000
+ echo '===========End Tests to run ==============='
===========End Tests to run ===============
+ pipe0_status './runltp -p -q -f shardfile                                  -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log                                  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed                                  -d /scratch                                     -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile' 'tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out'
+ '[' 2 -ne 2 ']'
+ local 'cmd1=./runltp -p -q -f shardfile                                  -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log                                  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed                                  -d /scratch                                     -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile'
+ local 'cmd2=tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out'
+ exec
+ local ret_val
++ eval './runltp -p -q -f shardfile                                  -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log                                  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed                                  -d /scratch                                     -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile'
+++ ./runltp -p -q -f shardfile -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed -d /scratch -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
++ eval 'tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out'
+++ tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out
INFO: creating /opt/ltp/output directory
Checking for required user/group ids

'nobody' user id and group found.
'bin' user id and group found.
'daemon' user id and group found.
Users group found.
Sys group found.
Required users/groups exist.
no big block device was specified on commandline.
Tests which require a big block device are disabled.
You can specify it with option -z
INFO: Test start time: Tue Jan 10 22:08:04 UTC 2023
COMMAND:    /opt/ltp/bin/ltp-pan -q  -e -S   -a 385     -n 385 -p -f /scratch/ltp-GhiO6KfR8M/alltests -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed -T /opt/ltp/output/LTP_RUN_ON-LTP_mm.log.tconf
LOG File: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log
FAILED COMMAND File: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed
TCONF COMMAND File: /opt/ltp/output/LTP_RUN_ON-LTP_mm.log.tconf
Running tests.......
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use anonymous pages.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use anonymous pages.
mmap10      0  TINFO  :  start tests.
...

tst_kconfig.c:82: TINFO: Parsing kernel config '/proc/config.gz'
tst_test.c:1524: TINFO: Timeout per run is 0h 02m 30s
mem.c:390: TINFO: child 0 stops.
mem.c:390: TINFO: child 1 stops.
mem.c:424: TINFO: wait for all children to stop.
mem.c:390: TINFO: child 2 stops.
mem.c:497: TINFO: KSM merging...
mem.c:436: TINFO: resume all children.
mem.c:424: TINFO: wait for all children to stop.
mem.c:346: TINFO: child 0 continues...
mem.c:346: TINFO: child 1 continues...
mem.c:349: TINFO: child 0 allocates 128 MB filled with 'c'
mem.c:349: TINFO: child 1 allocates 128 MB filled with 'a'
mem.c:346: TINFO: child 2 continues...
mem.c:349: TINFO: child 2 allocates 128 MB filled with 'a'
mem.c:402: TINFO: child 1 stops.
mem.c:402: TINFO: child 2 stops.
mem.c:402: TINFO: child 0 stops.
ksm_helper.c:36: TINFO: ksm daemon takes 1s to run two full scans
mem.c:266: TINFO: check!
mem.c:257: TPASS: run is 1.
mem.c:257: TPASS: pages_shared is 2.
mem.c:257: TPASS: pages_sharing is 6142.
mem.c:257: TPASS: pages_volatile is 0.
mem.c:257: TPASS: pages_unshared is 0.
mem.c:257: TPASS: sleep_millisecs is 0.
mem.c:257: TPASS: pages_to_scan is 6144.
mem.c:436: TINFO: resume all children.
mem.c:424: TINFO: wait for all children to stop.
mem.c:315: TINFO: child 0 verifies memory content.
mem.c:315: TINFO: child 1 verifies memory content.
mem.c:315: TINFO: child 2 verifies memory content.
mem.c:346: TINFO: child 2 continues...
mem.c:349: TINFO: child 2 allocates 128 MB filled with 'a'
mem.c:346: TINFO: child 1 continues...
mem.c:349: TINFO: child 1 allocates 128 MB filled with 'b'
mem.c:346: TINFO: child 0 continues...
mem.c:349: TINFO: child 0 allocates 128 MB filled with 'c'
mem.c:402: TINFO: child 2 stops.
mem.c:402: TINFO: child 1 stops.
mem.c:402: TINFO: child 0 stops.
ksm_helper.c:36: TINFO: ksm daemon takes 1s to run two full scans
mem.c:266: TINFO: check!
mem.c:257: TPASS: run is 1.
mem.c:257: TPASS: pages_shared is 3.
mem.c:257: TPASS: pages_sharing is 6141.
mem.c:257: TPASS: pages_volatile is 0.
mem.c:257: TPASS: pages_unshared is 0.
mem.c:257: TPASS: sleep_millisecs is 0.
mem.c:257: TPASS: pages_to_scan is 6144.
mem.c:436: TINFO: resume all children.
mem.c:424: TINFO: wait for all children to stop.
mem.c:315: TINFO: child 1 verifies memory content.
mem.c:315: TINFO: child 2 verifies memory content.
mem.c:315: TINFO: child 0 verifies memory content.
mem.c:346: TINFO: child 0 continues...
mem.c:349: TINFO: child 0 allocates 128 MB filled with 'd'
mem.c:346: TINFO: child 1 continues...
mem.c:349: TINFO: child 1 allocates 128 MB filled with 'd'
mem.c:346: TINFO: child 2 continues...
mem.c:349: TINFO: child 2 allocates 128 MB filled with 'd'
mem.c:402: TINFO: child 1 stops.
mem.c:402: TINFO: child 0 stops.
mem.c:402: TINFO: child 2 stops.
ksm_helper.c:36: TINFO: ksm daemon takes 1s to run two full scans
mem.c:266: TINFO: check!
mem.c:257: TPASS: run is 1.
mem.c:257: TPASS: pages_shared is 1.
mem.c:257: TPASS: pages_sharing is 6143.
mem.c:257: TPASS: pages_volatile is 0.
mem.c:257: TPASS: pages_unshared is 0.
mem.c:257: TPASS: sleep_millisecs is 0.
mem.c:257: TPASS: pages_to_scan is 6144.
mem.c:436: TINFO: resume all children.
mem.c:424: TINFO: wait for all children to stop.
mem.c:315: TINFO: child 0 verifies memory content.
mem.c:315: TINFO: child 1 verifies memory content.
mem.c:315: TINFO: child 2 verifies memory content.
mem.c:346: TINFO: child 0 continues...
mem.c:349: TINFO: child 0 allocates 128 MB filled with 'd'
mem.c:346: TINFO: child 2 continues...
mem.c:349: TINFO: child 2 allocates 128 MB filled with 'd'
mem.c:346: TINFO: child 1 continues...
mem.c:353: TINFO: child 1 allocates 128 MB filled with 'd' except one page with 'e'
[  257.654082] SError Interrupt on CPU3, code 0x00000000be000000 -- SError
[  257.654122] CPU: 3 PID: 685 Comm: ksm03 Not tainted 6.1.5-rc1 #1
[  257.654181] Hardware name: FVP Base RevC (DT)
[  257.654205] pstate: 80000000 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  257.654276] pc : 000000000041f758
[  257.654298] lr : 000000000041f8c0
[  257.654319] sp : 0000ffffc9e14cb0
[  257.654341] x29: 0000ffffc9e14cc0 x28: 0000000008000000 x27: 00000000004296c0
[  257.654437] x26: 00000000194fa4b0 x25: 0000000000000064 x24: 0000000008000000
[  257.654530] x23: 0000000008000000 x22: 0000000000429550 x21: 0000000000000000
[  257.654626] x20: 0000ffffc9e14de8 x19: 0000000000000001 x18: 0000000000000000
[  257.654719] x17: 0000ffff93c6a290 x16: 0000000000441340 x15: 0000000000008000
[  257.654815] x14: 0000000000040000 x13: 2e746e65746e6f63 x12: 0000ffff93cd7160
[  257.654913] x11: 0000ffffc9e146b0 x10: 00000000ffffffd8 x9 : 00000000ffffff80
[  257.655009] x8 : 0000000000000040 x7 : 00000000ffffffff x6 : 0000000000000000
[  257.655100] x5 : 0000000000000063 x4 : 0000000000000020 x3 : 0000ffff93dbed60
[  257.655191] x2 : 0000000000000000 x1 : 0000ffff8bb90000 x0 : 00000000068af001
[  257.655293] Kernel panic - not syncing: Asynchronous SError Interrupt
[  257.655319] CPU: 3 PID: 685 Comm: ksm03 Not tainted 6.1.5-rc1 #1
[  257.655379] Hardware name: FVP Base RevC (DT)
[  257.655403] Call trace:
[  257.655419]  dump_backtrace+0xe4/0x140
[  257.655475]  show_stack+0x20/0x30
[  257.655528]  dump_stack_lvl+0x88/0xb4
[  257.655598]  dump_stack+0x18/0x34
[  257.655667]  panic+0x1a0/0x37c
[  257.655729]  add_taint+0x0/0xc0
[  257.655787]  arm64_serror_panic+0x78/0x84
[  257.655853]  do_serror+0x0/0x60
[  257.655911]  do_serror+0x3c/0x60
[  257.655970]  __el0_error_handler_common+0x48/0xc0
[  257.656050]  el0t_64_error_handler+0x10/0x20
[  257.656131]  el0t_64_error+0x18c/0x190
[  257.656191] SMP: stopping secondary CPUs
[  257.656326] Kernel Offset: 0x57c5cb540000 from 0xffff800008000000
[  257.656361] PHYS_OFFSET: 0x80000000
[  257.656383] CPU features: 0x00000,000a1cff,e69e772f
[  257.656414] Memory Limit: none
[  257.945661] ---[ end Kernel panic - not syncing: Asynchronous SError Interrupt ]---
[  257.945856] ------------[ cut here ]------------
[  257.945873] WARNING: CPU: 3 PID: 685 at kernel/sched/core.c:3113 set_task_cpu+0x170/0x254
[  257.945960] Modules linked in: pl111_drm drm_dma_helper crct10dif_ce arm_spe_pmu drm_kms_helper panel_simple cfg80211 rfkill fuse drm
[  257.946182] CPU: 3 PID: 685 Comm: ksm03 Not tainted 6.1.5-rc1 #1
[  257.946243] Hardware name: FVP Base RevC (DT)
[  257.946267] pstate: 424020c9 (nZcv daIF +PAN -UAO +TCO -DIT -SSBS BTYPE=--)
[  257.946338] pc : set_task_cpu+0x170/0x254
[  257.946393] lr : try_to_wake_up+0x1a0/0x63c
[  257.946451] sp : ffff80000806fbe0
[  257.946474] x29: ffff80000806fbe0 x28: ffff00087f7c5680 x27: 0000000000000000
[  257.946572] x26: 0000000000000000 x25: ffffd7c5d609d410 x24: 0000000000000005
[  257.946666] x23: ffff000805633d04 x22: 0000000000000005 x21: ffffd7c5d6098a78
[  257.946762] x20: 0000000000000005 x19: ffff0008056334c0 x18: 0000000000000006
[  257.946858] x17: 75727265746e4920 x16: 726f727245532073 x15: 756f6e6f7268636e
[  257.946960] x14: 797341203a676e69 x13: 2d2d2d5d20747075 x12: 727265746e492072
[  257.947061] x11: 6f72724553207375 x10: ffffd7c5d6114d18 x9 : ffffd7c5d3617154
[  257.947161] x8 : ffffd7c5d574b000 x7 : ffff2842aa100000 x6 : 0000000000000003
[  257.947257] x5 : ffffd7c5d609d000 x4 : 0000000000000005 x3 : 00000000000000ff
[  257.947350] x2 : 0000000000000000 x1 : 0000000000000005 x0 : 0000000000000000
[  257.947440] Call trace:
[  257.947452]  set_task_cpu+0x170/0x254
[  257.947514]  try_to_wake_up+0x1a0/0x63c
[  257.947575]  default_wake_function+0x24/0x50
[  257.947639]  autoremove_wake_function+0x20/0x50
[  257.947734]  __wake_up_common+0x90/0x190
[  257.947815]  __wake_up_common_lock+0x80/0xd0
[  257.947903]  __wake_up+0x20/0x30
[  257.947981]  wake_up_klogd_work_func+0xac/0xc0
[  257.948059]  irq_work_single+0x7c/0xbc
[  257.948139]  irq_work_run_list+0x4c/0x70
[  257.948221]  irq_work_tick+0x28/0x6c
[  257.948299]  update_process_times+0xa4/0xc0
[  257.948394]  tick_sched_handle+0x3c/0x60
[  257.948465]  tick_sched_timer+0x54/0xac
[  257.948535]  __hrtimer_run_queues+0x2e4/0x380
[  257.948632]  hrtimer_interrupt+0xf0/0x250
[  257.948729]  arch_timer_handler_phys+0x34/0x50
[  257.948807]  handle_percpu_devid_irq+0x90/0x230
[  257.948873]  generic_handle_domain_irq+0x34/0x50
[  257.948962]  gic_handle_irq+0x58/0x140
[  257.949015]  call_on_irq_stack+0x2c/0x54
[  257.949088]  do_interrupt_handler+0x88/0x94
[  257.949172]  el1_interrupt+0x34/0x70
[  257.949245]  el1h_64_irq_handler+0x18/0x2c
[  257.949324]  el1h_64_irq+0x64/0x68
[  257.949380]  panic+0x324/0x37c
[  257.949444]  add_taint+0x0/0xc0
[  257.949505]  arm64_serror_panic+0x78/0x84
[  257.949566]  do_serror+0x0/0x60
[  257.949625]  do_serror+0x3c/0x60
[  257.949684]  __el0_error_handler_common+0x48/0xc0
[  257.949764]  el0t_64_error_handler+0x10/0x20
[  257.949845]  el0t_64_error+0x18c/0x190
[  257.949904] ---[ end trace 0000000000000000 ]---



[-- Attachment #3: fvp-kernel-panic-stable-rc-6.0.txt --]
[-- Type: text/plain, Size: 62610 bytes --]

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd0f0]
[    0.000000] Linux version 6.0.19-rc1 (tuxmake@tuxmake) (aarch64-linux-gnu-gcc (Debian 12.2.0-9) 12.2.0, GNU ld (GNU Binutils for Debian) 2.39) #1 SMP PREEMPT @1673381547
[    0.000000] Machine model: FVP Base RevC
[    0.000000] earlycon: pl11 at MMIO 0x000000001c090000 (options '')
[    0.000000] printk: bootconsole [pl11] enabled
[    0.000000] efi: EFI v2.70 by EDK II
[    0.000000] efi: ACPI 2.0=0xf5e30018 MEMATTR=0xfadaf018 MEMRESERVE=0xf5f8bf18 
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000018000000, size 8 MiB
[    0.000000] OF: reserved mem: initialized node vram@18000000, compatible id shared-dma-pool
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000080000000-0x00000008ffffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x8fff22200-0x8fff24abf]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x00000008ffffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x00000000f59effff]
[    0.000000]   node   0: [mem 0x00000000f59f0000-0x00000000f5a5ffff]
[    0.000000]   node   0: [mem 0x00000000f5a60000-0x00000000f5b4ffff]
[    0.000000]   node   0: [mem 0x00000000f5b50000-0x00000000f5e2ffff]
[    0.000000]   node   0: [mem 0x00000000f5e30000-0x00000000f5e3ffff]
[    0.000000]   node   0: [mem 0x00000000f5e40000-0x00000000f5f7ffff]
[    0.000000]   node   0: [mem 0x00000000f5f80000-0x00000000faf4ffff]
[    0.000000]   node   0: [mem 0x00000000faf50000-0x00000000faf8ffff]
[    0.000000]   node   0: [mem 0x00000000faf90000-0x00000000faf9ffff]
[    0.000000]   node   0: [mem 0x00000000fafa0000-0x00000000fafeffff]
[    0.000000]   node   0: [mem 0x00000000faff0000-0x00000000feffffff]
[    0.000000]   node   0: [mem 0x0000000880000000-0x00000008ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000008ffffffff]
[    0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[    0.000000] cma: Reserved 512 MiB at 0x00000000c0000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 10 pages/cpu s574312 r8192 d72856 u655360
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: Address authentication (IMP DEF algorithm)
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: detected: Virtualization Host Extensions
[    0.000000] CPU features: detected: Hardware dirty bit management
[    0.000000] CPU features: detected: Memory Tagging Extension
[    0.000000] CPU features: detected: Asymmetric MTE Tag Check Fault
[    0.000000] CPU features: detected: Spectre-BHB
[    0.000000] alternatives: patching kernel code
[    0.000000] Fallback order for Node 0: 0 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 65216
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: Image dtb=fvp-base-revc.dtb console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=dhcp
[    0.000000] Unknown kernel command line parameters \"Image dtb=fvp-base-revc.dtb\", will be passed to user space.
[    0.000000] Dentry cache hash table entries: 524288 (order: 6, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 5, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] software IO TLB: area num 8.
[    0.000000] software IO TLB: mapped [mem 0x00000000fb000000-0x00000000ff000000] (64MB)
[    0.000000] Memory: 3481728K/4177920K available (19968K kernel code, 5270K rwdata, 11456K rodata, 12032K init, 1603K bss, 171904K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] ftrace: allocating 65338 entries in 16 pages
[    0.000000] ftrace: allocated 16 pages with 1 groups
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=8.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 224 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x000000002f100000
[    0.000000] ITS [mem 0x2f020000-0x2f03ffff]
[    0.000000] ITS@0x000000002f020000: allocated 8192 Devices @880370000 (indirect, esz 8, psz 64K, shr 1)
[    0.000000] ITS@0x000000002f020000: allocated 8192 Virtual CPUs @880380000 (indirect, esz 8, psz 64K, shr 1)
[    0.000000] ITS@0x000000002f020000: allocated 8192 Interrupt Collections @880390000 (flat, esz 8, psz 64K, shr 1)
[    0.000000] GICv3: using LPI property table @0x00000008803a0000
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x00000008803c0000
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] kfence: initialized - using 33554432 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.000000] timer_sp804: timer clock not found: -517
[    0.000000] timer_sp804: arm,sp804 clock not found: -2
[    0.000000] Failed to initialize '/bus@8000000/motherboard-bus@8000000/iofpga-bus@300000000/timer@110000': -22
[    0.000000] timer_sp804: timer clock not found: -517
[    0.000000] timer_sp804: arm,sp804 clock not found: -2
[    0.000000] Failed to initialize '/bus@8000000/motherboard-bus@8000000/iofpga-bus@300000000/timer@120000': -22
[    0.000000] arch_timer: cp15 timer(s) running at 100.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0x1ffffffffffffff max_cycles: 0x171024e7e0, max_idle_ns: 440795205315 ns
[    0.000002] sched_clock: 57 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
[    0.000929] random: crng init done
[    0.002127] Console: colour dummy device 80x25
[    0.003034] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=400000)
[    0.003280] pid_max: default: 32768 minimum: 301
[    0.004169] LSM: Security Framework initializing
[    0.004883] Mount-cache hash table entries: 8192 (order: 0, 65536 bytes, linear)
[    0.005078] Mountpoint-cache hash table entries: 8192 (order: 0, 65536 bytes, linear)
[    0.013307] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.027394] cblist_init_generic: Setting adjustable number of callback queues.
[    0.027512] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.028798] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.030051] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.032657] rcu: Hierarchical SRCU implementation.
[    0.032816] rcu: 	Max phase no-delay instances is 1000.
[    0.044270] Platform MSI: msi-controller@2f020000 domain created
[    0.045228] PCI/MSI: /interrupt-controller@2f000000/msi-controller@2f020000 domain created
[    0.046342] fsl-mc MSI: msi-controller@2f020000 domain created
[    0.053632] Remapping and enabling EFI services.
[    0.059729] smp: Bringing up secondary CPUs ...
[    0.066301] Detected PIPT I-cache on CPU1
[    0.066615] cacheinfo: Unable to detect cache hierarchy for CPU 1
[    0.066655] GICv3: CPU1: found redistributor 100 region 0:0x000000002f120000
[    0.066710] GICv3: CPU1: using allocated LPI pending table @0x00000008803d0000
[    0.066820] CPU1: Booted secondary processor 0x0000000100 [0x410fd0f0]
[    0.075041] Detected PIPT I-cache on CPU2
[    0.075374] cacheinfo: Unable to detect cache hierarchy for CPU 2
[    0.075416] GICv3: CPU2: found redistributor 200 region 0:0x000000002f140000
[    0.075474] GICv3: CPU2: using allocated LPI pending table @0x00000008803e0000
[    0.075580] CPU2: Booted secondary processor 0x0000000200 [0x410fd0f0]
[    0.083698] Detected PIPT I-cache on CPU3
[    0.084049] cacheinfo: Unable to detect cache hierarchy for CPU 3
[    0.084093] GICv3: CPU3: found redistributor 300 region 0:0x000000002f160000
[    0.084152] GICv3: CPU3: using allocated LPI pending table @0x00000008803f0000
[    0.084258] CPU3: Booted secondary processor 0x0000000300 [0x410fd0f0]
[    0.092605] Detected PIPT I-cache on CPU4
[    0.092975] cacheinfo: Unable to detect cache hierarchy for CPU 4
[    0.093021] GICv3: CPU4: found redistributor 10000 region 0:0x000000002f180000
[    0.093081] GICv3: CPU4: using allocated LPI pending table @0x0000000880400000
[    0.093188] CPU4: Booted secondary processor 0x0000010000 [0x410fd0f0]
[    0.101490] Detected PIPT I-cache on CPU5
[    0.101860] cacheinfo: Unable to detect cache hierarchy for CPU 5
[    0.101927] GICv3: CPU5: found redistributor 10100 region 0:0x000000002f1a0000
[    0.101987] GICv3: CPU5: using allocated LPI pending table @0x0000000880410000
[    0.102095] CPU5: Booted secondary processor 0x0000010100 [0x410fd0f0]
[    0.110225] Detected PIPT I-cache on CPU6
[    0.110619] cacheinfo: Unable to detect cache hierarchy for CPU 6
[    0.110682] GICv3: CPU6: found redistributor 10200 region 0:0x000000002f1c0000
[    0.110743] GICv3: CPU6: using allocated LPI pending table @0x0000000880420000
[    0.110850] CPU6: Booted secondary processor 0x0000010200 [0x410fd0f0]
[    0.119176] Detected PIPT I-cache on CPU7
[    0.119603] cacheinfo: Unable to detect cache hierarchy for CPU 7
[    0.119654] GICv3: CPU7: found redistributor 10300 region 0:0x000000002f1e0000
[    0.119715] GICv3: CPU7: using allocated LPI pending table @0x0000000880430000
[    0.119823] CPU7: Booted secondary processor 0x0000010300 [0x410fd0f0]
[    0.121520] smp: Brought up 1 node, 8 CPUs
[    0.124437] SMP: Total of 8 processors activated.
[    0.124571] CPU features: detected: Branch Target Identification
[    0.124713] CPU features: detected: 32-bit EL0 Support
[    0.124846] CPU features: detected: ARMv8.4 Translation Table Level
[    0.125513] CPU features: detected: Data cache clean to the PoU not required for I/D coherence
[    0.125671] CPU features: detected: Common not Private translations
[    0.125815] CPU features: detected: CRC32 instructions
[    0.125951] CPU features: detected: E0PD
[    0.126079] CPU features: detected: Enhanced Counter Virtualization
[    0.126223] CPU features: detected: Enhanced Privileged Access Never
[    0.126373] CPU features: detected: Generic authentication (IMP DEF algorithm)
[    0.126525] CPU features: detected: RCpc load-acquire (LDAPR)
[    0.126665] CPU features: detected: LSE atomic instructions
[    0.126804] CPU features: detected: Privileged Access Never
[    0.126944] CPU features: detected: RAS Extension Support
[    0.127081] CPU features: detected: Random Number Generator
[    0.127220] CPU features: detected: Speculation barrier (SB)
[    0.127359] CPU features: detected: Stage-2 Force Write-Back
[    0.127499] CPU features: detected: Trap EL0 IMPLEMENTATION DEFINED functionality
[    0.127651] CPU features: detected: TLB range maintenance instructions
[    0.127795] CPU features: detected: WFx with timeout
[    0.127930] CPU features: detected: Scalable Matrix Extension
[    0.128069] CPU features: detected: Scalable Vector Extension
[    0.440805] CPU features: detected CPU5: Activity Monitors Unit (AMU)
[    0.440896] CPU features: detected CPU1: Activity Monitors Unit (AMU)
[    0.440897] CPU features: detected CPU3: Activity Monitors Unit (AMU)
[    0.440897] CPU features: detected CPU2: Activity Monitors Unit (AMU)
[    0.440896] CPU features: detected CPU6: Activity Monitors Unit (AMU)
[    0.440896] CPU features: detected CPU7: Activity Monitors Unit (AMU)
[    0.440896] CPU features: detected CPU0: Activity Monitors Unit (AMU)
[    0.440897] CPU features: detected CPU4: Activity Monitors Unit (AMU)
[    0.441653] SVE: maximum available vector length 64 bytes per vector
[    0.441799] SVE: default vector length 64 bytes per vector
[    0.442012] SME: minimum available vector length 16 bytes per vector
[    0.442153] SME: maximum available vector length 64 bytes per vector
[    0.442295] SME: default vector length 32 bytes per vector
[    0.459258] CPU: All CPU(s) started at EL2
[    0.485269] devtmpfs: initialized
[    0.509174] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.509456] futex hash table entries: 2048 (order: 1, 131072 bytes, linear)
[    0.516993] pinctrl core: initialized pinctrl subsystem
[    0.531919] DMI not present or invalid.
[    0.537269] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.779534] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.782122] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.783587] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.784226] audit: initializing netlink subsys (disabled)
[    0.786230] audit: type=2000 audit(0.768:1): state=initialized audit_enabled=0 res=1
[    0.793842] thermal_sys: Registered thermal governor 'step_wise'
[    0.793922] thermal_sys: Registered thermal governor 'power_allocator'
[    0.794818] cpuidle: using governor menu
[    0.796655] hw-breakpoint: found 16 breakpoint and 16 watchpoint registers.
[    0.798735] ASID allocator initialised with 65536 entries
[    0.816074] Serial: AMBA PL011 UART driver
[    1.014825] 1c090000.serial: ttyAMA0 at MMIO 0x1c090000 (irq = 16, base_baud = 0) is a PL011 rev2
[    1.015130] printk: console [ttyAMA0] enabled
[    1.015130] printk: console [ttyAMA0] enabled
[    1.015321] printk: bootconsole [pl11] disabled
[    1.015321] printk: bootconsole [pl11] disabled
[    1.029537] 1c0a0000.serial: ttyAMA1 at MMIO 0x1c0a0000 (irq = 17, base_baud = 0) is a PL011 rev2
[    1.043610] 1c0b0000.serial: ttyAMA2 at MMIO 0x1c0b0000 (irq = 18, base_baud = 0) is a PL011 rev2
[    1.057699] 1c0c0000.serial: ttyAMA3 at MMIO 0x1c0c0000 (irq = 19, base_baud = 0) is a PL011 rev2
[    1.190512] platform panel: Fixing up cyclic dependency with 1c1f0000.clcd
[    1.215279] KASLR enabled
[    1.329062] HugeTLB: registered 16.0 GiB page size, pre-allocated 0 pages
[    1.329223] HugeTLB: 16320 KiB vmemmap can be freed for a 16.0 GiB page
[    1.329392] HugeTLB: registered 512 MiB page size, pre-allocated 0 pages
[    1.329552] HugeTLB: 448 KiB vmemmap can be freed for a 512 MiB page
[    1.329724] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    1.329884] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    1.341421] cryptd: max_cpu_qlen set to 1000
[    1.356706] ACPI: Interpreter disabled.
[    1.393624] iommu: Default domain type: Translated 
[    1.393770] iommu: DMA domain TLB invalidation policy: strict mode 
[    1.396310] SCSI subsystem initialized
[    1.400110] usbcore: registered new interface driver usbfs
[    1.400570] usbcore: registered new interface driver hub
[    1.401351] usbcore: registered new device driver usb
[    1.415618] mc: Linux media interface: v0.10
[    1.415909] videodev: Linux video capture interface: v2.00
[    1.416294] pps_core: LinuxPPS API ver. 1 registered
[    1.416437] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.416674] PTP clock support registered
[    1.418358] EDAC MC: Ver: 3.0.0
[    1.429874] Registered efivars operations
[    1.444761] FPGA manager framework
[    1.445514] Advanced Linux Sound Architecture Driver Initialized.
[    1.451903] vgaarb: loaded
[    1.454887] clocksource: Switched to clocksource arch_sys_counter
[    1.461184] VFS: Disk quotas dquot_6.6.0
[    1.462018] VFS: Dquot-cache hash table entries: 8192 (order 0, 65536 bytes)
[    1.464734] pnp: PnP ACPI: disabled
[    1.532589] NET: Registered PF_INET protocol family
[    1.533741] IP idents hash table entries: 65536 (order: 3, 524288 bytes, linear)
[    1.588517] tcp_listen_portaddr_hash hash table entries: 4096 (order: 0, 65536 bytes, linear)
[    1.589273] Table-perturb hash table entries: 65536 (order: 2, 262144 bytes, linear)
[    1.589498] TCP established hash table entries: 32768 (order: 2, 262144 bytes, linear)
[    1.592398] TCP bind hash table entries: 32768 (order: 3, 524288 bytes, linear)
[    1.596237] TCP: Hash tables configured (established 32768 bind 32768)
[    1.597977] MPTCP token hash table entries: 4096 (order: 0, 98304 bytes, linear)
[    1.598967] UDP hash table entries: 2048 (order: 0, 65536 bytes, linear)
[    1.599717] UDP-Lite hash table entries: 2048 (order: 0, 65536 bytes, linear)
[    1.601621] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    1.605152] RPC: Registered named UNIX socket transport module.
[    1.605308] RPC: Registered udp transport module.
[    1.605455] RPC: Registered tcp transport module.
[    1.605590] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.605806] PCI: CLS 0 bytes, default 64
[    1.620933] hw perfevents: enabled with armv8_pmuv3 PMU driver, 9 counters available
[    1.622844] kvm [1]: IPA Size Limit: 48 bits
[    1.623156] [Firmware Bug]: CPU interface incapable of MMIO access
[    1.623303] kvm [1]: disabling GICv2 emulation
[    1.623664] kvm [1]: GIC system register CPU interface enabled
[    1.625905] kvm [1]: vgic interrupt IRQ9
[    1.628612] kvm [1]: VHE mode initialized successfully
[    1.644626] Initialise system trusted keyrings
[    1.646150] workingset: timestamp_bits=42 max_order=16 bucket_order=0
[    1.717887] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    1.723534] NFS: Registering the id_resolver key type
[    1.723841] Key type id_resolver registered
[    1.723979] Key type id_legacy registered
[    1.724718] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.724884] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    1.726039] 9p: Installing v9fs 9p2000 file system support
[    2.092690] NET: Registered PF_ALG protocol family
[    2.092849] Key type asymmetric registered
[    2.092988] Asymmetric key parser 'x509' registered
[    2.093517] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    2.093684] io scheduler mq-deadline registered
[    2.093841] io scheduler kyber registered
[    2.300272] pci-host-generic 40000000.pci: host bridge /pci@40000000 ranges:
[    2.300896] pci-host-generic 40000000.pci:      MEM 0x0050000000..0x005fffffff -> 0x0050000000
[    2.301902] pci-host-generic 40000000.pci: ECAM at [mem 0x40000000-0x4fffffff] for [bus 00-01]
[    2.303113] pci-host-generic 40000000.pci: PCI host bridge to bus 0000:00
[    2.303290] pci_bus 0000:00: root bus resource [bus 00-01]
[    2.303485] pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
[    2.304085] pci 0000:00:00.0: [1af4:1001] type 00 class 0x018000
[    2.304558] pci 0000:00:00.0: reg 0x10: [mem 0x5000f000-0x5000ffff]
[    2.305006] pci 0000:00:00.0: reg 0x18: [mem 0x5000e000-0x5000efff]
[    2.305453] pci 0000:00:00.0: reg 0x20: [mem 0x5000d000-0x5000dfff]
[    2.306001] pci 0000:00:00.0: enabling Extended Tags
[    2.307530] pci 0000:00:00.0: PME# supported from D3hot
[    2.310123] pci 0000:00:02.0: [1af4:1001] type 00 class 0x018000
[    2.310597] pci 0000:00:02.0: reg 0x10: [mem 0x5000c000-0x5000cfff]
[    2.311100] pci 0000:00:02.0: reg 0x18: [mem 0x5000b000-0x5000bfff]
[    2.311548] pci 0000:00:02.0: reg 0x20: [mem 0x5000a000-0x5000afff]
[    2.312096] pci 0000:00:02.0: enabling Extended Tags
[    2.313562] pci 0000:00:02.0: PME# supported from D3hot
[    2.315967] pci 0000:00:03.0: [0abc:aced] type 00 class 0x010601
[    2.316441] pci 0000:00:03.0: reg 0x10: [mem 0x50006000-0x50007fff]
[    2.316762] pci 0000:00:03.0: reg 0x14: [mem 0x50004000-0x50005fff]
[    2.317084] pci 0000:00:03.0: reg 0x18: [mem 0x50009000-0x50009fff]
[    2.317406] pci 0000:00:03.0: reg 0x1c: [mem 0x50002000-0x50003fff]
[    2.317727] pci 0000:00:03.0: reg 0x20: [mem 0x50008000-0x50008fff]
[    2.318049] pci 0000:00:03.0: reg 0x24: [mem 0x50000000-0x50001fff]
[    2.319308] pci 0000:00:03.0: PME# supported from D3hot
[    2.326561] pci 0000:00:03.0: BAR 0: assigned [mem 0x50000000-0x50001fff]
[    2.326881] pci 0000:00:03.0: BAR 1: assigned [mem 0x50002000-0x50003fff]
[    2.327146] pci 0000:00:03.0: BAR 3: assigned [mem 0x50004000-0x50005fff]
[    2.327411] pci 0000:00:03.0: BAR 5: assigned [mem 0x50006000-0x50007fff]
[    2.327676] pci 0000:00:00.0: BAR 0: assigned [mem 0x50008000-0x50008fff]
[    2.327941] pci 0000:00:00.0: BAR 2: assigned [mem 0x50009000-0x50009fff]
[    2.328199] pci 0000:00:00.0: BAR 4: assigned [mem 0x5000a000-0x5000afff]
[    2.328473] pci 0000:00:02.0: BAR 0: assigned [mem 0x5000b000-0x5000bfff]
[    2.328731] pci 0000:00:02.0: BAR 2: assigned [mem 0x5000c000-0x5000cfff]
[    2.329005] pci 0000:00:02.0: BAR 4: assigned [mem 0x5000d000-0x5000dfff]
[    2.329272] pci 0000:00:03.0: BAR 2: assigned [mem 0x5000e000-0x5000efff]
[    2.329539] pci 0000:00:03.0: BAR 4: assigned [mem 0x5000f000-0x5000ffff]
[    2.361084] EINJ: ACPI disabled.
[    2.682878] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    2.724716] SuperH (H)SCI(F) driver initialized
[    2.731743] msm_serial: driver initialized
[    2.756131] arm-smmu-v3 2b400000.iommu: command queue size <= 64 entries not supported
[    2.763529] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    2.840207] loop: module loaded
[    2.841065] virtio_blk virtio0: 1/0/0 default/read/poll queues
[    2.848449] virtio_blk virtio0: [vda] 3351968 512-byte logical blocks (1.72 GB/1.60 GiB)
[    2.873034] basic-mmio-gpio: Failed to locate of_node [id: -2]
[    2.882920] basic-mmio-gpio: Failed to locate of_node [id: -2]
[    2.892670] basic-mmio-gpio: Failed to locate of_node [id: -2]
[    3.119149] megasas: 07.719.03.00-rc1
[    3.145571] physmap-flash 8000000.flash: physmap platform flash device: [mem 0x08000000-0x0bffffff]
[    3.145824] 8000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x000018
[    3.146052] Intel/Sharp Extended Query Table at 0x0031
[    3.146219] Intel/Sharp Extended Query Table at 0x0031
[    3.146385] Using buffer write method
[    3.147090] physmap-flash 8000000.flash: physmap platform flash device: [mem 0x0c000000-0x0fffffff]
[    3.147324] 8000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x000018
[    3.147552] Intel/Sharp Extended Query Table at 0x0031
[    3.147719] Intel/Sharp Extended Query Table at 0x0031
[    3.147886] Using buffer write method
[    3.148127] Concatenating MTD devices:
[    3.148256] (0): \"8000000.flash\"
[    3.148393] (1): \"8000000.flash\"
[    3.148530] into device \"8000000.flash\"
[    3.288683] virtio_net: probe of virtio2 failed with error -2
[    3.303553] thunder_xcv, ver 1.0
[    3.304083] thunder_bgx, ver 1.0
[    3.304614] nicpf, ver 1.0
[    3.328892] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
[    3.329058] hns3: Copyright (c) 2017 Huawei Corporation.
[    3.329734] hclge is initializing
[    3.329922] e1000: Intel(R) PRO/1000 Network Driver
[    3.330068] e1000: Copyright (c) 1999-2006 Intel Corporation.
[    3.330661] e1000e: Intel(R) PRO/1000 Network Driver
[    3.331113] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    3.331720] igb: Intel(R) Gigabit Ethernet Network Driver
[    3.331868] igb: Copyright (c) 2007-2014 Intel Corporation.
[    3.332395] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    3.332548] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    3.339140] sky2: driver version 1.30
[    3.339678] QLogic FastLinQ 4xxxx Core Module qed
[    3.339831] qede init: QLogic FastLinQ 4xxxx Ethernet Driver qede
[    3.349919] smc91x 1a000000.ethernet (unnamed net_device) (uninitialized): smc91x: IOADDR 00000000bd814b1b doesn't match configuration (300).
[    3.350207] smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
[    3.369490] smc91x 1a000000.ethernet eth0: SMC91C11xFD (rev 1) at 00000000bd814b1b IRQ 26
[    3.369698] 
[    3.369829] smc91x 1a000000.ethernet eth0: Ethernet addr: 00:02:f7:ef:59:6c
[    3.386244] usbcore: registered new interface driver asix
[    3.386654] usbcore: registered new interface driver ax88179_178a
[    3.388119] VFIO - User Level meta-driver version: 0.3
[    3.422551] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.422849] ehci-pci: EHCI PCI platform driver
[    3.423361] ehci-platform: EHCI generic platform driver
[    3.425555] ehci-orion: EHCI orion driver
[    3.427673] ehci-exynos: EHCI Exynos driver
[    3.429683] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    3.429929] ohci-pci: OHCI PCI platform driver
[    3.430440] ohci-platform: OHCI generic platform driver
[    3.432620] ohci-exynos: OHCI Exynos driver
[    3.441874] usbcore: registered new interface driver usb-storage
[    3.506001] rtc-efi rtc-efi.0: registered as rtc0
[    3.506881] rtc-efi rtc-efi.0: setting system clock to 2023-01-10T23:11:18 UTC (1673392278)
[    3.523039] rtc-pl031 1c170000.rtc: registered as rtc1
[    3.534535] i2c_dev: i2c /dev entries driver
[    3.625165] sp805-wdt 1c0f0000.watchdog: registration successful
[    3.696937] mmci-pl18x 1c050000.mmc: Got CD GPIO
[    3.697418] mmci-pl18x 1c050000.mmc: Got WP GPIO
[    3.702896] mmci-pl18x 1c050000.mmc: mmc0: PL180 manf 41 rev0 at 0x1c050000 irq 31,32 (pio)
[    3.731704] sdhci: Secure Digital Host Controller Interface driver
[    3.731850] sdhci: Copyright(c) Pierre Ossman
[    3.744754] Synopsys Designware Multimedia Card Interface Driver
[    3.764159] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.801067] input: AT Raw Set 2 keyboard as /devices/platform/bus@8000000/bus@8000000:motherboard-bus@8000000/bus@8000000:motherboard-bus@8000000:iofpga-bus@300000000/1c060000.kmi/serio0/input/input0
[    3.804112] ledtrig-cpu: registered to indicate activity on CPUs
[    3.835023] pstore: Registered efi as persistent store backend
[    3.840904] SMCCC: SOC_ID: ID = jep106:043b:0000 Revision = 0x00000002
[    3.886235] usbcore: registered new interface driver usbhid
[    3.886386] usbhid: USB HID core driver
[    3.948058]  cs_system_cfg: CoreSight Configuration manager initialised
[    4.026678] NET: Registered PF_INET6 protocol family
[    4.037478] Segment Routing with IPv6
[    4.037787] In-situ OAM (IOAM) with IPv6
[    4.038368] NET: Registered PF_PACKET protocol family
[    4.039817] 9pnet: Installing 9P2000 support
[    4.046909] Key type dns_resolver registered
[    4.060910] registered taskstats version 1
[    4.061168] Loading compiled-in X.509 certificates
[    4.063705] pstore: Using crash dump compression: deflate
[    6.067319] input: PS/2 Generic Mouse as /devices/platform/bus@8000000/bus@8000000:motherboard-bus@8000000/bus@8000000:motherboard-bus@8000000:iofpga-bus@300000000/1c070000.kmi/serio1/input/input2
[    6.133361] smc91x 1a000000.ethernet eth0: link up, 10Mbps, half-duplex, lpa 0x0000
[    6.158998] Sending DHCP requests ., OK
[    6.175623] IP-Config: Got DHCP answer from 172.20.51.254, my address is 172.20.51.1
[    6.175815] IP-Config: Complete:
[    6.175937]      device=eth0, hwaddr=00:02:f7:ef:59:6c, ipaddr=172.20.51.1, mask=255.255.255.0, gw=172.20.51.254
[    6.176161]      host=172.20.51.1, domain=, nis-domain=(none)
[    6.176317]      bootserver=172.20.51.254, rootserver=172.20.51.254, rootpath=
[    6.176420]      nameserver0=172.20.51.254, nameserver1=172.20.51.252
[   11.380869] ALSA device list:
[   11.381010]   No soundcards found.
[   11.382484] uart-pl011 1c090000.serial: no DMA platform data
[   11.404413] EXT4-fs (vda): mounted filesystem with ordered data mode. Quota mode: none.
[   11.404820] VFS: Mounted root (ext4 filesystem) readonly on device 254:0.
[   11.406031] devtmpfs: mounted
[   11.536992] Freeing unused kernel memory: 12032K
[   11.537600] Run /sbin/init as init process
[   11.803115] systemd[1]: systemd 250.5+ running in system mode (-PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
[   11.829653] systemd[1]: Detected architecture arm64.

Welcome to [1mLinux-Kernel-Functional-Testing nodistro.0[0m!

[   11.942180] systemd[1]: Hostname set to <fvp-base>.
[   11.948953] systemd[1]: Initializing machine ID from random generator.
[   11.950246] systemd[1]: Installed transient /etc/machine-id file.
[   14.771490] systemd[1]: Queued start job for default target Multi-User System.
[   15.472103] systemd[1]: Created slice Slice /system/getty.
[[0;32m  OK  [0m] Created slice [0;1;39mSlice /system/getty[0m.
[   15.493603] systemd[1]: Created slice Slice /system/modprobe.
[[0;32m  OK  [0m] Created slice [0;1;39mSlice /system/modprobe[0m.
[   15.514040] systemd[1]: Created slice Slice /system/serial-getty.
[[0;32m  OK  [0m] Created slice [0;1;39mSlice /system/serial-getty[0m.
[   15.531454] systemd[1]: Created slice User and Session Slice.
[[0;32m  OK  [0m] Created slice [0;1;39mUser and Session Slice[0m.
[   15.536311] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[[0;32m  OK  [0m] Started [0;1;39mDispatch Password …ts to Console Directory Watch[0m.
[   15.540907] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[[0;32m  OK  [0m] Started [0;1;39mForward Password R…uests to Wall Directory Watch[0m.
[   15.544741] systemd[1]: Reached target Path Units.
[[0;32m  OK  [0m] Reached target [0;1;39mPath Units[0m.
[   15.547143] systemd[1]: Reached target Remote File Systems.
[[0;32m  OK  [0m] Reached target [0;1;39mRemote File Systems[0m.
[   15.549233] systemd[1]: Reached target Slice Units.
[[0;32m  OK  [0m] Reached target [0;1;39mSlice Units[0m.
[   15.551984] systemd[1]: Reached target Swaps.
[[0;32m  OK  [0m] Reached target [0;1;39mSwaps[0m.
[   15.719181] systemd[1]: Listening on RPCbind Server Activation Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mRPCbind Server Activation Socket[0m.
[   15.721517] systemd[1]: Reached target RPC Port Mapper.
[[0;32m  OK  [0m] Reached target [0;1;39mRPC Port Mapper[0m.
[   15.729020] systemd[1]: Listening on Syslog Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mSyslog Socket[0m.
[   15.733015] systemd[1]: Listening on initctl Compatibility Named Pipe.
[[0;32m  OK  [0m] Listening on [0;1;39minitctl Compatibility Named Pipe[0m.
[   15.742725] systemd[1]: Listening on Journal Audit Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mJournal Audit Socket[0m.
[   15.748752] systemd[1]: Listening on Journal Socket (/dev/log).
[[0;32m  OK  [0m] Listening on [0;1;39mJournal Socket (/dev/log)[0m.
[   15.756494] systemd[1]: Listening on Journal Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mJournal Socket[0m.
[   15.765743] systemd[1]: Listening on Network Service Netlink Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mNetwork Service Netlink Socket[0m.
[   15.783534] systemd[1]: Listening on udev Control Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mudev Control Socket[0m.
[   15.789563] systemd[1]: Listening on udev Kernel Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mudev Kernel Socket[0m.
[   15.796072] systemd[1]: Listening on User Database Manager Socket.
[[0;32m  OK  [0m] Listening on [0;1;39mUser Database Manager Socket[0m.
[   15.849999] systemd[1]: Mounting Huge Pages File System...
         Mounting [0;1;39mHuge Pages File System[0m...
[   15.894540] systemd[1]: Mounting POSIX Message Queue File System...
         Mounting [0;1;39mPOSIX Message Queue File System[0m...
[   15.930638] systemd[1]: Mounting Kernel Debug File System...
         Mounting [0;1;39mKernel Debug File System[0m...
[   15.968195] systemd[1]: Mounting Kernel Trace File System...
         Mounting [0;1;39mKernel Trace File System[0m...
[   16.006468] systemd[1]: Mounting Temporary Directory /tmp...
         Mounting [0;1;39mTemporary Directory /tmp[0m...
[   16.048053] systemd[1]: Starting Create List of Static Device Nodes...
         Starting [0;1;39mCreate List of Static Device Nodes[0m...
[   16.094070] systemd[1]: Starting Load Kernel Module configfs...
         Starting [0;1;39mLoad Kernel Module configfs[0m...
[   16.130092] systemd[1]: Starting Load Kernel Module drm...
         Starting [0;1;39mLoad Kernel Module drm[0m...
[   16.167201] systemd[1]: Starting Load Kernel Module fuse...
         Starting [0;1;39mLoad Kernel Module fuse[0m...
[   16.205087] systemd[1]: Starting RPC Bind...
         Starting [0;1;39mRPC Bind[0m...
[   16.240824] systemd[1]: Starting File System Check on Root Device...
         Starting [0;1;39mFile System Check on Root Device[0m...
[   16.258598] fuse: init (API version 7.36)
[   16.322294] systemd[1]: Starting Journal Service...
         Starting [0;1;39mJournal Service[0m...
[   16.334004] systemd[1]: Load Kernel Modules was skipped because all trigger condition checks failed.
[   16.368126] systemd[1]: Starting Generate network units from Kernel command line...
         Starting [0;1;39mGenerate network …ts from Kernel command line[0m...
[   16.404520] systemd[1]: Starting Apply Kernel Variables...
         Starting [0;1;39mApply Kernel Variables[0m...
[   16.439649] systemd[1]: Starting Coldplug All udev Devices...
         Starting [0;1;39mColdplug All udev Devices[0m...
[   16.542554] systemd[1]: Started RPC Bind.
[[0;32m  OK  [0m] Started [0;1;39mRPC Bind[0m.
[   16.549321] systemd[1]: Mounted Huge Pages File System.
[[0;32m  OK  [0m] Mounted [0;1;39mHuge Pages File System[0m.
[   16.555537] systemd[1]: Mounted POSIX Message Queue File System.
[[0;32m  OK  [0m] Mounted [0;1;39mPOSIX Message Queue File System[0m.
[   16.562251] systemd[1]: Mounted Kernel Debug File System.
[[0;32m  OK  [0m] Mounted [0;1;39mKernel Debug File System[0m.
[   16.568479] systemd[1]: Mounted Kernel Trace File System.
[[0;32m  OK  [0m] Mounted [0;1;39mKernel Trace File System[0m.
[   16.574661] systemd[1]: Mounted Temporary Directory /tmp.
[[0;32m  OK  [0m] Mounted [0;1;39mTemporary Directory /tmp[0m.
[   16.594070] systemd[1]: Finished Create List of Static Device Nodes.
[[0;32m  OK  [0m] Finished [0;1;39mCreate List of Static Device Nodes[0m.
[   16.608860] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[   16.621851] systemd[1]: Finished Load Kernel Module configfs.
[[0;32m  OK  [0m] Finished [0;1;39mLoad Kernel Module configfs[0m.
[   16.640429] systemd[1]: modprobe@drm.service: Deactivated successfully.
[   16.656122] systemd[1]: Finished Load Kernel Module drm.
[[0;32m  OK  [0m] Finished [0;1;39mLoad Kernel Module drm[0m.
[   16.670607] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[   16.682311] systemd[1]: Finished Load Kernel Module fuse.
[[0;32m  OK  [0m] Finished [0;1;39mLoad Kernel Module fuse[0m.
[   16.707660] systemd[1]: Finished File System Check on Root Device.
[[0;32m  OK  [0m] Finished [0;1;39mFile System Check on Root Device[0m.
[   16.730312] systemd[1]: Finished Generate network units from Kernel command line.
[[0;32m  OK  [0m] Finished [0;1;39mGenerate network units from Kernel command line[0m.
[   16.755579] systemd[1]: Finished Apply Kernel Variables.
[[0;32m  OK  [0m] Finished [0;1;39mApply Kernel Variables[0m.
[   16.765180] systemd[1]: Reached target Preparation for Network.
[[0;32m  OK  [0m] Reached target [0;1;39mPreparation for Network[0m.
[   16.830187] systemd[1]: Mounting FUSE Control File System...
         Mounting [0;1;39mFUSE Control File System[0m...
[   16.867313] systemd[1]: Mounting Kernel Configuration File System...
         Mounting [0;1;39mKernel Configuration File System[0m...
[   16.902373] systemd[1]: Starting Remount Root and Kernel File Systems...
         Starting [0;1;39mRemount Root and Kernel File Systems[0m...
[   16.960124] systemd[1]: Mounted FUSE Control File System.
[[0;32m  OK  [0m] Mounted [0;1;39mFUSE Control File System[0m.
[   16.966976] systemd[1]: Mounted Kernel Configuration File System.
[[0;32m  OK  [0m] Mounted [0;1;39mKernel Configuration File System[0m.
[   17.067335] EXT4-fs (vda): re-mounted. Quota mode: none.
[   17.118003] systemd[1]: Finished Remount Root and Kernel File Systems.
[[0;32m  OK  [0m] Finished [0;1;39mRemount Root and Kernel File Systems[0m.
[   17.129995] systemd[1]: Rebuild Hardware Database was skipped because all trigger condition checks failed.
[   17.132131] systemd[1]: Platform Persistent Storage Archival was skipped because of a failed condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[   17.199577] systemd[1]: Starting Create System Users...
         Starting [0;1;39mCreate System Users[0m...
[   17.514858] systemd[1]: Finished Create System Users.
[[0;32m  OK  [0m] Finished [0;1;39mCreate System Users[0m.
[   17.579563] systemd[1]: Starting Create Static Device Nodes in /dev...
         Starting [0;1;39mCreate Static Device Nodes in /dev[0m...
[   17.831729] systemd[1]: Finished Create Static Device Nodes in /dev.
[[0;32m  OK  [0m] Finished [0;1;39mCreate Static Device Nodes in /dev[0m.
[   17.837220] systemd[1]: Reached target Preparation for Local File Systems.
[[0;32m  OK  [0m] Reached target [0;1;39mPreparation for Local File Systems[0m.
[   17.910118] systemd[1]: Mounting /var/volatile...
         Mounting [0;1;39m/var/volatile[0m...
[   17.966414] audit: type=1334 audit(1673392292.956:2): prog-id=5 op=LOAD
[   17.968456] audit: type=1334 audit(1673392292.960:3): prog-id=6 op=LOAD
[   17.979729] systemd[1]: Starting Rule-based Manager for Device Events and Files...
         Starting [0;1;39mRule-based Manage…for Device Events and Files[0m...
[   18.012981] systemd[1]: Started Journal Service.
[[0;32m  OK  [0m] Started [0;1;39mJournal Service[0m.
[[0;32m  OK  [0m] Mounted [0;1;39m/var/volatile[0m.
         Starting [0;1;39mFlush Journal to Persistent Storage[0m...
         Starting [0;1;39mLoad/Save Random Seed[0m...
[[0;32m  OK  [0m] Reached target [0;1;39mLocal File Systems[0m.
         Starting [0;1;39mRebuild Dynamic Linker Cache[0m...
[   18.261258] systemd-journald[241]: Received client request to flush runtime journal.
[[0;32m  OK  [0m] Finished [0;1;39mFlush Journal to Persistent Storage[0m.
         Starting [0;1;39mCreate Volatile Files and Directories[0m...
[[0;32m  OK  [0m] Finished [0;1;39mLoad/Save Random Seed[0m.
         Starting [0;1;39mCommit a transient machine-id on disk[0m...
[[0;32m  OK  [0m] Finished [0;1;39mRebuild Dynamic Linker Cache[0m.
[[0;32m  OK  [0m] Finished [0;1;39mCommit a transient machine-id on disk[0m.
[[0;32m  OK  [0m] Finished [0;1;39mCreate Volatile Files and Directories[0m.
         Starting [0;1;39mRebuild Journal Catalog[0m...
         Starting [0;1;39mNetwork Time Synchronization[0m...
         Starting [0;1;39mRecord System Boot/Shutdown in UTMP[0m...
[[0;32m  OK  [0m] Started [0;1;39mRule-based Manager for Device Events and Files[0m.
         Starting [0;1;39mNetwork Configuration[0m...
[[0;32m  OK  [0m] Finished [0;1;39mRecord System Boot/Shutdown in UTMP[0m.
[[0;32m  OK  [0m] Finished [0;1;39mRebuild Journal Catalog[0m.
         Starting [0;1;39mUpdate is Completed[0m...
[[0;32m  OK  [0m] Finished [0;1;39mUpdate is Completed[0m.
[[0;32m  OK  [0m] Listening on [0;1;39mLoad/Save RF …itch Status /dev/rfkill Watch[0m.
[   21.184668] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   21.236623] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   21.237435] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[   21.237662] cfg80211: failed to load regulatory.db
[[0;32m  OK  [0m] Started [0;1;39mNetwork Configuration[0m.
[   21.499904] virtio-pci 0000:00:00.0: deferred probe timeout, ignoring dependency
[   21.503149] virtio-pci 0000:00:00.0: enabling device (0000 -> 0002)
[   21.503536] virtio-pci 0000:00:00.0: virtio_pci: leaving for legacy driver
[   21.506503] virtio_blk virtio3: 1/0/0 default/read/poll queues
[   21.511121] virtio_blk virtio3: [vdb] 0 512-byte logical blocks (0 B/0 B)
[   21.525987] virtio-pci 0000:00:02.0: deferred probe timeout, ignoring dependency
[   21.526903] virtio-pci 0000:00:02.0: enabling device (0000 -> 0002)
[   21.527290] virtio-pci 0000:00:02.0: virtio_pci: leaving for legacy driver
[   21.529157] virtio_blk virtio4: 1/0/0 default/read/poll queues
[   21.533628] virtio_blk virtio4: [vdc] 0 512-byte logical blocks (0 B/0 B)
[   21.554923] ahci 0000:00:03.0: deferred probe timeout, ignoring dependency
[   21.555844] ahci 0000:00:03.0: enabling device (0000 -> 0002)
[   21.563215] ahci 0000:00:03.0: AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
[   21.563450] ahci 0000:00:03.0: flags: 64bit ncq only 
[   21.575627] scsi host0: ahci
[   21.582422] ata1: SATA max UDMA/133 abar m8192@0x50006000 port 0x50006100 irq 39
         Starting [0;1;39mNetwork Name Resolution[0m...
[   21.895515] ata1: SATA link down (SStatus 0 SControl 300)
[[0;32m  OK  [0m] Started [0;1;39mNetwork Time Synchronization[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mSystem Time Set[0m.
[[0m[0;31m*     [0m] (1 of 2) A start job is running for…g All udev Devices (9s / no limit)
M[K[[0;32m  OK  [0m] Started [0;1;39mNetwork Name Resolution[0m.
[K[[0;32m  OK  [0m] Reached target [0;1;39mNetwork[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mHost and Network Name Lookups[0m.
[[0;32m  OK  [0m] Finished [0;1;39mColdplug All udev Devices[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mSystem Initialization[0m.
[[0;32m  OK  [0m] Started [0;1;39mDaily rotation of log files[0m.
[[0;32m  OK  [0m] Started [0;1;39mDaily Cleanup of Temporary Directories[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mTimer Units[0m.
[[0;32m  OK  [0m] Listening on [0;1;39mAvahi mDNS/DNS-SD Stack Activation Socket[0m.
[[0;32m  OK  [0m] Listening on [0;1;39mD-Bus System Message Bus Socket[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mSocket Units[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mBasic System[0m.
[   25.815104] panel-simple panel: supply power not found, using dummy regulator
[   25.833540] panel-simple panel: Specify missing connector_type
         Starting [0;1;39mAvahi mDNS/DNS-SD Stack[0m...
[[0;32m  OK  [0m] Started [0;1;39mKernel Logging Service[0m.
[[0;32m  OK  [0m] Started [0;1;39mSystem Logging Service[0m.
[[0;32m  OK  [0m] Started [0;1;39mPeriodic Command Scheduler[0m.
         Starting [0;1;39mD-Bus System Message Bus[0m...
[[0;32m  OK  [0m] Started [0;1;39mGetty on tty1[0m.
[[0;32m  OK  [0m] Started [0;1;39mSerial Getty on ttyAMA0[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mLogin Prompts[0m.
[   26.204981] drm-clcd-pl111 1c1f0000.clcd: assigned reserved memory node vram@18000000
[   26.205168] drm-clcd-pl111 1c1f0000.clcd: using device-specific reserved memory
[   26.205372] drm-clcd-pl111 1c1f0000.clcd: no max memory bandwidth specified, assume unlimited
[   26.207569] drm-clcd-pl111 1c1f0000.clcd: DVI muxed to motherboard CLCD
[   26.224761] drm-clcd-pl111 1c1f0000.clcd: initializing Versatile Express PL111
[   26.226439] drm-clcd-pl111 1c1f0000.clcd: found panel on endpoint 0
[   26.255288] audit: type=1334 audit(1673392301.244:4): prog-id=7 op=LOAD
[   26.255624] audit: type=1334 audit(1673392301.244:5): prog-id=8 op=LOAD
[   26.289947] [drm] Initialized pl111 1.0.0 20170317 for 1c1f0000.clcd on minor 0
         Starting [0;1;39mUser Login Management[0m...
[[0;32m  OK  [0m] Started [0;1;39mD-Bus System Message Bus[0m.
[   26.759647] Console: switching to colour frame buffer device 128x48
[   26.800656] drm-clcd-pl111 1c1f0000.clcd: [drm] fb0: pl111drmfb frame buffer device
[[0;32m  OK  [0m] Started [0;1;39mAvahi mDNS/DNS-SD Stack[0m.
[[0;32m  OK  [0m] Started [0;1;39mUser Login Management[0m.
[[0;32m  OK  [0m] Reached target [0;1;39mMulti-User System[0m.
         Starting [0;1;39mRecord Runlevel Change in UTMP[0m...
[[0;32m  OK  [0m] Finished [0;1;39mRecord Runlevel Change in UTMP[0m.

Linux-Kernel-Functional-Testing nodistro.0 fvp-base ttyAMA0

fvp-base login: root
root
7[r[999;999H[6nroot@fvp-base:~# 

root@fvp-base:~# #
#
root@fvp-base:~# export SHELL=/bin/sh
export SHELL=/bin/sh
root@fvp-base:~# . /lava-1/environment
. /lava-1/environment
root@fvp-base:~# /lava-1/bin/lava-test-runner /lava-1/0
/lava-1/bin/lava-test-runner /lava-1/[   89.499755] systemd-journald[241]: Time jumped backwards, rotating.
0
+ export TESTRUN_ID=0_ltp-mm
+ TESTRUN_ID=0_ltp-mm
+ cd /lava-1/0/tests/0_ltp-mm
++ cat uuid
+ UUID=1_1.1.3.1
+ set +x
[   89.933008] <LAVA_SIGNAL_STARTRUN 0_ltp-mm 1_1.1.3.1>
+ cd ./automated/linux/ltp/
\a
Broadcast message from systemd-journald@fvp-base (Tue 2023-01-10 23:19:02 UTC):

kernel[327]: [   89.933008] <LAVA_SIGNAL_STARTRUN 0_ltp-mm 1_1.1.3.1>

+ ./ltp.sh -T mm -s true -v '' -M 5 -R root -b '' -d /scratch -g '' -e production -i /opt/ltp/ -S skipfile-lkft.yaml -p '' -u '' -t false -n 6 -c 4
+ . ../../lib/sh-test-lib
++ LANG=C
++ export LANG
++ export PATH=/lava-1/0/../bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/sbin:/usr/sbin:/usr/local/sbin
++ PATH=/lava-1/0/../bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/sbin:/usr/sbin:/usr/local/sbin
++ kernel_config=
++ pwd
+ OUTPUT=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ RESULT_FILE=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/result.txt
++ readlink -f ./ltp.sh
+ SCRIPT=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/ltp.sh
++ dirname /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/ltp.sh
+ SCRIPTPATH=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp
+ echo 'Script path is: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp'
Script path is: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp
+ TST_CMDFILES=
+ SKIPFILE=
+ SKIPFILE_YAML=
+ BOARD=
+ BRANCH=
+ ENVIRONMENT=
+ LTP_VERSION=20180926
+ TEST_PROGRAM=ltp
+ TEST_GIT_URL=
++ pwd
+ TEST_DIR=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/ltp
+ BUILD_FROM_TAR=false
+ SHARD_NUMBER=1
+ SHARD_INDEX=1
+ LTP_TMPDIR=/ltp-tmp
+ LTP_INSTALL_PATH=/opt/ltp
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ TST_CMDFILES=mm
++ echo mm
++ sed 's,\/,_,'
+ LOG_FILE=mm
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ SKIP_INSTALL=true
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ LTP_VERSION=
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export LTP_TIMEOUT_MUL=5
+ LTP_TIMEOUT_MUL=5
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export PASSWD=root
+ PASSWD=root
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export BOARD=
+ BOARD=
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export LTP_TMPDIR=/scratch
+ LTP_TMPDIR=/scratch
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export BRANCH=
+ BRANCH=
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export ENVIRONMENT=production
+ ENVIRONMENT=production
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ export LTP_INSTALL_PATH=/opt/ltp/
+ LTP_INSTALL_PATH=/opt/ltp/
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ '[' -z skipfile-lkft.yaml ']'
+ '[' yaml = yaml ']'
+ SKIPFILE_YAML=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ [[ '' != '' ]]
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ [[ '' != '' ]]
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ BUILD_FROM_TAR=false
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ SHARD_NUMBER=6
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ case \"$arg\" in
+ SHARD_INDEX=4
+ getopts M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n: arg
+ TEST_TARFILE=https://github.com/linux-test-project/ltp/releases/download//ltp-full-.tar.xz
+ '[' -n /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml ']'
+ export SKIPFILE_PATH=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
+ SKIPFILE_PATH=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
+ generate_skipfile
+ info_msg 'Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml'
+ local 'msg=Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml'
+ '[' -z 'Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml' ']'
+ printf 'INFO: %s\n' 'Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml'
INFO: Generating a skipfile based on /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml
+ detect_abi
++ uname -m
+ abi=aarch64
+ case \"${abi}\" in
+ abi=arm64
+ local SKIPGEN_ARGS=
+ test -n ''
+ test -n ''
+ test -n production
+ SKIPGEN_ARGS=' --environment production'
+ ../../bin/arm64/skipgen --environment production /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/skipfile-lkft.yaml
+ test 0 -eq 0
+ info_msg 'Using the following generated skipfile contents (until EOF):'
+ local 'msg=Using the following generated skipfile contents (until EOF):'
+ '[' -z 'Using the following generated skipfile contents (until EOF):' ']'
+ printf 'INFO: %s\n' 'Using the following generated skipfile contents (until EOF):'
INFO: Using the following generated skipfile contents (until EOF):
+ cat /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
bind06
cve-2018-18559
dio10
dio12
dio13
dio14
dio15
dio16
dio17
dio18
dio19
dio20
dio21
dio22
dio23
dio24
dio25
dio26
dio27
dio28
dio29
dio30
fanotify07
fanotify08
fanotify09
fork13
ftrace_stress_test.sh
futex_wake04
gf01
gf14
gf15
gf18
hackbench01
hackbench02
hugemmap06
inotify07
inotify08
ksm01
memcg_stress
msgctl10
msgctl11
msgstress03
msgstress04
mtest06
perf_event_open02
ping01
ping602
pth_str01
pth_str02
pth_str03
sendfile09
sendfile09_64
setsockopt06
time-schedule01
+ info_msg EOF
+ local msg=EOF
+ '[' -z EOF ']'
+ printf 'INFO: %s\n' EOF
INFO: EOF
+ '[' '!' -f /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile ']'
+ SKIPFILE='-S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile'
+ check_root
++ id -ru
+ '[' 0 -eq 0 ']'
+ return 0
+ create_out_dir /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' -z /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output ']'
+ local OUTPUT=/lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' -d /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output ']'
+ mkdir -p /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' -d /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output ']'
+ info_msg 'About to run ltp test...'
+ local 'msg=About to run ltp test...'
+ '[' -z 'About to run ltp test...' ']'
+ printf 'INFO: %s\n' 'About to run ltp test...'
INFO: About to run ltp test...
+ info_msg 'Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output'
+ local 'msg=Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output'
+ '[' -z 'Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output' ']'
+ printf 'INFO: %s\n' 'Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output'
INFO: Output directory: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output
+ '[' true = true ']'
+ info_msg 'ltp installation skipped altogether'
+ local 'msg=ltp installation skipped altogether'
+ '[' -z 'ltp installation skipped altogether' ']'
+ printf 'INFO: %s\n' 'ltp installation skipped altogether'
INFO: ltp installation skipped altogether
+ '[' '!' -d /opt/ltp/ ']'
+ info_msg 'Running prep_system'
+ local 'msg=Running prep_system'
+ '[' -z 'Running prep_system' ']'
+ printf 'INFO: %s\n' 'Running prep_system'
INFO: Running prep_system
+ prep_system
+ systemctl is-active systemd-timesyncd
active
+ info_msg 'Stopping systemd-timesyncd'
+ local 'msg=Stopping systemd-timesyncd'
+ '[' -z 'Stopping systemd-timesyncd' ']'
+ printf 'INFO: %s\n' 'Stopping systemd-timesyncd'
INFO: Stopping systemd-timesyncd
+ systemctl stop systemd-timesyncd
<terminal_1> UEFI firmware (version  built at 06:55:08 on Oct 13 2022)
+ '[' -f /proc/sys/kernel/unprivileged_userns_clone ']'
+ info_msg 'Kernel has no support of unprivileged_userns_clone'
+ local 'msg=Kernel has no support of unprivileged_userns_clone'
+ '[' -z 'Kernel has no support of unprivileged_userns_clone' ']'
+ printf 'INFO: %s\n' 'Kernel has no support of unprivileged_userns_clone'
INFO: Kernel has no support of unprivileged_userns_clone
+ info_msg 'Running run_ltp'
+ local 'msg=Running run_ltp'
+ '[' -z 'Running run_ltp' ']'
+ printf 'INFO: %s\n' 'Running run_ltp'
INFO: Running run_ltp
+ run_ltp
+ cd /opt/ltp/
+ mkdir -m 777 -p /scratch
+ for file in ${TST_CMDFILES//,/ }
+ cat runtest/mm
+ sed -i 's/#.*$//;/^$/d' alltests
+ split --verbose --numeric-suffixes=1 -n l/4/6 alltests
+ echo '============== Tests to run ==============='
============== Tests to run ===============
+ cat runtest/shardfile
mmap10_2 mmap10 -s
mmap10_3 mmap10 -a -s
mmap10_4 mmap10 -a -s -i 60
ksm01 ksm01
ksm01_1 ksm01 -u 128
ksm02 ksm02
ksm02_1 ksm02 -u 128
ksm03 ksm03
ksm03_1 ksm03 -u 128
ksm04 ksm04
ksm04_1 ksm04 -u 128
ksm05 ksm05 -I 10
ksm06 ksm06
ksm06_1 ksm06 -n 10
ksm06_2 ksm06 -n 8000
+ echo '===========End Tests to run ==============='
===========End Tests to run ===============
+ pipe0_status './runltp -p -q -f shardfile                                  -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log                                  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed                                  -d /scratch                                     -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile' 'tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out'
+ '[' 2 -ne 2 ']'
+ local 'cmd1=./runltp -p -q -f shardfile                                  -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log                                  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed                                  -d /scratch                                     -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile'
+ local 'cmd2=tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out'
+ exec
+ local ret_val
++ eval './runltp -p -q -f shardfile                                  -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log                                  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed                                  -d /scratch                                     -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile'
+++ ./runltp -p -q -f shardfile -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed -d /scratch -S /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/generated_skipfile
++ eval 'tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out'
+++ tee /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.out
INFO: creating /opt/ltp/output directory
Checking for required user/group ids

'nobody' user id and group found.
'bin' user id and group found.
'daemon' user id and group found.
Users group found.
Sys group found.
Required users/groups exist.
no big block device was specified on commandline.
Tests which require a big block device are disabled.
You can specify it with option -z
INFO: Test start time: Tue Jan 10 23:19:07 UTC 2023
COMMAND:    /opt/ltp/bin/ltp-pan -q  -e -S   -a 394     -n 394 -p -f /scratch/ltp-MKuTy2QtEl/alltests -l /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log  -C /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed -T /opt/ltp/output/LTP_RUN_ON-LTP_mm.log.tconf
LOG File: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.log
FAILED COMMAND File: /lava-1/0/tests/0_ltp-mm/automated/linux/ltp/output/LTP_mm.failed
TCONF COMMAND File: /opt/ltp/output/LTP_RUN_ON-LTP_mm.log.tconf
Running tests.......
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
mmap10      0  TINFO  :  add to KSM regions.
mmap10      0  TINFO  :  use /dev/zero.
mmap10      0  TINFO  :  start tests.
...
mem.c:346: TINFO: child 1 continues...
mem.c:349: TINFO: child 1 allocates 128 MB filled with 'b'
mem.c:346: TINFO: child 2 continues...
mem.c:349: TINFO: child 2 allocates 128 MB filled with 'a'
[  132.629958] SError Interrupt on CPU0, code 0x00000000be000000 -- SError
[  132.629998] CPU: 0 PID: 688 Comm: ksm03 Not tainted 6.0.19-rc1 #1
[  132.630057] Hardware name: FVP Base RevC (DT)
[  132.630082] pstate: 80000000 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  132.630153] pc : 000000000041f758
[  132.630174] lr : 000000000041f8c0
[  132.630195] sp : 0000fffffb4463a0
[  132.630218] x29: 0000fffffb4463b0 x28: 0000000000100000 x27: 00000000004296c0
[  132.630314] x26: 000000000fe39d40 x25: 0000000000000063 x24: 0000000008000000
[  132.630408] x23: 0000000008000000 x22: 0000000000429550 x21: 0000000000000000
[  132.630500] x20: 0000fffffb4464c8 x19: 0000000000000080 x18: 0000000000000000
[  132.630596] x17: 0000ffff9b29a290 x16: 0000000000441340 x15: 0000000000008000
[  132.630692] x14: 0000000000040000 x13: 0000000000000000 x12: 0000ffff9b307160
[  132.630787] x11: 0000fffffb445da0 x10: 00000000ffffffd8 x9 : 00000000ffffff80
[  132.630883] x8 : 0000000000000040 x7 : 00000000ffffffff x6 : 0000000000000000
[  132.630975] x5 : 0000000000000063 x4 : 0000000000000020 x3 : 0000ffff9b3eed60
[  132.631067] x2 : 0000000000000073 x1 : 0000ffff93dc0000 x0 : 000000000009c001
[  132.631167] Kernel panic - not syncing: Asynchronous SError Interrupt
[  132.631194] CPU: 0 PID: 688 Comm: ksm03 Not tainted 6.0.19-rc1 #1
[  132.631251] Hardware name: FVP Base RevC (DT)
[  132.631277] Call trace:
[  132.631293]  dump_backtrace+0xe4/0x124
[  132.631348]  show_stack+0x20/0x5c
[  132.631400]  dump_stack_lvl+0x88/0xb4
[  132.631456]  dump_stack+0x18/0x34
[  132.631510]  panic+0x188/0x384
[  132.631576]  nmi_panic+0x98/0xa0
[  132.631633]  arm64_serror_panic+0x78/0x84
[  132.631693]  do_serror+0x0/0x60
[  132.631748]  do_serror+0x3c/0x60
[  132.631804]  __el0_error_handler_common+0x48/0xc0
[  132.631885]  el0t_64_error_handler+0x10/0x20
[  132.631965]  el0t_64_error+0x18c/0x190
[  132.632024] SMP: stopping secondary CPUs
[  132.632105] Kernel Offset: 0x57c5cb5c0000 from 0xffff800008000000
[  132.632140] PHYS_OFFSET: 0x80000000
[  132.632162] CPU features: 0x0000,0002873f,f9a79dcb
[  132.632193] Memory Limit: none
[  132.923555] ---[ end Kernel panic - not syncing: Asynchronous SError Interrupt ]---
[  132.923752] ------------[ cut here ]------------
[  132.923768] WARNING: CPU: 0 PID: 688 at kernel/sched/core.c:3119 set_task_cpu+0x154/0x22c
[  132.923848] Modules linked in: crct10dif_ce pl111_drm drm_cma_helper drm_kms_helper panel_simple cfg80211 rfkill fuse drm
[  132.924055] CPU: 0 PID: 688 Comm: ksm03 Not tainted 6.0.19-rc1 #1
[  132.924114] Hardware name: FVP Base RevC (DT)
[  132.924139] pstate: 424020c9 (nZcv daIF +PAN -UAO +TCO -DIT -SSBS BTYPE=--)
[  132.924210] pc : set_task_cpu+0x154/0x22c
[  132.924260] lr : try_to_wake_up+0x1a0/0x62c
[  132.924313] sp : ffff80000800fbe0
[  132.924337] x29: ffff80000800fbe0 x28: ffff00087f5e5680 x27: 0000000000000000
[  132.924435] x26: 0000000000000000 x25: ffffd7c5d60fd2f8 x24: 0000000000000001
[  132.924529] x23: ffff00080113736c x22: 0000000000000001 x21: ffffd7c5d60f8a78
[  132.924627] x20: 0000000000000001 x19: ffff000801136b00 x18: 0000000000000006
[  132.924721] x17: 75727265746e4920 x16: 726f727245532073 x15: 756f6e6f7268636e
[  132.924823] x14: 797341203a676e69 x13: 2d2d2d5d20747075 x12: 727265746e492072
[  132.924924] x11: 6f72724553207375 x10: ffffd7c5d6174a20 x9 : ffffd7c5d3697624
[  132.925025] x8 : 0000000000000020 x7 : fffffffffffffffe x6 : 0000000000000001
[  132.925118] x5 : 0000000000000001 x4 : ffffd7c5d57eaf00 x3 : 00000000000000ff
[  132.925210] x2 : 0000000000000000 x1 : 0000000000000001 x0 : 0000000000000000
[  132.925300] Call trace:
[  132.925316]  set_task_cpu+0x154/0x22c
[  132.925367]  try_to_wake_up+0x1a0/0x62c
[  132.925427]  default_wake_function+0x24/0x50
[  132.925486]  autoremove_wake_function+0x20/0x50
[  132.925568]  __wake_up_common+0x90/0x190
[  132.925641]  __wake_up_common_lock+0x80/0xd0
[  132.925715]  __wake_up+0x20/0x30
[  132.925785]  wake_up_klogd_work_func+0xac/0xc0
[  132.925853]  irq_work_single+0x7c/0xa0
[  132.925930]  irq_work_run_list+0x50/0x6c
[  132.926009]  irq_work_tick+0x28/0xac
[  132.926085]  update_process_times+0xa4/0xc0
[  132.926164]  tick_sched_handle+0x3c/0x60
[  132.926225]  tick_sched_timer+0x54/0xac
[  132.926287]  __hrtimer_run_queues+0x2e4/0x380
[  132.926369]  hrtimer_interrupt+0xf0/0x250
[  132.926450]  arch_timer_handler_phys+0x34/0x50
[  132.926521]  handle_percpu_devid_irq+0x90/0x230
[  132.926583]  generic_handle_domain_irq+0x34/0x50
[  132.926660]  gic_handle_irq+0x58/0x140
[  132.926715]  call_on_irq_stack+0x2c/0x60
[  132.926781]  do_interrupt_handler+0x88/0x94
[  132.926857]  el1_interrupt+0x34/0x70
[  132.926930]  el1h_64_irq_handler+0x18/0x24
[  132.927009]  el1h_64_irq+0x64/0x68
[  132.927064]  panic+0x30c/0x384
[  132.927130]  nmi_panic+0x98/0xa0
[  132.927187]  arm64_serror_panic+0x78/0x84
[  132.927247]  do_serror+0x0/0x60
[  132.927302]  do_serror+0x3c/0x60
[  132.927358]  __el0_error_handler_common+0x48/0xc0
[  132.927439]  el0t_64_error_handler+0x10/0x20
[  132.927519]  el0t_64_error+0x18c/0x190
[  132.927577] ---[ end trace 0000000000000000 ]---



^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (163 preceding siblings ...)
  2023-01-11  6:55 ` Naresh Kamboju
@ 2023-01-11 10:58 ` Rudi Heitbaum
  2023-01-11 11:24 ` Ron Economos
                   ` (8 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Rudi Heitbaum @ 2023-01-11 10:58 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.

Hi Greg,

6.1.5-rc1 tested.

Run tested on:
- Allwinner H6 (Tanix TX6)
- Intel Alder Lake x86_64 (nuc12 i7-1260P)

In addition - build tested for:
- Allwinner A64
- Allwinner H3
- Allwinner H5
- NXP iMX6
- NXP iMX8
- Qualcomm Dragonboard
- Rockchip RK3288
- Rockchip RK3328
- Rockchip RK3399pro
- Samsung Exynos

Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
--
Rudi

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (164 preceding siblings ...)
  2023-01-11 10:58 ` Rudi Heitbaum
@ 2023-01-11 11:24 ` Ron Economos
  2023-01-11 12:58 ` Sudip Mukherjee
                   ` (7 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Ron Economos @ 2023-01-11 11:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 1/10/23 10:02 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h

Built and booted successfully on RISC-V RV64 (HiFive Unmatched).

Tested-by: Ron Economos <re@w6rz.net>


^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (165 preceding siblings ...)
  2023-01-11 11:24 ` Ron Economos
@ 2023-01-11 12:58 ` Sudip Mukherjee
  2023-01-11 16:49 ` Naresh Kamboju
                   ` (6 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Sudip Mukherjee @ 2023-01-11 12:58 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli, srw, rwarsow

Hi Greg,

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.

Build test (gcc version 12.2.1 20221127):
mips: 52 configs -> no failure
arm: 100 configs -> no failure
arm64: 3 configs -> no failure
x86_64: 4 configs -> no failure
alpha allmodconfig -> no failure
csky allmodconfig -> no failure
powerpc allmodconfig -> no failure
riscv allmodconfig -> no failure
s390 allmodconfig -> no failure
xtensa allmodconfig -> no failure

Boot test:
x86_64: Booted on my test laptop. No regression.
x86_64: Booted on qemu. No regression. [1]
arm64: Booted on rpi4b (4GB model). No regression. [2]
mips: Booted on ci20 board. No regression. [3]

[1]. https://openqa.qa.codethink.co.uk/tests/2609
[2]. https://openqa.qa.codethink.co.uk/tests/2610
[3]. https://openqa.qa.codethink.co.uk/tests/2613

Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>

-- 
Regards
Sudip

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-11  6:55 ` Naresh Kamboju
@ 2023-01-11 14:18   ` Arnd Bergmann
  0 siblings, 0 replies; 176+ messages in thread
From: Arnd Bergmann @ 2023-01-11 14:18 UTC (permalink / raw)
  To: Naresh Kamboju, Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, Linus Torvalds, Andrew Morton,
	Guenter Roeck, shuah, patches, lkft-triage, Pavel Machek,
	Jon Hunter, Florian Fainelli, Sudip Mukherjee, srw, rwarsow,
	Mark Brown

On Wed, Jan 11, 2023, at 07:55, Naresh Kamboju wrote:
> On Tue, 10 Jan 2023 at 23:44, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
>>
>> This is the start of the stable review cycle for the 6.1.5 release.
>> There are 159 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
>> Anything received after that time might be too late.
>>
>> The whole patch series can be found in one patch at:
>>         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
>> or in the git tree and branch at:
>>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
>> and the diffstat can be found below.
>>
>> thanks,
>>
>> greg k-h
>
> Results from Linaro’s test farm.
> Regressions on arm64 FVP.
>
> Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
>
> Following kernel panic and warning notices on FVP 64k page size
> enabled gcc-12 build on 6.1 and 6.0 kernel Image while running
> LTP mm test cases.
>
> CONFIG_ARM64_64K_PAGES=y

I assume you mean this only happens with 64K pages but not 4K pages?
I see the machine only has 4GB of RAM, so it's possible this is
a side-effect of an out-of-memory condition somewhere as kernels
with 64K pages need a lot more RAM.

>    SError Interrupt on CPU3, code 0x00000000be000000 -- SError
>     Kernel panic - not syncing: Asynchronous SError Interrupt

This is an SError from user space, where the 'be' bit is the
encoding for SError, and the ISS and ISS2 words are all zero.

The CPU enables the 'RAS' extension, so ISS is defined according
to [1], but none of the bits are set, so this is 'Uncategorized'.

This seems particularly unhelpful from FVP, possibly a bug
in the RAS error reporting.

>     WARNING: CPU: 3 PID: 685 at kernel/sched/core.c:3113 set_task_cpu

This again seems unrelated and only happens when it panics the
second time.

      Arnd

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (166 preceding siblings ...)
  2023-01-11 12:58 ` Sudip Mukherjee
@ 2023-01-11 16:49 ` Naresh Kamboju
  2023-01-11 17:28 ` Allen Pais
                   ` (5 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Naresh Kamboju @ 2023-01-11 16:49 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

On Tue, 10 Jan 2023 at 23:44, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h

Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.

Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>

NOTE:
Regression reported on FVP details can be found in this link,
https://lore.kernel.org/stable/Y76ykHsQcyusWNah@debian/T/#m9dd9798da554c58e5634205de1cb4203d065a177

## Build
* kernel: 6.1.5-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-6.1.y
* git commit: 06bcfb15cd3bb7bfcfa0b06528b2ba3013d2d17b
* git describe: v6.1.4-160-g06bcfb15cd3b
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.1.y/build/v6.1.4-160-g06bcfb15cd3b

## Test Regressions (compared to v6.1.4)

## Metric Regressions (compared to v6.1.4)

## Test Fixes (compared to v6.1.4)

## Metric Fixes (compared to v6.1.4)

## Test result summary
total: 183653, pass: 152799, fail: 5075, skip: 25752, xfail: 27

## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 151 total, 148 passed, 3 failed
* arm64: 51 total, 50 passed, 1 failed
* i386: 39 total, 36 passed, 3 failed
* mips: 30 total, 28 passed, 2 failed
* parisc: 8 total, 8 passed, 0 failed
* powerpc: 38 total, 32 passed, 6 failed
* riscv: 16 total, 15 passed, 1 failed
* s390: 16 total, 13 passed, 3 failed
* sh: 14 total, 12 passed, 2 failed
* sparc: 8 total, 8 passed, 0 failed
* x86_64: 44 total, 44 passed, 0 failed

## Test suites summary
* boot
* fwts
* igt-gpu-tools
* kselftest-android
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers-dma-buf
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-firmware
* kselftest-fpu
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-net-forwarding
* kselftest-net-mptcp
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-tc-testing
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-vm
* kselftest-x86
* kselftest-zram
* kunit
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ip
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-open-posix-tests
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* packetdrill
* perf
* rcutorture
* v4l2-compliance
* vdso

--
Linaro LKFT
https://lkft.linaro.org

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (167 preceding siblings ...)
  2023-01-11 16:49 ` Naresh Kamboju
@ 2023-01-11 17:28 ` Allen Pais
  2023-01-11 17:28 ` Justin Forbes
                   ` (4 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Allen Pais @ 2023-01-11 17:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>

Compiled and booted on my x86_64 and ARM64 test systems. No errors or
regressions.

Tested-by: Allen Pais <apais@linux.microsoft.com>

Thanks.

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (168 preceding siblings ...)
  2023-01-11 17:28 ` Allen Pais
@ 2023-01-11 17:28 ` Justin Forbes
  2023-01-11 18:55 ` Conor Dooley
                   ` (3 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Justin Forbes @ 2023-01-11 17:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h

Tested rc1 against the Fedora build system (aarch64, armv7, ppc64le,
s390x, x86_64), and boot tested x86_64. No regressions noted.

Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (169 preceding siblings ...)
  2023-01-11 17:28 ` Justin Forbes
@ 2023-01-11 18:55 ` Conor Dooley
  2023-01-12  0:40 ` Guenter Roeck
                   ` (2 subsequent siblings)
  173 siblings, 0 replies; 176+ messages in thread
From: Conor Dooley @ 2023-01-11 18:55 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

[-- Attachment #1: Type: text/plain, Size: 814 bytes --]

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.5-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
> and the diffstat can be found below.

Tested-by: Conor Dooley <conor.dooley@microchip.com>

Thanks,
Conor.


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (170 preceding siblings ...)
  2023-01-11 18:55 ` Conor Dooley
@ 2023-01-12  0:40 ` Guenter Roeck
  2023-01-12  2:04 ` Bagas Sanjaya
  2023-01-12  3:02 ` Kelsey Steele
  173 siblings, 0 replies; 176+ messages in thread
From: Guenter Roeck @ 2023-01-12  0:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.
> 

Build results:
	total: 155 pass: 155 fail: 0
Qemu test results:
	total: 500 pass: 500 fail: 0

Tested-by: Guenter Roeck <linux@roeck-us.net>

Guenter

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (171 preceding siblings ...)
  2023-01-12  0:40 ` Guenter Roeck
@ 2023-01-12  2:04 ` Bagas Sanjaya
  2023-01-12  3:02 ` Kelsey Steele
  173 siblings, 0 replies; 176+ messages in thread
From: Bagas Sanjaya @ 2023-01-12  2:04 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

[-- Attachment #1: Type: text/plain, Size: 538 bytes --]

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
 
Successfully cross-compiled for arm64 (bcm2711_defconfig, GCC 10.2.0) and
powerpc (ps3_defconfig, GCC 12.2.0).

Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>

-- 
An old man doll... just what I always wanted! - Clara

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 176+ messages in thread

* Re: [PATCH 6.1 000/159] 6.1.5-rc1 review
  2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
                   ` (172 preceding siblings ...)
  2023-01-12  2:04 ` Bagas Sanjaya
@ 2023-01-12  3:02 ` Kelsey Steele
  173 siblings, 0 replies; 176+ messages in thread
From: Kelsey Steele @ 2023-01-12  3:02 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

On Tue, Jan 10, 2023 at 07:02:28PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.5 release.
> There are 159 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
> Anything received after that time might be too late.

No regressions found on WSL x86_64 or WSL arm64

Built, booted, and compared dmesg against 6.1.4. Also haven't
encountered any problems so far using 6.1.y compared to 5.15.y on WSL.
:)  

Thank you.

Tested-by: Kelsey Steele <kelseysteele@linux.microsoft.com>

^ permalink raw reply	[flat|nested] 176+ messages in thread

end of thread, other threads:[~2023-01-12  3:02 UTC | newest]

Thread overview: 176+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-10 18:02 [PATCH 6.1 000/159] 6.1.5-rc1 review Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 001/159] ARM: renumber bits related to _TIF_WORK_MASK Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 002/159] btrfs: replace strncpy() with strscpy() Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 003/159] cifs: fix interface count calculation during refresh Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 004/159] cifs: refcount only the selected iface during interface update Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 005/159] usb: dwc3: gadget: Ignore End Transfer delay on teardown Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 006/159] btrfs: fix off-by-one in delalloc search during lseek Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 007/159] btrfs: fix compat_ro checks against remount Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 008/159] perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 009/159] perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 010/159] phy: qcom-qmp-combo: fix broken power on Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 011/159] btrfs: fix an error handling path in btrfs_defrag_leaves() Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 012/159] SUNRPC: ensure the matching upcall is in-flight upon downcall Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 013/159] wifi: ath9k: use proper statements in conditionals Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 014/159] bpf: pull before calling skb_postpull_rcsum() Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 015/159] drm/panfrost: Fix GEM handle creation ref-counting Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 016/159] netfilter: nf_tables: consolidate set description Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 017/159] netfilter: nf_tables: add function to create set stateful expressions Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 018/159] netfilter: nf_tables: perform type checking for existing sets Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 019/159] ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 020/159] net: vrf: determine the dst using the original ifindex for multicast Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 021/159] vmxnet3: correctly report csum_level for encapsulated packet Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 022/159] mptcp: fix deadlock in fastopen error path Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 023/159] mptcp: fix lockdep false positive Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 024/159] netfilter: nf_tables: honor set timeout and garbage collection updates Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 025/159] bonding: fix lockdep splat in bond_miimon_commit() Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 026/159] net: lan966x: Fix configuration of the PCS Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 027/159] veth: Fix race with AF_XDP exposing old or uninitialized descriptors Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 028/159] nfsd: shut down the NFSv4 state objects before the filecache Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 029/159] net: hns3: add interrupts re-initialization while doing VF FLR Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 030/159] net: hns3: fix miss L3E checking for rx packet Greg Kroah-Hartman
2023-01-10 18:02 ` [PATCH 6.1 031/159] net: hns3: fix VF promisc mode not update when mac table full Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 032/159] net: sched: fix memory leak in tcindex_set_parms Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 033/159] qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 034/159] net: dsa: mv88e6xxx: depend on PTP conditionally Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 035/159] nfc: Fix potential resource leaks Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 036/159] bnxt_en: Simplify bnxt_xdp_buff_init() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 037/159] bnxt_en: Fix XDP RX path Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 038/159] bnxt_en: Fix first buffer size calculations for XDP multi-buffer Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 039/159] bnxt_en: Fix HDS and jumbo thresholds for RX packets Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 040/159] vdpa/mlx5: Fix rule forwarding VLAN to TIR Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 041/159] vdpa/mlx5: Fix wrong mac address deletion Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 042/159] vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 043/159] vhost/vsock: Fix error handling in vhost_vsock_init() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 044/159] vringh: fix range used in iotlb_translate() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 045/159] vhost: fix range used in translate_desc() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 046/159] vhost-vdpa: fix an iotlb memory leak Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 047/159] vdpa_sim: fix vringh initialization in vdpasim_queue_ready() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 048/159] virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 049/159] vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 050/159] vdpasim: fix memory leak when freeing IOTLBs Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 051/159] net/mlx5: E-Switch, properly handle ingress tagged packets on VST Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 052/159] net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 053/159] net/mlx5: Fix io_eq_size and event_eq_size params validation Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 054/159] net/mlx5: Avoid recovery in probe flows Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 055/159] net/mlx5: Fix RoCE setting at HCA level Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 056/159] net/mlx5e: IPoIB, Dont allow CQE compression to be turned on by default Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 057/159] net/mlx5e: Fix RX reporter for XSK RQs Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 058/159] net/mlx5e: CT: Fix ct debugfs folder name Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 059/159] net/mlx5e: Always clear dest encap in neigh-update-del Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 060/159] net/mlx5e: Fix hw mtu initializing at XDP SQ allocation Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 061/159] net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 062/159] net/mlx5: Lag, fix failure to cancel delayed bond work Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 063/159] bpf: Always use maximal size for copy_array() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 064/159] tcp: Add TIME_WAIT sockets in bhash2 Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 065/159] net: hns3: refine the handling for VF heartbeat Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 066/159] net: amd-xgbe: add missed tasklet_kill Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 067/159] net: ena: Fix toeplitz initial hash value Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 068/159] net: ena: Dont register memory info on XDP exchange Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 069/159] net: ena: Account for the number of processed bytes in XDP Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 070/159] net: ena: Use bitmask to indicate packet redirection Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 071/159] net: ena: Fix rx_copybreak value update Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 072/159] net: ena: Set default value for RX interrupt moderation Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 073/159] net: ena: Update NUMA TPH hint register upon NUMA node update Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 074/159] net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 075/159] gpio: pca953x: avoid to use uninitialized value pinctrl Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 076/159] RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 077/159] RDMA/mlx5: Fix validation of max_rd_atomic caps for DC Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 078/159] selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 079/159] selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 080/159] drm/meson: Reduce the FIFO lines held when AFBC is not used Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 081/159] filelock: new helper: vfs_inode_has_locks Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 082/159] ceph: switch to vfs_inode_has_locks() to fix file lock bug Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 083/159] gpio: sifive: Fix refcount leak in sifive_gpio_probe Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 084/159] net: sched: atm: dont intepret cls results when asked to drop Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 085/159] net: sched: cbq: " Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 086/159] vxlan: Fix memory leaks in error path Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 087/159] net: sparx5: Fix reading of the MAC address Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 088/159] netfilter: ipset: fix hash:net,port,net hang with /0 subnet Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 089/159] netfilter: ipset: Rework long task execution when adding/deleting entries Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 090/159] drm/virtio: Fix memory leak in virtio_gpu_object_create() Greg Kroah-Hartman
2023-01-10 18:03 ` [PATCH 6.1 091/159] perf tools: Fix resources leak in perf_data__open_dir() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 092/159] drm/imx: ipuv3-plane: Fix overlay plane width Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 093/159] fs/ntfs3: dont hold ni_lock when calling truncate_setsize() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 094/159] drivers/net/bonding/bond_3ad: return when theres no aggregator Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 095/159] octeontx2-pf: Fix lmtst ID used in aura free Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 096/159] usb: rndis_host: Secure rndis_query check against int overflow Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 097/159] perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390 Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 098/159] perf stat: Fix handling of unsupported cgroup events when using BPF counters Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 099/159] perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 100/159] drm/i915: unpin on error in intel_vgpu_shadow_mm_pin() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 101/159] drm/i915/gvt: fix double free bug in split_2MB_gtt_entry Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 102/159] ublk: honor IO_URING_F_NONBLOCK for handling control command Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 103/159] qed: allow sleep in qed_mcp_trace_dump() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 104/159] net/ulp: prevent ULP without clone op from entering the LISTEN status Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 105/159] caif: fix memory leak in cfctrl_linkup_request() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 106/159] udf: Fix extension of the last extent in the file Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 107/159] usb: dwc3: xilinx: include linux/gpio/consumer.h Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 108/159] hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 109/159] ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown" Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 110/159] 9p/client: fix data race on req->status Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 111/159] ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 112/159] ASoC: SOF: mediatek: initialize panic_info to zero Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 113/159] drm/amdgpu: Fix size validation for non-exclusive domains (v4) Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 114/159] drm/amdkfd: Fix kfd_process_device_init_vm error handling Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 115/159] drm/amdkfd: Fix double release compute pasid Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 116/159] io_uring/cancel: re-grab ctx mutex after finishing wait Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 117/159] nvme: fix multipath crash caused by flush request when blktrace is enabled Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 118/159] ACPI: video: Allow GPU drivers to report no panels Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 119/159] drm/amd/display: Report to ACPI video if no panels were found Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 120/159] ACPI: video: Dont enable fallback path for creating ACPI backlight by default Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 121/159] io_uring: check for valid register opcode earlier Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 122/159] kunit: alloc_string_stream_fragment error handling bug fix Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 123/159] nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 124/159] nvme: also return I/O command effects from nvme_command_effects Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 125/159] ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed" Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 126/159] x86/kexec: Fix double-free of elf header buffer Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 127/159] x86/bugs: Flush IBP in ib_prctl_set() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 128/159] nfsd: fix handling of readdir in v4root vs. mount upcall timeout Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 129/159] fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 130/159] bpf: Fix panic due to wrong pageattr of im->image Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 131/159] Revert "drm/amd/display: Enable Freesync Video Mode by default" Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 132/159] Revert "net: dsa: qca8k: cache lo and hi for mdio write" Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 133/159] net: dsa: qca8k: fix wrong length value for mgmt eth packet Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 134/159] net: dsa: tag_qca: fix wrong MGMT_DATA2 size Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 135/159] block: dont allow splitting of a REQ_NOWAIT bio Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 136/159] io_uring: pin context while queueing deferred tw Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 137/159] io_uring: fix CQ waiting timeout handling Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 138/159] tpm: Allow system suspend to continue when TPM suspend fails Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 139/159] vhost_vdpa: fix the crash in unmap a large memory Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 140/159] thermal: int340x: Add missing attribute for data rate base Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 141/159] riscv: uaccess: fix type of 0 variable on error in get_user() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 142/159] riscv, kprobes: Stricter c.jr/c.jalr decoding Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 143/159] of/fdt: run soc memory setup when early_init_dt_scan_memory fails Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 144/159] drm/plane-helper: Add the missing declaration of drm_atomic_state Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 145/159] drm/amdkfd: Fix kernel warning during topology setup Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 146/159] drm/i915/gvt: fix gvt debugfs destroy Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 147/159] drm/i915/gvt: fix vgpu debugfs clean in remove Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 148/159] virtio-blk: use a helper to handle request queuing errors Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 149/159] virtio_blk: Fix signedness bug in virtblk_prep_rq() Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 150/159] drm/amd/display: Add check for DET fetch latency hiding for dcn32 Greg Kroah-Hartman
2023-01-10 18:04 ` [PATCH 6.1 151/159] drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0 Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 152/159] btrfs: handle case when repair happens with dev-replace Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 153/159] ksmbd: fix infinite loop in ksmbd_conn_handler_loop() Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 154/159] ksmbd: send proper error response in smb2_tree_connect() Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 155/159] ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 156/159] drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 157/159] drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 158/159] efi: random: combine bootloader provided RNG seed with RNG protocol output Greg Kroah-Hartman
2023-01-10 18:05 ` [PATCH 6.1 159/159] wifi: ath11k: Send PME message during wakeup from D3cold Greg Kroah-Hartman
2023-01-10 19:34 ` [PATCH 6.1 000/159] 6.1.5-rc1 review Holger Hoffstätte
2023-01-10 19:38 ` Florian Fainelli
2023-01-11  0:35 ` Shuah Khan
2023-01-11  0:59 ` ogasawara takeshi
2023-01-11  6:55 ` Naresh Kamboju
2023-01-11 14:18   ` Arnd Bergmann
2023-01-11 10:58 ` Rudi Heitbaum
2023-01-11 11:24 ` Ron Economos
2023-01-11 12:58 ` Sudip Mukherjee
2023-01-11 16:49 ` Naresh Kamboju
2023-01-11 17:28 ` Allen Pais
2023-01-11 17:28 ` Justin Forbes
2023-01-11 18:55 ` Conor Dooley
2023-01-12  0:40 ` Guenter Roeck
2023-01-12  2:04 ` Bagas Sanjaya
2023-01-12  3:02 ` Kelsey Steele

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).