All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 5.10 000/139] 5.10.168-rc1 review
@ 2023-02-13 14:49 Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 001/139] firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region Greg Kroah-Hartman
                   ` (147 more replies)
  0 siblings, 148 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 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 5.10.168 release.
There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
and the diffstat can be found below.

thanks,

greg k-h

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

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

Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    nvmem: core: fix return value

David Chen <david.chen@nutanix.com>
    Fix page corruption caused by racy check in __free_pages

Heiner Kallweit <hkallweit1@gmail.com>
    arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive

Heiner Kallweit <hkallweit1@gmail.com>
    arm64: dts: meson-g12-common: Make mmc host controller interrupts level-sensitive

Heiner Kallweit <hkallweit1@gmail.com>
    arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive

Guo Ren <guoren@linux.alibaba.com>
    riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte

Xiubo Li <xiubli@redhat.com>
    ceph: flush cap releases when the session is flushed

Prashant Malani <pmalani@chromium.org>
    usb: typec: altmodes/displayport: Fix probe pin assign check

Mark Pearson <mpearson-lenovo@squebb.ca>
    usb: core: add quirk for Alcor Link AK9563 smartcard reader

Anand Jain <anand.jain@oracle.com>
    btrfs: free device in btrfs_close_devices for a single device filesystem

Alan Stern <stern@rowland.harvard.edu>
    net: USB: Fix wrong-direction WARNING in plusb.c

ZhaoLong Wang <wangzhaolong1@huawei.com>
    cifs: Fix use-after-free in rdata->read_into_pages()

Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    pinctrl: intel: Restore the pins that used to be in Direct IRQ mode

Serge Semin <Sergey.Semin@baikalelectronics.ru>
    spi: dw: Fix wrong FIFO level setting for long xfers

Maxim Korotkov <korotkov.maxim.s@gmail.com>
    pinctrl: single: fix potential NULL dereference

Joel Stanley <joel@jms.id.au>
    pinctrl: aspeed: Fix confusing types in return value

Dan Carpenter <error27@gmail.com>
    ALSA: pci: lx6464es: fix a debug loop

Hangbin Liu <liuhangbin@gmail.com>
    selftests: forwarding: lib: quote the sysctl values

Pietro Borrello <borrello@diag.uniroma1.it>
    rds: rds_rm_zerocopy_callback() use list_first_entry()

Shay Drory <shayd@nvidia.com>
    net/mlx5: fw_tracer, Zero consumer index when reloading the tracer

Shay Drory <shayd@nvidia.com>
    net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers

Dragos Tatulea <dtatulea@nvidia.com>
    net/mlx5e: IPoIB, Show unknown speed instead of error

Vladimir Oltean <vladimir.oltean@nxp.com>
    net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q"

Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    ice: Do not use WQ_MEM_RECLAIM flag for workqueue

Herton R. Krzesinski <herton@redhat.com>
    uapi: add missing ip/ipv6 header dependencies for linux/stddef.h

Neel Patel <neel.patel@amd.com>
    ionic: clean interrupt before enabling queue to avoid credit race

Heiner Kallweit <hkallweit1@gmail.com>
    net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY

Qi Zheng <zhengqi.arch@bytedance.com>
    bonding: fix error checking in bond_debug_reregister()

Christian Hopps <chopps@chopps.org>
    xfrm: fix bug with DSCP copy to v6 from v4 tunnel

Yang Yingliang <yangyingliang@huawei.com>
    RDMA/usnic: use iommu_map_atomic() under spin_lock()

Dragos Tatulea <dtatulea@nvidia.com>
    IB/IPoIB: Fix legacy IPoIB due to wrong number of queues

Eric Dumazet <edumazet@google.com>
    xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr()

Dean Luick <dean.luick@cornelisnetworks.com>
    IB/hfi1: Restore allocated resources on failed copyout

Anastasia Belova <abelova@astralinux.ru>
    xfrm: compat: change expression for switch in xfrm_xlate64

Devid Antonio Filoni <devid.filoni@egluetechnologies.com>
    can: j1939: do not wait 250 ms if the same addr was already claimed

Mark Brown <broonie@kernel.org>
    of/address: Return an error when no valid dma-ranges are found

Shiju Jose <shiju.jose@huawei.com>
    tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw

Guillaume Pinot <texitoi@texitoi.eu>
    ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360

Artemii Karasev <karasev@ispras.ru>
    ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()

Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
    ALSA: hda/realtek: Add Positivo N14KP6-TG

Alexander Potapenko <glider@google.com>
    btrfs: zlib: zero-initialize zlib workspace

Josef Bacik <josef@toxicpanda.com>
    btrfs: limit device extents to the device size

Mike Kravetz <mike.kravetz@oracle.com>
    migrate: hugetlb: check for hugetlb shared PMD in node migration

Miaohe Lin <linmiaohe@huawei.com>
    mm/migration: return errno when isolate_huge_page failed

Andreas Kemnade <andreas@kemnade.info>
    iio:adc:twl6030: Enable measurement of VAC

Martin KaFai Lau <kafai@fb.com>
    bpf: Do not reject when the stack read size is different from the tracked scalar size

Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    nvmem: core: fix registration vs use race

Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    nvmem: core: fix cleanup after dev_set_name()

Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    nvmem: core: remove nvmem_config wp_gpio

Gaosheng Cui <cuigaosheng1@huawei.com>
    nvmem: core: add error handling for dev_set_name

Christophe Kerello <christophe.kerello@foss.st.com>
    nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property

Minsuk Kang <linuxlovemin@yonsei.ac.kr>
    wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads

Chao Yu <chao@kernel.org>
    f2fs: fix to do sanity check on i_extra_isize in is_alive()

Dongliang Mu <dzm91@hust.edu.cn>
    fbdev: smscufx: fix error handling code in ufx_usb_probe

Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    serial: 8250_dma: Fix DMA Rx rearm race

Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    serial: 8250_dma: Fix DMA Rx completion race

Michael Walle <michael@walle.cc>
    nvmem: core: fix cell removal on error

Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    nvmem: core: initialise nvmem->id early

Rob Clark <robdclark@chromium.org>
    drm/i915: Fix potential bit_17 double-free

Phillip Lougher <phillip@squashfs.org.uk>
    Squashfs: fix handling and sanity checking of xattr_ids count

Longlong Xia <xialonglong1@huawei.com>
    mm/swapfile: add cond_resched() in get_swap_pages()

Zheng Yongjun <zhengyongjun3@huawei.com>
    fpga: stratix10-soc: Fix return value check in s10_ops_write_init()

Joerg Roedel <jroedel@suse.de>
    x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses

Mike Kravetz <mike.kravetz@oracle.com>
    mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps

Andreas Schwab <schwab@suse.de>
    riscv: disable generation of unwind tables

Helge Deller <deller@gmx.de>
    parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case

Helge Deller <deller@gmx.de>
    parisc: Fix return code of pdc_iodc_print()

Johan Hovold <johan+linaro@kernel.org>
    nvmem: qcom-spmi-sdam: fix module autoloading

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix MAGN sensor scale and unit

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix failed initialization ODR mode assignment

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix incorrect ODR mode readback

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix map label of channel type to MAGN sensor

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix IMU data bits returned to user space

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback

Carlos Song <carlos.song@nxp.com>
    iio: imu: fxos8700: fix ACCEL measurement range selection

Andreas Kemnade <andreas@kemnade.info>
    iio:adc:twl6030: Enable measurements of VUSB, VBAT and others

Xiongfeng Wang <wangxiongfeng2@huawei.com>
    iio: adc: berlin2-adc: Add missing of_node_put() in error path

Dmitry Perchanov <dmitry.perchanov@intel.com>
    iio: hid: fix the retval in accel_3d_capture_sample

Ard Biesheuvel <ardb@kernel.org>
    efi: Accept version 2 of memory attributes table

Victor Shyba <victor1984@riseup.net>
    ALSA: hda/realtek: Add Acer Predator PH315-54

Alexander Egorenkov <egorenar@linux.ibm.com>
    watchdog: diag288_wdt: fix __diag288() inline assembly

Alexander Egorenkov <egorenar@linux.ibm.com>
    watchdog: diag288_wdt: do not use stack buffers for hardware data

Natalia Petrova <n.petrova@fintech.ru>
    net: qrtr: free memory on error path in radix_tree_insert()

Samuel Thibault <samuel.thibault@ens-lyon.org>
    fbcon: Check font dimension limits

Werner Sembach <wse@tuxedocomputers.com>
    Input: i8042 - add Clevo PCX0DX to i8042 quirk table

Werner Sembach <wse@tuxedocomputers.com>
    Input: i8042 - add TUXEDO devices to i8042 quirk tables

Werner Sembach <wse@tuxedocomputers.com>
    Input: i8042 - merge quirk tables

Werner Sembach <wse@tuxedocomputers.com>
    Input: i8042 - move __initconst to fix code styling warning

George Kennedy <george.kennedy@oracle.com>
    vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF

Udipto Goswami <quic_ugoswami@quicinc.com>
    usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait

Neil Armstrong <neil.armstrong@linaro.org>
    usb: dwc3: qcom: enable vbus override when in OTG dr-mode

Wesley Cheng <wcheng@codeaurora.org>
    usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API

Olivier Moysan <olivier.moysan@foss.st.com>
    iio: adc: stm32-dfsdm: fill module aliases

Hyunwoo Kim <v4bel@theori.io>
    net/x25: Fix to not accept on connected socket

Koba Ko <koba.ko@canonical.com>
    platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table

Randy Dunlap <rdunlap@infradead.org>
    i2c: rk3x: fix a bunch of kernel-doc warnings

Mike Christie <michael.christie@oracle.com>
    scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress

Maurizio Lombardi <mlombard@redhat.com>
    scsi: target: core: Fix warning on RT kernels

Stefan Wahren <stefan.wahren@i2se.com>
    i2c: mxs: suppress probe-deferral error message

Magnus Karlsson <magnus.karlsson@intel.com>
    qede: execute xdp_do_flush() before napi_complete_done()

Bhaskar Upadhaya <bupadhaya@marvell.com>
    qede: add netpoll support for qede driver

Anton Gusev <aagusev@ispras.ru>
    efi: fix potential NULL deref in efi_mem_reserve_persistent

Fedor Pchelkin <pchelkin@ispras.ru>
    net: openvswitch: fix flow memory leak in ovs_flow_cmd_new

Parav Pandit <parav@nvidia.com>
    virtio-net: Keep stop() to follow mirror sequence of open()

Andrei Gherzan <andrei.gherzan@canonical.com>
    selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking

Andrei Gherzan <andrei.gherzan@canonical.com>
    selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs

Andrei Gherzan <andrei.gherzan@canonical.com>
    selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided

Andrei Gherzan <andrei.gherzan@canonical.com>
    selftests: net: udpgso_bench_rx: Fix 'used uninitialized' compiler warning

Damien Le Moal <damien.lemoal@opensource.wdc.com>
    ata: libata: Fix sata_down_spd_limit() when no link speed is reported

Ziyang Xuan <william.xuanziyang@huawei.com>
    can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate

Tom Rix <trix@redhat.com>
    igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp()

Chris Healy <healych@amazon.com>
    net: phy: meson-gxl: Add generic dummy stubs for MMD register access

Fedor Pchelkin <pchelkin@ispras.ru>
    squashfs: harden sanity check in squashfs_read_xattr_id_table

Florian Westphal <fw@strlen.de>
    netfilter: br_netfilter: disable sabotage_in hook after first suppression

Hyunwoo Kim <v4bel@theori.io>
    netrom: Fix use-after-free caused by accept on already connected socket

Andre Kalb <andre.kalb@sma.de>
    net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices

Íñigo Huguet <ihuguet@redhat.com>
    sfc: correctly advertise tunneled IPv6 segmentation

Magnus Karlsson <magnus.karlsson@intel.com>
    virtio-net: execute xdp_do_flush() before napi_complete_done()

Al Viro <viro@zeniv.linux.org.uk>
    fix "direction" argument of iov_iter_kvec()

Al Viro <viro@zeniv.linux.org.uk>
    fix iov_iter_bvec() "direction" argument

Al Viro <viro@zeniv.linux.org.uk>
    READ is "data destination", not source...

Al Viro <viro@zeniv.linux.org.uk>
    WRITE is "data source", not destination...

Eric Auger <eric.auger@redhat.com>
    vhost/net: Clear the pending messages when the backend is removed

Martin K. Petersen <martin.petersen@oracle.com>
    scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT"

Hans Verkuil <hverkuil-cisco@xs4all.nl>
    drm/vc4: hdmi: make CEC adapter name unique

Pierluigi Passaro <pierluigi.p@variscite.com>
    arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX

Jakub Sitnicki <jakub@cloudflare.com>
    bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener

Eduard Zingerman <eddyz87@gmail.com>
    bpf: Fix to preserve reg parent/live fields when copying range info

Martin KaFai Lau <kafai@fb.com>
    bpf: Support <8-byte scalar spill and refill

Christophe Leroy <christophe.leroy@csgroup.eu>
    powerpc/bpf: Move common helpers into bpf_jit.h

Christophe Leroy <christophe.leroy@csgroup.eu>
    powerpc/bpf: Change register numbering for bpf_set/is_seen_register()

Artemii Karasev <karasev@ispras.ru>
    ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()

Yonghong Song <yhs@fb.com>
    bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers

Michael Ellerman <mpe@ellerman.id.au>
    powerpc/imc-pmu: Revert nest_init_lock to being a mutex

Paul Chaignon <paul@isovalent.com>
    bpf: Fix incorrect state pruning for <8B spill/fill

Yuan Can <yuancan@huawei.com>
    bus: sunxi-rsb: Fix error handling in sunxi_rsb_init()

Takashi Sakamoto <o-takashi@sakamocchi.jp>
    firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region


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

Diffstat:

 Makefile                                           |    4 +-
 arch/arm64/boot/dts/amlogic/meson-axg.dtsi         |    4 +-
 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi  |    6 +-
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi          |    6 +-
 arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h     |    2 +-
 arch/parisc/kernel/firmware.c                      |    5 +-
 arch/parisc/kernel/ptrace.c                        |   15 +-
 arch/powerpc/net/bpf_jit.h                         |   35 +
 arch/powerpc/net/bpf_jit64.h                       |   19 -
 arch/powerpc/net/bpf_jit_comp64.c                  |   28 +-
 arch/powerpc/perf/imc-pmu.c                        |   14 +-
 arch/riscv/Makefile                                |    3 +
 arch/riscv/mm/cacheflush.c                         |    4 +-
 arch/x86/include/asm/debugreg.h                    |   26 +-
 drivers/ata/libata-core.c                          |    2 +-
 drivers/bus/sunxi-rsb.c                            |    8 +-
 drivers/firewire/core-cdev.c                       |    4 +-
 drivers/firmware/efi/efi.c                         |    2 +
 drivers/firmware/efi/memattr.c                     |    2 +-
 drivers/fpga/stratix10-soc.c                       |    4 +-
 drivers/fsi/fsi-sbefifo.c                          |    6 +-
 drivers/gpu/drm/i915/gem/i915_gem_tiling.c         |    9 +-
 drivers/gpu/drm/vc4/vc4_hdmi.c                     |    3 +-
 drivers/i2c/busses/i2c-mxs.c                       |    4 +-
 drivers/i2c/busses/i2c-rk3x.c                      |   44 +-
 drivers/iio/accel/hid-sensor-accel-3d.c            |    1 +
 drivers/iio/adc/berlin2-adc.c                      |    4 +-
 drivers/iio/adc/stm32-dfsdm-adc.c                  |    1 +
 drivers/iio/adc/twl6030-gpadc.c                    |   32 +
 drivers/iio/imu/fxos8700_core.c                    |  111 +-
 drivers/infiniband/hw/hfi1/file_ops.c              |    7 +-
 drivers/infiniband/hw/usnic/usnic_uiom.c           |    8 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |    8 +
 drivers/infiniband/ulp/rtrs/rtrs-clt.c             |    2 +-
 drivers/input/serio/i8042-x86ia64io.h              | 1188 ++++++++++++--------
 drivers/net/bonding/bond_debugfs.c                 |    2 +-
 drivers/net/ethernet/intel/ice/ice_main.c          |    2 +-
 drivers/net/ethernet/intel/igc/igc_ptp.c           |   14 +-
 .../ethernet/mellanox/mlx5/core/diag/fw_tracer.c   |    3 +-
 .../ethernet/mellanox/mlx5/core/ipoib/ethtool.c    |   13 +-
 drivers/net/ethernet/mscc/ocelot_flower.c          |   24 +-
 drivers/net/ethernet/pensando/ionic/ionic_lif.c    |   15 +-
 drivers/net/ethernet/qlogic/qede/qede_fp.c         |   10 +-
 drivers/net/ethernet/sfc/efx.c                     |    5 +-
 drivers/net/phy/dp83822.c                          |    6 +-
 drivers/net/phy/meson-gxl.c                        |    4 +
 drivers/net/usb/plusb.c                            |    4 +-
 drivers/net/virtio_net.c                           |    8 +-
 .../broadcom/brcm80211/brcmfmac/cfg80211.c         |   17 +
 drivers/nvmem/core.c                               |   45 +-
 drivers/nvmem/qcom-spmi-sdam.c                     |    1 +
 drivers/of/address.c                               |   21 +-
 drivers/pinctrl/aspeed/pinctrl-aspeed.c            |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c              |   16 +-
 drivers/pinctrl/pinctrl-single.c                   |    2 +
 drivers/platform/x86/dell-wmi.c                    |    3 +
 drivers/scsi/iscsi_tcp.c                           |    9 +-
 drivers/scsi/scsi_scan.c                           |    7 +-
 drivers/spi/spi-dw-core.c                          |    2 +-
 drivers/target/target_core_file.c                  |    4 +-
 drivers/target/target_core_tmr.c                   |    4 +-
 drivers/tty/serial/8250/8250_dma.c                 |   26 +-
 drivers/tty/vt/vc_screen.c                         |    9 +-
 drivers/usb/core/quirks.c                          |    3 +
 drivers/usb/dwc3/dwc3-qcom.c                       |   10 +-
 drivers/usb/gadget/function/f_fs.c                 |    4 +-
 drivers/usb/typec/altmodes/displayport.c           |    8 +-
 drivers/vhost/net.c                                |    3 +
 drivers/vhost/vhost.c                              |    3 +-
 drivers/vhost/vhost.h                              |    1 +
 drivers/video/fbdev/core/fbcon.c                   |    7 +-
 drivers/video/fbdev/smscufx.c                      |   46 +-
 drivers/watchdog/diag288_wdt.c                     |   15 +-
 drivers/xen/pvcalls-back.c                         |    8 +-
 fs/btrfs/volumes.c                                 |   22 +-
 fs/btrfs/zlib.c                                    |    2 +-
 fs/ceph/mds_client.c                               |    6 +
 fs/cifs/file.c                                     |    4 +-
 fs/f2fs/gc.c                                       |   18 +-
 fs/proc/task_mmu.c                                 |    4 +-
 fs/squashfs/squashfs_fs.h                          |    2 +-
 fs/squashfs/squashfs_fs_sb.h                       |    2 +-
 fs/squashfs/xattr.h                                |    4 +-
 fs/squashfs/xattr_id.c                             |    4 +-
 include/linux/hugetlb.h                            |   19 +-
 include/linux/nvmem-provider.h                     |    4 +-
 include/linux/util_macros.h                        |   12 +
 include/uapi/linux/ip.h                            |    1 +
 include/uapi/linux/ipv6.h                          |    1 +
 kernel/bpf/verifier.c                              |  102 +-
 kernel/trace/bpf_trace.c                           |    3 +-
 kernel/trace/trace.c                               |    3 -
 mm/gup.c                                           |    2 +-
 mm/hugetlb.c                                       |    6 +-
 mm/memory-failure.c                                |    2 +-
 mm/memory_hotplug.c                                |    2 +-
 mm/mempolicy.c                                     |    5 +-
 mm/migrate.c                                       |    7 +-
 mm/page_alloc.c                                    |    5 +-
 mm/swapfile.c                                      |    1 +
 net/bridge/br_netfilter_hooks.c                    |    1 +
 net/can/j1939/address-claim.c                      |   40 +
 net/can/j1939/transport.c                          |    4 -
 net/ipv4/tcp_bpf.c                                 |    4 +-
 net/netrom/af_netrom.c                             |    5 +
 net/openvswitch/datapath.c                         |   12 +-
 net/qrtr/ns.c                                      |    5 +-
 net/rds/message.c                                  |    6 +-
 net/x25/af_x25.c                                   |    6 +
 net/xfrm/xfrm_compat.c                             |    4 +-
 net/xfrm/xfrm_input.c                              |    3 +-
 sound/pci/hda/patch_realtek.c                      |    3 +
 sound/pci/hda/patch_via.c                          |    3 +
 sound/pci/lx6464es/lx_core.c                       |   11 +-
 sound/synth/emux/emux_nrpn.c                       |    3 +
 tools/testing/selftests/net/forwarding/lib.sh      |    4 +-
 tools/testing/selftests/net/udpgso_bench.sh        |   24 +-
 tools/testing/selftests/net/udpgso_bench_rx.c      |    4 +-
 tools/testing/selftests/net/udpgso_bench_tx.c      |   36 +-
 119 files changed, 1573 insertions(+), 855 deletions(-)



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

* [PATCH 5.10 001/139] firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 002/139] bus: sunxi-rsb: Fix error handling in sunxi_rsb_init() Greg Kroah-Hartman
                   ` (146 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Takashi Sakamoto, Takashi Iwai

From: Takashi Sakamoto <o-takashi@sakamocchi.jp>

commit 531390a243ef47448f8bad01c186c2787666bf4d upstream.

This patch is fix for Linux kernel v2.6.33 or later.

For request subaction to IEC 61883-1 FCP region, Linux FireWire subsystem
have had an issue of use-after-free. The subsystem allows multiple
user space listeners to the region, while data of the payload was likely
released before the listeners execute read(2) to access to it for copying
to user space.

The issue was fixed by a commit 281e20323ab7 ("firewire: core: fix
use-after-free regression in FCP handler"). The object of payload is
duplicated in kernel space for each listener. When the listener executes
ioctl(2) with FW_CDEV_IOC_SEND_RESPONSE request, the object is going to
be released.

However, it causes memory leak since the commit relies on call of
release_request() in drivers/firewire/core-cdev.c. Against the
expectation, the function is never called due to the design of
release_client_resource(). The function delegates release task
to caller when called with non-NULL fourth argument. The implementation
of ioctl_send_response() is the case. It should release the object
explicitly.

This commit fixes the bug.

Cc: <stable@vger.kernel.org>
Fixes: 281e20323ab7 ("firewire: core: fix use-after-free regression in FCP handler")
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20230117090610.93792-2-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/firewire/core-cdev.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/firewire/core-cdev.c
+++ b/drivers/firewire/core-cdev.c
@@ -818,8 +818,10 @@ static int ioctl_send_response(struct cl
 
 	r = container_of(resource, struct inbound_transaction_resource,
 			 resource);
-	if (is_fcp_request(r->request))
+	if (is_fcp_request(r->request)) {
+		kfree(r->data);
 		goto out;
+	}
 
 	if (a->length != fw_get_response_length(r->request)) {
 		ret = -EINVAL;



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

* [PATCH 5.10 002/139] bus: sunxi-rsb: Fix error handling in sunxi_rsb_init()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 001/139] firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 003/139] bpf: Fix incorrect state pruning for <8B spill/fill Greg Kroah-Hartman
                   ` (145 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Yuan Can, Jernej Skrabec, Sasha Levin

From: Yuan Can <yuancan@huawei.com>

[ Upstream commit f71eaf2708be7831428eacae7db25d8ec6b8b4c5 ]

The sunxi_rsb_init() returns the platform_driver_register() directly
without checking its return value, if platform_driver_register() failed,
the sunxi_rsb_bus is not unregistered.
Fix by unregister sunxi_rsb_bus when platform_driver_register() failed.

Fixes: d787dcdb9c8f ("bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus")
Signed-off-by: Yuan Can <yuancan@huawei.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20221123094200.12036-1-yuancan@huawei.com
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/bus/sunxi-rsb.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- a/drivers/bus/sunxi-rsb.c
+++ b/drivers/bus/sunxi-rsb.c
@@ -781,7 +781,13 @@ static int __init sunxi_rsb_init(void)
 		return ret;
 	}
 
-	return platform_driver_register(&sunxi_rsb_driver);
+	ret = platform_driver_register(&sunxi_rsb_driver);
+	if (ret) {
+		bus_unregister(&sunxi_rsb_bus);
+		return ret;
+	}
+
+	return 0;
 }
 module_init(sunxi_rsb_init);
 



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

* [PATCH 5.10 003/139] bpf: Fix incorrect state pruning for <8B spill/fill
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 001/139] firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 002/139] bus: sunxi-rsb: Fix error handling in sunxi_rsb_init() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 004/139] powerpc/imc-pmu: Revert nest_init_lock to being a mutex Greg Kroah-Hartman
                   ` (144 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Paul Chaignon, Alexei Starovoitov

From: Paul Chaignon <paul@isovalent.com>

commit 345e004d023343d38088fdfea39688aa11e06ccf upstream.

Commit 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill")
introduced support in the verifier to track <8B spill/fills of scalars.
The backtracking logic for the precision bit was however skipping
spill/fills of less than 8B. That could cause state pruning to consider
two states equivalent when they shouldn't be.

As an example, consider the following bytecode snippet:

  0:  r7 = r1
  1:  call bpf_get_prandom_u32
  2:  r6 = 2
  3:  if r0 == 0 goto pc+1
  4:  r6 = 3
  ...
  8: [state pruning point]
  ...
  /* u32 spill/fill */
  10: *(u32 *)(r10 - 8) = r6
  11: r8 = *(u32 *)(r10 - 8)
  12: r0 = 0
  13: if r8 == 3 goto pc+1
  14: r0 = 1
  15: exit

The verifier first walks the path with R6=3. Given the support for <8B
spill/fills, at instruction 13, it knows the condition is true and skips
instruction 14. At that point, the backtracking logic kicks in but stops
at the fill instruction since it only propagates the precision bit for
8B spill/fill. When the verifier then walks the path with R6=2, it will
consider it safe at instruction 8 because R6 is not marked as needing
precision. Instruction 14 is thus never walked and is then incorrectly
removed as 'dead code'.

It's also possible to lead the verifier to accept e.g. an out-of-bound
memory access instead of causing an incorrect dead code elimination.

This regression was found via Cilium's bpf-next CI where it was causing
a conntrack map update to be silently skipped because the code had been
removed by the verifier.

This commit fixes it by enabling support for <8B spill/fills in the
bactracking logic. In case of a <8B spill/fill, the full 8B stack slot
will be marked as needing precision. Then, in __mark_chain_precision,
any tracked register spilled in a marked slot will itself be marked as
needing precision, regardless of the spill size. This logic makes two
assumptions: (1) only 8B-aligned spill/fill are tracked and (2) spilled
registers are only tracked if the spill and fill sizes are equal. Commit
ef979017b837 ("bpf: selftest: Add verifier tests for <8-byte scalar
spill and refill") covers the first assumption and the next commit in
this patchset covers the second.

Fixes: 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill")
Signed-off-by: Paul Chaignon <paul@isovalent.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 kernel/bpf/verifier.c |    4 ----
 1 file changed, 4 deletions(-)

--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -1876,8 +1876,6 @@ static int backtrack_insn(struct bpf_ver
 		 */
 		if (insn->src_reg != BPF_REG_FP)
 			return 0;
-		if (BPF_SIZE(insn->code) != BPF_DW)
-			return 0;
 
 		/* dreg = *(u64 *)[fp - off] was a fill from the stack.
 		 * that [fp - off] slot contains scalar that needs to be
@@ -1900,8 +1898,6 @@ static int backtrack_insn(struct bpf_ver
 		/* scalars can only be spilled into stack */
 		if (insn->dst_reg != BPF_REG_FP)
 			return 0;
-		if (BPF_SIZE(insn->code) != BPF_DW)
-			return 0;
 		spi = (-insn->off - 1) / BPF_REG_SIZE;
 		if (spi >= 64) {
 			verbose(env, "BUG spi %d\n", spi);



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

* [PATCH 5.10 004/139] powerpc/imc-pmu: Revert nest_init_lock to being a mutex
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 003/139] bpf: Fix incorrect state pruning for <8B spill/fill Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 005/139] bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers Greg Kroah-Hartman
                   ` (143 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Kajol Jain, Michael Ellerman

From: Michael Ellerman <mpe@ellerman.id.au>

commit ad53db4acb415976761d7302f5b02e97f2bd097e upstream.

The recent commit 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in
IRQs disabled section") fixed warnings (and possible deadlocks) in the
IMC PMU driver by converting the locking to use spinlocks.

It also converted the init-time nest_init_lock to a spinlock, even
though it's not used at runtime in IRQ disabled sections or while
holding other spinlocks.

This leads to warnings such as:

  BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:49
  in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1, name: swapper/0
  preempt_count: 1, expected: 0
  CPU: 7 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc2-14719-gf12cd06109f4-dirty #1
  Hardware name: Mambo,Simulated-System POWER9 0x4e1203 opal:v6.6.6 PowerNV
  Call Trace:
    dump_stack_lvl+0x74/0xa8 (unreliable)
    __might_resched+0x178/0x1a0
    __cpuhp_setup_state+0x64/0x1e0
    init_imc_pmu+0xe48/0x1250
    opal_imc_counters_probe+0x30c/0x6a0
    platform_probe+0x78/0x110
    really_probe+0x104/0x420
    __driver_probe_device+0xb0/0x170
    driver_probe_device+0x58/0x180
    __driver_attach+0xd8/0x250
    bus_for_each_dev+0xb4/0x140
    driver_attach+0x34/0x50
    bus_add_driver+0x1e8/0x2d0
    driver_register+0xb4/0x1c0
    __platform_driver_register+0x38/0x50
    opal_imc_driver_init+0x2c/0x40
    do_one_initcall+0x80/0x360
    kernel_init_freeable+0x310/0x3b8
    kernel_init+0x30/0x1a0
    ret_from_kernel_thread+0x5c/0x64

Fix it by converting nest_init_lock back to a mutex, so that we can call
sleeping functions while holding it. There is no interaction between
nest_init_lock and the runtime spinlocks used by the actual PMU routines.

Fixes: 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in IRQs disabled section")
Tested-by: Kajol Jain<kjain@linux.ibm.com>
Reviewed-by: Kajol Jain<kjain@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230130014401.540543-1-mpe@ellerman.id.au
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/powerpc/perf/imc-pmu.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -21,7 +21,7 @@
  * Used to avoid races in counting the nest-pmu units during hotplug
  * register and unregister
  */
-static DEFINE_SPINLOCK(nest_init_lock);
+static DEFINE_MUTEX(nest_init_lock);
 static DEFINE_PER_CPU(struct imc_pmu_ref *, local_nest_imc_refc);
 static struct imc_pmu **per_nest_pmu_arr;
 static cpumask_t nest_imc_cpumask;
@@ -1621,7 +1621,7 @@ static void imc_common_mem_free(struct i
 static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)
 {
 	if (pmu_ptr->domain == IMC_DOMAIN_NEST) {
-		spin_lock(&nest_init_lock);
+		mutex_lock(&nest_init_lock);
 		if (nest_pmus == 1) {
 			cpuhp_remove_state(CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE);
 			kfree(nest_imc_refc);
@@ -1631,7 +1631,7 @@ static void imc_common_cpuhp_mem_free(st
 
 		if (nest_pmus > 0)
 			nest_pmus--;
-		spin_unlock(&nest_init_lock);
+		mutex_unlock(&nest_init_lock);
 	}
 
 	/* Free core_imc memory */
@@ -1788,11 +1788,11 @@ int init_imc_pmu(struct device_node *par
 		* rest. To handle the cpuhotplug callback unregister, we track
 		* the number of nest pmus in "nest_pmus".
 		*/
-		spin_lock(&nest_init_lock);
+		mutex_lock(&nest_init_lock);
 		if (nest_pmus == 0) {
 			ret = init_nest_pmu_ref();
 			if (ret) {
-				spin_unlock(&nest_init_lock);
+				mutex_unlock(&nest_init_lock);
 				kfree(per_nest_pmu_arr);
 				per_nest_pmu_arr = NULL;
 				goto err_free_mem;
@@ -1800,7 +1800,7 @@ int init_imc_pmu(struct device_node *par
 			/* Register for cpu hotplug notification. */
 			ret = nest_pmu_cpumask_init();
 			if (ret) {
-				spin_unlock(&nest_init_lock);
+				mutex_unlock(&nest_init_lock);
 				kfree(nest_imc_refc);
 				kfree(per_nest_pmu_arr);
 				per_nest_pmu_arr = NULL;
@@ -1808,7 +1808,7 @@ int init_imc_pmu(struct device_node *par
 			}
 		}
 		nest_pmus++;
-		spin_unlock(&nest_init_lock);
+		mutex_unlock(&nest_init_lock);
 		break;
 	case IMC_DOMAIN_CORE:
 		ret = core_imc_pmu_cpumask_init();



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

* [PATCH 5.10 005/139] bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 004/139] powerpc/imc-pmu: Revert nest_init_lock to being a mutex Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 006/139] ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path() Greg Kroah-Hartman
                   ` (142 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hao Sun, Yonghong Song,
	Alexei Starovoitov, Sasha Levin

From: Yonghong Song <yhs@fb.com>

[ Upstream commit bdb7fdb0aca8b96cef9995d3a57e251c2289322f ]

In current bpf_send_signal() and bpf_send_signal_thread() helper
implementation, irq_work is used to handle nmi context. Hao Sun
reported in [1] that the current task at the entry of the helper
might be gone during irq_work callback processing. To fix the issue,
a reference is acquired for the current task before enqueuing into
the irq_work so that the queued task is still available during
irq_work callback processing.

  [1] https://lore.kernel.org/bpf/20230109074425.12556-1-sunhao.th@gmail.com/

Fixes: 8b401f9ed244 ("bpf: implement bpf_send_signal() helper")
Tested-by: Hao Sun <sunhao.th@gmail.com>
Reported-by: Hao Sun <sunhao.th@gmail.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/r/20230118204815.3331855-1-yhs@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/trace/bpf_trace.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index ab4f51716645..94e51d36fb49 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -1055,6 +1055,7 @@ static void do_bpf_send_signal(struct irq_work *entry)
 
 	work = container_of(entry, struct send_signal_irq_work, irq_work);
 	group_send_sig_info(work->sig, SEND_SIG_PRIV, work->task, work->type);
+	put_task_struct(work->task);
 }
 
 static int bpf_send_signal_common(u32 sig, enum pid_type type)
@@ -1091,7 +1092,7 @@ static int bpf_send_signal_common(u32 sig, enum pid_type type)
 		 * to the irq_work. The current task may change when queued
 		 * irq works get executed.
 		 */
-		work->task = current;
+		work->task = get_task_struct(current);
 		work->sig = sig;
 		work->type = type;
 		irq_work_queue(&work->irq_work);
-- 
2.39.0




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

* [PATCH 5.10 006/139] ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 005/139] bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 007/139] powerpc/bpf: Change register numbering for bpf_set/is_seen_register() Greg Kroah-Hartman
                   ` (141 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Artemii Karasev, Takashi Iwai, Sasha Levin

From: Artemii Karasev <karasev@ispras.ru>

[ Upstream commit b9cee506da2b7920b5ea02ccd8e78a907d0ee7aa ]

snd_hda_get_connections() can return a negative error code.
It may lead to accessing 'conn' array at a negative index.

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

Signed-off-by: Artemii Karasev <karasev@ispras.ru>
Fixes: 30b4503378c9 ("ALSA: hda - Expose secret DAC-AA connection of some VIA codecs")
Link: https://lore.kernel.org/r/20230119082259.3634-1-karasev@ispras.ru
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/pci/hda/patch_via.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index a188901a83bb..29abc96dc146 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -821,6 +821,9 @@ static int add_secret_dac_path(struct hda_codec *codec)
 		return 0;
 	nums = snd_hda_get_connections(codec, spec->gen.mixer_nid, conn,
 				       ARRAY_SIZE(conn) - 1);
+	if (nums < 0)
+		return nums;
+
 	for (i = 0; i < nums; i++) {
 		if (get_wcaps_type(get_wcaps(codec, conn[i])) == AC_WID_AUD_OUT)
 			return 0;
-- 
2.39.0




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

* [PATCH 5.10 007/139] powerpc/bpf: Change register numbering for bpf_set/is_seen_register()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 006/139] ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 008/139] powerpc/bpf: Move common helpers into bpf_jit.h Greg Kroah-Hartman
                   ` (140 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christophe Leroy, Michael Ellerman,
	Sasha Levin

From: Christophe Leroy <christophe.leroy@csgroup.eu>

[ Upstream commit ed573b57e77a7860fe4026e1700faa2f6938caf1 ]

Instead of using BPF register number as input in functions
bpf_set_seen_register() and bpf_is_seen_register(), use
CPU register number directly.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/0cd2506f598e7095ea43e62dca1f472de5474a0d.1616430991.git.christophe.leroy@csgroup.eu
Stable-dep-of: 71f656a50176 ("bpf: Fix to preserve reg parent/live fields when copying range info")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/net/bpf_jit_comp64.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c
index 0d47514e8870..7da59ddc90dd 100644
--- a/arch/powerpc/net/bpf_jit_comp64.c
+++ b/arch/powerpc/net/bpf_jit_comp64.c
@@ -32,12 +32,12 @@ static inline void bpf_flush_icache(void *start, void *end)
 
 static inline bool bpf_is_seen_register(struct codegen_context *ctx, int i)
 {
-	return (ctx->seen & (1 << (31 - b2p[i])));
+	return ctx->seen & (1 << (31 - i));
 }
 
 static inline void bpf_set_seen_register(struct codegen_context *ctx, int i)
 {
-	ctx->seen |= (1 << (31 - b2p[i]));
+	ctx->seen |= 1 << (31 - i);
 }
 
 static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
@@ -48,7 +48,7 @@ static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
 	 * - the bpf program uses its stack area
 	 * The latter condition is deduced from the usage of BPF_REG_FP
 	 */
-	return ctx->seen & SEEN_FUNC || bpf_is_seen_register(ctx, BPF_REG_FP);
+	return ctx->seen & SEEN_FUNC || bpf_is_seen_register(ctx, b2p[BPF_REG_FP]);
 }
 
 /*
@@ -125,11 +125,11 @@ static void bpf_jit_build_prologue(u32 *image, struct codegen_context *ctx)
 	 * in the protected zone below the previous stack frame
 	 */
 	for (i = BPF_REG_6; i <= BPF_REG_10; i++)
-		if (bpf_is_seen_register(ctx, i))
+		if (bpf_is_seen_register(ctx, b2p[i]))
 			PPC_BPF_STL(b2p[i], 1, bpf_jit_stack_offsetof(ctx, b2p[i]));
 
 	/* Setup frame pointer to point to the bpf stack area */
-	if (bpf_is_seen_register(ctx, BPF_REG_FP))
+	if (bpf_is_seen_register(ctx, b2p[BPF_REG_FP]))
 		EMIT(PPC_RAW_ADDI(b2p[BPF_REG_FP], 1,
 				STACK_FRAME_MIN_SIZE + ctx->stack_size));
 }
@@ -140,7 +140,7 @@ static void bpf_jit_emit_common_epilogue(u32 *image, struct codegen_context *ctx
 
 	/* Restore NVRs */
 	for (i = BPF_REG_6; i <= BPF_REG_10; i++)
-		if (bpf_is_seen_register(ctx, i))
+		if (bpf_is_seen_register(ctx, b2p[i]))
 			PPC_BPF_LL(b2p[i], 1, bpf_jit_stack_offsetof(ctx, b2p[i]));
 
 	/* Tear down our stack frame */
@@ -356,9 +356,9 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
 		 * any issues.
 		 */
 		if (dst_reg >= BPF_PPC_NVR_MIN && dst_reg < 32)
-			bpf_set_seen_register(ctx, insn[i].dst_reg);
+			bpf_set_seen_register(ctx, dst_reg);
 		if (src_reg >= BPF_PPC_NVR_MIN && src_reg < 32)
-			bpf_set_seen_register(ctx, insn[i].src_reg);
+			bpf_set_seen_register(ctx, src_reg);
 
 		switch (code) {
 		/*
-- 
2.39.0




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

* [PATCH 5.10 008/139] powerpc/bpf: Move common helpers into bpf_jit.h
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (6 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 007/139] powerpc/bpf: Change register numbering for bpf_set/is_seen_register() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 009/139] bpf: Support <8-byte scalar spill and refill Greg Kroah-Hartman
                   ` (139 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christophe Leroy, Michael Ellerman,
	Sasha Levin

From: Christophe Leroy <christophe.leroy@csgroup.eu>

[ Upstream commit f1b1583d5faa86cb3dcb7b740594868debad7c30 ]

Move functions bpf_flush_icache(), bpf_is_seen_register() and
bpf_set_seen_register() in order to reuse them in future
bpf_jit_comp32.c

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/28e8d5a75e64807d7e9d39a4b52658755e259f8c.1616430991.git.christophe.leroy@csgroup.eu
Stable-dep-of: 71f656a50176 ("bpf: Fix to preserve reg parent/live fields when copying range info")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/net/bpf_jit.h        | 35 +++++++++++++++++++++++++++++++
 arch/powerpc/net/bpf_jit64.h      | 19 -----------------
 arch/powerpc/net/bpf_jit_comp64.c | 16 --------------
 3 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/arch/powerpc/net/bpf_jit.h b/arch/powerpc/net/bpf_jit.h
index 1a5b4da8a235..cd9aab6ec2c5 100644
--- a/arch/powerpc/net/bpf_jit.h
+++ b/arch/powerpc/net/bpf_jit.h
@@ -117,6 +117,41 @@
 #define COND_LT		(CR0_LT | COND_CMP_TRUE)
 #define COND_LE		(CR0_GT | COND_CMP_FALSE)
 
+#define SEEN_FUNC	0x1000 /* might call external helpers */
+#define SEEN_STACK	0x2000 /* uses BPF stack */
+#define SEEN_TAILCALL	0x4000 /* uses tail calls */
+
+struct codegen_context {
+	/*
+	 * This is used to track register usage as well
+	 * as calls to external helpers.
+	 * - register usage is tracked with corresponding
+	 *   bits (r3-r10 and r27-r31)
+	 * - rest of the bits can be used to track other
+	 *   things -- for now, we use bits 16 to 23
+	 *   encoded in SEEN_* macros above
+	 */
+	unsigned int seen;
+	unsigned int idx;
+	unsigned int stack_size;
+};
+
+static inline void bpf_flush_icache(void *start, void *end)
+{
+	smp_wmb();	/* smp write barrier */
+	flush_icache_range((unsigned long)start, (unsigned long)end);
+}
+
+static inline bool bpf_is_seen_register(struct codegen_context *ctx, int i)
+{
+	return ctx->seen & (1 << (31 - i));
+}
+
+static inline void bpf_set_seen_register(struct codegen_context *ctx, int i)
+{
+	ctx->seen |= 1 << (31 - i);
+}
+
 #endif
 
 #endif
diff --git a/arch/powerpc/net/bpf_jit64.h b/arch/powerpc/net/bpf_jit64.h
index 4d164e865b39..201b83bfa869 100644
--- a/arch/powerpc/net/bpf_jit64.h
+++ b/arch/powerpc/net/bpf_jit64.h
@@ -86,25 +86,6 @@ static const int b2p[] = {
 				} while(0)
 #define PPC_BPF_STLU(r, base, i) do { EMIT(PPC_RAW_STDU(r, base, i)); } while(0)
 
-#define SEEN_FUNC	0x1000 /* might call external helpers */
-#define SEEN_STACK	0x2000 /* uses BPF stack */
-#define SEEN_TAILCALL	0x4000 /* uses tail calls */
-
-struct codegen_context {
-	/*
-	 * This is used to track register usage as well
-	 * as calls to external helpers.
-	 * - register usage is tracked with corresponding
-	 *   bits (r3-r10 and r27-r31)
-	 * - rest of the bits can be used to track other
-	 *   things -- for now, we use bits 16 to 23
-	 *   encoded in SEEN_* macros above
-	 */
-	unsigned int seen;
-	unsigned int idx;
-	unsigned int stack_size;
-};
-
 #endif /* !__ASSEMBLY__ */
 
 #endif
diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c
index 7da59ddc90dd..ebad2c79cd6f 100644
--- a/arch/powerpc/net/bpf_jit_comp64.c
+++ b/arch/powerpc/net/bpf_jit_comp64.c
@@ -24,22 +24,6 @@ static void bpf_jit_fill_ill_insns(void *area, unsigned int size)
 	memset32(area, BREAKPOINT_INSTRUCTION, size/4);
 }
 
-static inline void bpf_flush_icache(void *start, void *end)
-{
-	smp_wmb();
-	flush_icache_range((unsigned long)start, (unsigned long)end);
-}
-
-static inline bool bpf_is_seen_register(struct codegen_context *ctx, int i)
-{
-	return ctx->seen & (1 << (31 - i));
-}
-
-static inline void bpf_set_seen_register(struct codegen_context *ctx, int i)
-{
-	ctx->seen |= 1 << (31 - i);
-}
-
 static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
 {
 	/*
-- 
2.39.0




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

* [PATCH 5.10 009/139] bpf: Support <8-byte scalar spill and refill
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (7 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 008/139] powerpc/bpf: Move common helpers into bpf_jit.h Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 010/139] bpf: Fix to preserve reg parent/live fields when copying range info Greg Kroah-Hartman
                   ` (138 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Martin KaFai Lau,
	Alexei Starovoitov, Sasha Levin

From: Martin KaFai Lau <kafai@fb.com>

[ Upstream commit 354e8f1970f821d4952458f77b1ab6c3eb24d530 ]

The verifier currently does not save the reg state when
spilling <8byte bounded scalar to the stack.  The bpf program
will be incorrectly rejected when this scalar is refilled to
the reg and then used to offset into a packet header.
The later patch has a simplified bpf prog from a real use case
to demonstrate this case.  The current work around is
to reparse the packet again such that this offset scalar
is close to where the packet data will be accessed to
avoid the spill.  Thus, the header is parsed twice.

The llvm patch [1] will align the <8bytes spill to
the 8-byte stack address.  This can simplify the verifier
support by avoiding to store multiple reg states for
each 8 byte stack slot.

This patch changes the verifier to save the reg state when
spilling <8bytes scalar to the stack.  This reg state saving
is limited to spill aligned to the 8-byte stack address.
The current refill logic has already called coerce_reg_to_size(),
so coerce_reg_to_size() is not called on state->stack[spi].spilled_ptr
during spill.

When refilling in check_stack_read_fixed_off(),  it checks
the refill size is the same as the number of bytes marked with
STACK_SPILL before restoring the reg state.  When restoring
the reg state to state->regs[dst_regno], it needs
to avoid the state->regs[dst_regno].subreg_def being
over written because it has been marked by the check_reg_arg()
earlier [check_mem_access() is called after check_reg_arg() in
do_check()].  Reordering check_mem_access() and check_reg_arg()
will need a lot of changes in test_verifier's tests because
of the difference in verifier's error message.  Thus, the
patch here is to save the state->regs[dst_regno].subreg_def
first in check_stack_read_fixed_off().

There are cases that the verifier needs to scrub the spilled slot
from STACK_SPILL to STACK_MISC.  After this patch the spill is not always
in 8 bytes now, so it can no longer assume the other 7 bytes are always
marked as STACK_SPILL.  In particular, the scrub needs to avoid marking
an uninitialized byte from STACK_INVALID to STACK_MISC.  Otherwise, the
verifier will incorrectly accept bpf program reading uninitialized bytes
from the stack.  A new helper scrub_spilled_slot() is created for this
purpose.

[1]: https://reviews.llvm.org/D109073

Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210922004941.625398-1-kafai@fb.com
Stable-dep-of: 71f656a50176 ("bpf: Fix to preserve reg parent/live fields when copying range info")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/bpf/verifier.c |   67 ++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 52 insertions(+), 15 deletions(-)

--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -570,6 +570,12 @@ static bool is_spilled_reg(const struct
 	return stack->slot_type[BPF_REG_SIZE - 1] == STACK_SPILL;
 }
 
+static void scrub_spilled_slot(u8 *stype)
+{
+	if (*stype != STACK_INVALID)
+		*stype = STACK_MISC;
+}
+
 static void print_verifier_state(struct bpf_verifier_env *env,
 				 const struct bpf_func_state *state)
 {
@@ -2269,15 +2275,21 @@ static bool __is_pointer_value(bool allo
 }
 
 static void save_register_state(struct bpf_func_state *state,
-				int spi, struct bpf_reg_state *reg)
+				int spi, struct bpf_reg_state *reg,
+				int size)
 {
 	int i;
 
 	state->stack[spi].spilled_ptr = *reg;
-	state->stack[spi].spilled_ptr.live |= REG_LIVE_WRITTEN;
+	if (size == BPF_REG_SIZE)
+		state->stack[spi].spilled_ptr.live |= REG_LIVE_WRITTEN;
 
-	for (i = 0; i < BPF_REG_SIZE; i++)
-		state->stack[spi].slot_type[i] = STACK_SPILL;
+	for (i = BPF_REG_SIZE; i > BPF_REG_SIZE - size; i--)
+		state->stack[spi].slot_type[i - 1] = STACK_SPILL;
+
+	/* size < 8 bytes spill */
+	for (; i; i--)
+		scrub_spilled_slot(&state->stack[spi].slot_type[i - 1]);
 }
 
 /* check_stack_{read,write}_fixed_off functions track spill/fill of registers,
@@ -2327,7 +2339,7 @@ static int check_stack_write_fixed_off(s
 			env->insn_aux_data[insn_idx].sanitize_stack_spill = true;
 	}
 
-	if (reg && size == BPF_REG_SIZE && register_is_bounded(reg) &&
+	if (reg && !(off % BPF_REG_SIZE) && register_is_bounded(reg) &&
 	    !register_is_null(reg) && env->bpf_capable) {
 		if (dst_reg != BPF_REG_FP) {
 			/* The backtracking logic can only recognize explicit
@@ -2340,7 +2352,7 @@ static int check_stack_write_fixed_off(s
 			if (err)
 				return err;
 		}
-		save_register_state(state, spi, reg);
+		save_register_state(state, spi, reg, size);
 	} else if (reg && is_spillable_regtype(reg->type)) {
 		/* register containing pointer is being spilled into stack */
 		if (size != BPF_REG_SIZE) {
@@ -2352,7 +2364,7 @@ static int check_stack_write_fixed_off(s
 			verbose(env, "cannot spill pointers to stack into stack frame of the caller\n");
 			return -EINVAL;
 		}
-		save_register_state(state, spi, reg);
+		save_register_state(state, spi, reg, size);
 	} else {
 		u8 type = STACK_MISC;
 
@@ -2361,7 +2373,7 @@ static int check_stack_write_fixed_off(s
 		/* Mark slots as STACK_MISC if they belonged to spilled ptr. */
 		if (is_spilled_reg(&state->stack[spi]))
 			for (i = 0; i < BPF_REG_SIZE; i++)
-				state->stack[spi].slot_type[i] = STACK_MISC;
+				scrub_spilled_slot(&state->stack[spi].slot_type[i]);
 
 		/* only mark the slot as written if all 8 bytes were written
 		 * otherwise read propagation may incorrectly stop too soon
@@ -2568,23 +2580,50 @@ static int check_stack_read_fixed_off(st
 	struct bpf_func_state *state = vstate->frame[vstate->curframe];
 	int i, slot = -off - 1, spi = slot / BPF_REG_SIZE;
 	struct bpf_reg_state *reg;
-	u8 *stype;
+	u8 *stype, type;
 
 	stype = reg_state->stack[spi].slot_type;
 	reg = &reg_state->stack[spi].spilled_ptr;
 
 	if (is_spilled_reg(&reg_state->stack[spi])) {
 		if (size != BPF_REG_SIZE) {
+			u8 scalar_size = 0;
+
 			if (reg->type != SCALAR_VALUE) {
 				verbose_linfo(env, env->insn_idx, "; ");
 				verbose(env, "invalid size of register fill\n");
 				return -EACCES;
 			}
-			if (dst_regno >= 0) {
+
+			mark_reg_read(env, reg, reg->parent, REG_LIVE_READ64);
+			if (dst_regno < 0)
+				return 0;
+
+			for (i = BPF_REG_SIZE; i > 0 && stype[i - 1] == STACK_SPILL; i--)
+				scalar_size++;
+
+			if (!(off % BPF_REG_SIZE) && size == scalar_size) {
+				/* The earlier check_reg_arg() has decided the
+				 * subreg_def for this insn.  Save it first.
+				 */
+				s32 subreg_def = state->regs[dst_regno].subreg_def;
+
+				state->regs[dst_regno] = *reg;
+				state->regs[dst_regno].subreg_def = subreg_def;
+			} else {
+				for (i = 0; i < size; i++) {
+					type = stype[(slot - i) % BPF_REG_SIZE];
+					if (type == STACK_SPILL)
+						continue;
+					if (type == STACK_MISC)
+						continue;
+					verbose(env, "invalid read from stack off %d+%d size %d\n",
+						off, i, size);
+					return -EACCES;
+				}
 				mark_reg_unknown(env, state->regs, dst_regno);
-				state->regs[dst_regno].live |= REG_LIVE_WRITTEN;
 			}
-			mark_reg_read(env, reg, reg->parent, REG_LIVE_READ64);
+			state->regs[dst_regno].live |= REG_LIVE_WRITTEN;
 			return 0;
 		}
 		for (i = 1; i < BPF_REG_SIZE; i++) {
@@ -2615,8 +2654,6 @@ static int check_stack_read_fixed_off(st
 		}
 		mark_reg_read(env, reg, reg->parent, REG_LIVE_READ64);
 	} else {
-		u8 type;
-
 		for (i = 0; i < size; i++) {
 			type = stype[(slot - i) % BPF_REG_SIZE];
 			if (type == STACK_MISC)
@@ -4102,7 +4139,7 @@ static int check_stack_range_initialized
 			if (clobber) {
 				__mark_reg_unknown(env, &state->stack[spi].spilled_ptr);
 				for (j = 0; j < BPF_REG_SIZE; j++)
-					state->stack[spi].slot_type[j] = STACK_MISC;
+					scrub_spilled_slot(&state->stack[spi].slot_type[j]);
 			}
 			goto mark;
 		}



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

* [PATCH 5.10 010/139] bpf: Fix to preserve reg parent/live fields when copying range info
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (8 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 009/139] bpf: Support <8-byte scalar spill and refill Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 011/139] bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener Greg Kroah-Hartman
                   ` (137 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Eduard Zingerman,
	Alexei Starovoitov, Sasha Levin

From: Eduard Zingerman <eddyz87@gmail.com>

[ Upstream commit 71f656a50176915d6813751188b5758daa8d012b ]

Register range information is copied in several places. The intent is
to transfer range/id information from one register/stack spill to
another. Currently this is done using direct register assignment, e.g.:

static void find_equal_scalars(..., struct bpf_reg_state *known_reg)
{
	...
	struct bpf_reg_state *reg;
	...
			*reg = *known_reg;
	...
}

However, such assignments also copy the following bpf_reg_state fields:

struct bpf_reg_state {
	...
	struct bpf_reg_state *parent;
	...
	enum bpf_reg_liveness live;
	...
};

Copying of these fields is accidental and incorrect, as could be
demonstrated by the following example:

     0: call ktime_get_ns()
     1: r6 = r0
     2: call ktime_get_ns()
     3: r7 = r0
     4: if r0 > r6 goto +1             ; r0 & r6 are unbound thus generated
                                       ; branch states are identical
     5: *(u64 *)(r10 - 8) = 0xdeadbeef ; 64-bit write to fp[-8]
    --- checkpoint ---
     6: r1 = 42                        ; r1 marked as written
     7: *(u8 *)(r10 - 8) = r1          ; 8-bit write, fp[-8] parent & live
                                       ; overwritten
     8: r2 = *(u64 *)(r10 - 8)
     9: r0 = 0
    10: exit

This example is unsafe because 64-bit write to fp[-8] at (5) is
conditional, thus not all bytes of fp[-8] are guaranteed to be set
when it is read at (8). However, currently the example passes
verification.

First, the execution path 1-10 is examined by verifier.
Suppose that a new checkpoint is created by is_state_visited() at (6).
After checkpoint creation:
- r1.parent points to checkpoint.r1,
- fp[-8].parent points to checkpoint.fp[-8].
At (6) the r1.live is set to REG_LIVE_WRITTEN.
At (7) the fp[-8].parent is set to r1.parent and fp[-8].live is set to
REG_LIVE_WRITTEN, because of the following code called in
check_stack_write_fixed_off():

static void save_register_state(struct bpf_func_state *state,
				int spi, struct bpf_reg_state *reg,
				int size)
{
	...
	state->stack[spi].spilled_ptr = *reg;  // <--- parent & live copied
	if (size == BPF_REG_SIZE)
		state->stack[spi].spilled_ptr.live |= REG_LIVE_WRITTEN;
	...
}

Note the intent to mark stack spill as written only if 8 bytes are
spilled to a slot, however this intent is spoiled by a 'live' field copy.
At (8) the checkpoint.fp[-8] should be marked as REG_LIVE_READ but
this does not happen:
- fp[-8] in a current state is already marked as REG_LIVE_WRITTEN;
- fp[-8].parent points to checkpoint.r1, parentage chain is used by
  mark_reg_read() to mark checkpoint states.
At (10) the verification is finished for path 1-10 and jump 4-6 is
examined. The checkpoint.fp[-8] never gets REG_LIVE_READ mark and this
spill is pruned from the cached states by clean_live_states(). Hence
verifier state obtained via path 1-4,6 is deemed identical to one
obtained via path 1-6 and program marked as safe.

Note: the example should be executed with BPF_F_TEST_STATE_FREQ flag
set to force creation of intermediate verifier states.

This commit revisits the locations where bpf_reg_state instances are
copied and replaces the direct copies with a call to a function
copy_register_state(dst, src) that preserves 'parent' and 'live'
fields of the 'dst'.

Fixes: 679c782de14b ("bpf/verifier: per-register parent pointers")
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20230106142214.1040390-2-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/bpf/verifier.c |   25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -2274,13 +2274,24 @@ static bool __is_pointer_value(bool allo
 	return reg->type != SCALAR_VALUE;
 }
 
+/* Copy src state preserving dst->parent and dst->live fields */
+static void copy_register_state(struct bpf_reg_state *dst, const struct bpf_reg_state *src)
+{
+	struct bpf_reg_state *parent = dst->parent;
+	enum bpf_reg_liveness live = dst->live;
+
+	*dst = *src;
+	dst->parent = parent;
+	dst->live = live;
+}
+
 static void save_register_state(struct bpf_func_state *state,
 				int spi, struct bpf_reg_state *reg,
 				int size)
 {
 	int i;
 
-	state->stack[spi].spilled_ptr = *reg;
+	copy_register_state(&state->stack[spi].spilled_ptr, reg);
 	if (size == BPF_REG_SIZE)
 		state->stack[spi].spilled_ptr.live |= REG_LIVE_WRITTEN;
 
@@ -2608,7 +2619,7 @@ static int check_stack_read_fixed_off(st
 				 */
 				s32 subreg_def = state->regs[dst_regno].subreg_def;
 
-				state->regs[dst_regno] = *reg;
+				copy_register_state(&state->regs[dst_regno], reg);
 				state->regs[dst_regno].subreg_def = subreg_def;
 			} else {
 				for (i = 0; i < size; i++) {
@@ -2635,7 +2646,7 @@ static int check_stack_read_fixed_off(st
 
 		if (dst_regno >= 0) {
 			/* restore register state from stack */
-			state->regs[dst_regno] = *reg;
+			copy_register_state(&state->regs[dst_regno], reg);
 			/* mark reg as written since spilled pointer state likely
 			 * has its liveness marks cleared by is_state_visited()
 			 * which resets stack/reg liveness for state transitions
@@ -5896,7 +5907,7 @@ do_sim:
 	 */
 	if (!ptr_is_dst_reg) {
 		tmp = *dst_reg;
-		*dst_reg = *ptr_reg;
+		copy_register_state(dst_reg, ptr_reg);
 	}
 	ret = sanitize_speculative_path(env, NULL, env->insn_idx + 1,
 					env->insn_idx);
@@ -7150,7 +7161,7 @@ static int check_alu_op(struct bpf_verif
 					 * to propagate min/max range.
 					 */
 					src_reg->id = ++env->id_gen;
-				*dst_reg = *src_reg;
+				copy_register_state(dst_reg, src_reg);
 				dst_reg->live |= REG_LIVE_WRITTEN;
 				dst_reg->subreg_def = DEF_NOT_SUBREG;
 			} else {
@@ -7161,7 +7172,7 @@ static int check_alu_op(struct bpf_verif
 						insn->src_reg);
 					return -EACCES;
 				} else if (src_reg->type == SCALAR_VALUE) {
-					*dst_reg = *src_reg;
+					copy_register_state(dst_reg, src_reg);
 					/* Make sure ID is cleared otherwise
 					 * dst_reg min/max could be incorrectly
 					 * propagated into src_reg by find_equal_scalars()
@@ -7981,7 +7992,7 @@ static void find_equal_scalars(struct bp
 
 	bpf_for_each_reg_in_vstate(vstate, state, reg, ({
 		if (reg->type == SCALAR_VALUE && reg->id == known_reg->id)
-			*reg = *known_reg;
+			copy_register_state(reg, known_reg);
 	}));
 }
 



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

* [PATCH 5.10 011/139] bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (9 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 010/139] bpf: Fix to preserve reg parent/live fields when copying range info Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 012/139] arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX Greg Kroah-Hartman
                   ` (136 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+04c21ed96d861dccc5cd,
	Jakub Sitnicki, John Fastabend, Alexei Starovoitov, Sasha Levin

From: Jakub Sitnicki <jakub@cloudflare.com>

[ Upstream commit ddce1e091757d0259107c6c0c7262df201de2b66 ]

A listening socket linked to a sockmap has its sk_prot overridden. It
points to one of the struct proto variants in tcp_bpf_prots. The variant
depends on the socket's family and which sockmap programs are attached.

A child socket cloned from a TCP listener initially inherits their sk_prot.
But before cloning is finished, we restore the child's proto to the
listener's original non-tcp_bpf_prots one. This happens in
tcp_create_openreq_child -> tcp_bpf_clone.

Today, in tcp_bpf_clone we detect if the child's proto should be restored
by checking only for the TCP_BPF_BASE proto variant. This is not
correct. The sk_prot of listening socket linked to a sockmap can point to
to any variant in tcp_bpf_prots.

If the listeners sk_prot happens to be not the TCP_BPF_BASE variant, then
the child socket unintentionally is left if the inherited sk_prot by
tcp_bpf_clone.

This leads to issues like infinite recursion on close [1], because the
child state is otherwise not set up for use with tcp_bpf_prot operations.

Adjust the check in tcp_bpf_clone to detect all of tcp_bpf_prots variants.

Note that it wouldn't be sufficient to check the socket state when
overriding the sk_prot in tcp_bpf_update_proto in order to always use the
TCP_BPF_BASE variant for listening sockets. Since commit
b8b8315e39ff ("bpf, sockmap: Remove unhash handler for BPF sockmap usage")
it is possible for a socket to transition to TCP_LISTEN state while already
linked to a sockmap, e.g. connect() -> insert into map ->
connect(AF_UNSPEC) -> listen().

[1]: https://lore.kernel.org/all/00000000000073b14905ef2e7401@google.com/

Fixes: e80251555f0b ("tcp_bpf: Don't let child socket inherit parent protocol ops on copy")
Reported-by: syzbot+04c21ed96d861dccc5cd@syzkaller.appspotmail.com
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/r/20230113-sockmap-fix-v2-2-1e0ee7ac2f90@cloudflare.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/util_macros.h | 12 ++++++++++++
 net/ipv4/tcp_bpf.c          |  4 ++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/include/linux/util_macros.h b/include/linux/util_macros.h
index 72299f261b25..43db6e47503c 100644
--- a/include/linux/util_macros.h
+++ b/include/linux/util_macros.h
@@ -38,4 +38,16 @@
  */
 #define find_closest_descending(x, a, as) __find_closest(x, a, as, >=)
 
+/**
+ * is_insidevar - check if the @ptr points inside the @var memory range.
+ * @ptr:	the pointer to a memory address.
+ * @var:	the variable which address and size identify the memory range.
+ *
+ * Evaluates to true if the address in @ptr lies within the memory
+ * range allocated to @var.
+ */
+#define is_insidevar(ptr, var)						\
+	((uintptr_t)(ptr) >= (uintptr_t)(var) &&			\
+	 (uintptr_t)(ptr) <  (uintptr_t)(var) + sizeof(var))
+
 #endif
diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c
index 6a1685461f89..926e29e84b40 100644
--- a/net/ipv4/tcp_bpf.c
+++ b/net/ipv4/tcp_bpf.c
@@ -6,6 +6,7 @@
 #include <linux/bpf.h>
 #include <linux/init.h>
 #include <linux/wait.h>
+#include <linux/util_macros.h>
 
 #include <net/inet_common.h>
 #include <net/tls.h>
@@ -642,10 +643,9 @@ struct proto *tcp_bpf_get_proto(struct sock *sk, struct sk_psock *psock)
  */
 void tcp_bpf_clone(const struct sock *sk, struct sock *newsk)
 {
-	int family = sk->sk_family == AF_INET6 ? TCP_BPF_IPV6 : TCP_BPF_IPV4;
 	struct proto *prot = newsk->sk_prot;
 
-	if (prot == &tcp_bpf_prots[family][TCP_BPF_BASE])
+	if (is_insidevar(prot, tcp_bpf_prots))
 		newsk->sk_prot = sk->sk_prot_creator;
 }
 #endif /* CONFIG_BPF_STREAM_PARSER */
-- 
2.39.0




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

* [PATCH 5.10 012/139] arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (10 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 011/139] bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 013/139] drm/vc4: hdmi: make CEC adapter name unique Greg Kroah-Hartman
                   ` (135 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Pierluigi Passaro, Fabio Estevam,
	Shawn Guo, Sasha Levin

From: Pierluigi Passaro <pierluigi.p@variscite.com>

[ Upstream commit 47123900f3e4a7f769631d6ec15abf44086276f6 ]

According section
    8.2.5.313 Select Input Register (IOMUXC_UART1_RXD_SELECT_INPUT)
of 
    i.MX 8M Mini Applications Processor Reference Manual, Rev. 3, 11/2020
the required setting for this specific pin configuration is "1"

Signed-off-by: Pierluigi Passaro <pierluigi.p@variscite.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Fixes: c1c9d41319c3 ("dt-bindings: imx: Add pinctrl binding doc for imx8mm")
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h b/arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h
index a003e6af3353..56271abfb7e0 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h
+++ b/arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h
@@ -601,7 +601,7 @@
 #define MX8MM_IOMUXC_UART1_RXD_GPIO5_IO22                                   0x234 0x49C 0x000 0x5 0x0
 #define MX8MM_IOMUXC_UART1_RXD_TPSMP_HDATA24                                0x234 0x49C 0x000 0x7 0x0
 #define MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX                                 0x238 0x4A0 0x000 0x0 0x0
-#define MX8MM_IOMUXC_UART1_TXD_UART1_DTE_RX                                 0x238 0x4A0 0x4F4 0x0 0x0
+#define MX8MM_IOMUXC_UART1_TXD_UART1_DTE_RX                                 0x238 0x4A0 0x4F4 0x0 0x1
 #define MX8MM_IOMUXC_UART1_TXD_ECSPI3_MOSI                                  0x238 0x4A0 0x000 0x1 0x0
 #define MX8MM_IOMUXC_UART1_TXD_GPIO5_IO23                                   0x238 0x4A0 0x000 0x5 0x0
 #define MX8MM_IOMUXC_UART1_TXD_TPSMP_HDATA25                                0x238 0x4A0 0x000 0x7 0x0
-- 
2.39.0




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

* [PATCH 5.10 013/139] drm/vc4: hdmi: make CEC adapter name unique
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (11 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 012/139] arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 014/139] scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT" Greg Kroah-Hartman
                   ` (134 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hans Verkuil, Maxime Ripard, Sasha Levin

From: Hans Verkuil <hverkuil-cisco@xs4all.nl>

[ Upstream commit 51128c3f2a7c98055ea1d27e34910dc10977f618 ]

The bcm2711 has two HDMI outputs, each with their own CEC adapter.
The CEC adapter name has to be unique, but it is currently
hardcoded to "vc4" for both outputs. Change this to use the card_name
from the variant information in order to make the adapter name unique.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: 15b4511a4af6 ("drm/vc4: add HDMI CEC support")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/dcf1db75-d9cc-62cc-fa12-baf1b2b3bf31@xs4all.nl
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 08175c3dd374..539ebf85fd7c 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -1491,7 +1491,8 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
 		return 0;
 
 	vc4_hdmi->cec_adap = cec_allocate_adapter(&vc4_hdmi_cec_adap_ops,
-						  vc4_hdmi, "vc4",
+						  vc4_hdmi,
+						  vc4_hdmi->variant->card_name,
 						  CEC_CAP_DEFAULTS |
 						  CEC_CAP_CONNECTOR_INFO, 1);
 	ret = PTR_ERR_OR_ZERO(vc4_hdmi->cec_adap);
-- 
2.39.0




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

* [PATCH 5.10 014/139] scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT"
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (12 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 013/139] drm/vc4: hdmi: make CEC adapter name unique Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 015/139] vhost/net: Clear the pending messages when the backend is removed Greg Kroah-Hartman
                   ` (133 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Bart Van Assche, Martin Wilck,
	Hannes Reinecke, Martin K. Petersen, Sasha Levin

From: Martin K. Petersen <martin.petersen@oracle.com>

[ Upstream commit 15600159bcc6abbeae6b33a849bef90dca28b78f ]

This reverts commit 948e922fc44611ee2de0c89583ca958cb5307d36.

Not all targets that return PQ=1 and PDT=0 should be ignored. While
the SCSI spec is vague in this department, there appears to be a
critical mass of devices which rely on devices being accessible with
this combination of reported values.

Fixes: 948e922fc446 ("scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT")
Link: https://lore.kernel.org/r/yq1lelrleqr.fsf@ca-mkp.ca.oracle.com
Acked-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Martin Wilck <mwilck@suse.com>
Acked-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/scsi_scan.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 8e474b145249..6f7c4d41c51d 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -1129,8 +1129,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
 	 * that no LUN is present, so don't add sdev in these cases.
 	 * Two specific examples are:
 	 * 1) NetApp targets: return PQ=1, PDT=0x1f
-	 * 2) IBM/2145 targets: return PQ=1, PDT=0
-	 * 3) USB UFI: returns PDT=0x1f, with the PQ bits being "reserved"
+	 * 2) USB UFI: returns PDT=0x1f, with the PQ bits being "reserved"
 	 *    in the UFI 1.0 spec (we cannot rely on reserved bits).
 	 *
 	 * References:
@@ -1144,8 +1143,8 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
 	 * PDT=00h Direct-access device (floppy)
 	 * PDT=1Fh none (no FDD connected to the requested logical unit)
 	 */
-	if (((result[0] >> 5) == 1 ||
-	    (starget->pdt_1f_for_no_lun && (result[0] & 0x1f) == 0x1f)) &&
+	if (((result[0] >> 5) == 1 || starget->pdt_1f_for_no_lun) &&
+	    (result[0] & 0x1f) == 0x1f &&
 	    !scsi_is_wlun(lun)) {
 		SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
 					"scsi scan: peripheral device type"
-- 
2.39.0




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

* [PATCH 5.10 015/139] vhost/net: Clear the pending messages when the backend is removed
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (13 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 014/139] scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT" Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 016/139] WRITE is "data source", not destination Greg Kroah-Hartman
                   ` (132 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Eric Auger, Jason Wang,
	Michael S. Tsirkin, Sasha Levin

From: Eric Auger <eric.auger@redhat.com>

[ Upstream commit 9526f9a2b762af16be94a72aca5d65c677d28f50 ]

When the vhost iotlb is used along with a guest virtual iommu
and the guest gets rebooted, some MISS messages may have been
recorded just before the reboot and spuriously executed by
the virtual iommu after the reboot.

As vhost does not have any explicit reset user API,
VHOST_NET_SET_BACKEND looks a reasonable point where to clear
the pending messages, in case the backend is removed.

Export vhost_clear_msg() and call it in vhost_net_set_backend()
when fd == -1.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Suggested-by: Jason Wang <jasowang@redhat.com>
Fixes: 6b1e6cc7855b0 ("vhost: new device IOTLB API")
Message-Id: <20230117151518.44725-3-eric.auger@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vhost/net.c   | 3 +++
 drivers/vhost/vhost.c | 3 ++-
 drivers/vhost/vhost.h | 1 +
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 5beb20768b20..b9c8e4025214 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -1517,6 +1517,9 @@ static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd)
 	nvq = &n->vqs[index];
 	mutex_lock(&vq->mutex);
 
+	if (fd == -1)
+		vhost_clear_msg(&n->dev);
+
 	/* Verify that ring has been setup correctly. */
 	if (!vhost_vq_access_ok(vq)) {
 		r = -EFAULT;
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index da00a5c57db6..1f9a1554ce5f 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -669,7 +669,7 @@ void vhost_dev_stop(struct vhost_dev *dev)
 }
 EXPORT_SYMBOL_GPL(vhost_dev_stop);
 
-static void vhost_clear_msg(struct vhost_dev *dev)
+void vhost_clear_msg(struct vhost_dev *dev)
 {
 	struct vhost_msg_node *node, *n;
 
@@ -687,6 +687,7 @@ static void vhost_clear_msg(struct vhost_dev *dev)
 
 	spin_unlock(&dev->iotlb_lock);
 }
+EXPORT_SYMBOL_GPL(vhost_clear_msg);
 
 void vhost_dev_cleanup(struct vhost_dev *dev)
 {
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index b063324c7669..8f80d6b0d843 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -183,6 +183,7 @@ long vhost_dev_ioctl(struct vhost_dev *, unsigned int ioctl, void __user *argp);
 long vhost_vring_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp);
 bool vhost_vq_access_ok(struct vhost_virtqueue *vq);
 bool vhost_log_access_ok(struct vhost_dev *);
+void vhost_clear_msg(struct vhost_dev *dev);
 
 int vhost_get_vq_desc(struct vhost_virtqueue *,
 		      struct iovec iov[], unsigned int iov_count,
-- 
2.39.0




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

* [PATCH 5.10 016/139] WRITE is "data source", not destination...
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (14 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 015/139] vhost/net: Clear the pending messages when the backend is removed Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 017/139] READ is "data destination", not source Greg Kroah-Hartman
                   ` (131 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Al Viro, Sasha Levin

From: Al Viro <viro@zeniv.linux.org.uk>

[ Upstream commit 974c36fb828aeae7b4f9063f94860ae6c5633efd ]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/fsi/fsi-sbefifo.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/fsi/fsi-sbefifo.c b/drivers/fsi/fsi-sbefifo.c
index 84cb965bfed5..97045a8d9422 100644
--- a/drivers/fsi/fsi-sbefifo.c
+++ b/drivers/fsi/fsi-sbefifo.c
@@ -640,7 +640,7 @@ static void sbefifo_collect_async_ffdc(struct sbefifo *sbefifo)
 	}
         ffdc_iov.iov_base = ffdc;
 	ffdc_iov.iov_len = SBEFIFO_MAX_FFDC_SIZE;
-        iov_iter_kvec(&ffdc_iter, WRITE, &ffdc_iov, 1, SBEFIFO_MAX_FFDC_SIZE);
+        iov_iter_kvec(&ffdc_iter, READ, &ffdc_iov, 1, SBEFIFO_MAX_FFDC_SIZE);
 	cmd[0] = cpu_to_be32(2);
 	cmd[1] = cpu_to_be32(SBEFIFO_CMD_GET_SBE_FFDC);
 	rc = sbefifo_do_command(sbefifo, cmd, 2, &ffdc_iter);
@@ -737,7 +737,7 @@ int sbefifo_submit(struct device *dev, const __be32 *command, size_t cmd_len,
 	rbytes = (*resp_len) * sizeof(__be32);
 	resp_iov.iov_base = response;
 	resp_iov.iov_len = rbytes;
-        iov_iter_kvec(&resp_iter, WRITE, &resp_iov, 1, rbytes);
+        iov_iter_kvec(&resp_iter, READ, &resp_iov, 1, rbytes);
 
 	/* Perform the command */
 	mutex_lock(&sbefifo->lock);
@@ -817,7 +817,7 @@ static ssize_t sbefifo_user_read(struct file *file, char __user *buf,
 	/* Prepare iov iterator */
 	resp_iov.iov_base = buf;
 	resp_iov.iov_len = len;
-	iov_iter_init(&resp_iter, WRITE, &resp_iov, 1, len);
+	iov_iter_init(&resp_iter, READ, &resp_iov, 1, len);
 
 	/* Perform the command */
 	mutex_lock(&sbefifo->lock);
-- 
2.39.0




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

* [PATCH 5.10 017/139] READ is "data destination", not source...
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (15 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 016/139] WRITE is "data source", not destination Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 018/139] fix iov_iter_bvec() "direction" argument Greg Kroah-Hartman
                   ` (130 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Al Viro, Sasha Levin

From: Al Viro <viro@zeniv.linux.org.uk>

[ Upstream commit 355d2c2798e9dc39f6714fa7ef8902c0d4c5350b ]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
index 5c39e4c4bef7..1a5805260778 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
@@ -902,7 +902,7 @@ static void rtrs_clt_init_req(struct rtrs_clt_io_req *req,
 	req->need_inv_comp = false;
 	req->inv_errno = 0;
 
-	iov_iter_kvec(&iter, READ, vec, 1, usr_len);
+	iov_iter_kvec(&iter, WRITE, vec, 1, usr_len);
 	len = _copy_from_iter(req->iu->buf, usr_len, &iter);
 	WARN_ON(len != usr_len);
 
-- 
2.39.0




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

* [PATCH 5.10 018/139] fix iov_iter_bvec() "direction" argument
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (16 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 017/139] READ is "data destination", not source Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 019/139] fix "direction" argument of iov_iter_kvec() Greg Kroah-Hartman
                   ` (129 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Al Viro, Sasha Levin

From: Al Viro <viro@zeniv.linux.org.uk>

[ Upstream commit b676668d99155e6859d99bbf2df18b3f03851902 ]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/target/target_core_file.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c
index 7143d03f0e02..18fbbe510d01 100644
--- a/drivers/target/target_core_file.c
+++ b/drivers/target/target_core_file.c
@@ -340,7 +340,7 @@ static int fd_do_rw(struct se_cmd *cmd, struct file *fd,
 		len += sg->length;
 	}
 
-	iov_iter_bvec(&iter, READ, bvec, sgl_nents, len);
+	iov_iter_bvec(&iter, is_write, bvec, sgl_nents, len);
 	if (is_write)
 		ret = vfs_iter_write(fd, &iter, &pos, 0);
 	else
@@ -477,7 +477,7 @@ fd_execute_write_same(struct se_cmd *cmd)
 		len += se_dev->dev_attrib.block_size;
 	}
 
-	iov_iter_bvec(&iter, READ, bvec, nolb, len);
+	iov_iter_bvec(&iter, WRITE, bvec, nolb, len);
 	ret = vfs_iter_write(fd_dev->fd_file, &iter, &pos, 0);
 
 	kfree(bvec);
-- 
2.39.0




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

* [PATCH 5.10 019/139] fix "direction" argument of iov_iter_kvec()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (17 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 018/139] fix iov_iter_bvec() "direction" argument Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 020/139] virtio-net: execute xdp_do_flush() before napi_complete_done() Greg Kroah-Hartman
                   ` (128 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Al Viro, Sasha Levin

From: Al Viro <viro@zeniv.linux.org.uk>

[ Upstream commit fc02f33787d8dd227b54f263eba983d5b249c032 ]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/xen/pvcalls-back.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
index a7d293fa8d14..3b5a8e2c4d47 100644
--- a/drivers/xen/pvcalls-back.c
+++ b/drivers/xen/pvcalls-back.c
@@ -129,13 +129,13 @@ static bool pvcalls_conn_back_read(void *opaque)
 	if (masked_prod < masked_cons) {
 		vec[0].iov_base = data->in + masked_prod;
 		vec[0].iov_len = wanted;
-		iov_iter_kvec(&msg.msg_iter, WRITE, vec, 1, wanted);
+		iov_iter_kvec(&msg.msg_iter, READ, vec, 1, wanted);
 	} else {
 		vec[0].iov_base = data->in + masked_prod;
 		vec[0].iov_len = array_size - masked_prod;
 		vec[1].iov_base = data->in;
 		vec[1].iov_len = wanted - vec[0].iov_len;
-		iov_iter_kvec(&msg.msg_iter, WRITE, vec, 2, wanted);
+		iov_iter_kvec(&msg.msg_iter, READ, vec, 2, wanted);
 	}
 
 	atomic_set(&map->read, 0);
@@ -188,13 +188,13 @@ static bool pvcalls_conn_back_write(struct sock_mapping *map)
 	if (pvcalls_mask(prod, array_size) > pvcalls_mask(cons, array_size)) {
 		vec[0].iov_base = data->out + pvcalls_mask(cons, array_size);
 		vec[0].iov_len = size;
-		iov_iter_kvec(&msg.msg_iter, READ, vec, 1, size);
+		iov_iter_kvec(&msg.msg_iter, WRITE, vec, 1, size);
 	} else {
 		vec[0].iov_base = data->out + pvcalls_mask(cons, array_size);
 		vec[0].iov_len = array_size - pvcalls_mask(cons, array_size);
 		vec[1].iov_base = data->out;
 		vec[1].iov_len = size - vec[0].iov_len;
-		iov_iter_kvec(&msg.msg_iter, READ, vec, 2, size);
+		iov_iter_kvec(&msg.msg_iter, WRITE, vec, 2, size);
 	}
 
 	atomic_set(&map->write, 0);
-- 
2.39.0




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

* [PATCH 5.10 020/139] virtio-net: execute xdp_do_flush() before napi_complete_done()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (18 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 019/139] fix "direction" argument of iov_iter_kvec() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 021/139] sfc: correctly advertise tunneled IPv6 segmentation Greg Kroah-Hartman
                   ` (127 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Magnus Karlsson,
	Toke Høiland-Jørgensen, Michael S. Tsirkin,
	Jakub Kicinski, Sasha Levin

From: Magnus Karlsson <magnus.karlsson@intel.com>

[ Upstream commit ad7e615f646c9b5b2cf655cdfb9d91a28db4f25a ]

Make sure that xdp_do_flush() is always executed before
napi_complete_done(). This is important for two reasons. First, a
redirect to an XSKMAP assumes that a call to xdp_do_redirect() from
napi context X on CPU Y will be followed by a xdp_do_flush() from the
same napi context and CPU. This is not guaranteed if the
napi_complete_done() is executed before xdp_do_flush(), as it tells
the napi logic that it is fine to schedule napi context X on another
CPU. Details from a production system triggering this bug using the
veth driver can be found following the first link below.

The second reason is that the XDP_REDIRECT logic in itself relies on
being inside a single NAPI instance through to the xdp_do_flush() call
for RCU protection of all in-kernel data structures. Details can be
found in the second link below.

Fixes: 186b3c998c50 ("virtio-net: support XDP_REDIRECT")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/r/20221220185903.1105011-1-sbohrer@cloudflare.com
Link: https://lore.kernel.org/all/20210624160609.292325-1-toke@redhat.com/
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/virtio_net.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index c942cd6a2c65..0605c28c684b 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1525,13 +1525,13 @@ static int virtnet_poll(struct napi_struct *napi, int budget)
 
 	received = virtnet_receive(rq, budget, &xdp_xmit);
 
+	if (xdp_xmit & VIRTIO_XDP_REDIR)
+		xdp_do_flush();
+
 	/* Out of packets? */
 	if (received < budget)
 		virtqueue_napi_complete(napi, rq->vq, received);
 
-	if (xdp_xmit & VIRTIO_XDP_REDIR)
-		xdp_do_flush();
-
 	if (xdp_xmit & VIRTIO_XDP_TX) {
 		sq = virtnet_xdp_get_sq(vi);
 		if (virtqueue_kick_prepare(sq->vq) && virtqueue_notify(sq->vq)) {
-- 
2.39.0




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

* [PATCH 5.10 021/139] sfc: correctly advertise tunneled IPv6 segmentation
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (19 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 020/139] virtio-net: execute xdp_do_flush() before napi_complete_done() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 022/139] net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices Greg Kroah-Hartman
                   ` (126 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Tianhao Zhao,
	Íñigo Huguet, Martin Habets, Jakub Kicinski,
	Sasha Levin

From: Íñigo Huguet <ihuguet@redhat.com>

[ Upstream commit ffffd2454a7a1bc9f7242b12c4cc0b05c12692b4 ]

Recent sfc NICs are TSO capable for some tunnel protocols. However, it
was not working properly because the feature was not advertised in
hw_enc_features, but in hw_features only.

Setting up a GENEVE tunnel and using iperf3 to send IPv4 and IPv6 traffic
to the tunnel show, with tcpdump, that the IPv4 packets still had ~64k
size but the IPv6 ones had only ~1500 bytes (they had been segmented by
software, not offloaded). With this patch segmentation is offloaded as
expected and the traffic is correctly received at the other end.

Fixes: 24b2c3751aa3 ("sfc: advertise encapsulated offloads on EF10")
Reported-by: Tianhao Zhao <tizhao@redhat.com>
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
Link: https://lore.kernel.org/r/20230125143513.25841-1-ihuguet@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/sfc/efx.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index 718308076341..29c8d2c99004 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -1047,8 +1047,11 @@ static int efx_pci_probe_post_io(struct efx_nic *efx)
 	/* Determine netdevice features */
 	net_dev->features |= (efx->type->offload_features | NETIF_F_SG |
 			      NETIF_F_TSO | NETIF_F_RXCSUM | NETIF_F_RXALL);
-	if (efx->type->offload_features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
+	if (efx->type->offload_features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM)) {
 		net_dev->features |= NETIF_F_TSO6;
+		if (efx_has_cap(efx, TX_TSO_V2_ENCAP))
+			net_dev->hw_enc_features |= NETIF_F_TSO6;
+	}
 	/* Check whether device supports TSO */
 	if (!efx->type->tso_versions || !efx->type->tso_versions(efx))
 		net_dev->features &= ~NETIF_F_ALL_TSO;
-- 
2.39.0




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

* [PATCH 5.10 022/139] net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (20 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 021/139] sfc: correctly advertise tunneled IPv6 segmentation Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 023/139] netrom: Fix use-after-free caused by accept on already connected socket Greg Kroah-Hartman
                   ` (125 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andre Kalb, Simon Horman,
	Jakub Kicinski, Sasha Levin

From: Andre Kalb <andre.kalb@sma.de>

[ Upstream commit 422ae7d9c7221e8d4c8526d0f54106307d69d2dc ]

The probe() function is only used for the DP83822 PHY, leaving the
private data pointer uninitialized for the smaller DP83825/26 models.
While all uses of the private data structure are hidden in 82822 specific
callbacks, configuring the interrupt is shared across all models.
This causes a NULL pointer dereference on the smaller PHYs as it accesses
the private data unchecked. Verifying the pointer avoids that.

Fixes: 5dc39fd5ef35 ("net: phy: DP83822: Add ability to advertise Fiber connection")
Signed-off-by: Andre Kalb <andre.kalb@sma.de>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/Y9FzniUhUtbaGKU7@pc6682
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/dp83822.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c
index db651649e0b8..81412999445d 100644
--- a/drivers/net/phy/dp83822.c
+++ b/drivers/net/phy/dp83822.c
@@ -247,7 +247,8 @@ static int dp83822_config_intr(struct phy_device *phydev)
 				DP83822_ENERGY_DET_INT_EN |
 				DP83822_LINK_QUAL_INT_EN);
 
-		if (!dp83822->fx_enabled)
+		/* Private data pointer is NULL on DP83825/26 */
+		if (!dp83822 || !dp83822->fx_enabled)
 			misr_status |= DP83822_ANEG_COMPLETE_INT_EN |
 				       DP83822_DUP_MODE_CHANGE_INT_EN |
 				       DP83822_SPEED_CHANGED_INT_EN;
@@ -267,7 +268,8 @@ static int dp83822_config_intr(struct phy_device *phydev)
 				DP83822_PAGE_RX_INT_EN |
 				DP83822_EEE_ERROR_CHANGE_INT_EN);
 
-		if (!dp83822->fx_enabled)
+		/* Private data pointer is NULL on DP83825/26 */
+		if (!dp83822 || !dp83822->fx_enabled)
 			misr_status |= DP83822_ANEG_ERR_INT_EN |
 				       DP83822_WOL_PKT_INT_EN;
 
-- 
2.39.0




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

* [PATCH 5.10 023/139] netrom: Fix use-after-free caused by accept on already connected socket
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (21 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 022/139] net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 024/139] netfilter: br_netfilter: disable sabotage_in hook after first suppression Greg Kroah-Hartman
                   ` (124 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+caa188bdfc1eeafeb418,
	Hyunwoo Kim, Kuniyuki Iwashima, David S. Miller, Sasha Levin

From: Hyunwoo Kim <v4bel@theori.io>

[ Upstream commit 611792920925fb088ddccbe2783c7f92fdfb6b64 ]

If you call listen() and accept() on an already connect()ed
AF_NETROM socket, accept() can successfully connect.
This is because when the peer socket sends data to sendmsg,
the skb with its own sk stored in the connected socket's
sk->sk_receive_queue is connected, and nr_accept() dequeues
the skb waiting in the sk->sk_receive_queue.

As a result, nr_accept() allocates and returns a sock with
the sk of the parent AF_NETROM socket.

And here use-after-free can happen through complex race conditions:
```
                  cpu0                                                     cpu1
                                                               1. socket_2 = socket(AF_NETROM)
                                                                        .
                                                                        .
                                                                  listen(socket_2)
                                                                  accepted_socket = accept(socket_2)
       2. socket_1 = socket(AF_NETROM)
            nr_create()    // sk refcount : 1
          connect(socket_1)
                                                               3. write(accepted_socket)
                                                                    nr_sendmsg()
                                                                    nr_output()
                                                                    nr_kick()
                                                                    nr_send_iframe()
                                                                    nr_transmit_buffer()
                                                                    nr_route_frame()
                                                                    nr_loopback_queue()
                                                                    nr_loopback_timer()
                                                                    nr_rx_frame()
                                                                    nr_process_rx_frame(sk, skb);    // sk : socket_1's sk
                                                                    nr_state3_machine()
                                                                    nr_queue_rx_frame()
                                                                    sock_queue_rcv_skb()
                                                                    sock_queue_rcv_skb_reason()
                                                                    __sock_queue_rcv_skb()
                                                                    __skb_queue_tail(list, skb);    // list : socket_1's sk->sk_receive_queue
       4. listen(socket_1)
            nr_listen()
          uaf_socket = accept(socket_1)
            nr_accept()
            skb_dequeue(&sk->sk_receive_queue);
                                                               5. close(accepted_socket)
                                                                    nr_release()
                                                                    nr_write_internal(sk, NR_DISCREQ)
                                                                    nr_transmit_buffer()    // NR_DISCREQ
                                                                    nr_route_frame()
                                                                    nr_loopback_queue()
                                                                    nr_loopback_timer()
                                                                    nr_rx_frame()    // sk : socket_1's sk
                                                                    nr_process_rx_frame()  // NR_STATE_3
                                                                    nr_state3_machine()    // NR_DISCREQ
                                                                    nr_disconnect()
                                                                    nr_sk(sk)->state = NR_STATE_0;
       6. close(socket_1)    // sk refcount : 3
            nr_release()    // NR_STATE_0
            sock_put(sk);    // sk refcount : 0
            sk_free(sk);
          close(uaf_socket)
            nr_release()
            sock_hold(sk);    // UAF
```

KASAN report by syzbot:
```
BUG: KASAN: use-after-free in nr_release+0x66/0x460 net/netrom/af_netrom.c:520
Write of size 4 at addr ffff8880235d8080 by task syz-executor564/5128

Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0xd1/0x138 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:306 [inline]
 print_report+0x15e/0x461 mm/kasan/report.c:417
 kasan_report+0xbf/0x1f0 mm/kasan/report.c:517
 check_region_inline mm/kasan/generic.c:183 [inline]
 kasan_check_range+0x141/0x190 mm/kasan/generic.c:189
 instrument_atomic_read_write include/linux/instrumented.h:102 [inline]
 atomic_fetch_add_relaxed include/linux/atomic/atomic-instrumented.h:116 [inline]
 __refcount_add include/linux/refcount.h:193 [inline]
 __refcount_inc include/linux/refcount.h:250 [inline]
 refcount_inc include/linux/refcount.h:267 [inline]
 sock_hold include/net/sock.h:775 [inline]
 nr_release+0x66/0x460 net/netrom/af_netrom.c:520
 __sock_release+0xcd/0x280 net/socket.c:650
 sock_close+0x1c/0x20 net/socket.c:1365
 __fput+0x27c/0xa90 fs/file_table.c:320
 task_work_run+0x16f/0x270 kernel/task_work.c:179
 exit_task_work include/linux/task_work.h:38 [inline]
 do_exit+0xaa8/0x2950 kernel/exit.c:867
 do_group_exit+0xd4/0x2a0 kernel/exit.c:1012
 get_signal+0x21c3/0x2450 kernel/signal.c:2859
 arch_do_signal_or_restart+0x79/0x5c0 arch/x86/kernel/signal.c:306
 exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
 exit_to_user_mode_prepare+0x15f/0x250 kernel/entry/common.c:203
 __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
 syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:296
 do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f6c19e3c9b9
Code: Unable to access opcode bytes at 0x7f6c19e3c98f.
RSP: 002b:00007fffd4ba2ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
RAX: 0000000000000116 RBX: 0000000000000003 RCX: 00007f6c19e3c9b9
RDX: 0000000000000318 RSI: 00000000200bd000 RDI: 0000000000000006
RBP: 0000000000000003 R08: 000000000000000d R09: 000000000000000d
R10: 0000000000000000 R11: 0000000000000246 R12: 000055555566a2c0
R13: 0000000000000011 R14: 0000000000000000 R15: 0000000000000000
 </TASK>

Allocated by task 5128:
 kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 ____kasan_kmalloc mm/kasan/common.c:371 [inline]
 ____kasan_kmalloc mm/kasan/common.c:330 [inline]
 __kasan_kmalloc+0xa3/0xb0 mm/kasan/common.c:380
 kasan_kmalloc include/linux/kasan.h:211 [inline]
 __do_kmalloc_node mm/slab_common.c:968 [inline]
 __kmalloc+0x5a/0xd0 mm/slab_common.c:981
 kmalloc include/linux/slab.h:584 [inline]
 sk_prot_alloc+0x140/0x290 net/core/sock.c:2038
 sk_alloc+0x3a/0x7a0 net/core/sock.c:2091
 nr_create+0xb6/0x5f0 net/netrom/af_netrom.c:433
 __sock_create+0x359/0x790 net/socket.c:1515
 sock_create net/socket.c:1566 [inline]
 __sys_socket_create net/socket.c:1603 [inline]
 __sys_socket_create net/socket.c:1588 [inline]
 __sys_socket+0x133/0x250 net/socket.c:1636
 __do_sys_socket net/socket.c:1649 [inline]
 __se_sys_socket net/socket.c:1647 [inline]
 __x64_sys_socket+0x73/0xb0 net/socket.c:1647
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

Freed by task 5128:
 kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 kasan_save_free_info+0x2b/0x40 mm/kasan/generic.c:518
 ____kasan_slab_free mm/kasan/common.c:236 [inline]
 ____kasan_slab_free+0x13b/0x1a0 mm/kasan/common.c:200
 kasan_slab_free include/linux/kasan.h:177 [inline]
 __cache_free mm/slab.c:3394 [inline]
 __do_kmem_cache_free mm/slab.c:3580 [inline]
 __kmem_cache_free+0xcd/0x3b0 mm/slab.c:3587
 sk_prot_free net/core/sock.c:2074 [inline]
 __sk_destruct+0x5df/0x750 net/core/sock.c:2166
 sk_destruct net/core/sock.c:2181 [inline]
 __sk_free+0x175/0x460 net/core/sock.c:2192
 sk_free+0x7c/0xa0 net/core/sock.c:2203
 sock_put include/net/sock.h:1991 [inline]
 nr_release+0x39e/0x460 net/netrom/af_netrom.c:554
 __sock_release+0xcd/0x280 net/socket.c:650
 sock_close+0x1c/0x20 net/socket.c:1365
 __fput+0x27c/0xa90 fs/file_table.c:320
 task_work_run+0x16f/0x270 kernel/task_work.c:179
 exit_task_work include/linux/task_work.h:38 [inline]
 do_exit+0xaa8/0x2950 kernel/exit.c:867
 do_group_exit+0xd4/0x2a0 kernel/exit.c:1012
 get_signal+0x21c3/0x2450 kernel/signal.c:2859
 arch_do_signal_or_restart+0x79/0x5c0 arch/x86/kernel/signal.c:306
 exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
 exit_to_user_mode_prepare+0x15f/0x250 kernel/entry/common.c:203
 __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
 syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:296
 do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
```

To fix this issue, nr_listen() returns -EINVAL for sockets that
successfully nr_connect().

Reported-by: syzbot+caa188bdfc1eeafeb418@syzkaller.appspotmail.com
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netrom/af_netrom.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index e5c8a295e640..5c04da4cfbad 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -400,6 +400,11 @@ static int nr_listen(struct socket *sock, int backlog)
 	struct sock *sk = sock->sk;
 
 	lock_sock(sk);
+	if (sock->state != SS_UNCONNECTED) {
+		release_sock(sk);
+		return -EINVAL;
+	}
+
 	if (sk->sk_state != TCP_LISTEN) {
 		memset(&nr_sk(sk)->user_addr, 0, AX25_ADDR_LEN);
 		sk->sk_max_ack_backlog = backlog;
-- 
2.39.0




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

* [PATCH 5.10 024/139] netfilter: br_netfilter: disable sabotage_in hook after first suppression
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (22 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 023/139] netrom: Fix use-after-free caused by accept on already connected socket Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 025/139] squashfs: harden sanity check in squashfs_read_xattr_id_table Greg Kroah-Hartman
                   ` (123 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Florian Westphal, Pablo Neira Ayuso,
	Sasha Levin, Wolfgang Nothdurft

From: Florian Westphal <fw@strlen.de>

[ Upstream commit 2b272bb558f1d3a5aa95ed8a82253786fd1a48ba ]

When using a xfrm interface in a bridged setup (the outgoing device is
bridged), the incoming packets in the xfrm interface are only tracked
in the outgoing direction.

$ brctl show
bridge name     interfaces
br_eth1         eth1

$ conntrack -L
tcp 115 SYN_SENT src=192... dst=192... [UNREPLIED] ...

If br_netfilter is enabled, the first (encrypted) packet is received onR
eth1, conntrack hooks are called from br_netfilter emulation which
allocates nf_bridge info for this skb.

If the packet is for local machine, skb gets passed up the ip stack.
The skb passes through ip prerouting a second time. br_netfilter
ip_sabotage_in supresses the re-invocation of the hooks.

After this, skb gets decrypted in xfrm layer and appears in
network stack a second time (after decryption).

Then, ip_sabotage_in is called again and suppresses netfilter
hook invocation, even though the bridge layer never called them
for the plaintext incarnation of the packet.

Free the bridge info after the first suppression to avoid this.

I was unable to figure out where the regression comes from, as far as i
can see br_netfilter always had this problem; i did not expect that skb
is looped again with different headers.

Fixes: c4b0e771f906 ("netfilter: avoid using skb->nf_bridge directly")
Reported-and-tested-by: Wolfgang Nothdurft <wolfgang@linogate.de>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/bridge/br_netfilter_hooks.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
index a718204c4bfd..f3c7cfba31e1 100644
--- a/net/bridge/br_netfilter_hooks.c
+++ b/net/bridge/br_netfilter_hooks.c
@@ -871,6 +871,7 @@ static unsigned int ip_sabotage_in(void *priv,
 	if (nf_bridge && !nf_bridge->in_prerouting &&
 	    !netif_is_l3_master(skb->dev) &&
 	    !netif_is_l3_slave(skb->dev)) {
+		nf_bridge_info_free(skb);
 		state->okfn(state->net, state->sk, skb);
 		return NF_STOLEN;
 	}
-- 
2.39.0




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

* [PATCH 5.10 025/139] squashfs: harden sanity check in squashfs_read_xattr_id_table
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (23 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 024/139] netfilter: br_netfilter: disable sabotage_in hook after first suppression Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 026/139] net: phy: meson-gxl: Add generic dummy stubs for MMD register access Greg Kroah-Hartman
                   ` (122 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+082fa4af80a5bb1a9843,
	Fedor Pchelkin, Alexey Khoroshilov, Phillip Lougher,
	Andrew Morton, Sasha Levin

From: Fedor Pchelkin <pchelkin@ispras.ru>

[ Upstream commit 72e544b1b28325fe78a4687b980871a7e4101f76 ]

While mounting a corrupted filesystem, a signed integer '*xattr_ids' can
become less than zero.  This leads to the incorrect computation of 'len'
and 'indexes' values which can cause null-ptr-deref in copy_bio_to_actor()
or out-of-bounds accesses in the next sanity checks inside
squashfs_read_xattr_id_table().

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

Link: https://lkml.kernel.org/r/20230117105226.329303-2-pchelkin@ispras.ru
Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id lookup")
Reported-by: <syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com>
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Phillip Lougher <phillip@squashfs.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/squashfs/xattr_id.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/squashfs/xattr_id.c b/fs/squashfs/xattr_id.c
index 087cab8c78f4..f6d78cbc3e74 100644
--- a/fs/squashfs/xattr_id.c
+++ b/fs/squashfs/xattr_id.c
@@ -76,7 +76,7 @@ __le64 *squashfs_read_xattr_id_table(struct super_block *sb, u64 table_start,
 	/* Sanity check values */
 
 	/* there is always at least one xattr id */
-	if (*xattr_ids == 0)
+	if (*xattr_ids <= 0)
 		return ERR_PTR(-EINVAL);
 
 	len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids);
-- 
2.39.0




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

* [PATCH 5.10 026/139] net: phy: meson-gxl: Add generic dummy stubs for MMD register access
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (24 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 025/139] squashfs: harden sanity check in squashfs_read_xattr_id_table Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 027/139] igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp() Greg Kroah-Hartman
                   ` (121 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Heiner Kallweit, Chris Healy,
	Jerome Brunet, Jakub Kicinski, Sasha Levin

From: Chris Healy <healych@amazon.com>

[ Upstream commit afc2336f89dc0fc0ef25b92366814524b0fd90fb ]

The Meson G12A Internal PHY does not support standard IEEE MMD extended
register access, therefore add generic dummy stubs to fail the read and
write MMD calls. This is necessary to prevent the core PHY code from
erroneously believing that EEE is supported by this PHY even though this
PHY does not support EEE, as MMD register access returns all FFFFs.

Fixes: 5c3407abb338 ("net: phy: meson-gxl: add g12a support")
Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Chris Healy <healych@amazon.com>
Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20230130231402.471493-1-cphealy@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/meson-gxl.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c
index e8f2ca625837..f7a9e6599a64 100644
--- a/drivers/net/phy/meson-gxl.c
+++ b/drivers/net/phy/meson-gxl.c
@@ -245,6 +245,8 @@ static struct phy_driver meson_gxl_phy[] = {
 		.config_intr	= meson_gxl_config_intr,
 		.suspend        = genphy_suspend,
 		.resume         = genphy_resume,
+		.read_mmd	= genphy_read_mmd_unsupported,
+		.write_mmd	= genphy_write_mmd_unsupported,
 	},
 };
 
-- 
2.39.0




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

* [PATCH 5.10 027/139] igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (25 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 026/139] net: phy: meson-gxl: Add generic dummy stubs for MMD register access Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 028/139] can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate Greg Kroah-Hartman
                   ` (120 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Tom Rix, Simon Horman, Sasha Neftin,
	Naama Meir, Tony Nguyen, Jakub Kicinski, Sasha Levin

From: Tom Rix <trix@redhat.com>

[ Upstream commit a2df8463e15c10a8a882090f3d7a760fdb7b189d ]

clang static analysis reports
drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of
  '+' is a garbage value [core.UndefinedBinaryOperatorResult]
   ktime_add_ns(shhwtstamps.hwtstamp, adjust);
   ^            ~~~~~~~~~~~~~~~~~~~~

igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp
if the mac type is unknown.  This should be treated as an error.

Fixes: 81b055205e8b ("igc: Add support for RX timestamping")
Signed-off-by: Tom Rix <trix@redhat.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Acked-by: Sasha Neftin <sasha.neftin@intel.com>
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20230131215437.1528994-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/igc/igc_ptp.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
index 4ab46eee3d93..ef53f7665b58 100644
--- a/drivers/net/ethernet/intel/igc/igc_ptp.c
+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
@@ -134,10 +134,12 @@ static int igc_ptp_feature_enable_i225(struct ptp_clock_info *ptp,
  *
  * We need to convert the system time value stored in the RX/TXSTMP registers
  * into a hwtstamp which can be used by the upper level timestamping functions.
+ *
+ * Returns 0 on success.
  **/
-static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
-				       struct skb_shared_hwtstamps *hwtstamps,
-				       u64 systim)
+static int igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
+				      struct skb_shared_hwtstamps *hwtstamps,
+				      u64 systim)
 {
 	switch (adapter->hw.mac.type) {
 	case igc_i225:
@@ -147,8 +149,9 @@ static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
 						systim & 0xFFFFFFFF);
 		break;
 	default:
-		break;
+		return -EINVAL;
 	}
+	return 0;
 }
 
 /**
@@ -372,7 +375,8 @@ static void igc_ptp_tx_hwtstamp(struct igc_adapter *adapter)
 
 	regval = rd32(IGC_TXSTMPL);
 	regval |= (u64)rd32(IGC_TXSTMPH) << 32;
-	igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval);
+	if (igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval))
+		return;
 
 	switch (adapter->link_speed) {
 	case SPEED_10:
-- 
2.39.0




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

* [PATCH 5.10 028/139] can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (26 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 027/139] igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 029/139] ata: libata: Fix sata_down_spd_limit() when no link speed is reported Greg Kroah-Hartman
                   ` (119 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+9981a614060dcee6eeca,
	Ziyang Xuan, Oleksij Rempel, Marc Kleine-Budde, Sasha Levin

From: Ziyang Xuan <william.xuanziyang@huawei.com>

[ Upstream commit d0553680f94c49bbe0e39eb50d033ba563b4212d ]

The conclusion "j1939_session_deactivate() should be called with a
session ref-count of at least 2" is incorrect. In some concurrent
scenarios, j1939_session_deactivate can be called with the session
ref-count less than 2. But there is not any problem because it
will check the session active state before session putting in
j1939_session_deactivate_locked().

Here is the concurrent scenario of the problem reported by syzbot
and my reproduction log.

        cpu0                            cpu1
                                j1939_xtp_rx_eoma
j1939_xtp_rx_abort_one
                                j1939_session_get_by_addr [kref == 2]
j1939_session_get_by_addr [kref == 3]
j1939_session_deactivate [kref == 2]
j1939_session_put [kref == 1]
				j1939_session_completed
				j1939_session_deactivate
				WARN_ON_ONCE(kref < 2)

=====================================================
WARNING: CPU: 1 PID: 21 at net/can/j1939/transport.c:1088 j1939_session_deactivate+0x5f/0x70
CPU: 1 PID: 21 Comm: ksoftirqd/1 Not tainted 5.14.0-rc7+ #32
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
RIP: 0010:j1939_session_deactivate+0x5f/0x70
Call Trace:
 j1939_session_deactivate_activate_next+0x11/0x28
 j1939_xtp_rx_eoma+0x12a/0x180
 j1939_tp_recv+0x4a2/0x510
 j1939_can_recv+0x226/0x380
 can_rcv_filter+0xf8/0x220
 can_receive+0x102/0x220
 ? process_backlog+0xf0/0x2c0
 can_rcv+0x53/0xf0
 __netif_receive_skb_one_core+0x67/0x90
 ? process_backlog+0x97/0x2c0
 __netif_receive_skb+0x22/0x80

Fixes: 0c71437dd50d ("can: j1939: j1939_session_deactivate(): clarify lifetime of session object")
Reported-by: syzbot+9981a614060dcee6eeca@syzkaller.appspotmail.com
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://lore.kernel.org/all/20210906094200.95868-1-william.xuanziyang@huawei.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/can/j1939/transport.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/net/can/j1939/transport.c b/net/can/j1939/transport.c
index 78f6a9110699..57d6aac7f435 100644
--- a/net/can/j1939/transport.c
+++ b/net/can/j1939/transport.c
@@ -1087,10 +1087,6 @@ static bool j1939_session_deactivate(struct j1939_session *session)
 	bool active;
 
 	j1939_session_list_lock(priv);
-	/* This function should be called with a session ref-count of at
-	 * least 2.
-	 */
-	WARN_ON_ONCE(kref_read(&session->kref) < 2);
 	active = j1939_session_deactivate_locked(session);
 	j1939_session_list_unlock(priv);
 
-- 
2.39.0




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

* [PATCH 5.10 029/139] ata: libata: Fix sata_down_spd_limit() when no link speed is reported
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (27 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 028/139] can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 030/139] selftests: net: udpgso_bench_rx: Fix used uninitialized compiler warning Greg Kroah-Hartman
                   ` (118 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Marius Dinu, Niklas Cassel,
	Damien Le Moal, Sasha Levin

From: Damien Le Moal <damien.lemoal@opensource.wdc.com>

[ Upstream commit 69f2c9346313ba3d3dfa4091ff99df26c67c9021 ]

Commit 2dc0b46b5ea3 ("libata: sata_down_spd_limit should return if
driver has not recorded sstatus speed") changed the behavior of
sata_down_spd_limit() to return doing nothing if a drive does not report
a current link speed, to avoid reducing the link speed to the lowest 1.5
Gbps speed.

However, the change assumed that a speed was recorded before probing
(e.g. before a suspend/resume) and set in link->sata_spd. This causes
problems with adapters/drives combination failing to establish a link
speed during probe autonegotiation. One example reported of this problem
is an mvebu adapter with a 3Gbps port-multiplier box: autonegotiation
fails, leaving no recorded link speed and no reported current link
speed. Probe retries also fail as no action is taken by sata_set_spd()
after each retry.

Fix this by returning early in sata_down_spd_limit() only if we do have
a recorded link speed, that is, if link->sata_spd is not 0. With this
fix, a failed probe not leading to a recorded link speed is retried at
the lower 1.5 Gbps speed, with the link speed potentially increased
later on the second revalidate of the device if the device reports
that it supports higher link speeds.

Reported-by: Marius Dinu <marius@psihoexpert.ro>
Fixes: 2dc0b46b5ea3 ("libata: sata_down_spd_limit should return if driver has not recorded sstatus speed")
Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
Tested-by: Marius Dinu <marius@psihoexpert.ro>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/ata/libata-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index d13474c6d181..14150767be44 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3051,7 +3051,7 @@ int sata_down_spd_limit(struct ata_link *link, u32 spd_limit)
 	 */
 	if (spd > 1)
 		mask &= (1 << (spd - 1)) - 1;
-	else
+	else if (link->sata_spd)
 		return -EINVAL;
 
 	/* were we already at the bottom? */
-- 
2.39.0




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

* [PATCH 5.10 030/139] selftests: net: udpgso_bench_rx: Fix used uninitialized compiler warning
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (28 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 029/139] ata: libata: Fix sata_down_spd_limit() when no link speed is reported Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 031/139] selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided Greg Kroah-Hartman
                   ` (117 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andrei Gherzan, Willem de Bruijn,
	Paolo Abeni, Sasha Levin

From: Andrei Gherzan <andrei.gherzan@canonical.com>

[ Upstream commit c03c80e3a03ffb4f790901d60797e9810539d946 ]

This change fixes the following compiler warning:

/usr/include/x86_64-linux-gnu/bits/error.h:40:5: warning: ‘gso_size’ may
be used uninitialized [-Wmaybe-uninitialized]
   40 |     __error_noreturn (__status, __errnum, __format,
   __va_arg_pack ());
         |
	 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	 udpgso_bench_rx.c: In function ‘main’:
	 udpgso_bench_rx.c:253:23: note: ‘gso_size’ was declared here
	   253 |         int ret, len, gso_size, budget = 256;

Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO")
Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20230201001612.515730-1-andrei.gherzan@canonical.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/net/udpgso_bench_rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/net/udpgso_bench_rx.c b/tools/testing/selftests/net/udpgso_bench_rx.c
index 6a193425c367..d0895bd1933f 100644
--- a/tools/testing/selftests/net/udpgso_bench_rx.c
+++ b/tools/testing/selftests/net/udpgso_bench_rx.c
@@ -250,7 +250,7 @@ static int recv_msg(int fd, char *buf, int len, int *gso_size)
 static void do_flush_udp(int fd)
 {
 	static char rbuf[ETH_MAX_MTU];
-	int ret, len, gso_size, budget = 256;
+	int ret, len, gso_size = 0, budget = 256;
 
 	len = cfg_read_all ? sizeof(rbuf) : 0;
 	while (budget--) {
-- 
2.39.0




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

* [PATCH 5.10 031/139] selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (29 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 030/139] selftests: net: udpgso_bench_rx: Fix used uninitialized compiler warning Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 032/139] selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs Greg Kroah-Hartman
                   ` (116 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andrei Gherzan, Willem de Bruijn,
	Paolo Abeni, Sasha Levin

From: Andrei Gherzan <andrei.gherzan@canonical.com>

[ Upstream commit db9b47ee9f5f375ab0c5daeb20321c75b4fa657d ]

Leaving unrecognized arguments buried in the output, can easily hide a
CLI/script typo. Avoid this by exiting when wrong arguments are provided to
the udpgso_bench test programs.

Fixes: 3a687bef148d ("selftests: udp gso benchmark")
Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
Cc: Willem de Bruijn <willemb@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20230201001612.515730-2-andrei.gherzan@canonical.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/net/udpgso_bench_rx.c | 2 ++
 tools/testing/selftests/net/udpgso_bench_tx.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/tools/testing/selftests/net/udpgso_bench_rx.c b/tools/testing/selftests/net/udpgso_bench_rx.c
index d0895bd1933f..4058c7451e70 100644
--- a/tools/testing/selftests/net/udpgso_bench_rx.c
+++ b/tools/testing/selftests/net/udpgso_bench_rx.c
@@ -336,6 +336,8 @@ static void parse_opts(int argc, char **argv)
 			cfg_verify = true;
 			cfg_read_all = true;
 			break;
+		default:
+			exit(1);
 		}
 	}
 
diff --git a/tools/testing/selftests/net/udpgso_bench_tx.c b/tools/testing/selftests/net/udpgso_bench_tx.c
index f1fdaa270291..b47b5c32039f 100644
--- a/tools/testing/selftests/net/udpgso_bench_tx.c
+++ b/tools/testing/selftests/net/udpgso_bench_tx.c
@@ -490,6 +490,8 @@ static void parse_opts(int argc, char **argv)
 		case 'z':
 			cfg_zerocopy = true;
 			break;
+		default:
+			exit(1);
 		}
 	}
 
-- 
2.39.0




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

* [PATCH 5.10 032/139] selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (30 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 031/139] selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 033/139] selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking Greg Kroah-Hartman
                   ` (115 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andrei Gherzan, Paolo Abeni,
	Willem de Bruijn, Sasha Levin

From: Andrei Gherzan <andrei.gherzan@canonical.com>

[ Upstream commit dafe93b9ee21028d625dce347118b82659652eff ]

"udpgro_bench.sh" invokes udpgso_bench_rx/udpgso_bench_tx programs
subsequently and while doing so, there is a chance that the rx one is not
ready to accept socket connections. This racing bug could fail the test
with at least one of the following:

./udpgso_bench_tx: connect: Connection refused
./udpgso_bench_tx: sendmsg: Connection refused
./udpgso_bench_tx: write: Connection refused

This change addresses this by making udpgro_bench.sh wait for the rx
program to be ready before firing off the tx one - up to a 10s timeout.

Fixes: 3a687bef148d ("selftests: udp gso benchmark")
Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Willem de Bruijn <willemb@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20230201001612.515730-3-andrei.gherzan@canonical.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/net/udpgso_bench.sh | 24 +++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/net/udpgso_bench.sh b/tools/testing/selftests/net/udpgso_bench.sh
index dc932fd65363..640bc43452fa 100755
--- a/tools/testing/selftests/net/udpgso_bench.sh
+++ b/tools/testing/selftests/net/udpgso_bench.sh
@@ -7,6 +7,7 @@ readonly GREEN='\033[0;92m'
 readonly YELLOW='\033[0;33m'
 readonly RED='\033[0;31m'
 readonly NC='\033[0m' # No Color
+readonly TESTPORT=8000
 
 readonly KSFT_PASS=0
 readonly KSFT_FAIL=1
@@ -56,11 +57,26 @@ trap wake_children EXIT
 
 run_one() {
 	local -r args=$@
+	local nr_socks=0
+	local i=0
+	local -r timeout=10
+
+	./udpgso_bench_rx -p "$TESTPORT" &
+	./udpgso_bench_rx -p "$TESTPORT" -t &
+
+	# Wait for the above test program to get ready to receive connections.
+	while [ "$i" -lt "$timeout" ]; do
+		nr_socks="$(ss -lnHi | grep -c "\*:${TESTPORT}")"
+		[ "$nr_socks" -eq 2 ] && break
+		i=$((i + 1))
+		sleep 1
+	done
+	if [ "$nr_socks" -ne 2 ]; then
+		echo "timed out while waiting for udpgso_bench_rx"
+		exit 1
+	fi
 
-	./udpgso_bench_rx &
-	./udpgso_bench_rx -t &
-
-	./udpgso_bench_tx ${args}
+	./udpgso_bench_tx -p "$TESTPORT" ${args}
 }
 
 run_in_netns() {
-- 
2.39.0




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

* [PATCH 5.10 033/139] selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (31 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 032/139] selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 034/139] virtio-net: Keep stop() to follow mirror sequence of open() Greg Kroah-Hartman
                   ` (114 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andrei Gherzan, Willem de Bruijn,
	Paolo Abeni, Sasha Levin

From: Andrei Gherzan <andrei.gherzan@canonical.com>

[ Upstream commit 329c9cd769c2e306957df031efff656c40922c76 ]

The test tool can check that the zerocopy number of completions value is
valid taking into consideration the number of datagram send calls. This can
catch the system into a state where the datagrams are still in the system
(for example in a qdisk, waiting for the network interface to return a
completion notification, etc).

This change adds a retry logic of computing the number of completions up to
a configurable (via CLI) timeout (default: 2 seconds).

Fixes: 79ebc3c26010 ("net/udpgso_bench_tx: options to exercise TX CMSG")
Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
Cc: Willem de Bruijn <willemb@google.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20230201001612.515730-4-andrei.gherzan@canonical.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/net/udpgso_bench_tx.c | 34 +++++++++++++++----
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/net/udpgso_bench_tx.c b/tools/testing/selftests/net/udpgso_bench_tx.c
index b47b5c32039f..477392715a9a 100644
--- a/tools/testing/selftests/net/udpgso_bench_tx.c
+++ b/tools/testing/selftests/net/udpgso_bench_tx.c
@@ -62,6 +62,7 @@ static int	cfg_payload_len	= (1472 * 42);
 static int	cfg_port	= 8000;
 static int	cfg_runtime_ms	= -1;
 static bool	cfg_poll;
+static int	cfg_poll_loop_timeout_ms = 2000;
 static bool	cfg_segment;
 static bool	cfg_sendmmsg;
 static bool	cfg_tcp;
@@ -235,16 +236,17 @@ static void flush_errqueue_recv(int fd)
 	}
 }
 
-static void flush_errqueue(int fd, const bool do_poll)
+static void flush_errqueue(int fd, const bool do_poll,
+			   unsigned long poll_timeout, const bool poll_err)
 {
 	if (do_poll) {
 		struct pollfd fds = {0};
 		int ret;
 
 		fds.fd = fd;
-		ret = poll(&fds, 1, 500);
+		ret = poll(&fds, 1, poll_timeout);
 		if (ret == 0) {
-			if (cfg_verbose)
+			if ((cfg_verbose) && (poll_err))
 				fprintf(stderr, "poll timeout\n");
 		} else if (ret < 0) {
 			error(1, errno, "poll");
@@ -254,6 +256,20 @@ static void flush_errqueue(int fd, const bool do_poll)
 	flush_errqueue_recv(fd);
 }
 
+static void flush_errqueue_retry(int fd, unsigned long num_sends)
+{
+	unsigned long tnow, tstop;
+	bool first_try = true;
+
+	tnow = gettimeofday_ms();
+	tstop = tnow + cfg_poll_loop_timeout_ms;
+	do {
+		flush_errqueue(fd, true, tstop - tnow, first_try);
+		first_try = false;
+		tnow = gettimeofday_ms();
+	} while ((stat_zcopies != num_sends) && (tnow < tstop));
+}
+
 static int send_tcp(int fd, char *data)
 {
 	int ret, done = 0, count = 0;
@@ -413,7 +429,8 @@ static int send_udp_segment(int fd, char *data)
 
 static void usage(const char *filepath)
 {
-	error(1, 0, "Usage: %s [-46acmHPtTuvz] [-C cpu] [-D dst ip] [-l secs] [-M messagenr] [-p port] [-s sendsize] [-S gsosize]",
+	error(1, 0, "Usage: %s [-46acmHPtTuvz] [-C cpu] [-D dst ip] [-l secs] "
+		    "[-L secs] [-M messagenr] [-p port] [-s sendsize] [-S gsosize]",
 		    filepath);
 }
 
@@ -423,7 +440,7 @@ static void parse_opts(int argc, char **argv)
 	int max_len, hdrlen;
 	int c;
 
-	while ((c = getopt(argc, argv, "46acC:D:Hl:mM:p:s:PS:tTuvz")) != -1) {
+	while ((c = getopt(argc, argv, "46acC:D:Hl:L:mM:p:s:PS:tTuvz")) != -1) {
 		switch (c) {
 		case '4':
 			if (cfg_family != PF_UNSPEC)
@@ -452,6 +469,9 @@ static void parse_opts(int argc, char **argv)
 		case 'l':
 			cfg_runtime_ms = strtoul(optarg, NULL, 10) * 1000;
 			break;
+		case 'L':
+			cfg_poll_loop_timeout_ms = strtoul(optarg, NULL, 10) * 1000;
+			break;
 		case 'm':
 			cfg_sendmmsg = true;
 			break;
@@ -679,7 +699,7 @@ int main(int argc, char **argv)
 			num_sends += send_udp(fd, buf[i]);
 		num_msgs++;
 		if ((cfg_zerocopy && ((num_msgs & 0xF) == 0)) || cfg_tx_tstamp)
-			flush_errqueue(fd, cfg_poll);
+			flush_errqueue(fd, cfg_poll, 500, true);
 
 		if (cfg_msg_nr && num_msgs >= cfg_msg_nr)
 			break;
@@ -698,7 +718,7 @@ int main(int argc, char **argv)
 	} while (!interrupted && (cfg_runtime_ms == -1 || tnow < tstop));
 
 	if (cfg_zerocopy || cfg_tx_tstamp)
-		flush_errqueue(fd, true);
+		flush_errqueue_retry(fd, num_sends);
 
 	if (close(fd))
 		error(1, errno, "close");
-- 
2.39.0




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

* [PATCH 5.10 034/139] virtio-net: Keep stop() to follow mirror sequence of open()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (32 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 033/139] selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 035/139] net: openvswitch: fix flow memory leak in ovs_flow_cmd_new Greg Kroah-Hartman
                   ` (113 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Michael S. Tsirkin, Jiri Pirko,
	Parav Pandit, Jakub Kicinski, Sasha Levin

From: Parav Pandit <parav@nvidia.com>

[ Upstream commit 63b114042d8a9c02d9939889177c36dbdb17a588 ]

Cited commit in fixes tag frees rxq xdp info while RQ NAPI is
still enabled and packet processing may be ongoing.

Follow the mirror sequence of open() in the stop() callback.
This ensures that when rxq info is unregistered, no rx
packet processing is ongoing.

Fixes: 754b8a21a96d ("virtio_net: setup xdp_rxq_info")
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://lore.kernel.org/r/20230202163516.12559-1-parav@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/virtio_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 0605c28c684b..d53321116136 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1928,8 +1928,8 @@ static int virtnet_close(struct net_device *dev)
 	cancel_delayed_work_sync(&vi->refill);
 
 	for (i = 0; i < vi->max_queue_pairs; i++) {
-		xdp_rxq_info_unreg(&vi->rq[i].xdp_rxq);
 		napi_disable(&vi->rq[i].napi);
+		xdp_rxq_info_unreg(&vi->rq[i].xdp_rxq);
 		virtnet_napi_tx_disable(&vi->sq[i].napi);
 	}
 
-- 
2.39.0




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

* [PATCH 5.10 035/139] net: openvswitch: fix flow memory leak in ovs_flow_cmd_new
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (33 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 034/139] virtio-net: Keep stop() to follow mirror sequence of open() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 036/139] efi: fix potential NULL deref in efi_mem_reserve_persistent Greg Kroah-Hartman
                   ` (112 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Fedor Pchelkin, Alexey Khoroshilov,
	Eelco Chaudron, Simon Horman, Jakub Kicinski, Sasha Levin

From: Fedor Pchelkin <pchelkin@ispras.ru>

[ Upstream commit 0c598aed445eb45b0ee7ba405f7ece99ee349c30 ]

Syzkaller reports a memory leak of new_flow in ovs_flow_cmd_new() as it is
not freed when an allocation of a key fails.

BUG: memory leak
unreferenced object 0xffff888116668000 (size 632):
  comm "syz-executor231", pid 1090, jiffies 4294844701 (age 18.871s)
  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:
    [<00000000defa3494>] kmem_cache_zalloc include/linux/slab.h:654 [inline]
    [<00000000defa3494>] ovs_flow_alloc+0x19/0x180 net/openvswitch/flow_table.c:77
    [<00000000c67d8873>] ovs_flow_cmd_new+0x1de/0xd40 net/openvswitch/datapath.c:957
    [<0000000010a539a8>] genl_family_rcv_msg_doit+0x22d/0x330 net/netlink/genetlink.c:739
    [<00000000dff3302d>] genl_family_rcv_msg net/netlink/genetlink.c:783 [inline]
    [<00000000dff3302d>] genl_rcv_msg+0x328/0x590 net/netlink/genetlink.c:800
    [<000000000286dd87>] netlink_rcv_skb+0x153/0x430 net/netlink/af_netlink.c:2515
    [<0000000061fed410>] genl_rcv+0x24/0x40 net/netlink/genetlink.c:811
    [<000000009dc0f111>] netlink_unicast_kernel net/netlink/af_netlink.c:1313 [inline]
    [<000000009dc0f111>] netlink_unicast+0x545/0x7f0 net/netlink/af_netlink.c:1339
    [<000000004a5ee816>] netlink_sendmsg+0x8e7/0xde0 net/netlink/af_netlink.c:1934
    [<00000000482b476f>] sock_sendmsg_nosec net/socket.c:651 [inline]
    [<00000000482b476f>] sock_sendmsg+0x152/0x190 net/socket.c:671
    [<00000000698574ba>] ____sys_sendmsg+0x70a/0x870 net/socket.c:2356
    [<00000000d28d9e11>] ___sys_sendmsg+0xf3/0x170 net/socket.c:2410
    [<0000000083ba9120>] __sys_sendmsg+0xe5/0x1b0 net/socket.c:2439
    [<00000000c00628f8>] do_syscall_64+0x30/0x40 arch/x86/entry/common.c:46
    [<000000004abfdcf4>] entry_SYSCALL_64_after_hwframe+0x61/0xc6

To fix this the patch rearranges the goto labels to reflect the order of
object allocations and adds appropriate goto statements on the error
paths.

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

Fixes: 68bb10101e6b ("openvswitch: Fix flow lookup to use unmasked key")
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Eelco Chaudron <echaudro@redhat.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230201210218.361970-1-pchelkin@ispras.ru
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/openvswitch/datapath.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 435f7f1be614..b625ab5e9a43 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -964,14 +964,14 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
 	key = kzalloc(sizeof(*key), GFP_KERNEL);
 	if (!key) {
 		error = -ENOMEM;
-		goto err_kfree_key;
+		goto err_kfree_flow;
 	}
 
 	ovs_match_init(&match, key, false, &mask);
 	error = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY],
 				  a[OVS_FLOW_ATTR_MASK], log);
 	if (error)
-		goto err_kfree_flow;
+		goto err_kfree_key;
 
 	ovs_flow_mask_key(&new_flow->key, key, true, &mask);
 
@@ -979,14 +979,14 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
 	error = ovs_nla_get_identifier(&new_flow->id, a[OVS_FLOW_ATTR_UFID],
 				       key, log);
 	if (error)
-		goto err_kfree_flow;
+		goto err_kfree_key;
 
 	/* Validate actions. */
 	error = ovs_nla_copy_actions(net, a[OVS_FLOW_ATTR_ACTIONS],
 				     &new_flow->key, &acts, log);
 	if (error) {
 		OVS_NLERR(log, "Flow actions may not be safe on all matching packets.");
-		goto err_kfree_flow;
+		goto err_kfree_key;
 	}
 
 	reply = ovs_flow_cmd_alloc_info(acts, &new_flow->id, info, false,
@@ -1086,10 +1086,10 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
 	kfree_skb(reply);
 err_kfree_acts:
 	ovs_nla_free_flow_actions(acts);
-err_kfree_flow:
-	ovs_flow_free(new_flow, false);
 err_kfree_key:
 	kfree(key);
+err_kfree_flow:
+	ovs_flow_free(new_flow, false);
 error:
 	return error;
 }
-- 
2.39.0




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

* [PATCH 5.10 036/139] efi: fix potential NULL deref in efi_mem_reserve_persistent
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (34 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 035/139] net: openvswitch: fix flow memory leak in ovs_flow_cmd_new Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 037/139] qede: add netpoll support for qede driver Greg Kroah-Hartman
                   ` (111 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Anton Gusev, Ard Biesheuvel, Sasha Levin

From: Anton Gusev <aagusev@ispras.ru>

[ Upstream commit 966d47e1f27c45507c5df82b2a2157e5a4fd3909 ]

When iterating on a linked list, a result of memremap is dereferenced
without checking it for NULL.

This patch adds a check that falls back on allocating a new page in
case memremap doesn't succeed.

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

Fixes: 18df7577adae ("efi/memreserve: deal with memreserve entries in unmapped memory")
Signed-off-by: Anton Gusev <aagusev@ispras.ru>
[ardb: return -ENOMEM instead of breaking out of the loop]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/firmware/efi/efi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index a2765d668856..332739f3eded 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -950,6 +950,8 @@ int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size)
 	/* first try to find a slot in an existing linked list entry */
 	for (prsv = efi_memreserve_root->next; prsv; ) {
 		rsv = memremap(prsv, sizeof(*rsv), MEMREMAP_WB);
+		if (!rsv)
+			return -ENOMEM;
 		index = atomic_fetch_add_unless(&rsv->count, 1, rsv->size);
 		if (index < rsv->size) {
 			rsv->entry[index].base = addr;
-- 
2.39.0




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

* [PATCH 5.10 037/139] qede: add netpoll support for qede driver
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (35 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 036/139] efi: fix potential NULL deref in efi_mem_reserve_persistent Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 038/139] qede: execute xdp_do_flush() before napi_complete_done() Greg Kroah-Hartman
                   ` (110 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Bhaskar Upadhaya, Igor Russkikh,
	Ariel Elior, David S. Miller, Sasha Levin

From: Bhaskar Upadhaya <bupadhaya@marvell.com>

[ Upstream commit 961aa716235f58088e99acafbe66027d678061ce ]

handle netpoll case when qede_poll is called by
netpoll layer with budget 0

Signed-off-by: Bhaskar Upadhaya <bupadhaya@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Ariel Elior <aelior@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: 2ccce20d51fa ("qede: execute xdp_do_flush() before napi_complete_done()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/qlogic/qede/qede_fp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c
index d210632676d3..5b1885c0a8bd 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_fp.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c
@@ -1456,7 +1456,8 @@ int qede_poll(struct napi_struct *napi, int budget)
 	rx_work_done = (likely(fp->type & QEDE_FASTPATH_RX) &&
 			qede_has_rx_work(fp->rxq)) ?
 			qede_rx_int(fp, budget) : 0;
-	if (rx_work_done < budget) {
+	/* Handle case where we are called by netpoll with a budget of 0 */
+	if (rx_work_done < budget || !budget) {
 		if (!qede_poll_is_more_work(fp)) {
 			napi_complete_done(napi, rx_work_done);
 
-- 
2.39.0




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

* [PATCH 5.10 038/139] qede: execute xdp_do_flush() before napi_complete_done()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (36 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 037/139] qede: add netpoll support for qede driver Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 039/139] i2c: mxs: suppress probe-deferral error message Greg Kroah-Hartman
                   ` (109 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Magnus Karlsson,
	Toke Høiland-Jørgensen, Jakub Kicinski, Sasha Levin

From: Magnus Karlsson <magnus.karlsson@intel.com>

[ Upstream commit 2ccce20d51faa0178086163ccb6c84a099a87ab4 ]

Make sure that xdp_do_flush() is always executed before
napi_complete_done(). This is important for two reasons. First, a
redirect to an XSKMAP assumes that a call to xdp_do_redirect() from
napi context X on CPU Y will be followed by a xdp_do_flush() from the
same napi context and CPU. This is not guaranteed if the
napi_complete_done() is executed before xdp_do_flush(), as it tells
the napi logic that it is fine to schedule napi context X on another
CPU. Details from a production system triggering this bug using the
veth driver can be found following the first link below.

The second reason is that the XDP_REDIRECT logic in itself relies on
being inside a single NAPI instance through to the xdp_do_flush() call
for RCU protection of all in-kernel data structures. Details can be
found in the second link below.

Fixes: d1b25b79e162b ("qede: add .ndo_xdp_xmit() and XDP_REDIRECT support")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/r/20221220185903.1105011-1-sbohrer@cloudflare.com
Link: https://lore.kernel.org/all/20210624160609.292325-1-toke@redhat.com/
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/qlogic/qede/qede_fp.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c
index 5b1885c0a8bd..a632de208a7d 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_fp.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c
@@ -1456,6 +1456,10 @@ int qede_poll(struct napi_struct *napi, int budget)
 	rx_work_done = (likely(fp->type & QEDE_FASTPATH_RX) &&
 			qede_has_rx_work(fp->rxq)) ?
 			qede_rx_int(fp, budget) : 0;
+
+	if (fp->xdp_xmit & QEDE_XDP_REDIRECT)
+		xdp_do_flush();
+
 	/* Handle case where we are called by netpoll with a budget of 0 */
 	if (rx_work_done < budget || !budget) {
 		if (!qede_poll_is_more_work(fp)) {
@@ -1475,9 +1479,6 @@ int qede_poll(struct napi_struct *napi, int budget)
 		qede_update_tx_producer(fp->xdp_tx);
 	}
 
-	if (fp->xdp_xmit & QEDE_XDP_REDIRECT)
-		xdp_do_flush_map();
-
 	return rx_work_done;
 }
 
-- 
2.39.0




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

* [PATCH 5.10 039/139] i2c: mxs: suppress probe-deferral error message
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (37 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 038/139] qede: execute xdp_do_flush() before napi_complete_done() Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 040/139] scsi: target: core: Fix warning on RT kernels Greg Kroah-Hartman
                   ` (108 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Stefan Wahren, Fabio Estevam,
	Wolfram Sang, Sasha Levin

From: Stefan Wahren <stefan.wahren@i2se.com>

[ Upstream commit 78a4471fa1a76a8bef4919105de67660a89a1e9b ]

During boot of I2SE Duckbill the kernel log contains a
confusing error:

  Failed to request dma

This is caused by i2c-mxs tries to request a not yet available DMA
channel (-EPROBE_DEFER). So suppress this message by using
dev_err_probe().

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/i2c/busses/i2c-mxs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
index c4b08a924461..abad24808e85 100644
--- a/drivers/i2c/busses/i2c-mxs.c
+++ b/drivers/i2c/busses/i2c-mxs.c
@@ -842,8 +842,8 @@ static int mxs_i2c_probe(struct platform_device *pdev)
 	/* Setup the DMA */
 	i2c->dmach = dma_request_chan(dev, "rx-tx");
 	if (IS_ERR(i2c->dmach)) {
-		dev_err(dev, "Failed to request dma\n");
-		return PTR_ERR(i2c->dmach);
+		return dev_err_probe(dev, PTR_ERR(i2c->dmach),
+				     "Failed to request dma\n");
 	}
 
 	platform_set_drvdata(pdev, i2c);
-- 
2.39.0




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

* [PATCH 5.10 040/139] scsi: target: core: Fix warning on RT kernels
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (38 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 039/139] i2c: mxs: suppress probe-deferral error message Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 041/139] scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress Greg Kroah-Hartman
                   ` (107 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Maurizio Lombardi,
	Christoph Hellwig, Martin K. Petersen, Sasha Levin

From: Maurizio Lombardi <mlombard@redhat.com>

[ Upstream commit 84ed64b1a7a7fcd507598dee7708c1f225123711 ]

Calling spin_lock_irqsave() does not disable the interrupts on realtime
kernels, remove the warning and replace assert_spin_locked() with
lockdep_assert_held().

Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230110125310.55884-1-mlombard@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/target/target_core_tmr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
index e4513ef09159..3efd5a3bd69d 100644
--- a/drivers/target/target_core_tmr.c
+++ b/drivers/target/target_core_tmr.c
@@ -82,8 +82,8 @@ static bool __target_check_io_state(struct se_cmd *se_cmd,
 {
 	struct se_session *sess = se_cmd->se_sess;
 
-	assert_spin_locked(&sess->sess_cmd_lock);
-	WARN_ON_ONCE(!irqs_disabled());
+	lockdep_assert_held(&sess->sess_cmd_lock);
+
 	/*
 	 * If command already reached CMD_T_COMPLETE state within
 	 * target_complete_cmd() or CMD_T_FABRIC_STOP due to shutdown,
-- 
2.39.0




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

* [PATCH 5.10 041/139] scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (39 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 040/139] scsi: target: core: Fix warning on RT kernels Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 042/139] i2c: rk3x: fix a bunch of kernel-doc warnings Greg Kroah-Hartman
                   ` (106 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mike Christie, Lee Duncan, Ding Hui,
	Martin K. Petersen, Sasha Levin

From: Mike Christie <michael.christie@oracle.com>

[ Upstream commit f484a794e4ee2a9ce61f52a78e810ac45f3fe3b3 ]

If during iscsi_sw_tcp_session_create() iscsi_tcp_r2tpool_alloc() fails,
userspace could be accessing the host's ipaddress attr. If we then free the
session via iscsi_session_teardown() while userspace is still accessing the
session we will hit a use after free bug.

Set the tcp_sw_host->session after we have completed session creation and
can no longer fail.

Link: https://lore.kernel.org/r/20230117193937.21244-3-michael.christie@oracle.com
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Lee Duncan <lduncan@suse.com>
Acked-by: Ding Hui <dinghui@sangfor.com.cn>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/iscsi_tcp.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 6485c1aa9e74..252d7881f99c 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -802,7 +802,7 @@ static int iscsi_sw_tcp_host_get_param(struct Scsi_Host *shost,
 				       enum iscsi_host_param param, char *buf)
 {
 	struct iscsi_sw_tcp_host *tcp_sw_host = iscsi_host_priv(shost);
-	struct iscsi_session *session = tcp_sw_host->session;
+	struct iscsi_session *session;
 	struct iscsi_conn *conn;
 	struct iscsi_tcp_conn *tcp_conn;
 	struct iscsi_sw_tcp_conn *tcp_sw_conn;
@@ -812,6 +812,7 @@ static int iscsi_sw_tcp_host_get_param(struct Scsi_Host *shost,
 
 	switch (param) {
 	case ISCSI_HOST_PARAM_IPADDRESS:
+		session = tcp_sw_host->session;
 		if (!session)
 			return -ENOTCONN;
 
@@ -906,12 +907,14 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
 	if (!cls_session)
 		goto remove_host;
 	session = cls_session->dd_data;
-	tcp_sw_host = iscsi_host_priv(shost);
-	tcp_sw_host->session = session;
 
 	shost->can_queue = session->scsi_cmds_max;
 	if (iscsi_tcp_r2tpool_alloc(session))
 		goto remove_session;
+
+	/* We are now fully setup so expose the session to sysfs. */
+	tcp_sw_host = iscsi_host_priv(shost);
+	tcp_sw_host->session = session;
 	return cls_session;
 
 remove_session:
-- 
2.39.0




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

* [PATCH 5.10 042/139] i2c: rk3x: fix a bunch of kernel-doc warnings
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (40 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 041/139] scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 043/139] platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table Greg Kroah-Hartman
                   ` (105 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Randy Dunlap, Wolfram Sang, Sasha Levin

From: Randy Dunlap <rdunlap@infradead.org>

[ Upstream commit 0582d984793d30442da88fe458674502bad1ad29 ]

Fix multiple W=1 kernel-doc warnings in i2c-rk3x.c:

drivers/i2c/busses/i2c-rk3x.c:83: warning: missing initial short description on line:
 * struct i2c_spec_values:
drivers/i2c/busses/i2c-rk3x.c:139: warning: missing initial short description on line:
 * struct rk3x_i2c_calced_timings:
drivers/i2c/busses/i2c-rk3x.c:162: warning: missing initial short description on line:
 * struct rk3x_i2c_soc_data:
drivers/i2c/busses/i2c-rk3x.c:242: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Generate a START condition, which triggers a REG_INT_START interrupt.
drivers/i2c/busses/i2c-rk3x.c:261: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Generate a STOP condition, which triggers a REG_INT_STOP interrupt.
drivers/i2c/busses/i2c-rk3x.c:304: warning: expecting prototype for Setup a read according to i2c(). Prototype was for rk3x_i2c_prepare_read() instead
drivers/i2c/busses/i2c-rk3x.c:335: warning: expecting prototype for Fill the transmit buffer with data from i2c(). Prototype was for rk3x_i2c_fill_transmit_buf() instead
drivers/i2c/busses/i2c-rk3x.c:535: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Get timing values of I2C specification
drivers/i2c/busses/i2c-rk3x.c:552: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Calculate divider values for desired SCL frequency
drivers/i2c/busses/i2c-rk3x.c:713: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Calculate timing values for desired SCL frequency
drivers/i2c/busses/i2c-rk3x.c:963: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Setup I2C registers for an I2C operation specified by msgs, num.

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/i2c/busses/i2c-rk3x.c | 44 +++++++++++++++++------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
index 02ddb237f69a..13c14eb175e9 100644
--- a/drivers/i2c/busses/i2c-rk3x.c
+++ b/drivers/i2c/busses/i2c-rk3x.c
@@ -80,7 +80,7 @@ enum {
 #define DEFAULT_SCL_RATE  (100 * 1000) /* Hz */
 
 /**
- * struct i2c_spec_values:
+ * struct i2c_spec_values - I2C specification values for various modes
  * @min_hold_start_ns: min hold time (repeated) START condition
  * @min_low_ns: min LOW period of the SCL clock
  * @min_high_ns: min HIGH period of the SCL cloc
@@ -136,7 +136,7 @@ static const struct i2c_spec_values fast_mode_plus_spec = {
 };
 
 /**
- * struct rk3x_i2c_calced_timings:
+ * struct rk3x_i2c_calced_timings - calculated V1 timings
  * @div_low: Divider output for low
  * @div_high: Divider output for high
  * @tuning: Used to adjust setup/hold data time,
@@ -159,7 +159,7 @@ enum rk3x_i2c_state {
 };
 
 /**
- * struct rk3x_i2c_soc_data:
+ * struct rk3x_i2c_soc_data - SOC-specific data
  * @grf_offset: offset inside the grf regmap for setting the i2c type
  * @calc_timings: Callback function for i2c timing information calculated
  */
@@ -239,7 +239,8 @@ static inline void rk3x_i2c_clean_ipd(struct rk3x_i2c *i2c)
 }
 
 /**
- * Generate a START condition, which triggers a REG_INT_START interrupt.
+ * rk3x_i2c_start - Generate a START condition, which triggers a REG_INT_START interrupt.
+ * @i2c: target controller data
  */
 static void rk3x_i2c_start(struct rk3x_i2c *i2c)
 {
@@ -258,8 +259,8 @@ static void rk3x_i2c_start(struct rk3x_i2c *i2c)
 }
 
 /**
- * Generate a STOP condition, which triggers a REG_INT_STOP interrupt.
- *
+ * rk3x_i2c_stop - Generate a STOP condition, which triggers a REG_INT_STOP interrupt.
+ * @i2c: target controller data
  * @error: Error code to return in rk3x_i2c_xfer
  */
 static void rk3x_i2c_stop(struct rk3x_i2c *i2c, int error)
@@ -298,7 +299,8 @@ static void rk3x_i2c_stop(struct rk3x_i2c *i2c, int error)
 }
 
 /**
- * Setup a read according to i2c->msg
+ * rk3x_i2c_prepare_read - Setup a read according to i2c->msg
+ * @i2c: target controller data
  */
 static void rk3x_i2c_prepare_read(struct rk3x_i2c *i2c)
 {
@@ -329,7 +331,8 @@ static void rk3x_i2c_prepare_read(struct rk3x_i2c *i2c)
 }
 
 /**
- * Fill the transmit buffer with data from i2c->msg
+ * rk3x_i2c_fill_transmit_buf - Fill the transmit buffer with data from i2c->msg
+ * @i2c: target controller data
  */
 static void rk3x_i2c_fill_transmit_buf(struct rk3x_i2c *i2c)
 {
@@ -532,11 +535,10 @@ static irqreturn_t rk3x_i2c_irq(int irqno, void *dev_id)
 }
 
 /**
- * Get timing values of I2C specification
- *
+ * rk3x_i2c_get_spec - Get timing values of I2C specification
  * @speed: Desired SCL frequency
  *
- * Returns: Matched i2c spec values.
+ * Return: Matched i2c_spec_values.
  */
 static const struct i2c_spec_values *rk3x_i2c_get_spec(unsigned int speed)
 {
@@ -549,13 +551,12 @@ static const struct i2c_spec_values *rk3x_i2c_get_spec(unsigned int speed)
 }
 
 /**
- * Calculate divider values for desired SCL frequency
- *
+ * rk3x_i2c_v0_calc_timings - Calculate divider values for desired SCL frequency
  * @clk_rate: I2C input clock rate
  * @t: Known I2C timing information
  * @t_calc: Caculated rk3x private timings that would be written into regs
  *
- * Returns: 0 on success, -EINVAL if the goal SCL rate is too slow. In that case
+ * Return: %0 on success, -%EINVAL if the goal SCL rate is too slow. In that case
  * a best-effort divider value is returned in divs. If the target rate is
  * too high, we silently use the highest possible rate.
  */
@@ -710,13 +711,12 @@ static int rk3x_i2c_v0_calc_timings(unsigned long clk_rate,
 }
 
 /**
- * Calculate timing values for desired SCL frequency
- *
+ * rk3x_i2c_v1_calc_timings - Calculate timing values for desired SCL frequency
  * @clk_rate: I2C input clock rate
  * @t: Known I2C timing information
  * @t_calc: Caculated rk3x private timings that would be written into regs
  *
- * Returns: 0 on success, -EINVAL if the goal SCL rate is too slow. In that case
+ * Return: %0 on success, -%EINVAL if the goal SCL rate is too slow. In that case
  * a best-effort divider value is returned in divs. If the target rate is
  * too high, we silently use the highest possible rate.
  * The following formulas are v1's method to calculate timings.
@@ -960,14 +960,14 @@ static int rk3x_i2c_clk_notifier_cb(struct notifier_block *nb, unsigned long
 }
 
 /**
- * Setup I2C registers for an I2C operation specified by msgs, num.
- *
- * Must be called with i2c->lock held.
- *
+ * rk3x_i2c_setup - Setup I2C registers for an I2C operation specified by msgs, num.
+ * @i2c: target controller data
  * @msgs: I2C msgs to process
  * @num: Number of msgs
  *
- * returns: Number of I2C msgs processed or negative in case of error
+ * Must be called with i2c->lock held.
+ *
+ * Return: Number of I2C msgs processed or negative in case of error
  */
 static int rk3x_i2c_setup(struct rk3x_i2c *i2c, struct i2c_msg *msgs, int num)
 {
-- 
2.39.0




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

* [PATCH 5.10 043/139] platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (41 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 042/139] i2c: rk3x: fix a bunch of kernel-doc warnings Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 044/139] net/x25: Fix to not accept on connected socket Greg Kroah-Hartman
                   ` (104 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Koba Ko, Hans de Goede, Sasha Levin

From: Koba Ko <koba.ko@canonical.com>

[ Upstream commit 83bcf3e52e9cfc727df33f1055ef0618c91719d0 ]

Some platforms send the speaker-mute key from EC. dell-wmi can't
recognize it.

Add a new keymap for KEY_MUTE in type 0x0010 table.

Signed-off-by: Koba Ko <koba.ko@canonical.com>
Link: https://lore.kernel.org/r/20230117123436.200440-1-koba.ko@canonical.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/platform/x86/dell-wmi.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index bbdb3e860892..6ef327a80ccf 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -259,6 +259,9 @@ static const struct key_entry dell_wmi_keymap_type_0010[] = {
 	{ KE_KEY,    0x57, { KEY_BRIGHTNESSDOWN } },
 	{ KE_KEY,    0x58, { KEY_BRIGHTNESSUP } },
 
+	/*Speaker Mute*/
+	{ KE_KEY, 0x109, { KEY_MUTE} },
+
 	/* Mic mute */
 	{ KE_KEY, 0x150, { KEY_MICMUTE } },
 
-- 
2.39.0




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

* [PATCH 5.10 044/139] net/x25: Fix to not accept on connected socket
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (42 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 043/139] platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 045/139] iio: adc: stm32-dfsdm: fill module aliases Greg Kroah-Hartman
                   ` (103 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hyunwoo Kim, David S. Miller, Sasha Levin

From: Hyunwoo Kim <v4bel@theori.io>

[ Upstream commit f2b0b5210f67c56a3bcdf92ff665fb285d6e0067 ]

When listen() and accept() are called on an x25 socket
that connect() succeeds, accept() succeeds immediately.
This is because x25_connect() queues the skb to
sk->sk_receive_queue, and x25_accept() dequeues it.

This creates a child socket with the sk of the parent
x25 socket, which can cause confusion.

Fix x25_listen() to return -EINVAL if the socket has
already been successfully connect()ed to avoid this issue.

Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/x25/af_x25.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index d231d4620c38..161dc194e634 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -492,6 +492,12 @@ static int x25_listen(struct socket *sock, int backlog)
 	int rc = -EOPNOTSUPP;
 
 	lock_sock(sk);
+	if (sock->state != SS_UNCONNECTED) {
+		rc = -EINVAL;
+		release_sock(sk);
+		return rc;
+	}
+
 	if (sk->sk_state != TCP_LISTEN) {
 		memset(&x25_sk(sk)->dest_addr, 0, X25_ADDR_LEN);
 		sk->sk_max_ack_backlog = backlog;
-- 
2.39.0




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

* [PATCH 5.10 045/139] iio: adc: stm32-dfsdm: fill module aliases
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (43 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 044/139] net/x25: Fix to not accept on connected socket Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 046/139] usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API Greg Kroah-Hartman
                   ` (102 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Olivier Moysan, Jonathan Cameron,
	Sasha Levin

From: Olivier Moysan <olivier.moysan@foss.st.com>

[ Upstream commit cc3304052a89ab6ac887ed9224420a27e3d354e1 ]

When STM32 DFSDM driver is built as module, no modalias information
is available. This prevents module to be loaded by udev.
Add MODULE_DEVICE_TABLE() to fill module aliases.

Fixes: e2e6771c6462 ("IIO: ADC: add STM32 DFSDM sigma delta ADC support")
Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
Link: https://lore.kernel.org/r/20221202152848.45585-1-olivier.moysan@foss.st.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/iio/adc/stm32-dfsdm-adc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/iio/adc/stm32-dfsdm-adc.c b/drivers/iio/adc/stm32-dfsdm-adc.c
index 9234f14167b7..171d73efb2f8 100644
--- a/drivers/iio/adc/stm32-dfsdm-adc.c
+++ b/drivers/iio/adc/stm32-dfsdm-adc.c
@@ -1521,6 +1521,7 @@ static const struct of_device_id stm32_dfsdm_adc_match[] = {
 	},
 	{}
 };
+MODULE_DEVICE_TABLE(of, stm32_dfsdm_adc_match);
 
 static int stm32_dfsdm_adc_probe(struct platform_device *pdev)
 {
-- 
2.39.0




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

* [PATCH 5.10 046/139] usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (44 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 045/139] iio: adc: stm32-dfsdm: fill module aliases Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 047/139] usb: dwc3: qcom: enable vbus override when in OTG dr-mode Greg Kroah-Hartman
                   ` (101 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Wesley Cheng, Bryan ODonoghue,
	Bjorn Andersson, Sasha Levin

From: Wesley Cheng <wcheng@codeaurora.org>

[ Upstream commit 8e6cb5d27e8246d9c986ec162d066a502d2b602b ]

There was an extra character in the dwc3_qcom_vbus_override_enable()
function.  Removed the extra character.

Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20210704013314.200951-2-bryan.odonoghue@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: eb320f76e31d ("usb: dwc3: qcom: enable vbus override when in OTG dr-mode")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/dwc3/dwc3-qcom.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
index 528e36cc58ea..c2662e3a5b84 100644
--- a/drivers/usb/dwc3/dwc3-qcom.c
+++ b/drivers/usb/dwc3/dwc3-qcom.c
@@ -115,7 +115,7 @@ static inline void dwc3_qcom_clrbits(void __iomem *base, u32 offset, u32 val)
 	readl(base + offset);
 }
 
-static void dwc3_qcom_vbus_overrride_enable(struct dwc3_qcom *qcom, bool enable)
+static void dwc3_qcom_vbus_override_enable(struct dwc3_qcom *qcom, bool enable)
 {
 	if (enable) {
 		dwc3_qcom_setbits(qcom->qscratch_base, QSCRATCH_SS_PHY_CTRL,
@@ -136,7 +136,7 @@ static int dwc3_qcom_vbus_notifier(struct notifier_block *nb,
 	struct dwc3_qcom *qcom = container_of(nb, struct dwc3_qcom, vbus_nb);
 
 	/* enable vbus override for device mode */
-	dwc3_qcom_vbus_overrride_enable(qcom, event);
+	dwc3_qcom_vbus_override_enable(qcom, event);
 	qcom->mode = event ? USB_DR_MODE_PERIPHERAL : USB_DR_MODE_HOST;
 
 	return NOTIFY_DONE;
@@ -148,7 +148,7 @@ static int dwc3_qcom_host_notifier(struct notifier_block *nb,
 	struct dwc3_qcom *qcom = container_of(nb, struct dwc3_qcom, host_nb);
 
 	/* disable vbus override in host mode */
-	dwc3_qcom_vbus_overrride_enable(qcom, !event);
+	dwc3_qcom_vbus_override_enable(qcom, !event);
 	qcom->mode = event ? USB_DR_MODE_HOST : USB_DR_MODE_PERIPHERAL;
 
 	return NOTIFY_DONE;
@@ -833,7 +833,7 @@ static int dwc3_qcom_probe(struct platform_device *pdev)
 
 	/* enable vbus override for device mode */
 	if (qcom->mode == USB_DR_MODE_PERIPHERAL)
-		dwc3_qcom_vbus_overrride_enable(qcom, true);
+		dwc3_qcom_vbus_override_enable(qcom, true);
 
 	/* register extcon to override sw_vbus on Vbus change later */
 	ret = dwc3_qcom_register_extcon(qcom);
-- 
2.39.0




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

* [PATCH 5.10 047/139] usb: dwc3: qcom: enable vbus override when in OTG dr-mode
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (45 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 046/139] usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 048/139] usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait Greg Kroah-Hartman
                   ` (100 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Bryan ODonoghue, Neil Armstrong,
	Sasha Levin

From: Neil Armstrong <neil.armstrong@linaro.org>

[ Upstream commit eb320f76e31dc835b9f57f04af1a2353b13bb7d8 ]

With vbus override enabled when in OTG dr_mode, Host<->Peripheral
switch now works on SM8550, otherwise the DWC3 seems to be stuck
in Host mode only.

Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20230123-topic-sm8550-upstream-dwc3-qcom-otg-v2-1-2d400e598463@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/dwc3/dwc3-qcom.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
index c2662e3a5b84..dac13fe97811 100644
--- a/drivers/usb/dwc3/dwc3-qcom.c
+++ b/drivers/usb/dwc3/dwc3-qcom.c
@@ -832,7 +832,7 @@ static int dwc3_qcom_probe(struct platform_device *pdev)
 	qcom->mode = usb_get_dr_mode(&qcom->dwc3->dev);
 
 	/* enable vbus override for device mode */
-	if (qcom->mode == USB_DR_MODE_PERIPHERAL)
+	if (qcom->mode != USB_DR_MODE_HOST)
 		dwc3_qcom_vbus_override_enable(qcom, true);
 
 	/* register extcon to override sw_vbus on Vbus change later */
-- 
2.39.0




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

* [PATCH 5.10 048/139] usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (46 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 047/139] usb: dwc3: qcom: enable vbus override when in OTG dr-mode Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 049/139] vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF Greg Kroah-Hartman
                   ` (99 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, John Keeping, Udipto Goswami, Sasha Levin

From: Udipto Goswami <quic_ugoswami@quicinc.com>

[ Upstream commit 921deb9da15851425ccbb6ee409dc2fd8fbdfe6b ]

__ffs_ep0_queue_wait executes holding the spinlock of &ffs->ev.waitq.lock
and unlocks it after the assignments to usb_request are done.
However in the code if the request is already NULL we bail out returning
-EINVAL but never unlocked the spinlock.

Fix this by adding spin_unlock_irq &ffs->ev.waitq.lock before returning.

Fixes: 6a19da111057 ("usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait")
Reviewed-by: John Keeping <john@metanate.com>
Signed-off-by: Udipto Goswami <quic_ugoswami@quicinc.com>
Link: https://lore.kernel.org/r/20230124091149.18647-1-quic_ugoswami@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/gadget/function/f_fs.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 94000fd190e5..8c48c9f801be 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -278,8 +278,10 @@ static int __ffs_ep0_queue_wait(struct ffs_data *ffs, char *data, size_t len)
 	struct usb_request *req = ffs->ep0req;
 	int ret;
 
-	if (!req)
+	if (!req) {
+		spin_unlock_irq(&ffs->ev.waitq.lock);
 		return -EINVAL;
+	}
 
 	req->zero     = len < le16_to_cpu(ffs->ev.setup.wLength);
 
-- 
2.39.0




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

* [PATCH 5.10 049/139] vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (47 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 048/139] usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 050/139] Input: i8042 - move __initconst to fix code styling warning Greg Kroah-Hartman
                   ` (98 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzkaller, Jiri Slaby,
	George Kennedy, Sasha Levin

From: George Kennedy <george.kennedy@oracle.com>

[ Upstream commit 226fae124b2dac217ea5436060d623ff3385bc34 ]

After a call to console_unlock() in vcs_read() the vc_data struct can be
freed by vc_deallocate(). Because of that, the struct vc_data pointer
load must be done at the top of while loop in vcs_read() to avoid a UAF
when vcs_size() is called.

Syzkaller reported a UAF in vcs_size().

BUG: KASAN: use-after-free in vcs_size (drivers/tty/vt/vc_screen.c:215)
Read of size 4 at addr ffff8881137479a8 by task 4a005ed81e27e65/1537

CPU: 0 PID: 1537 Comm: 4a005ed81e27e65 Not tainted 6.2.0-rc5 #1
Hardware name: Red Hat KVM, BIOS 1.15.0-2.module
Call Trace:
  <TASK>
__asan_report_load4_noabort (mm/kasan/report_generic.c:350)
vcs_size (drivers/tty/vt/vc_screen.c:215)
vcs_read (drivers/tty/vt/vc_screen.c:415)
vfs_read (fs/read_write.c:468 fs/read_write.c:450)
...
  </TASK>

Allocated by task 1191:
...
kmalloc_trace (mm/slab_common.c:1069)
vc_allocate (./include/linux/slab.h:580 ./include/linux/slab.h:720
     drivers/tty/vt/vt.c:1128 drivers/tty/vt/vt.c:1108)
con_install (drivers/tty/vt/vt.c:3383)
tty_init_dev (drivers/tty/tty_io.c:1301 drivers/tty/tty_io.c:1413
     drivers/tty/tty_io.c:1390)
tty_open (drivers/tty/tty_io.c:2080 drivers/tty/tty_io.c:2126)
chrdev_open (fs/char_dev.c:415)
do_dentry_open (fs/open.c:883)
vfs_open (fs/open.c:1014)
...

Freed by task 1548:
...
kfree (mm/slab_common.c:1021)
vc_port_destruct (drivers/tty/vt/vt.c:1094)
tty_port_destructor (drivers/tty/tty_port.c:296)
tty_port_put (drivers/tty/tty_port.c:312)
vt_disallocate_all (drivers/tty/vt/vt_ioctl.c:662 (discriminator 2))
vt_ioctl (drivers/tty/vt/vt_ioctl.c:903)
tty_ioctl (drivers/tty/tty_io.c:2776)
...

The buggy address belongs to the object at ffff888113747800
  which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 424 bytes inside of
  1024-byte region [ffff888113747800, ffff888113747c00)

The buggy address belongs to the physical page:
page:00000000b3fe6c7c refcount:1 mapcount:0 mapping:0000000000000000
     index:0x0 pfn:0x113740
head:00000000b3fe6c7c order:3 compound_mapcount:0 subpages_mapcount:0
     compound_pincount:0
anon flags: 0x17ffffc0010200(slab|head|node=0|zone=2|lastcpupid=0x1fffff)
raw: 0017ffffc0010200 ffff888100042dc0 0000000000000000 dead000000000001
raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
  ffff888113747880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
  ffff888113747900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> ffff888113747980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                   ^
  ffff888113747a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
  ffff888113747a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================
Disabling lock debugging due to kernel taint

Fixes: ac751efa6a0d ("console: rename acquire/release_console_sem() to console_lock/unlock()")
Reported-by: syzkaller <syzkaller@googlegroups.com>
Suggested-by: Jiri Slaby <jirislaby@kernel.org>
Signed-off-by: George Kennedy <george.kennedy@oracle.com>
Link: https://lore.kernel.org/r/1674577014-12374-1-git-send-email-george.kennedy@oracle.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/vt/vc_screen.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/vt/vc_screen.c b/drivers/tty/vt/vc_screen.c
index 1850bacdb5b0..f566eb1839dc 100644
--- a/drivers/tty/vt/vc_screen.c
+++ b/drivers/tty/vt/vc_screen.c
@@ -386,10 +386,6 @@ vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
 
 	uni_mode = use_unicode(inode);
 	attr = use_attributes(inode);
-	ret = -ENXIO;
-	vc = vcs_vc(inode, &viewed);
-	if (!vc)
-		goto unlock_out;
 
 	ret = -EINVAL;
 	if (pos < 0)
@@ -407,6 +403,11 @@ vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
 		unsigned int this_round, skip = 0;
 		int size;
 
+		ret = -ENXIO;
+		vc = vcs_vc(inode, &viewed);
+		if (!vc)
+			goto unlock_out;
+
 		/* Check whether we are above size each round,
 		 * as copy_to_user at the end of this loop
 		 * could sleep.
-- 
2.39.0




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

* [PATCH 5.10 050/139] Input: i8042 - move __initconst to fix code styling warning
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (48 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 049/139] vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 051/139] Input: i8042 - merge quirk tables Greg Kroah-Hartman
                   ` (97 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Werner Sembach, Hans de Goede,
	Dmitry Torokhov, Sasha Levin

From: Werner Sembach <wse@tuxedocomputers.com>

[ Upstream commit 95a9916c909f0b1d95e24b4232b4bc38ff755415 ]

Move __intconst from before i8042_dmi_laptop_table[] to after it for
consistent code styling.

Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20220629112725.12922-2-wse@tuxedocomputers.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/input/serio/i8042-x86ia64io.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 148a7c5fd0e2..91c6f24b4837 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -791,7 +791,7 @@ static const struct dmi_system_id __initconst i8042_dmi_nopnp_table[] = {
 	{ }
 };
 
-static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
+static const struct dmi_system_id i8042_dmi_laptop_table[] __initconst = {
 	{
 		.matches = {
 			DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
-- 
2.39.0




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

* [PATCH 5.10 051/139] Input: i8042 - merge quirk tables
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (49 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 050/139] Input: i8042 - move __initconst to fix code styling warning Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 052/139] Input: i8042 - add TUXEDO devices to i8042 " Greg Kroah-Hartman
                   ` (96 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Werner Sembach, Hans de Goede,
	Dmitry Torokhov, Sasha Levin

From: Werner Sembach <wse@tuxedocomputers.com>

[ Upstream commit ff946268a0813c35b790dfbe07c3bfaa7bfb869c ]

Merge i8042 quirk tables to reduce code duplication for devices that need
more than one quirk. Before every quirk had its own table with devices
needing that quirk. If a new quirk needed to be added a new table had to
be created. When a device needed multiple quirks, it appeared in multiple
tables. Now only one table called i8042_dmi_quirk_table exists. In it every
device has one entry and required quirks are coded in the .driver_data
field of the struct dmi_system_id used by this table. Multiple quirks for
one device can be applied by bitwise-or of the new SERIO_QUIRK_* defines.

Also align quirkable options with command line parameters and make vendor
wide quirks per device overwriteable on a per device basis. The first match
is honored while following matches are ignored. So when a vendor wide quirk
is defined in the table, a device can inserted before and therefore
ignoring the vendor wide define.

Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20220629112725.12922-3-wse@tuxedocomputers.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/input/serio/i8042-x86ia64io.h | 1100 +++++++++++++------------
 1 file changed, 595 insertions(+), 505 deletions(-)

diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 91c6f24b4837..1d2b34aac0c7 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -67,654 +67,735 @@ static inline void i8042_write_command(int val)
 
 #include <linux/dmi.h>
 
-static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = {
+#define SERIO_QUIRK_NOKBD		BIT(0)
+#define SERIO_QUIRK_NOAUX		BIT(1)
+#define SERIO_QUIRK_NOMUX		BIT(2)
+#define SERIO_QUIRK_FORCEMUX		BIT(3)
+#define SERIO_QUIRK_UNLOCK		BIT(4)
+#define SERIO_QUIRK_PROBE_DEFER		BIT(5)
+#define SERIO_QUIRK_RESET_ALWAYS	BIT(6)
+#define SERIO_QUIRK_RESET_NEVER		BIT(7)
+#define SERIO_QUIRK_DIECT		BIT(8)
+#define SERIO_QUIRK_DUMBKBD		BIT(9)
+#define SERIO_QUIRK_NOLOOP		BIT(10)
+#define SERIO_QUIRK_NOTIMEOUT		BIT(11)
+#define SERIO_QUIRK_KBDRESET		BIT(12)
+#define SERIO_QUIRK_DRITEK		BIT(13)
+#define SERIO_QUIRK_NOPNP		BIT(14)
+
+/* Quirk table for different mainboards. Options similar or identical to i8042
+ * module parameters.
+ * ORDERING IS IMPORTANT! The first match will be apllied and the rest ignored.
+ * This allows entries to overwrite vendor wide quirks on a per device basis.
+ * Where this is irrelevant, entries are sorted case sensitive by DMI_SYS_VENDOR
+ * and/or DMI_BOARD_VENDOR to make it easier to avoid dublicate entries.
+ */
+static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
 	{
-		/*
-		 * Arima-Rioworks HDAMB -
-		 * AUX LOOP command does not raise AUX IRQ
-		 */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_VENDOR, "RIOWORKS"),
-			DMI_MATCH(DMI_BOARD_NAME, "HDAMB"),
-			DMI_MATCH(DMI_BOARD_VERSION, "Rev E"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ALIENWARE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* ASUS G1S */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."),
-			DMI_MATCH(DMI_BOARD_NAME, "G1S"),
-			DMI_MATCH(DMI_BOARD_VERSION, "1.0"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "X750LN"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* ASUS P65UP5 - AUX LOOP command does not raise AUX IRQ */
+		/* Asus X450LCP */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "P/I-P65UP5"),
-			DMI_MATCH(DMI_BOARD_VERSION, "REV 2.X"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "X450LCP"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_NEVER)
 	},
 	{
+		/* ASUS ZenBook UX425UA */
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "X750LN"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425UA"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER)
 	},
 	{
+		/* ASUS ZenBook UM325UA */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
-			DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "8500"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325UA_UM325UA"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER)
 	},
+	/*
+	 * On some Asus laptops, just running self tests cause problems.
+	 */
 	{
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
-			DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "DL760"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_NEVER)
 	},
 	{
-		/* Dell Embedded Box PC 3000 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Embedded Box PC 3000"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible Notebook */
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_NEVER)
 	},
 	{
-		/* OQO Model 01 */
+		/* ASUS P65UP5 - AUX LOOP command does not raise AUX IRQ */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "OQO"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "ZEPTO"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "00"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
+			DMI_MATCH(DMI_BOARD_NAME, "P/I-P65UP5"),
+			DMI_MATCH(DMI_BOARD_VERSION, "REV 2.X"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* ULI EV4873 - AUX LOOP does not work properly */
+		/* ASUS G1S */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ULI"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "EV4873"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."),
+			DMI_MATCH(DMI_BOARD_NAME, "G1S"),
+			DMI_MATCH(DMI_BOARD_VERSION, "1.0"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Microsoft Virtual Machine */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "VS2005R2"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1360"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Medion MAM 2070 */
+		/* Acer Aspire 5710 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "MAM 2070"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Medion Akoya E7225 */
+		/* Acer Aspire 7738 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Medion"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Akoya E7225"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7738"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Blue FB5601 */
+		/* Acer Aspire 5536 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "blue"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "FB5601"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "M606"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5536"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Gigabyte M912 */
+		/*
+		 * Acer Aspire 5738z
+		 * Touchpad stops working in mux mode when dis- + re-enabled
+		 * with the touchpad enable/disable toggle hotkey
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "M912"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "01"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Gigabyte M1022M netbook */
+		/* Acer Aspire One 150 */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co.,Ltd."),
-			DMI_MATCH(DMI_BOARD_NAME, "M1022E"),
-			DMI_MATCH(DMI_BOARD_VERSION, "1.02"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "AOA150"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/* Gigabyte Spring Peak - defines wrong chassis type */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Spring Peak"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A114-31"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/* Gigabyte T1005 - defines wrong chassis type ("Other") */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "T1005"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A314-31"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/* Gigabyte T1005M/P - defines wrong chassis type ("Other") */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "T1005M/P"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A315-31"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-132"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "PEGATRON CORPORATION"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "C15B"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-332"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ByteSpeed LLC"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "ByteSpeed Laptop C15B"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-432"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
-	{ }
-};
-
-/*
- * Some Fujitsu notebooks are having trouble with touchpads if
- * active multiplexing mode is activated. Luckily they don't have
- * external PS/2 ports so we can safely disable it.
- * ... apparently some Toshibas don't like MUX mode either and
- * die horrible death on reboot.
- */
-static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
 	{
-		/* Fujitsu Lifebook P7010/P7010D */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "P7010"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate Spin B118-RN"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
+	/*
+	 * Some Wistron based laptops need us to explicitly enable the 'Dritek
+	 * keyboard extension' to make their extra keys start generating scancodes.
+	 * Originally, this was just confined to older laptops, but a few Acer laptops
+	 * have turned up in 2007 that also need this again.
+	 */
 	{
-		/* Fujitsu Lifebook P7010 */
+		/* Acer Aspire 5100 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "0000000000"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5100"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu Lifebook P5020D */
+		/* Acer Aspire 5610 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook P Series"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu Lifebook S2000 */
+		/* Acer Aspire 5630 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S Series"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5630"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu Lifebook S6230 */
+		/* Acer Aspire 5650 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5650"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu Lifebook T725 laptop */
+		/* Acer Aspire 5680 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5680"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu Lifebook U745 */
+		/* Acer Aspire 5720 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U745"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5720"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu T70H */
+		/* Acer Aspire 9110 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "FMVLT70H"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 9110"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu-Siemens Lifebook T3010 */
+		/* Acer TravelMate 660 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T3010"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu-Siemens Lifebook E4010 */
+		/* Acer TravelMate 2490 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E4010"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 2490"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu-Siemens Amilo Pro 2010 */
+		/* Acer TravelMate 4280 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pro V2010"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4280"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_DRITEK)
 	},
 	{
-		/* Fujitsu-Siemens Amilo Pro 2030 */
+		/* Amoi M636/A737 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Amoi Electronics CO.,LTD."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/*
-		 * No data is coming from the touchscreen unless KBC
-		 * is in legacy mode.
-		 */
-		/* Panasonic CF-29 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Matsushita"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "CF-29"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ByteSpeed LLC"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ByteSpeed Laptop C15B"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/*
-		 * HP Pavilion DV4017EA -
-		 * errors on MUX ports are reported without raising AUXDATA
-		 * causing "spurious NAK" messages.
-		 */
+		/* Compal HEL80I */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EA032EA#ABF)"),
+			DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HEL80I"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/*
-		 * HP Pavilion ZT1000 -
-		 * like DV4017EA does not raise AUXERR for errors on MUX ports.
-		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook ZT1000"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "8500"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/*
-		 * HP Pavilion DV4270ca -
-		 * like DV4017EA does not raise AUXERR for errors on MUX ports.
-		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EH476UA#ABL)"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "DL760"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
+		/* Advent 4211 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"),
+			DMI_MATCH(DMI_SYS_VENDOR, "DIXONSXP"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Advent 4211"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
+		/* Dell Embedded Box PC 3000 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "EQUIUM A110"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Embedded Box PC 3000"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
+		/* Dell XPS M1530 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C850D"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "XPS M1530"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/* Dell Vostro 1510 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ALIENWARE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro1510"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Sharp Actius MM20 */
+		/* Dell Vostro V13 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "SHARP"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "PC-MM20 Series"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Sony Vaio FS-115b */
+		/* Dell Vostro 1320 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FS115B"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1320"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/*
-		 * Sony Vaio FZ-240E -
-		 * reset and GET ID commands issued via KBD port are
-		 * sometimes being delivered to AUX3.
-		 */
+		/* Dell Vostro 1520 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ240E"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1520"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/*
-		 * Most (all?) VAIOs do not have external PS/2 ports nor
-		 * they implement active multiplexing properly, and
-		 * MUX discovery usually messes up keyboard/touchpad.
-		 */
+		/* Dell Vostro 1720 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-			DMI_MATCH(DMI_BOARD_NAME, "VAIO"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1720"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/* Amoi M636/A737 */
+		/* Entroware Proteus */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Amoi Electronics CO.,LTD."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Entroware"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS)
 	},
+	/*
+	 * Some Fujitsu notebooks are having trouble with touchpads if
+	 * active multiplexing mode is activated. Luckily they don't have
+	 * external PS/2 ports so we can safely disable it.
+	 * ... apparently some Toshibas don't like MUX mode either and
+	 * die horrible death on reboot.
+	 */
 	{
-		/* Lenovo 3000 n100 */
+		/* Fujitsu Lifebook P7010/P7010D */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "076804U"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "P7010"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Lenovo XiaoXin Air 12 */
+		/* Fujitsu Lifebook P5020D */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "80UN"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook P Series"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/* Fujitsu Lifebook S2000 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1360"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S Series"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer Aspire 5710 */
+		/* Fujitsu Lifebook S6230 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer Aspire 7738 */
+		/* Fujitsu Lifebook T725 laptop */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7738"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Gericom Bellagio */
+		/* Fujitsu Lifebook U745 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Gericom"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "N34AS6"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U745"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* IBM 2656 */
+		/* Fujitsu T70H */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "2656"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "FMVLT70H"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Dell XPS M1530 */
+		/* Fujitsu A544 laptop */
+		/* https://bugzilla.redhat.com/show_bug.cgi?id=1111138 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "XPS M1530"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK A544"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Compal HEL80I */
+		/* Fujitsu AH544 laptop */
+		/* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "HEL80I"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Dell Vostro 1510 */
+		/* Fujitsu U574 laptop */
+		/* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro1510"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U574"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Acer Aspire 5536 */
+		/* Fujitsu UH554 laptop */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5536"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK UH544"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Dell Vostro V13 */
+		/* Fujitsu Lifebook P7010 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "0000000000"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Newer HP Pavilion dv4 models */
+		/* Fujitsu-Siemens Lifebook T3010 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T3010"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Asus X450LCP */
+		/* Fujitsu-Siemens Lifebook E4010 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "X450LCP"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E4010"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Avatar AVIU-145A6 */
+		/* Fujitsu-Siemens Amilo Pro 2010 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Intel"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "IC4I"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pro V2010"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* TUXEDO BU1406 */
+		/* Fujitsu-Siemens Amilo Pro 2030 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "N24_25BU"),
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Lenovo LaVie Z */
+		/* Gigabyte M912 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo LaVie Z"),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "M912"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "01"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/*
-		 * Acer Aspire 5738z
-		 * Touchpad stops working in mux mode when dis- + re-enabled
-		 * with the touchpad enable/disable toggle hotkey
-		 */
+		/* Gigabyte Spring Peak - defines wrong chassis type */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Spring Peak"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Entroware Proteus */
+		/* Gigabyte T1005 - defines wrong chassis type ("Other") */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Entroware"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "T1005"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
-	{ }
-};
-
-static const struct dmi_system_id i8042_dmi_forcemux_table[] __initconst = {
 	{
-		/*
-		 * Sony Vaio VGN-CS series require MUX or the touch sensor
-		 * buttons will disturb touchpad operation
-		 */
+		/* Gigabyte T1005M/P - defines wrong chassis type ("Other") */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-CS"),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "T1005M/P"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
-	{ }
-};
-
-/*
- * On some Asus laptops, just running self tests cause problems.
- */
-static const struct dmi_system_id i8042_dmi_noselftest_table[] = {
+	/*
+	 * Some laptops need keyboard reset before probing for the trackpad to get
+	 * it detected, initialised & finally work.
+	 */
 	{
+		/* Gigabyte P35 v2 - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
-		},
-	}, {
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible Notebook */
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_KBDRESET)
 	},
-	{ }
-};
-static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
-	{
-		/* MSI Wind U-100 */
+		{
+		/* Aorus branded Gigabyte X3 Plus - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_NAME, "U-100"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "X3"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_KBDRESET)
 	},
 	{
-		/* LG Electronics X110 */
+		/* Gigabyte P34 - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_NAME, "X110"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "LG Electronics Inc."),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "P34"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_KBDRESET)
 	},
 	{
-		/* Acer Aspire One 150 */
+		/* Gigabyte P57 - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "AOA150"),
+			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "P57"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_KBDRESET)
 	},
 	{
+		/* Gericom Bellagio */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A114-31"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Gericom"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "N34AS6"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/* Gigabyte M1022M netbook */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A314-31"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co.,Ltd."),
+			DMI_MATCH(DMI_BOARD_NAME, "M1022E"),
+			DMI_MATCH(DMI_BOARD_VERSION, "1.02"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A315-31"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
+		/*
+		 * HP Pavilion DV4017EA -
+		 * errors on MUX ports are reported without raising AUXDATA
+		 * causing "spurious NAK" messages.
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-132"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EA032EA#ABF)"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/*
+		 * HP Pavilion ZT1000 -
+		 * like DV4017EA does not raise AUXERR for errors on MUX ports.
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-332"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook ZT1000"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/*
+		 * HP Pavilion DV4270ca -
+		 * like DV4017EA does not raise AUXERR for errors on MUX ports.
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-432"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EH476UA#ABL)"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/* Newer HP Pavilion dv4 models */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate Spin B118-RN"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_NOTIMEOUT)
 	},
 	{
-		/* Advent 4211 */
+		/* IBM 2656 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "DIXONSXP"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Advent 4211"),
+			DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "2656"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Medion Akoya Mini E1210 */
+		/* Avatar AVIU-145A6 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "E1210"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Intel"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "IC4I"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Medion Akoya E1222 */
+		/* Intel MBO Desktop D845PESV */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "E122X"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"),
+			DMI_MATCH(DMI_BOARD_NAME, "D845PESV"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOPNP)
 	},
 	{
-		/* Mivvy M310 */
+		/*
+		 * Intel NUC D54250WYK - does not have i8042 controller but
+		 * declares PS/2 devices in DSDT.
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "VIOOO"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "N10"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"),
+			DMI_MATCH(DMI_BOARD_NAME, "D54250WYK"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOPNP)
 	},
 	{
-		/* Dell Vostro 1320 */
+		/* Lenovo 3000 n100 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1320"),
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "076804U"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Dell Vostro 1520 */
+		/* Lenovo XiaoXin Air 12 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1520"),
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "80UN"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Dell Vostro 1720 */
+		/* Lenovo LaVie Z */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1720"),
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo LaVie Z"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
 		/* Lenovo Ideapad U455 */
@@ -722,6 +803,7 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
 			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
 			DMI_MATCH(DMI_PRODUCT_NAME, "20046"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
 		/* Lenovo ThinkPad L460 */
@@ -729,13 +811,7 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
 			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
 			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L460"),
 		},
-	},
-	{
-		/* Clevo P650RS, 650RP6, Sager NP8152-S, and others */
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "P65xRP"),
-		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
 		/* Lenovo ThinkPad Twist S230u */
@@ -743,275 +819,269 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
 			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
 			DMI_MATCH(DMI_PRODUCT_NAME, "33474HU"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/* Entroware Proteus */
+		/* LG Electronics X110 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Entroware"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "LG Electronics Inc."),
+			DMI_MATCH(DMI_BOARD_NAME, "X110"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
-	{ }
-};
-
-#ifdef CONFIG_PNP
-static const struct dmi_system_id __initconst i8042_dmi_nopnp_table[] = {
 	{
-		/* Intel MBO Desktop D845PESV */
+		/* Medion Akoya Mini E1210 */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_NAME, "D845PESV"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"),
+			DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "E1210"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/*
-		 * Intel NUC D54250WYK - does not have i8042 controller but
-		 * declares PS/2 devices in DSDT.
-		 */
+		/* Medion Akoya E1222 */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_NAME, "D54250WYK"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"),
+			DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "E122X"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
 		/* MSI Wind U-100 */
 		.matches = {
-			DMI_MATCH(DMI_BOARD_NAME, "U-100"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
-		},
-	},
-	{
-		/* Acer Aspire 5 A515 */
-		.matches = {
-			DMI_MATCH(DMI_BOARD_NAME, "Grumpy_PK"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "PK"),
-		},
-	},
-	{ }
-};
-
-static const struct dmi_system_id i8042_dmi_laptop_table[] __initconst = {
-	{
-		.matches = {
-			DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
-		},
-	},
-	{
-		.matches = {
-			DMI_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
+			DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
+			DMI_MATCH(DMI_BOARD_NAME, "U-100"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOPNP)
 	},
 	{
+		/*
+		 * No data is coming from the touchscreen unless KBC
+		 * is in legacy mode.
+		 */
+		/* Panasonic CF-29 */
 		.matches = {
-			DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
+			DMI_MATCH(DMI_SYS_VENDOR, "Matsushita"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "CF-29"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
+		/* Medion Akoya E7225 */
 		.matches = {
-			DMI_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
+			DMI_MATCH(DMI_SYS_VENDOR, "Medion"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Akoya E7225"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
-	{ }
-};
-#endif
-
-static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
 	{
-		/* Dell Vostro V13 */
+		/* Microsoft Virtual Machine */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "VS2005R2"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Newer HP Pavilion dv4 models */
+		/* Medion MAM 2070 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "MAM 2070"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Fujitsu A544 laptop */
-		/* https://bugzilla.redhat.com/show_bug.cgi?id=1111138 */
+		/* TUXEDO BU1406 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK A544"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "N24_25BU"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Fujitsu AH544 laptop */
-		/* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
+		/* Clevo P650RS, 650RP6, Sager NP8152-S, and others */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "P65xRP"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
 	{
-		/* Fujitsu Lifebook T725 laptop */
+		/* OQO Model 01 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
+			DMI_MATCH(DMI_SYS_VENDOR, "OQO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ZEPTO"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "00"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Fujitsu U574 laptop */
-		/* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U574"),
+			DMI_MATCH(DMI_SYS_VENDOR, "PEGATRON CORPORATION"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "C15B"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Fujitsu UH554 laptop */
+		/* Acer Aspire 5 A515 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK UH544"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "PK"),
+			DMI_MATCH(DMI_BOARD_NAME, "Grumpy_PK"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOPNP)
 	},
-	{ }
-};
-
-/*
- * Some Wistron based laptops need us to explicitly enable the 'Dritek
- * keyboard extension' to make their extra keys start generating scancodes.
- * Originally, this was just confined to older laptops, but a few Acer laptops
- * have turned up in 2007 that also need this again.
- */
-static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = {
 	{
-		/* Acer Aspire 5100 */
+		/* ULI EV4873 - AUX LOOP does not work properly */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5100"),
+			DMI_MATCH(DMI_SYS_VENDOR, "ULI"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "EV4873"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Acer Aspire 5610 */
+		/*
+		 * Arima-Rioworks HDAMB -
+		 * AUX LOOP command does not raise AUX IRQ
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "RIOWORKS"),
+			DMI_MATCH(DMI_BOARD_NAME, "HDAMB"),
+			DMI_MATCH(DMI_BOARD_VERSION, "Rev E"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
 	{
-		/* Acer Aspire 5630 */
+		/* Sharp Actius MM20 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5630"),
+			DMI_MATCH(DMI_SYS_VENDOR, "SHARP"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "PC-MM20 Series"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer Aspire 5650 */
+		/*
+		 * Sony Vaio FZ-240E -
+		 * reset and GET ID commands issued via KBD port are
+		 * sometimes being delivered to AUX3.
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5650"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ240E"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer Aspire 5680 */
+		/*
+		 * Most (all?) VAIOs do not have external PS/2 ports nor
+		 * they implement active multiplexing properly, and
+		 * MUX discovery usually messes up keyboard/touchpad.
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5680"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+			DMI_MATCH(DMI_BOARD_NAME, "VAIO"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer Aspire 5720 */
+		/* Sony Vaio FS-115b */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5720"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FS115B"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer Aspire 9110 */
+		/*
+		 * Sony Vaio VGN-CS series require MUX or the touch sensor
+		 * buttons will disturb touchpad operation
+		 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 9110"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-CS"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_FORCEMUX)
 	},
 	{
-		/* Acer TravelMate 660 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
+			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer TravelMate 2490 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 2490"),
+			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "EQUIUM A110"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
 	{
-		/* Acer TravelMate 4280 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4280"),
+			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C850D"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
-	{ }
-};
-
-/*
- * Some laptops need keyboard reset before probing for the trackpad to get
- * it detected, initialised & finally work.
- */
-static const struct dmi_system_id __initconst i8042_dmi_kbdreset_table[] = {
 	{
-		/* Gigabyte P35 v2 - Elantech touchpad */
+		/* Mivvy M310 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"),
+			DMI_MATCH(DMI_SYS_VENDOR, "VIOOO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "N10"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_RESET_ALWAYS)
 	},
-		{
-		/* Aorus branded Gigabyte X3 Plus - Elantech touchpad */
+	/*
+	 * Some laptops need keyboard reset before probing for the trackpad to get
+	 * it detected, initialised & finally work.
+	 */
+	{
+		/* Schenker XMG C504 - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "X3"),
+			DMI_MATCH(DMI_SYS_VENDOR, "XMG"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "C504"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_KBDRESET)
 	},
 	{
-		/* Gigabyte P34 - Elantech touchpad */
+		/* Blue FB5601 */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "P34"),
+			DMI_MATCH(DMI_SYS_VENDOR, "blue"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "FB5601"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "M606"),
 		},
+		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
+	{ }
+};
+
+#ifdef CONFIG_PNP
+static const struct dmi_system_id i8042_dmi_laptop_table[] __initconst = {
 	{
-		/* Gigabyte P57 - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "P57"),
+			DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
 		},
 	},
 	{
-		/* Schenker XMG C504 - Elantech touchpad */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "XMG"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "C504"),
+			DMI_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
 		},
 	},
-	{ }
-};
-
-static const struct dmi_system_id i8042_dmi_probe_defer_table[] __initconst = {
 	{
-		/* ASUS ZenBook UX425UA */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425UA"),
+			DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
 		},
 	},
 	{
-		/* ASUS ZenBook UM325UA */
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325UA_UM325UA"),
+			DMI_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
 		},
 	},
 	{ }
 };
+#endif
 
 #endif /* CONFIG_X86 */
 
@@ -1167,11 +1237,6 @@ static int __init i8042_pnp_init(void)
 	bool pnp_data_busted = false;
 	int err;
 
-#ifdef CONFIG_X86
-	if (dmi_check_system(i8042_dmi_nopnp_table))
-		i8042_nopnp = true;
-#endif
-
 	if (i8042_nopnp) {
 		pr_info("PNP detection disabled\n");
 		return 0;
@@ -1275,6 +1340,59 @@ static inline int i8042_pnp_init(void) { return 0; }
 static inline void i8042_pnp_exit(void) { }
 #endif /* CONFIG_PNP */
 
+
+#ifdef CONFIG_X86
+static void __init i8042_check_quirks(void)
+{
+	const struct dmi_system_id *device_quirk_info;
+	uintptr_t quirks;
+
+	device_quirk_info = dmi_first_match(i8042_dmi_quirk_table);
+	if (!device_quirk_info)
+		return;
+
+	quirks = (uintptr_t)device_quirk_info->driver_data;
+
+	if (quirks & SERIO_QUIRK_NOKBD)
+		i8042_nokbd = true;
+	if (quirks & SERIO_QUIRK_NOAUX)
+		i8042_noaux = true;
+	if (quirks & SERIO_QUIRK_NOMUX)
+		i8042_nomux = true;
+	if (quirks & SERIO_QUIRK_FORCEMUX)
+		i8042_nomux = false;
+	if (quirks & SERIO_QUIRK_UNLOCK)
+		i8042_unlock = true;
+	if (quirks & SERIO_QUIRK_PROBE_DEFER)
+		i8042_probe_defer = true;
+	/* Honor module parameter when value is not default */
+	if (i8042_reset == I8042_RESET_DEFAULT) {
+		if (quirks & SERIO_QUIRK_RESET_ALWAYS)
+			i8042_reset = I8042_RESET_ALWAYS;
+		if (quirks & SERIO_QUIRK_RESET_NEVER)
+			i8042_reset = I8042_RESET_NEVER;
+	}
+	if (quirks & SERIO_QUIRK_DIECT)
+		i8042_direct = true;
+	if (quirks & SERIO_QUIRK_DUMBKBD)
+		i8042_dumbkbd = true;
+	if (quirks & SERIO_QUIRK_NOLOOP)
+		i8042_noloop = true;
+	if (quirks & SERIO_QUIRK_NOTIMEOUT)
+		i8042_notimeout = true;
+	if (quirks & SERIO_QUIRK_KBDRESET)
+		i8042_kbdreset = true;
+	if (quirks & SERIO_QUIRK_DRITEK)
+		i8042_dritek = true;
+#ifdef CONFIG_PNP
+	if (quirks & SERIO_QUIRK_NOPNP)
+		i8042_nopnp = true;
+#endif
+}
+#else
+static inline void i8042_check_quirks(void) {}
+#endif
+
 static int __init i8042_platform_init(void)
 {
 	int retval;
@@ -1297,45 +1415,17 @@ static int __init i8042_platform_init(void)
 	i8042_kbd_irq = I8042_MAP_IRQ(1);
 	i8042_aux_irq = I8042_MAP_IRQ(12);
 
-	retval = i8042_pnp_init();
-	if (retval)
-		return retval;
-
 #if defined(__ia64__)
-        i8042_reset = I8042_RESET_ALWAYS;
+	i8042_reset = I8042_RESET_ALWAYS;
 #endif
 
-#ifdef CONFIG_X86
-	/* Honor module parameter when value is not default */
-	if (i8042_reset == I8042_RESET_DEFAULT) {
-		if (dmi_check_system(i8042_dmi_reset_table))
-			i8042_reset = I8042_RESET_ALWAYS;
-
-		if (dmi_check_system(i8042_dmi_noselftest_table))
-			i8042_reset = I8042_RESET_NEVER;
-	}
-
-	if (dmi_check_system(i8042_dmi_noloop_table))
-		i8042_noloop = true;
-
-	if (dmi_check_system(i8042_dmi_nomux_table))
-		i8042_nomux = true;
-
-	if (dmi_check_system(i8042_dmi_forcemux_table))
-		i8042_nomux = false;
-
-	if (dmi_check_system(i8042_dmi_notimeout_table))
-		i8042_notimeout = true;
-
-	if (dmi_check_system(i8042_dmi_dritek_table))
-		i8042_dritek = true;
-
-	if (dmi_check_system(i8042_dmi_kbdreset_table))
-		i8042_kbdreset = true;
+	i8042_check_quirks();
 
-	if (dmi_check_system(i8042_dmi_probe_defer_table))
-		i8042_probe_defer = true;
+	retval = i8042_pnp_init();
+	if (retval)
+		return retval;
 
+#ifdef CONFIG_X86
 	/*
 	 * A20 was already enabled during early kernel init. But some buggy
 	 * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to
-- 
2.39.0




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

* [PATCH 5.10 052/139] Input: i8042 - add TUXEDO devices to i8042 quirk tables
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (50 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 051/139] Input: i8042 - merge quirk tables Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 053/139] Input: i8042 - add Clevo PCX0DX to i8042 quirk table Greg Kroah-Hartman
                   ` (95 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Werner Sembach, Hans de Goede,
	Dmitry Torokhov, Sasha Levin

From: Werner Sembach <wse@tuxedocomputers.com>

[ Upstream commit a6a87c36165e6791eeaed88025cde270536c3198 ]

A lot of modern Clevo barebones have touchpad and/or keyboard issues after
suspend fixable with nomux + reset + noloop + nopnp. Luckily, none of them
have an external PS/2 port so this can safely be set for all of them.

I'm not entirely sure if every device listed really needs all four quirks,
but after testing and production use. No negative effects could be
observed when setting all four.

The list is quite massive as neither the TUXEDO nor the Clevo dmi strings
have been very consistent historically. I tried to keep the list as short
as possible without risking on missing an affected device.

This is revision 3. The Clevo N150CU barebone is still removed as it might
have problems with the fix and needs further investigations. The
SchenkerTechnologiesGmbH System-/Board-Vendor string variations are
added. This is now based in the quirk table refactor. This now also
includes the additional noaux flag for the NS7xMU.

Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20220629112725.12922-5-wse@tuxedocomputers.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/input/serio/i8042-x86ia64io.h | 129 ++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)

diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 1d2b34aac0c7..184d7c30f732 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -1025,6 +1025,29 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
 		},
 		.driver_data = (void *)(SERIO_QUIRK_NOMUX)
 	},
+	/*
+	 * A lot of modern Clevo barebones have touchpad and/or keyboard issues
+	 * after suspend fixable with nomux + reset + noloop + nopnp. Luckily,
+	 * none of them have an external PS/2 port so this can safely be set for
+	 * all of them. These two are based on a Clevo design, but have the
+	 * board_name changed.
+	 */
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_VENDOR, "TUXEDO"),
+			DMI_MATCH(DMI_BOARD_NAME, "AURA1501"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_VENDOR, "TUXEDO"),
+			DMI_MATCH(DMI_BOARD_NAME, "EDUBOOK1502"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
 	{
 		/* Mivvy M310 */
 		.matches = {
@@ -1054,6 +1077,112 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
 		},
 		.driver_data = (void *)(SERIO_QUIRK_NOLOOP)
 	},
+	/*
+	 * A lot of modern Clevo barebones have touchpad and/or keyboard issues
+	 * after suspend fixable with nomux + reset + noloop + nopnp. Luckily,
+	 * none of them have an external PS/2 port so this can safely be set for
+	 * all of them.
+	 * Clevo barebones come with board_vendor and/or system_vendor set to
+	 * either the very generic string "Notebook" and/or a different value
+	 * for each individual reseller. The only somewhat universal way to
+	 * identify them is by board_name.
+	 */
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "LAPQC71A"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "LAPQC71B"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "N140CU"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "N141CU"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "NH5xAx"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	/*
+	 * At least one modern Clevo barebone has the touchpad connected both
+	 * via PS/2 and i2c interface. This causes a race condition between the
+	 * psmouse and i2c-hid driver. Since the full capability of the touchpad
+	 * is available via the i2c interface and the device has no external
+	 * PS/2 port, it is safe to just ignore all ps2 mouses here to avoid
+	 * this issue. The known affected device is the
+	 * TUXEDO InfinityBook S17 Gen6 / Clevo NS70MU which comes with one of
+	 * the two different dmi strings below. NS50MU is not a typo!
+	 */
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "NS50MU"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOAUX | SERIO_QUIRK_NOMUX |
+					SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP |
+					SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "NS50_70MU"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOAUX | SERIO_QUIRK_NOMUX |
+					SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP |
+					SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "NJ50_70CU"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "PB50_70DFx,DDx"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "X170SM"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "X170KM-G"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
 	{ }
 };
 
-- 
2.39.0




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

* [PATCH 5.10 053/139] Input: i8042 - add Clevo PCX0DX to i8042 quirk table
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (51 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 052/139] Input: i8042 - add TUXEDO devices to i8042 " Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:49 ` [PATCH 5.10 054/139] fbcon: Check font dimension limits Greg Kroah-Hartman
                   ` (94 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Werner Sembach, Hans de Goede,
	Mattijs Korpershoek, Dmitry Torokhov, Sasha Levin

From: Werner Sembach <wse@tuxedocomputers.com>

[ Upstream commit 9c445d2637c938a800fcc8b5f0b10e60c94460c7 ]

The Clevo PCX0DX/TUXEDO XP1511, need quirks for the keyboard to not be
occasionally unresponsive after resume.

Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: stable@vger.kernel.org
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20230110134524.553620-1-wse@tuxedocomputers.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/input/serio/i8042-x86ia64io.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 184d7c30f732..65c0081838e3 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -1169,6 +1169,13 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
 		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
 					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
 	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "PCX0DX"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
 	{
 		.matches = {
 			DMI_MATCH(DMI_BOARD_NAME, "X170SM"),
-- 
2.39.0




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

* [PATCH 5.10 054/139] fbcon: Check font dimension limits
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (52 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 053/139] Input: i8042 - add Clevo PCX0DX to i8042 quirk table Greg Kroah-Hartman
@ 2023-02-13 14:49 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 055/139] net: qrtr: free memory on error path in radix_tree_insert() Greg Kroah-Hartman
                   ` (93 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:49 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Sanan Hasanov, Samuel Thibault,
	Miko Larsson, Helge Deller

From: Samuel Thibault <samuel.thibault@ens-lyon.org>

commit 2b09d5d364986f724f17001ccfe4126b9b43a0be upstream.

blit_x and blit_y are u32, so fbcon currently cannot support fonts
larger than 32x32.

The 32x32 case also needs shifting an unsigned int, to properly set bit
31, otherwise we get "UBSAN: shift-out-of-bounds in fbcon_set_font",
as reported on:

http://lore.kernel.org/all/IA1PR07MB98308653E259A6F2CE94A4AFABCE9@IA1PR07MB9830.namprd07.prod.outlook.com
Kernel Branch: 6.2.0-rc5-next-20230124
Kernel config: https://drive.google.com/file/d/1F-LszDAizEEH0ZX0HcSR06v5q8FPl2Uv/view?usp=sharing
Reproducer: https://drive.google.com/file/d/1mP1jcLBY7vWCNM60OMf-ogw-urQRjNrm/view?usp=sharing

Reported-by: Sanan Hasanov <sanan.hasanov@Knights.ucf.edu>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Fixes: 2d2699d98492 ("fbcon: font setting should check limitation of driver")
Cc: stable@vger.kernel.org
Tested-by: Miko Larsson <mikoxyzzz@gmail.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/video/fbdev/core/fbcon.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -2513,9 +2513,12 @@ static int fbcon_set_font(struct vc_data
 	    h > FBCON_SWAP(info->var.rotate, info->var.yres, info->var.xres))
 		return -EINVAL;
 
+	if (font->width > 32 || font->height > 32)
+		return -EINVAL;
+
 	/* Make sure drawing engine can handle the font */
-	if (!(info->pixmap.blit_x & (1 << (font->width - 1))) ||
-	    !(info->pixmap.blit_y & (1 << (font->height - 1))))
+	if (!(info->pixmap.blit_x & BIT(font->width - 1)) ||
+	    !(info->pixmap.blit_y & BIT(font->height - 1)))
 		return -EINVAL;
 
 	/* Make sure driver can handle the font length */



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

* [PATCH 5.10 055/139] net: qrtr: free memory on error path in radix_tree_insert()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (53 preceding siblings ...)
  2023-02-13 14:49 ` [PATCH 5.10 054/139] fbcon: Check font dimension limits Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 056/139] watchdog: diag288_wdt: do not use stack buffers for hardware data Greg Kroah-Hartman
                   ` (92 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Natalia Petrova, Simon Horman,
	Manivannan Sadhasivam, Jakub Kicinski

From: Natalia Petrova <n.petrova@fintech.ru>

commit 29de68c2b32ce58d64dea496d281e25ad0f551bd upstream.

Function radix_tree_insert() returns errors if the node hasn't
been initialized and added to the tree.

"kfree(node)" and return value "NULL" of node_get() help
to avoid using unclear node in other calls.

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

Cc: <stable@vger.kernel.org> # 5.7
Fixes: 0c2204a4ad71 ("net: qrtr: Migrate nameservice to kernel from userspace")
Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Link: https://lore.kernel.org/r/20230125134831.8090-1-n.petrova@fintech.ru
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/qrtr/ns.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/net/qrtr/ns.c
+++ b/net/qrtr/ns.c
@@ -83,7 +83,10 @@ static struct qrtr_node *node_get(unsign
 
 	node->id = node_id;
 
-	radix_tree_insert(&nodes, node_id, node);
+	if (radix_tree_insert(&nodes, node_id, node)) {
+		kfree(node);
+		return NULL;
+	}
 
 	return node;
 }



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

* [PATCH 5.10 056/139] watchdog: diag288_wdt: do not use stack buffers for hardware data
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (54 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 055/139] net: qrtr: free memory on error path in radix_tree_insert() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 057/139] watchdog: diag288_wdt: fix __diag288() inline assembly Greg Kroah-Hartman
                   ` (91 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Alexander Egorenkov, Heiko Carstens

From: Alexander Egorenkov <egorenar@linux.ibm.com>

commit fe8973a3ad0905cb9ba2d42db42ed51de14737df upstream.

With CONFIG_VMAP_STACK=y the stack is allocated from the vmalloc space.
Data passed to a hardware or a hypervisor interface that
requires V=R can no longer be allocated on the stack.

Use kmalloc() to get memory for a diag288 command.

Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/watchdog/diag288_wdt.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

--- a/drivers/watchdog/diag288_wdt.c
+++ b/drivers/watchdog/diag288_wdt.c
@@ -272,12 +272,21 @@ static int __init diag288_init(void)
 	char ebc_begin[] = {
 		194, 197, 199, 201, 213
 	};
+	char *ebc_cmd;
 
 	watchdog_set_nowayout(&wdt_dev, nowayout_info);
 
 	if (MACHINE_IS_VM) {
-		if (__diag288_vm(WDT_FUNC_INIT, 15,
-				 ebc_begin, sizeof(ebc_begin)) != 0) {
+		ebc_cmd = kmalloc(sizeof(ebc_begin), GFP_KERNEL);
+		if (!ebc_cmd) {
+			pr_err("The watchdog cannot be initialized\n");
+			return -ENOMEM;
+		}
+		memcpy(ebc_cmd, ebc_begin, sizeof(ebc_begin));
+		ret = __diag288_vm(WDT_FUNC_INIT, 15,
+				   ebc_cmd, sizeof(ebc_begin));
+		kfree(ebc_cmd);
+		if (ret != 0) {
 			pr_err("The watchdog cannot be initialized\n");
 			return -EINVAL;
 		}



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

* [PATCH 5.10 057/139] watchdog: diag288_wdt: fix __diag288() inline assembly
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (55 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 056/139] watchdog: diag288_wdt: do not use stack buffers for hardware data Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 058/139] ALSA: hda/realtek: Add Acer Predator PH315-54 Greg Kroah-Hartman
                   ` (90 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Alexander Egorenkov, Heiko Carstens

From: Alexander Egorenkov <egorenar@linux.ibm.com>

commit 32e40f9506b9e32917eb73154f93037b443124d1 upstream.

The DIAG 288 statement consumes an EBCDIC string the address of which is
passed in a register. Use a "memory" clobber to tell the compiler that
memory is accessed within the inline assembly.

Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/watchdog/diag288_wdt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/watchdog/diag288_wdt.c
+++ b/drivers/watchdog/diag288_wdt.c
@@ -86,7 +86,7 @@ static int __diag288(unsigned int func,
 		"1:\n"
 		EX_TABLE(0b, 1b)
 		: "+d" (err) : "d"(__func), "d"(__timeout),
-		  "d"(__action), "d"(__len) : "1", "cc");
+		  "d"(__action), "d"(__len) : "1", "cc", "memory");
 	return err;
 }
 



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

* [PATCH 5.10 058/139] ALSA: hda/realtek: Add Acer Predator PH315-54
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (56 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 057/139] watchdog: diag288_wdt: fix __diag288() inline assembly Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 059/139] efi: Accept version 2 of memory attributes table Greg Kroah-Hartman
                   ` (89 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Victor Shyba, Takashi Iwai

From: Victor Shyba <victor1984@riseup.net>

commit 6a28a25d358079b7d0d144689f850aecacf63cba upstream.

Same issue as SP513-54N: Headset microphone does not work without
ALC255_FIXUP_ACER_MIC_NO_PRESENCE fixup.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=211853
Cc: <stable@vger.kernel.org>
Signed-off-by: Victor Shyba <victor1984@riseup.net>
Link: https://lore.kernel.org/r/20230123222129.17589-1-victor1984@riseup.net
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -8811,6 +8811,7 @@ static const struct snd_pci_quirk alc269
 	SND_PCI_QUIRK(0x1025, 0x142b, "Acer Swift SF314-42", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
 	SND_PCI_QUIRK(0x1025, 0x1430, "Acer TravelMate B311R-31", ALC256_FIXUP_ACER_MIC_NO_PRESENCE),
 	SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC),
+	SND_PCI_QUIRK(0x1025, 0x1534, "Acer Predator PH315-54", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
 	SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
 	SND_PCI_QUIRK(0x1028, 0x053c, "Dell Latitude E5430", ALC292_FIXUP_DELL_E7X),
 	SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS),



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

* [PATCH 5.10 059/139] efi: Accept version 2 of memory attributes table
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (57 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 058/139] ALSA: hda/realtek: Add Acer Predator PH315-54 Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 060/139] iio: hid: fix the retval in accel_3d_capture_sample Greg Kroah-Hartman
                   ` (88 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Ard Biesheuvel

From: Ard Biesheuvel <ardb@kernel.org>

commit 636ab417a7aec4ee993916e688eb5c5977570836 upstream.

UEFI v2.10 introduces version 2 of the memory attributes table, which
turns the reserved field into a flags field, but is compatible with
version 1 in all other respects. So let's not complain about version 2
if we encounter it.

Cc: <stable@vger.kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/firmware/efi/memattr.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/firmware/efi/memattr.c
+++ b/drivers/firmware/efi/memattr.c
@@ -33,7 +33,7 @@ int __init efi_memattr_init(void)
 		return -ENOMEM;
 	}
 
-	if (tbl->version > 1) {
+	if (tbl->version > 2) {
 		pr_warn("Unexpected EFI Memory Attributes table version %d\n",
 			tbl->version);
 		goto unmap;



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

* [PATCH 5.10 060/139] iio: hid: fix the retval in accel_3d_capture_sample
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (58 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 059/139] efi: Accept version 2 of memory attributes table Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 061/139] iio: adc: berlin2-adc: Add missing of_node_put() in error path Greg Kroah-Hartman
                   ` (87 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dmitry Perchanov, Stable, Jonathan Cameron

From: Dmitry Perchanov <dmitry.perchanov@intel.com>

commit f7b23d1c35d8b8de1425bdfccaefd01f3b7c9d1c upstream.

Return value should be zero for success. This was forgotten for timestamp
feature. Verified on RealSense cameras.

Fixes: a96cd0f901ee ("iio: accel: hid-sensor-accel-3d: Add timestamp")
Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
Link: https://lore.kernel.org/r/a6dc426498221c81fa71045b41adf782ebd42136.camel@intel.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/accel/hid-sensor-accel-3d.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/iio/accel/hid-sensor-accel-3d.c
+++ b/drivers/iio/accel/hid-sensor-accel-3d.c
@@ -277,6 +277,7 @@ static int accel_3d_capture_sample(struc
 			hid_sensor_convert_timestamp(
 					&accel_state->common_attributes,
 					*(int64_t *)raw_data);
+		ret = 0;
 	break;
 	default:
 		break;



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

* [PATCH 5.10 061/139] iio: adc: berlin2-adc: Add missing of_node_put() in error path
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (59 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 060/139] iio: hid: fix the retval in accel_3d_capture_sample Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 062/139] iio:adc:twl6030: Enable measurements of VUSB, VBAT and others Greg Kroah-Hartman
                   ` (86 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Xiongfeng Wang, Stable, Jonathan Cameron

From: Xiongfeng Wang <wangxiongfeng2@huawei.com>

commit cbd3a0153cd18a2cbef6bf3cf31bb406c3fc9f55 upstream.

of_get_parent() will return a device_node pointer with refcount
incremented. We need to use of_node_put() on it when done. Add the
missing of_node_put() in the error path of berlin2_adc_probe();

Fixes: 70f1937911ca ("iio: adc: add support for Berlin")
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Link: https://lore.kernel.org/r/20221129020316.191731-1-wangxiongfeng2@huawei.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/adc/berlin2-adc.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/iio/adc/berlin2-adc.c
+++ b/drivers/iio/adc/berlin2-adc.c
@@ -289,8 +289,10 @@ static int berlin2_adc_probe(struct plat
 	int ret;
 
 	indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*priv));
-	if (!indio_dev)
+	if (!indio_dev) {
+		of_node_put(parent_np);
 		return -ENOMEM;
+	}
 
 	priv = iio_priv(indio_dev);
 	platform_set_drvdata(pdev, indio_dev);



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

* [PATCH 5.10 062/139] iio:adc:twl6030: Enable measurements of VUSB, VBAT and others
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (60 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 061/139] iio: adc: berlin2-adc: Add missing of_node_put() in error path Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 063/139] iio: imu: fxos8700: fix ACCEL measurement range selection Greg Kroah-Hartman
                   ` (85 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andreas Kemnade, Stable, Jonathan Cameron

From: Andreas Kemnade <andreas@kemnade.info>

commit f804bd0dc28683a93a60f271aaefb2fc5b0853dd upstream.

Some inputs need to be wired up to produce proper measurements,
without this change only near zero values are reported.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Fixes: 1696f36482e70 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
Link: https://lore.kernel.org/r/20221201181635.3522962-1-andreas@kemnade.info
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/adc/twl6030-gpadc.c |   32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

--- a/drivers/iio/adc/twl6030-gpadc.c
+++ b/drivers/iio/adc/twl6030-gpadc.c
@@ -57,6 +57,18 @@
 #define TWL6030_GPADCS				BIT(1)
 #define TWL6030_GPADCR				BIT(0)
 
+#define USB_VBUS_CTRL_SET			0x04
+#define USB_ID_CTRL_SET				0x06
+
+#define TWL6030_MISC1				0xE4
+#define VBUS_MEAS				0x01
+#define ID_MEAS					0x01
+
+#define VAC_MEAS                0x04
+#define VBAT_MEAS               0x02
+#define BB_MEAS                 0x01
+
+
 /**
  * struct twl6030_chnl_calib - channel calibration
  * @gain:		slope coefficient for ideal curve
@@ -927,6 +939,26 @@ static int twl6030_gpadc_probe(struct pl
 		return ret;
 	}
 
+	ret = twl_i2c_write_u8(TWL_MODULE_USB, VBUS_MEAS, USB_VBUS_CTRL_SET);
+	if (ret < 0) {
+		dev_err(dev, "failed to wire up inputs\n");
+		return ret;
+	}
+
+	ret = twl_i2c_write_u8(TWL_MODULE_USB, ID_MEAS, USB_ID_CTRL_SET);
+	if (ret < 0) {
+		dev_err(dev, "failed to wire up inputs\n");
+		return ret;
+	}
+
+	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0,
+				VBAT_MEAS | BB_MEAS | BB_MEAS,
+				TWL6030_MISC1);
+	if (ret < 0) {
+		dev_err(dev, "failed to wire up inputs\n");
+		return ret;
+	}
+
 	indio_dev->name = DRIVER_NAME;
 	indio_dev->info = &twl6030_gpadc_iio_info;
 	indio_dev->modes = INDIO_DIRECT_MODE;



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

* [PATCH 5.10 063/139] iio: imu: fxos8700: fix ACCEL measurement range selection
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (61 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 062/139] iio:adc:twl6030: Enable measurements of VUSB, VBAT and others Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 064/139] iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback Greg Kroah-Hartman
                   ` (84 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit 9d61c1820598a5ea474576ed55318a6dadee37ed upstream.

When device is in active mode, it fails to set an ACCEL full-scale
range(2g/4g/8g) in FXOS8700_XYZ_DATA_CFG. This is not align with the
datasheet, but it is a fxos8700 chip behavior.

Keep the device in standby mode before setting ACCEL full-scale range
into FXOS8700_XYZ_DATA_CFG in chip initialization phase and setting
scale phase.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20221208071911.2405922-6-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |   41 +++++++++++++++++++++++++++++++++-------
 1 file changed, 34 insertions(+), 7 deletions(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -345,7 +345,8 @@ static int fxos8700_set_active_mode(stru
 static int fxos8700_set_scale(struct fxos8700_data *data,
 			      enum fxos8700_sensor t, int uscale)
 {
-	int i;
+	int i, ret, val;
+	bool active_mode;
 	static const int scale_num = ARRAY_SIZE(fxos8700_accel_scale);
 	struct device *dev = regmap_get_device(data->regmap);
 
@@ -354,6 +355,25 @@ static int fxos8700_set_scale(struct fxo
 		return -EINVAL;
 	}
 
+	/*
+	 * When device is in active mode, it failed to set an ACCEL
+	 * full-scale range(2g/4g/8g) in FXOS8700_XYZ_DATA_CFG.
+	 * This is not align with the datasheet, but it is a fxos8700
+	 * chip behavier. Set the device in standby mode before setting
+	 * an ACCEL full-scale range.
+	 */
+	ret = regmap_read(data->regmap, FXOS8700_CTRL_REG1, &val);
+	if (ret)
+		return ret;
+
+	active_mode = val & FXOS8700_ACTIVE;
+	if (active_mode) {
+		ret = regmap_write(data->regmap, FXOS8700_CTRL_REG1,
+				   val & ~FXOS8700_ACTIVE);
+		if (ret)
+			return ret;
+	}
+
 	for (i = 0; i < scale_num; i++)
 		if (fxos8700_accel_scale[i].uscale == uscale)
 			break;
@@ -361,8 +381,12 @@ static int fxos8700_set_scale(struct fxo
 	if (i == scale_num)
 		return -EINVAL;
 
-	return regmap_write(data->regmap, FXOS8700_XYZ_DATA_CFG,
+	ret = regmap_write(data->regmap, FXOS8700_XYZ_DATA_CFG,
 			    fxos8700_accel_scale[i].bits);
+	if (ret)
+		return ret;
+	return regmap_write(data->regmap, FXOS8700_CTRL_REG1,
+				  active_mode);
 }
 
 static int fxos8700_get_scale(struct fxos8700_data *data,
@@ -592,14 +616,17 @@ static int fxos8700_chip_init(struct fxo
 	if (ret)
 		return ret;
 
-	/* Max ODR (800Hz individual or 400Hz hybrid), active mode */
-	ret = regmap_write(data->regmap, FXOS8700_CTRL_REG1,
-			   FXOS8700_CTRL_ODR_MAX | FXOS8700_ACTIVE);
+	/*
+	 * Set max full-scale range (+/-8G) for ACCEL sensor in chip
+	 * initialization then activate the device.
+	 */
+	ret = regmap_write(data->regmap, FXOS8700_XYZ_DATA_CFG, MODE_8G);
 	if (ret)
 		return ret;
 
-	/* Set for max full-scale range (+/-8G) */
-	return regmap_write(data->regmap, FXOS8700_XYZ_DATA_CFG, MODE_8G);
+	/* Max ODR (800Hz individual or 400Hz hybrid), active mode */
+	return regmap_write(data->regmap, FXOS8700_CTRL_REG1,
+			   FXOS8700_CTRL_ODR_MAX | FXOS8700_ACTIVE);
 }
 
 static void fxos8700_chip_uninit(void *data)



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

* [PATCH 5.10 064/139] iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (62 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 063/139] iio: imu: fxos8700: fix ACCEL measurement range selection Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 065/139] iio: imu: fxos8700: fix IMU data bits returned to user space Greg Kroah-Hartman
                   ` (83 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit 37a94d86d7050665d6d01378b2c916c28e454f10 upstream.

The length of ACCEL and MAGN 3-axis channels output data is 6 byte
individually. However block only read 3 bytes data into buffer from
ACCEL or MAGN output data registers every time. It causes an incomplete
ACCEL and MAGN channels readback.

Set correct value count for regmap_bulk_read to get 6 bytes ACCEL and
MAGN channels readback.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20221208071911.2405922-4-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -425,7 +425,7 @@ static int fxos8700_get_data(struct fxos
 
 	/* Block read 6 bytes of device output registers to avoid data loss */
 	ret = regmap_bulk_read(data->regmap, base, data->buf,
-			       FXOS8700_DATA_BUF_SIZE);
+			       sizeof(data->buf));
 	if (ret)
 		return ret;
 



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

* [PATCH 5.10 065/139] iio: imu: fxos8700: fix IMU data bits returned to user space
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (63 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 064/139] iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 066/139] iio: imu: fxos8700: fix map label of channel type to MAGN sensor Greg Kroah-Hartman
                   ` (82 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit a53f945879c0cb9de3a4c05a665f5157884b5208 upstream.

ACCEL output data registers contain the X-axis, Y-axis, and Z-axis
14-bit left-justified sample data and MAGN output data registers
contain the X-axis, Y-axis, and Z-axis 16-bit sample data. The ACCEL
raw register output data should be divided by 4 before sent to
userspace.

Apply a 2 bits signed right shift to the raw data from ACCEL output
data register but keep that from MAGN sensor as the origin.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20221208071911.2405922-5-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |   28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -418,6 +418,7 @@ static int fxos8700_get_data(struct fxos
 			     int axis, int *val)
 {
 	u8 base, reg;
+	s16 tmp;
 	int ret;
 	enum fxos8700_sensor type = fxos8700_to_sensor(chan_type);
 
@@ -432,8 +433,33 @@ static int fxos8700_get_data(struct fxos
 	/* Convert axis to buffer index */
 	reg = axis - IIO_MOD_X;
 
+	/*
+	 * Convert to native endianness. The accel data and magn data
+	 * are signed, so a forced type conversion is needed.
+	 */
+	tmp = be16_to_cpu(data->buf[reg]);
+
+	/*
+	 * ACCEL output data registers contain the X-axis, Y-axis, and Z-axis
+	 * 14-bit left-justified sample data and MAGN output data registers
+	 * contain the X-axis, Y-axis, and Z-axis 16-bit sample data. Apply
+	 * a signed 2 bits right shift to the readback raw data from ACCEL
+	 * output data register and keep that from MAGN sensor as the origin.
+	 * Value should be extended to 32 bit.
+	 */
+	switch (chan_type) {
+	case IIO_ACCEL:
+		tmp = tmp >> 2;
+		break;
+	case IIO_MAGN:
+		/* Nothing to do */
+		break;
+	default:
+		return -EINVAL;
+	}
+
 	/* Convert to native endianness */
-	*val = sign_extend32(be16_to_cpu(data->buf[reg]), 15);
+	*val = sign_extend32(tmp, 15);
 
 	return 0;
 }



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

* [PATCH 5.10 066/139] iio: imu: fxos8700: fix map label of channel type to MAGN sensor
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (64 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 065/139] iio: imu: fxos8700: fix IMU data bits returned to user space Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 067/139] iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback Greg Kroah-Hartman
                   ` (81 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit 429e1e8ec696e0e7a0742904e3dc2f83b7b23dfb upstream.

FXOS8700 is an IMU sensor with ACCEL sensor and MAGN sensor.
Sensor type is indexed by corresponding channel type in a switch.
IIO_ANGL_VEL channel type mapped to MAGN sensor has caused confusion.

Fix the mapping label of "IIO_MAGN" channel type instead of
"IIO_ANGL_VEL" channel type to MAGN sensor.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20221208071911.2405922-2-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -320,7 +320,7 @@ static enum fxos8700_sensor fxos8700_to_
 	switch (iio_type) {
 	case IIO_ACCEL:
 		return FXOS8700_ACCEL;
-	case IIO_ANGL_VEL:
+	case IIO_MAGN:
 		return FXOS8700_MAGN;
 	default:
 		return -EINVAL;



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

* [PATCH 5.10 067/139] iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (65 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 066/139] iio: imu: fxos8700: fix map label of channel type to MAGN sensor Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 068/139] iio: imu: fxos8700: fix incorrect ODR mode readback Greg Kroah-Hartman
                   ` (80 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit c68b44bc7d9b1469774a1c985ee71d2cbc5ebef5 upstream.

Because ACCEL and MAGN channels data register base address is
swapped the accelerometer and magnetometer channels readback is
swapped.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20221208071911.2405922-3-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -420,9 +420,22 @@ static int fxos8700_get_data(struct fxos
 	u8 base, reg;
 	s16 tmp;
 	int ret;
-	enum fxos8700_sensor type = fxos8700_to_sensor(chan_type);
 
-	base = type ? FXOS8700_OUT_X_MSB : FXOS8700_M_OUT_X_MSB;
+	/*
+	 * Different register base addresses varies with channel types.
+	 * This bug hasn't been noticed before because using an enum is
+	 * really hard to read. Use an a switch statement to take over that.
+	 */
+	switch (chan_type) {
+	case IIO_ACCEL:
+		base = FXOS8700_OUT_X_MSB;
+		break;
+	case IIO_MAGN:
+		base = FXOS8700_M_OUT_X_MSB;
+		break;
+	default:
+		return -EINVAL;
+	}
 
 	/* Block read 6 bytes of device output registers to avoid data loss */
 	ret = regmap_bulk_read(data->regmap, base, data->buf,



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

* [PATCH 5.10 068/139] iio: imu: fxos8700: fix incorrect ODR mode readback
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (66 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 067/139] iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 069/139] iio: imu: fxos8700: fix failed initialization ODR mode assignment Greg Kroah-Hartman
                   ` (79 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit 78ad6864e9e012cdba7c353d044d21ffcfd5f34b upstream.

The absence of a correct offset leads an incorrect ODR mode
readback after use a hexadecimal number to mark the value from
FXOS8700_CTRL_REG1.

Get ODR mode by field mask and FIELD_GET clearly and conveniently.
And attach other additional fix for keeping the original code logic
and a good readability.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20230118074227.1665098-2-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -10,6 +10,7 @@
 #include <linux/regmap.h>
 #include <linux/acpi.h>
 #include <linux/bitops.h>
+#include <linux/bitfield.h>
 
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
@@ -144,9 +145,9 @@
 #define FXOS8700_NVM_DATA_BNK0      0xa7
 
 /* Bit definitions for FXOS8700_CTRL_REG1 */
-#define FXOS8700_CTRL_ODR_MSK       0x38
 #define FXOS8700_CTRL_ODR_MAX       0x00
 #define FXOS8700_CTRL_ODR_MIN       GENMASK(4, 3)
+#define FXOS8700_CTRL_ODR_MSK       GENMASK(5, 3)
 
 /* Bit definitions for FXOS8700_M_CTRL_REG1 */
 #define FXOS8700_HMS_MASK           GENMASK(1, 0)
@@ -508,10 +509,9 @@ static int fxos8700_set_odr(struct fxos8
 	if (i >= odr_num)
 		return -EINVAL;
 
-	return regmap_update_bits(data->regmap,
-				  FXOS8700_CTRL_REG1,
-				  FXOS8700_CTRL_ODR_MSK + FXOS8700_ACTIVE,
-				  fxos8700_odr[i].bits << 3 | active_mode);
+	val &= ~FXOS8700_CTRL_ODR_MSK;
+	val |= FIELD_PREP(FXOS8700_CTRL_ODR_MSK, fxos8700_odr[i].bits) | FXOS8700_ACTIVE;
+	return regmap_write(data->regmap, FXOS8700_CTRL_REG1, val);
 }
 
 static int fxos8700_get_odr(struct fxos8700_data *data, enum fxos8700_sensor t,
@@ -524,7 +524,7 @@ static int fxos8700_get_odr(struct fxos8
 	if (ret)
 		return ret;
 
-	val &= FXOS8700_CTRL_ODR_MSK;
+	val = FIELD_GET(FXOS8700_CTRL_ODR_MSK, val);
 
 	for (i = 0; i < odr_num; i++)
 		if (val == fxos8700_odr[i].bits)



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

* [PATCH 5.10 069/139] iio: imu: fxos8700: fix failed initialization ODR mode assignment
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (67 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 068/139] iio: imu: fxos8700: fix incorrect ODR mode readback Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 070/139] iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN Greg Kroah-Hartman
                   ` (78 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit eb6d8f8705bc19141bac81d8161461f9e256948a upstream.

The absence of correct offset leads a failed initialization ODR mode
assignment.

Select MAX ODR mode as the initialization ODR mode by field mask and
FIELD_PREP.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20230118074227.1665098-3-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -664,8 +664,10 @@ static int fxos8700_chip_init(struct fxo
 		return ret;
 
 	/* Max ODR (800Hz individual or 400Hz hybrid), active mode */
-	return regmap_write(data->regmap, FXOS8700_CTRL_REG1,
-			   FXOS8700_CTRL_ODR_MAX | FXOS8700_ACTIVE);
+	return regmap_update_bits(data->regmap, FXOS8700_CTRL_REG1,
+				FXOS8700_CTRL_ODR_MSK | FXOS8700_ACTIVE,
+				FIELD_PREP(FXOS8700_CTRL_ODR_MSK, FXOS8700_CTRL_ODR_MAX) |
+				FXOS8700_ACTIVE);
 }
 
 static void fxos8700_chip_uninit(void *data)



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

* [PATCH 5.10 070/139] iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (68 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 069/139] iio: imu: fxos8700: fix failed initialization ODR mode assignment Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 071/139] iio: imu: fxos8700: fix MAGN sensor scale and unit Greg Kroah-Hartman
                   ` (77 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit ff5e2cd92ffda9a25ffa2cbdb3a0cf17650172a6 upstream.

FXOS8700_CTRL_ODR_MIN is not used but value is probably wrong.

Remove it for a good readability.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20230118074227.1665098-4-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |    1 -
 1 file changed, 1 deletion(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -146,7 +146,6 @@
 
 /* Bit definitions for FXOS8700_CTRL_REG1 */
 #define FXOS8700_CTRL_ODR_MAX       0x00
-#define FXOS8700_CTRL_ODR_MIN       GENMASK(4, 3)
 #define FXOS8700_CTRL_ODR_MSK       GENMASK(5, 3)
 
 /* Bit definitions for FXOS8700_M_CTRL_REG1 */



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

* [PATCH 5.10 071/139] iio: imu: fxos8700: fix MAGN sensor scale and unit
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (69 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 070/139] iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 072/139] nvmem: qcom-spmi-sdam: fix module autoloading Greg Kroah-Hartman
                   ` (76 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Carlos Song, Stable, Jonathan Cameron

From: Carlos Song <carlos.song@nxp.com>

commit 2acd031347f645871959a799238a7caf6803aa18 upstream.

+/-1200uT is a MAGN sensor full measurement range. Magnetometer scale
is the magnetic sensitivity parameter. It is referenced as 0.1uT
according to datasheet and magnetometer channel unit is Gauss in
sysfs-bus-iio documentation. Gauss and uTesla unit conversion
relationship as follows: 0.1uT = 0.001Gs.

Set magnetometer scale and available magnetometer scale as fixed 0.001Gs.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Link: https://lore.kernel.org/r/20230118074227.1665098-5-carlos.song@nxp.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/iio/imu/fxos8700_core.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -351,7 +351,7 @@ static int fxos8700_set_scale(struct fxo
 	struct device *dev = regmap_get_device(data->regmap);
 
 	if (t == FXOS8700_MAGN) {
-		dev_err(dev, "Magnetometer scale is locked at 1200uT\n");
+		dev_err(dev, "Magnetometer scale is locked at 0.001Gs\n");
 		return -EINVAL;
 	}
 
@@ -396,7 +396,7 @@ static int fxos8700_get_scale(struct fxo
 	static const int scale_num = ARRAY_SIZE(fxos8700_accel_scale);
 
 	if (t == FXOS8700_MAGN) {
-		*uscale = 1200; /* Magnetometer is locked at 1200uT */
+		*uscale = 1000; /* Magnetometer is locked at 0.001Gs */
 		return 0;
 	}
 
@@ -588,7 +588,7 @@ static IIO_CONST_ATTR(in_accel_sampling_
 static IIO_CONST_ATTR(in_magn_sampling_frequency_available,
 		      "1.5625 6.25 12.5 50 100 200 400 800");
 static IIO_CONST_ATTR(in_accel_scale_available, "0.000244 0.000488 0.000976");
-static IIO_CONST_ATTR(in_magn_scale_available, "0.000001200");
+static IIO_CONST_ATTR(in_magn_scale_available, "0.001000");
 
 static struct attribute *fxos8700_attrs[] = {
 	&iio_const_attr_in_accel_sampling_frequency_available.dev_attr.attr,



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

* [PATCH 5.10 072/139] nvmem: qcom-spmi-sdam: fix module autoloading
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (70 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 071/139] iio: imu: fxos8700: fix MAGN sensor scale and unit Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 073/139] parisc: Fix return code of pdc_iodc_print() Greg Kroah-Hartman
                   ` (75 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Bjorn Andersson, Johan Hovold,
	Srinivas Kandagatla

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

commit 1ca7fca349316231bbaa68d16f819a08d683c5a7 upstream.

Add the missing module device table so that the driver can be autoloaded
when built as a module.

Fixes: 40ce9798794f ("nvmem: add QTI SDAM driver")
Cc: stable@vger.kernel.org	# 5.6
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-11-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/nvmem/qcom-spmi-sdam.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/nvmem/qcom-spmi-sdam.c
+++ b/drivers/nvmem/qcom-spmi-sdam.c
@@ -166,6 +166,7 @@ static const struct of_device_id sdam_ma
 	{ .compatible = "qcom,spmi-sdam" },
 	{},
 };
+MODULE_DEVICE_TABLE(of, sdam_match_table);
 
 static struct platform_driver sdam_driver = {
 	.driver = {



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

* [PATCH 5.10 073/139] parisc: Fix return code of pdc_iodc_print()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (71 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 072/139] nvmem: qcom-spmi-sdam: fix module autoloading Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 074/139] parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case Greg Kroah-Hartman
                   ` (74 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Helge Deller

From: Helge Deller <deller@gmx.de>

commit 5d1335dabb3c493a3d6d5b233953b6ac7b6c1ff2 upstream.

There is an off-by-one if the printed string includes a new-line
char.

Cc: stable@vger.kernel.org
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/parisc/kernel/firmware.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -1230,7 +1230,7 @@ static char __attribute__((aligned(64)))
  */
 int pdc_iodc_print(const unsigned char *str, unsigned count)
 {
-	unsigned int i;
+	unsigned int i, found = 0;
 	unsigned long flags;
 
 	for (i = 0; i < count;) {
@@ -1239,6 +1239,7 @@ int pdc_iodc_print(const unsigned char *
 			iodc_dbuf[i+0] = '\r';
 			iodc_dbuf[i+1] = '\n';
 			i += 2;
+			found = 1;
 			goto print;
 		default:
 			iodc_dbuf[i] = str[i];
@@ -1255,7 +1256,7 @@ print:
                     __pa(iodc_retbuf), 0, __pa(iodc_dbuf), i, 0);
         spin_unlock_irqrestore(&pdc_lock, flags);
 
-	return i;
+	return i - found;
 }
 
 #if !defined(BOOTLOADER)



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

* [PATCH 5.10 074/139] parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (72 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 073/139] parisc: Fix return code of pdc_iodc_print() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 075/139] riscv: disable generation of unwind tables Greg Kroah-Hartman
                   ` (73 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Helge Deller

From: Helge Deller <deller@gmx.de>

commit 316f1f42b5cc1d95124c1f0387c867c1ba7b6d0e upstream.

Wire up the missing ptrace requests PTRACE_GETREGS, PTRACE_SETREGS,
PTRACE_GETFPREGS and PTRACE_SETFPREGS when running 32-bit applications
on 64-bit kernels.

Signed-off-by: Helge Deller <deller@gmx.de>
Cc: stable@vger.kernel.org # 4.7+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/parisc/kernel/ptrace.c |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

--- a/arch/parisc/kernel/ptrace.c
+++ b/arch/parisc/kernel/ptrace.c
@@ -127,6 +127,12 @@ long arch_ptrace(struct task_struct *chi
 	unsigned long tmp;
 	long ret = -EIO;
 
+	unsigned long user_regs_struct_size = sizeof(struct user_regs_struct);
+#ifdef CONFIG_64BIT
+	if (is_compat_task())
+		user_regs_struct_size /= 2;
+#endif
+
 	switch (request) {
 
 	/* Read the word at location addr in the USER area.  For ptraced
@@ -182,14 +188,14 @@ long arch_ptrace(struct task_struct *chi
 		return copy_regset_to_user(child,
 					   task_user_regset_view(current),
 					   REGSET_GENERAL,
-					   0, sizeof(struct user_regs_struct),
+					   0, user_regs_struct_size,
 					   datap);
 
 	case PTRACE_SETREGS:	/* Set all gp regs in the child. */
 		return copy_regset_from_user(child,
 					     task_user_regset_view(current),
 					     REGSET_GENERAL,
-					     0, sizeof(struct user_regs_struct),
+					     0, user_regs_struct_size,
 					     datap);
 
 	case PTRACE_GETFPREGS:	/* Get the child FPU state. */
@@ -303,6 +309,11 @@ long compat_arch_ptrace(struct task_stru
 			}
 		}
 		break;
+	case PTRACE_GETREGS:
+	case PTRACE_SETREGS:
+	case PTRACE_GETFPREGS:
+	case PTRACE_SETFPREGS:
+		return arch_ptrace(child, request, addr, data);
 
 	default:
 		ret = compat_ptrace_request(child, request, addr, data);



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

* [PATCH 5.10 075/139] riscv: disable generation of unwind tables
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (73 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 074/139] parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 076/139] mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps Greg Kroah-Hartman
                   ` (72 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Andreas Schwab, Palmer Dabbelt

From: Andreas Schwab <schwab@suse.de>

commit 2f394c0e7d1129a35156e492bc8f445fb20f43ac upstream.

GCC 13 will enable -fasynchronous-unwind-tables by default on riscv.  In
the kernel, we don't have any use for unwind tables yet, so disable them.
More importantly, the .eh_frame section brings relocations
(R_RISC_32_PCREL, R_RISCV_SET{6,8,16}, R_RISCV_SUB{6,8,16}) into modules
that we are not prepared to handle.

Signed-off-by: Andreas Schwab <schwab@suse.de>
Link: https://lore.kernel.org/r/mvmzg9xybqu.fsf@suse.de
Cc: stable@vger.kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/riscv/Makefile |    3 +++
 1 file changed, 3 insertions(+)

--- a/arch/riscv/Makefile
+++ b/arch/riscv/Makefile
@@ -74,6 +74,9 @@ ifeq ($(CONFIG_PERF_EVENTS),y)
         KBUILD_CFLAGS += -fno-omit-frame-pointer
 endif
 
+# Avoid generating .eh_frame sections.
+KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
+
 KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
 KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)
 



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

* [PATCH 5.10 076/139] mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (74 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 075/139] riscv: disable generation of unwind tables Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 077/139] x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses Greg Kroah-Hartman
                   ` (71 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mike Kravetz, Peter Xu,
	David Hildenbrand, James Houghton, Matthew Wilcox, Michal Hocko,
	Muchun Song, Naoya Horiguchi, Vishal Moola (Oracle),
	Yang Shi, Andrew Morton

From: Mike Kravetz <mike.kravetz@oracle.com>

commit 3489dbb696d25602aea8c3e669a6d43b76bd5358 upstream.

Patch series "Fixes for hugetlb mapcount at most 1 for shared PMDs".

This issue of mapcount in hugetlb pages referenced by shared PMDs was
discussed in [1].  The following two patches address user visible behavior
caused by this issue.

[1] https://lore.kernel.org/linux-mm/Y9BF+OCdWnCSilEu@monkey/


This patch (of 2):

A hugetlb page will have a mapcount of 1 if mapped by multiple processes
via a shared PMD.  This is because only the first process increases the
map count, and subsequent processes just add the shared PMD page to their
page table.

page_mapcount is being used to decide if a hugetlb page is shared or
private in /proc/PID/smaps.  Pages referenced via a shared PMD were
incorrectly being counted as private.

To fix, check for a shared PMD if mapcount is 1.  If a shared PMD is found
count the hugetlb page as shared.  A new helper to check for a shared PMD
is added.

[akpm@linux-foundation.org: simplification, per David]
[akpm@linux-foundation.org: hugetlb.h: include page_ref.h for page_count()]
Link: https://lkml.kernel.org/r/20230126222721.222195-2-mike.kravetz@oracle.com
Fixes: 25ee01a2fca0 ("mm: hugetlb: proc: add hugetlb-related fields to /proc/PID/smaps")
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Acked-by: Peter Xu <peterx@redhat.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: James Houghton <jthoughton@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Cc: Yang Shi <shy828301@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/proc/task_mmu.c      |    4 +---
 include/linux/hugetlb.h |   13 +++++++++++++
 2 files changed, 14 insertions(+), 3 deletions(-)

--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -714,9 +714,7 @@ static int smaps_hugetlb_range(pte_t *pt
 			page = device_private_entry_to_page(swpent);
 	}
 	if (page) {
-		int mapcount = page_mapcount(page);
-
-		if (mapcount >= 2)
+		if (page_mapcount(page) >= 2 || hugetlb_pmd_shared(pte))
 			mss->shared_hugetlb += huge_page_size(hstate_vma(vma));
 		else
 			mss->private_hugetlb += huge_page_size(hstate_vma(vma));
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -7,6 +7,7 @@
 #include <linux/fs.h>
 #include <linux/hugetlb_inline.h>
 #include <linux/cgroup.h>
+#include <linux/page_ref.h>
 #include <linux/list.h>
 #include <linux/kref.h>
 #include <linux/pgtable.h>
@@ -942,4 +943,16 @@ static inline __init void hugetlb_cma_ch
 }
 #endif
 
+#ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE
+static inline bool hugetlb_pmd_shared(pte_t *pte)
+{
+	return page_count(virt_to_page(pte)) > 1;
+}
+#else
+static inline bool hugetlb_pmd_shared(pte_t *pte)
+{
+	return false;
+}
+#endif
+
 #endif /* _LINUX_HUGETLB_H */



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

* [PATCH 5.10 077/139] x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (75 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 076/139] mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 078/139] fpga: stratix10-soc: Fix return value check in s10_ops_write_init() Greg Kroah-Hartman
                   ` (70 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Alexey Kardashevskiy, Joerg Roedel,
	Borislav Petkov (AMD)

From: Joerg Roedel <jroedel@suse.de>

commit 9d2c7203ffdb846399b82b0660563c89e918c751 upstream.

In kernels compiled with CONFIG_PARAVIRT=n, the compiler re-orders the
DR7 read in exc_nmi() to happen before the call to sev_es_ist_enter().

This is problematic when running as an SEV-ES guest because in this
environment the DR7 read might cause a #VC exception, and taking #VC
exceptions is not safe in exc_nmi() before sev_es_ist_enter() has run.

The result is stack recursion if the NMI was caused on the #VC IST
stack, because a subsequent #VC exception in the NMI handler will
overwrite the stack frame of the interrupted #VC handler.

As there are no compiler barriers affecting the ordering of DR7
reads/writes, make the accesses to this register volatile, forbidding
the compiler to re-order them.

  [ bp: Massage text, make them volatile too, to make sure some
  aggressive compiler optimization pass doesn't discard them. ]

Fixes: 315562c9af3d ("x86/sev-es: Adjust #VC IST Stack on entering NMI handler")
Reported-by: Alexey Kardashevskiy <aik@amd.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230127035616.508966-1-aik@amd.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/x86/include/asm/debugreg.h | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/debugreg.h b/arch/x86/include/asm/debugreg.h
index b049d950612f..ca97442e8d49 100644
--- a/arch/x86/include/asm/debugreg.h
+++ b/arch/x86/include/asm/debugreg.h
@@ -39,7 +39,20 @@ static __always_inline unsigned long native_get_debugreg(int regno)
 		asm("mov %%db6, %0" :"=r" (val));
 		break;
 	case 7:
-		asm("mov %%db7, %0" :"=r" (val));
+		/*
+		 * Apply __FORCE_ORDER to DR7 reads to forbid re-ordering them
+		 * with other code.
+		 *
+		 * This is needed because a DR7 access can cause a #VC exception
+		 * when running under SEV-ES. Taking a #VC exception is not a
+		 * safe thing to do just anywhere in the entry code and
+		 * re-ordering might place the access into an unsafe location.
+		 *
+		 * This happened in the NMI handler, where the DR7 read was
+		 * re-ordered to happen before the call to sev_es_ist_enter(),
+		 * causing stack recursion.
+		 */
+		asm volatile("mov %%db7, %0" : "=r" (val) : __FORCE_ORDER);
 		break;
 	default:
 		BUG();
@@ -66,7 +79,16 @@ static __always_inline void native_set_debugreg(int regno, unsigned long value)
 		asm("mov %0, %%db6"	::"r" (value));
 		break;
 	case 7:
-		asm("mov %0, %%db7"	::"r" (value));
+		/*
+		 * Apply __FORCE_ORDER to DR7 writes to forbid re-ordering them
+		 * with other code.
+		 *
+		 * While is didn't happen with a DR7 write (see the DR7 read
+		 * comment above which explains where it happened), add the
+		 * __FORCE_ORDER here too to avoid similar problems in the
+		 * future.
+		 */
+		asm volatile("mov %0, %%db7"	::"r" (value), __FORCE_ORDER);
 		break;
 	default:
 		BUG();
-- 
2.39.1




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

* [PATCH 5.10 078/139] fpga: stratix10-soc: Fix return value check in s10_ops_write_init()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (76 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 077/139] x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 079/139] mm/swapfile: add cond_resched() in get_swap_pages() Greg Kroah-Hartman
                   ` (69 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Zheng Yongjun, Russ Weight, Xu Yilun

From: Zheng Yongjun <zhengyongjun3@huawei.com>

commit 65ea840afd508194b0ee903256162aa87e46ec30 upstream.

In case of error, the function stratix10_svc_allocate_memory()
returns ERR_PTR() and never returns NULL. The NULL test in the
return value check should be replaced with IS_ERR().

Fixes: e7eef1d7633a ("fpga: add intel stratix10 soc fpga manager driver")
Signed-off-by: Zheng Yongjun <zhengyongjun3@huawei.com>
Reviewed-by: Russ Weight <russell.h.weight@intel.com>
Cc: stable@vger.kernel.org
Acked-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20221126071430.19540-1-zhengyongjun3@huawei.com
Signed-off-by: Xu Yilun <yilun.xu@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/fpga/stratix10-soc.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/fpga/stratix10-soc.c
+++ b/drivers/fpga/stratix10-soc.c
@@ -213,9 +213,9 @@ static int s10_ops_write_init(struct fpg
 	/* Allocate buffers from the service layer's pool. */
 	for (i = 0; i < NUM_SVC_BUFS; i++) {
 		kbuf = stratix10_svc_allocate_memory(priv->chan, SVC_BUF_SIZE);
-		if (!kbuf) {
+		if (IS_ERR(kbuf)) {
 			s10_free_buffers(mgr);
-			ret = -ENOMEM;
+			ret = PTR_ERR(kbuf);
 			goto init_done;
 		}
 



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

* [PATCH 5.10 079/139] mm/swapfile: add cond_resched() in get_swap_pages()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (77 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 078/139] fpga: stratix10-soc: Fix return value check in s10_ops_write_init() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 080/139] Squashfs: fix handling and sanity checking of xattr_ids count Greg Kroah-Hartman
                   ` (68 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Longlong Xia, Huang, Ying,
	Chen Wandun, Kefeng Wang, Nanyong Sun, Hugh Dickins,
	Andrew Morton

From: Longlong Xia <xialonglong1@huawei.com>

commit 7717fc1a12f88701573f9ed897cc4f6699c661e3 upstream.

The softlockup still occurs in get_swap_pages() under memory pressure.  64
CPU cores, 64GB memory, and 28 zram devices, the disksize of each zram
device is 50MB with same priority as si.  Use the stress-ng tool to
increase memory pressure, causing the system to oom frequently.

The plist_for_each_entry_safe() loops in get_swap_pages() could reach tens
of thousands of times to find available space (extreme case:
cond_resched() is not called in scan_swap_map_slots()).  Let's add
cond_resched() into get_swap_pages() when failed to find available space
to avoid softlockup.

Link: https://lkml.kernel.org/r/20230128094757.1060525-1-xialonglong1@huawei.com
Signed-off-by: Longlong Xia <xialonglong1@huawei.com>
Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
Cc: Chen Wandun <chenwandun@huawei.com>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Nanyong Sun <sunnanyong@huawei.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 mm/swapfile.c |    1 +
 1 file changed, 1 insertion(+)

--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1104,6 +1104,7 @@ start_over:
 			goto check_out;
 		pr_debug("scan_swap_map of si %d failed to find offset\n",
 			si->type);
+		cond_resched();
 
 		spin_lock(&swap_avail_lock);
 nextsi:



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

* [PATCH 5.10 080/139] Squashfs: fix handling and sanity checking of xattr_ids count
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (78 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 079/139] mm/swapfile: add cond_resched() in get_swap_pages() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 081/139] drm/i915: Fix potential bit_17 double-free Greg Kroah-Hartman
                   ` (67 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Phillip Lougher,
	syzbot+082fa4af80a5bb1a9843, Alexey Khoroshilov, Fedor Pchelkin,
	Andrew Morton

From: Phillip Lougher <phillip@squashfs.org.uk>

commit f65c4bbbd682b0877b669828b4e033b8d5d0a2dc upstream.

A Sysbot [1] corrupted filesystem exposes two flaws in the handling and
sanity checking of the xattr_ids count in the filesystem.  Both of these
flaws cause computation overflow due to incorrect typing.

In the corrupted filesystem the xattr_ids value is 4294967071, which
stored in a signed variable becomes the negative number -225.

Flaw 1 (64-bit systems only):

The signed integer xattr_ids variable causes sign extension.

This causes variable overflow in the SQUASHFS_XATTR_*(A) macros.  The
variable is first multiplied by sizeof(struct squashfs_xattr_id) where the
type of the sizeof operator is "unsigned long".

On a 64-bit system this is 64-bits in size, and causes the negative number
to be sign extended and widened to 64-bits and then become unsigned.  This
produces the very large number 18446744073709548016 or 2^64 - 3600.  This
number when rounded up by SQUASHFS_METADATA_SIZE - 1 (8191 bytes) and
divided by SQUASHFS_METADATA_SIZE overflows and produces a length of 0
(stored in len).

Flaw 2 (32-bit systems only):

On a 32-bit system the integer variable is not widened by the unsigned
long type of the sizeof operator (32-bits), and the signedness of the
variable has no effect due it always being treated as unsigned.

The above corrupted xattr_ids value of 4294967071, when multiplied
overflows and produces the number 4294963696 or 2^32 - 3400.  This number
when rounded up by SQUASHFS_METADATA_SIZE - 1 (8191 bytes) and divided by
SQUASHFS_METADATA_SIZE overflows again and produces a length of 0.

The effect of the 0 length computation:

In conjunction with the corrupted xattr_ids field, the filesystem also has
a corrupted xattr_table_start value, where it matches the end of
filesystem value of 850.

This causes the following sanity check code to fail because the
incorrectly computed len of 0 matches the incorrect size of the table
reported by the superblock (0 bytes).

    len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids);
    indexes = SQUASHFS_XATTR_BLOCKS(*xattr_ids);

    /*
     * The computed size of the index table (len bytes) should exactly
     * match the table start and end points
    */
    start = table_start + sizeof(*id_table);
    end = msblk->bytes_used;

    if (len != (end - start))
            return ERR_PTR(-EINVAL);

Changing the xattr_ids variable to be "usigned int" fixes the flaw on a
64-bit system.  This relies on the fact the computation is widened by the
unsigned long type of the sizeof operator.

Casting the variable to u64 in the above macro fixes this flaw on a 32-bit
system.

It also means 64-bit systems do not implicitly rely on the type of the
sizeof operator to widen the computation.

[1] https://lore.kernel.org/lkml/000000000000cd44f005f1a0f17f@google.com/

Link: https://lkml.kernel.org/r/20230127061842.10965-1-phillip@squashfs.org.uk
Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id lookup")
Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
Reported-by: <syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com>
Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Fedor Pchelkin <pchelkin@ispras.ru>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/squashfs/squashfs_fs.h    |    2 +-
 fs/squashfs/squashfs_fs_sb.h |    2 +-
 fs/squashfs/xattr.h          |    4 ++--
 fs/squashfs/xattr_id.c       |    2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

--- a/fs/squashfs/squashfs_fs.h
+++ b/fs/squashfs/squashfs_fs.h
@@ -183,7 +183,7 @@ static inline int squashfs_block_size(__
 #define SQUASHFS_ID_BLOCK_BYTES(A)	(SQUASHFS_ID_BLOCKS(A) *\
 					sizeof(u64))
 /* xattr id lookup table defines */
-#define SQUASHFS_XATTR_BYTES(A)		((A) * sizeof(struct squashfs_xattr_id))
+#define SQUASHFS_XATTR_BYTES(A)		(((u64) (A)) * sizeof(struct squashfs_xattr_id))
 
 #define SQUASHFS_XATTR_BLOCK(A)		(SQUASHFS_XATTR_BYTES(A) / \
 					SQUASHFS_METADATA_SIZE)
--- a/fs/squashfs/squashfs_fs_sb.h
+++ b/fs/squashfs/squashfs_fs_sb.h
@@ -63,7 +63,7 @@ struct squashfs_sb_info {
 	long long				bytes_used;
 	unsigned int				inodes;
 	unsigned int				fragments;
-	int					xattr_ids;
+	unsigned int				xattr_ids;
 	unsigned int				ids;
 };
 #endif
--- a/fs/squashfs/xattr.h
+++ b/fs/squashfs/xattr.h
@@ -10,12 +10,12 @@
 
 #ifdef CONFIG_SQUASHFS_XATTR
 extern __le64 *squashfs_read_xattr_id_table(struct super_block *, u64,
-		u64 *, int *);
+		u64 *, unsigned int *);
 extern int squashfs_xattr_lookup(struct super_block *, unsigned int, int *,
 		unsigned int *, unsigned long long *);
 #else
 static inline __le64 *squashfs_read_xattr_id_table(struct super_block *sb,
-		u64 start, u64 *xattr_table_start, int *xattr_ids)
+		u64 start, u64 *xattr_table_start, unsigned int *xattr_ids)
 {
 	struct squashfs_xattr_id_table *id_table;
 
--- a/fs/squashfs/xattr_id.c
+++ b/fs/squashfs/xattr_id.c
@@ -56,7 +56,7 @@ int squashfs_xattr_lookup(struct super_b
  * Read uncompressed xattr id lookup table indexes from disk into memory
  */
 __le64 *squashfs_read_xattr_id_table(struct super_block *sb, u64 table_start,
-		u64 *xattr_table_start, int *xattr_ids)
+		u64 *xattr_table_start, unsigned int *xattr_ids)
 {
 	struct squashfs_sb_info *msblk = sb->s_fs_info;
 	unsigned int len, indexes;



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

* [PATCH 5.10 081/139] drm/i915: Fix potential bit_17 double-free
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (79 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 080/139] Squashfs: fix handling and sanity checking of xattr_ids count Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 082/139] nvmem: core: initialise nvmem->id early Greg Kroah-Hartman
                   ` (66 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Rob Clark, Tvrtko Ursulin, Rodrigo Vivi

From: Rob Clark <robdclark@chromium.org>

commit 7057a8f126f14f14b040faecfa220fd27c6c2f85 upstream.

A userspace with multiple threads racing I915_GEM_SET_TILING to set the
tiling to I915_TILING_NONE could trigger a double free of the bit_17
bitmask.  (Or conversely leak memory on the transition to tiled.)  Move
allocation/free'ing of the bitmask within the section protected by the
obj lock.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Fixes: 2850748ef876 ("drm/i915: Pull i915_vma_pin under the vm->mutex")
Cc: <stable@vger.kernel.org> # v5.5+
[tursulin: Correct fixes tag and added cc stable.]
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230127200550.3531984-1-robdclark@gmail.com
(cherry picked from commit 10e0cbaaf1104f449d695c80bcacf930dcd3c42e)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_tiling.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

--- a/drivers/gpu/drm/i915/gem/i915_gem_tiling.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_tiling.c
@@ -296,10 +296,6 @@ i915_gem_object_set_tiling(struct drm_i9
 	spin_unlock(&obj->vma.lock);
 
 	obj->tiling_and_stride = tiling | stride;
-	i915_gem_object_unlock(obj);
-
-	/* Force the fence to be reacquired for GTT access */
-	i915_gem_object_release_mmap_gtt(obj);
 
 	/* Try to preallocate memory required to save swizzling on put-pages */
 	if (i915_gem_object_needs_bit17_swizzle(obj)) {
@@ -312,6 +308,11 @@ i915_gem_object_set_tiling(struct drm_i9
 		obj->bit_17 = NULL;
 	}
 
+	i915_gem_object_unlock(obj);
+
+	/* Force the fence to be reacquired for GTT access */
+	i915_gem_object_release_mmap_gtt(obj);
+
 	return 0;
 }
 



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

* [PATCH 5.10 082/139] nvmem: core: initialise nvmem->id early
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (80 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 081/139] drm/i915: Fix potential bit_17 double-free Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 083/139] nvmem: core: fix cell removal on error Greg Kroah-Hartman
                   ` (65 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Russell King (Oracle), Srinivas Kandagatla

From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

commit 3bd747c7ea13cb145f0d84444e00df928b0842d9 upstream.

The error path for wp_gpio attempts to free the IDA nvmem->id, but
this has yet to be assigned, so will always be zero - leaking the
ID allocated by ida_alloc(). Fix this by moving the initialisation
of nvmem->id earlier.

Fixes: f7d8d7dcd978 ("nvmem: fix memory leak in error path")
Cc: stable@vger.kernel.org
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-4-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/nvmem/core.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -625,6 +625,8 @@ struct nvmem_device *nvmem_register(cons
 		return ERR_PTR(rval);
 	}
 
+	nvmem->id = rval;
+
 	if (config->wp_gpio)
 		nvmem->wp_gpio = config->wp_gpio;
 	else
@@ -640,7 +642,6 @@ struct nvmem_device *nvmem_register(cons
 	kref_init(&nvmem->refcnt);
 	INIT_LIST_HEAD(&nvmem->cells);
 
-	nvmem->id = rval;
 	nvmem->owner = config->owner;
 	if (!nvmem->owner && config->dev->driver)
 		nvmem->owner = config->dev->driver->owner;



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

* [PATCH 5.10 083/139] nvmem: core: fix cell removal on error
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (81 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 082/139] nvmem: core: initialise nvmem->id early Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 084/139] serial: 8250_dma: Fix DMA Rx completion race Greg Kroah-Hartman
                   ` (64 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Michael Walle, Srinivas Kandagatla

From: Michael Walle <michael@walle.cc>

commit db3546d58b5a0fa581d9c9f2bdc2856fa6c5e43e upstream.

nvmem_add_cells() could return an error after some cells are already
added to the provider. In this case, the added cells are not removed.
Remove any registered cells if nvmem_add_cells() fails.

Fixes: fa72d847d68d7 ("nvmem: check the return value of nvmem_add_cells()")
Cc: stable@vger.kernel.org
Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-9-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/nvmem/core.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -695,7 +695,7 @@ struct nvmem_device *nvmem_register(cons
 	if (config->cells) {
 		rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
 		if (rval)
-			goto err_teardown_compat;
+			goto err_remove_cells;
 	}
 
 	rval = nvmem_add_cells_from_table(nvmem);
@@ -712,7 +712,6 @@ struct nvmem_device *nvmem_register(cons
 
 err_remove_cells:
 	nvmem_device_remove_all_cells(nvmem);
-err_teardown_compat:
 	if (config->compat)
 		nvmem_sysfs_remove_compat(nvmem, config);
 err_device_del:



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

* [PATCH 5.10 084/139] serial: 8250_dma: Fix DMA Rx completion race
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (82 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 083/139] nvmem: core: fix cell removal on error Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 085/139] serial: 8250_dma: Fix DMA Rx rearm race Greg Kroah-Hartman
                   ` (63 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Gilles BULOZ, Ilpo Järvinen

From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

commit 31352811e13dc2313f101b890fd4b1ce760b5fe7 upstream.

__dma_rx_complete() is called from two places:
  - Through the DMA completion callback dma_rx_complete()
  - From serial8250_rx_dma_flush() after IIR_RLSI or IIR_RX_TIMEOUT
The former does not hold port's lock during __dma_rx_complete() which
allows these two to race and potentially insert the same data twice.

Extend port's lock coverage in dma_rx_complete() to prevent the race
and check if the DMA Rx is still pending completion before calling
into __dma_rx_complete().

Reported-by: Gilles BULOZ <gilles.buloz@kontron.com>
Tested-by: Gilles BULOZ <gilles.buloz@kontron.com>
Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine")
Cc: stable@vger.kernel.org
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20230130114841.25749-2-ilpo.jarvinen@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/tty/serial/8250/8250_dma.c |   14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

--- a/drivers/tty/serial/8250/8250_dma.c
+++ b/drivers/tty/serial/8250/8250_dma.c
@@ -59,6 +59,18 @@ static void __dma_rx_complete(void *para
 	tty_flip_buffer_push(tty_port);
 }
 
+static void dma_rx_complete(void *param)
+{
+	struct uart_8250_port *p = param;
+	struct uart_8250_dma *dma = p->dma;
+	unsigned long flags;
+
+	spin_lock_irqsave(&p->port.lock, flags);
+	if (dma->rx_running)
+		__dma_rx_complete(p);
+	spin_unlock_irqrestore(&p->port.lock, flags);
+}
+
 int serial8250_tx_dma(struct uart_8250_port *p)
 {
 	struct uart_8250_dma		*dma = p->dma;
@@ -130,7 +142,7 @@ int serial8250_rx_dma(struct uart_8250_p
 		return -EBUSY;
 
 	dma->rx_running = 1;
-	desc->callback = __dma_rx_complete;
+	desc->callback = dma_rx_complete;
 	desc->callback_param = p;
 
 	dma->rx_cookie = dmaengine_submit(desc);



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

* [PATCH 5.10 085/139] serial: 8250_dma: Fix DMA Rx rearm race
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (83 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 084/139] serial: 8250_dma: Fix DMA Rx completion race Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 086/139] fbdev: smscufx: fix error handling code in ufx_usb_probe Greg Kroah-Hartman
                   ` (62 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Gilles BULOZ, Ilpo Järvinen

From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

commit 57e9af7831dcf211c5c689c2a6f209f4abdf0bce upstream.

As DMA Rx can be completed from two places, it is possible that DMA Rx
completes before DMA completion callback had a chance to complete it.
Once the previous DMA Rx has been completed, a new one can be started
on the next UART interrupt. The following race is possible
(uart_unlock_and_check_sysrq_irqrestore() replaced with
spin_unlock_irqrestore() for simplicity/clarity):

CPU0					CPU1
					dma_rx_complete()
serial8250_handle_irq()
  spin_lock_irqsave(&port->lock)
  handle_rx_dma()
    serial8250_rx_dma_flush()
      __dma_rx_complete()
        dma->rx_running = 0
        // Complete DMA Rx
  spin_unlock_irqrestore(&port->lock)

serial8250_handle_irq()
  spin_lock_irqsave(&port->lock)
  handle_rx_dma()
    serial8250_rx_dma()
      dma->rx_running = 1
      // Setup a new DMA Rx
  spin_unlock_irqrestore(&port->lock)

					  spin_lock_irqsave(&port->lock)
					  // sees dma->rx_running = 1
					  __dma_rx_complete()
					    dma->rx_running = 0
					    // Incorrectly complete
					    // running DMA Rx

This race seems somewhat theoretical to occur for real but handle it
correctly regardless. Check what is the DMA status before complething
anything in __dma_rx_complete().

Reported-by: Gilles BULOZ <gilles.buloz@kontron.com>
Tested-by: Gilles BULOZ <gilles.buloz@kontron.com>
Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine")
Cc: stable@vger.kernel.org
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20230130114841.25749-3-ilpo.jarvinen@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/tty/serial/8250/8250_dma.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

--- a/drivers/tty/serial/8250/8250_dma.c
+++ b/drivers/tty/serial/8250/8250_dma.c
@@ -46,15 +46,23 @@ static void __dma_rx_complete(void *para
 	struct uart_8250_dma	*dma = p->dma;
 	struct tty_port		*tty_port = &p->port.state->port;
 	struct dma_tx_state	state;
+	enum dma_status		dma_status;
 	int			count;
 
-	dma->rx_running = 0;
-	dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state);
+	/*
+	 * New DMA Rx can be started during the completion handler before it
+	 * could acquire port's lock and it might still be ongoing. Don't to
+	 * anything in such case.
+	 */
+	dma_status = dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state);
+	if (dma_status == DMA_IN_PROGRESS)
+		return;
 
 	count = dma->rx_size - state.residue;
 
 	tty_insert_flip_string(tty_port, dma->rx_buf, count);
 	p->port.icount.rx += count;
+	dma->rx_running = 0;
 
 	tty_flip_buffer_push(tty_port);
 }



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

* [PATCH 5.10 086/139] fbdev: smscufx: fix error handling code in ufx_usb_probe
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (84 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 085/139] serial: 8250_dma: Fix DMA Rx rearm race Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 087/139] f2fs: fix to do sanity check on i_extra_isize in is_alive() Greg Kroah-Hartman
                   ` (61 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, syzkaller, Dongliang Mu, Helge Deller

From: Dongliang Mu <dzm91@hust.edu.cn>

commit b76449ee75e21acfe9fa4c653d8598f191ed7d68 upstream.

The current error handling code in ufx_usb_probe have many unmatching
issues, e.g., missing ufx_free_usb_list, destroy_modedb label should
only include framebuffer_release, fb_dealloc_cmap only matches
fb_alloc_cmap.

My local syzkaller reports a memory leak bug:

memory leak in ufx_usb_probe

BUG: memory leak
unreferenced object 0xffff88802f879580 (size 128):
  comm "kworker/0:7", pid 17416, jiffies 4295067474 (age 46.710s)
  hex dump (first 32 bytes):
    80 21 7c 2e 80 88 ff ff 18 d0 d0 0c 80 88 ff ff  .!|.............
    00 d0 d0 0c 80 88 ff ff e0 ff ff ff 0f 00 00 00  ................
  backtrace:
    [<ffffffff814c99a0>] kmalloc_trace+0x20/0x90 mm/slab_common.c:1045
    [<ffffffff824d219c>] kmalloc include/linux/slab.h:553 [inline]
    [<ffffffff824d219c>] kzalloc include/linux/slab.h:689 [inline]
    [<ffffffff824d219c>] ufx_alloc_urb_list drivers/video/fbdev/smscufx.c:1873 [inline]
    [<ffffffff824d219c>] ufx_usb_probe+0x11c/0x15a0 drivers/video/fbdev/smscufx.c:1655
    [<ffffffff82d17927>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
    [<ffffffff82712f0d>] call_driver_probe drivers/base/dd.c:560 [inline]
    [<ffffffff82712f0d>] really_probe+0x12d/0x390 drivers/base/dd.c:639
    [<ffffffff8271322f>] __driver_probe_device+0xbf/0x140 drivers/base/dd.c:778
    [<ffffffff827132da>] driver_probe_device+0x2a/0x120 drivers/base/dd.c:808
    [<ffffffff82713c27>] __device_attach_driver+0xf7/0x150 drivers/base/dd.c:936
    [<ffffffff82710137>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:427
    [<ffffffff827136b5>] __device_attach+0x105/0x2d0 drivers/base/dd.c:1008
    [<ffffffff82711d36>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:487
    [<ffffffff8270e242>] device_add+0x642/0xdc0 drivers/base/core.c:3517
    [<ffffffff82d14d5f>] usb_set_configuration+0x8ef/0xb80 drivers/usb/core/message.c:2170
    [<ffffffff82d2576c>] usb_generic_driver_probe+0x8c/0xc0 drivers/usb/core/generic.c:238
    [<ffffffff82d16ffc>] usb_probe_device+0x5c/0x140 drivers/usb/core/driver.c:293
    [<ffffffff82712f0d>] call_driver_probe drivers/base/dd.c:560 [inline]
    [<ffffffff82712f0d>] really_probe+0x12d/0x390 drivers/base/dd.c:639
    [<ffffffff8271322f>] __driver_probe_device+0xbf/0x140 drivers/base/dd.c:778

Fix this bug by rewriting the error handling code in ufx_usb_probe.

Reported-by: syzkaller <syzkaller@googlegroups.com>
Tested-by: Dongliang Mu <dzm91@hust.edu.cn>
Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/video/fbdev/smscufx.c |   46 ++++++++++++++++++++++++++++--------------
 1 file changed, 31 insertions(+), 15 deletions(-)

--- a/drivers/video/fbdev/smscufx.c
+++ b/drivers/video/fbdev/smscufx.c
@@ -1621,7 +1621,7 @@ static int ufx_usb_probe(struct usb_inte
 	struct usb_device *usbdev;
 	struct ufx_data *dev;
 	struct fb_info *info;
-	int retval;
+	int retval = -ENOMEM;
 	u32 id_rev, fpga_rev;
 
 	/* usb initialization */
@@ -1653,15 +1653,17 @@ static int ufx_usb_probe(struct usb_inte
 
 	if (!ufx_alloc_urb_list(dev, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
 		dev_err(dev->gdev, "ufx_alloc_urb_list failed\n");
-		goto e_nomem;
+		goto put_ref;
 	}
 
 	/* We don't register a new USB class. Our client interface is fbdev */
 
 	/* allocates framebuffer driver structure, not framebuffer memory */
 	info = framebuffer_alloc(0, &usbdev->dev);
-	if (!info)
-		goto e_nomem;
+	if (!info) {
+		dev_err(dev->gdev, "framebuffer_alloc failed\n");
+		goto free_urb_list;
+	}
 
 	dev->info = info;
 	info->par = dev;
@@ -1704,22 +1706,34 @@ static int ufx_usb_probe(struct usb_inte
 	check_warn_goto_error(retval, "unable to find common mode for display and adapter");
 
 	retval = ufx_reg_set_bits(dev, 0x4000, 0x00000001);
-	check_warn_goto_error(retval, "error %d enabling graphics engine", retval);
+	if (retval < 0) {
+		dev_err(dev->gdev, "error %d enabling graphics engine", retval);
+		goto setup_modes;
+	}
 
 	/* ready to begin using device */
 	atomic_set(&dev->usb_active, 1);
 
 	dev_dbg(dev->gdev, "checking var");
 	retval = ufx_ops_check_var(&info->var, info);
-	check_warn_goto_error(retval, "error %d ufx_ops_check_var", retval);
+	if (retval < 0) {
+		dev_err(dev->gdev, "error %d ufx_ops_check_var", retval);
+		goto reset_active;
+	}
 
 	dev_dbg(dev->gdev, "setting par");
 	retval = ufx_ops_set_par(info);
-	check_warn_goto_error(retval, "error %d ufx_ops_set_par", retval);
+	if (retval < 0) {
+		dev_err(dev->gdev, "error %d ufx_ops_set_par", retval);
+		goto reset_active;
+	}
 
 	dev_dbg(dev->gdev, "registering framebuffer");
 	retval = register_framebuffer(info);
-	check_warn_goto_error(retval, "error %d register_framebuffer", retval);
+	if (retval < 0) {
+		dev_err(dev->gdev, "error %d register_framebuffer", retval);
+		goto reset_active;
+	}
 
 	dev_info(dev->gdev, "SMSC UDX USB device /dev/fb%d attached. %dx%d resolution."
 		" Using %dK framebuffer memory\n", info->node,
@@ -1727,21 +1741,23 @@ static int ufx_usb_probe(struct usb_inte
 
 	return 0;
 
-error:
-	fb_dealloc_cmap(&info->cmap);
-destroy_modedb:
+reset_active:
+	atomic_set(&dev->usb_active, 0);
+setup_modes:
 	fb_destroy_modedb(info->monspecs.modedb);
 	vfree(info->screen_base);
 	fb_destroy_modelist(&info->modelist);
+error:
+	fb_dealloc_cmap(&info->cmap);
+destroy_modedb:
 	framebuffer_release(info);
+free_urb_list:
+	if (dev->urbs.count > 0)
+		ufx_free_urb_list(dev);
 put_ref:
 	kref_put(&dev->kref, ufx_free); /* ref for framebuffer */
 	kref_put(&dev->kref, ufx_free); /* last ref from kref_init */
 	return retval;
-
-e_nomem:
-	retval = -ENOMEM;
-	goto put_ref;
 }
 
 static void ufx_usb_disconnect(struct usb_interface *interface)



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

* [PATCH 5.10 087/139] f2fs: fix to do sanity check on i_extra_isize in is_alive()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (85 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 086/139] fbdev: smscufx: fix error handling code in ufx_usb_probe Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 088/139] wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads Greg Kroah-Hartman
                   ` (60 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+f8f3dfa4abc489e768a1,
	Chao Yu, Jaegeuk Kim

From: Chao Yu <chao@kernel.org>

commit d3b7b4afd6b2c344eabf9cc26b8bfa903c164c7c upstream.

syzbot found a f2fs bug:

BUG: KASAN: slab-out-of-bounds in data_blkaddr fs/f2fs/f2fs.h:2891 [inline]
BUG: KASAN: slab-out-of-bounds in is_alive fs/f2fs/gc.c:1117 [inline]
BUG: KASAN: slab-out-of-bounds in gc_data_segment fs/f2fs/gc.c:1520 [inline]
BUG: KASAN: slab-out-of-bounds in do_garbage_collect+0x386a/0x3df0 fs/f2fs/gc.c:1734
Read of size 4 at addr ffff888076557568 by task kworker/u4:3/52

CPU: 1 PID: 52 Comm: kworker/u4:3 Not tainted 6.1.0-rc4-syzkaller-00362-gfef7fd48922d #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Workqueue: writeback wb_workfn (flush-7:0)
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
print_address_description mm/kasan/report.c:284 [inline]
print_report+0x15e/0x45d mm/kasan/report.c:395
kasan_report+0xbb/0x1f0 mm/kasan/report.c:495
data_blkaddr fs/f2fs/f2fs.h:2891 [inline]
is_alive fs/f2fs/gc.c:1117 [inline]
gc_data_segment fs/f2fs/gc.c:1520 [inline]
do_garbage_collect+0x386a/0x3df0 fs/f2fs/gc.c:1734
f2fs_gc+0x88c/0x20a0 fs/f2fs/gc.c:1831
f2fs_balance_fs+0x544/0x6b0 fs/f2fs/segment.c:410
f2fs_write_inode+0x57e/0xe20 fs/f2fs/inode.c:753
write_inode fs/fs-writeback.c:1440 [inline]
__writeback_single_inode+0xcfc/0x1440 fs/fs-writeback.c:1652
writeback_sb_inodes+0x54d/0xf90 fs/fs-writeback.c:1870
wb_writeback+0x2c5/0xd70 fs/fs-writeback.c:2044
wb_do_writeback fs/fs-writeback.c:2187 [inline]
wb_workfn+0x2dc/0x12f0 fs/fs-writeback.c:2227
process_one_work+0x9bf/0x1710 kernel/workqueue.c:2289
worker_thread+0x665/0x1080 kernel/workqueue.c:2436
kthread+0x2e4/0x3a0 kernel/kthread.c:376
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306

The root cause is that we forgot to do sanity check on .i_extra_isize
in below path, result in accessing invalid address later, fix it.
- gc_data_segment
 - is_alive
  - data_blkaddr
   - offset_in_addr

Reported-by: syzbot+f8f3dfa4abc489e768a1@syzkaller.appspotmail.com
Link: https://lore.kernel.org/linux-f2fs-devel/0000000000003cb3c405ed5c17f9@google.com/T/#u
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/f2fs/gc.c |   18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -977,7 +977,7 @@ static bool is_alive(struct f2fs_sb_info
 {
 	struct page *node_page;
 	nid_t nid;
-	unsigned int ofs_in_node, max_addrs;
+	unsigned int ofs_in_node, max_addrs, base;
 	block_t source_blkaddr;
 
 	nid = le32_to_cpu(sum->nid);
@@ -1003,11 +1003,17 @@ static bool is_alive(struct f2fs_sb_info
 		return false;
 	}
 
-	max_addrs = IS_INODE(node_page) ? DEF_ADDRS_PER_INODE :
-						DEF_ADDRS_PER_BLOCK;
-	if (ofs_in_node >= max_addrs) {
-		f2fs_err(sbi, "Inconsistent ofs_in_node:%u in summary, ino:%u, nid:%u, max:%u",
-			ofs_in_node, dni->ino, dni->nid, max_addrs);
+	if (IS_INODE(node_page)) {
+		base = offset_in_addr(F2FS_INODE(node_page));
+		max_addrs = DEF_ADDRS_PER_INODE;
+	} else {
+		base = 0;
+		max_addrs = DEF_ADDRS_PER_BLOCK;
+	}
+
+	if (base + ofs_in_node >= max_addrs) {
+		f2fs_err(sbi, "Inconsistent blkaddr offset: base:%u, ofs_in_node:%u, max:%u, ino:%u, nid:%u",
+			base, ofs_in_node, max_addrs, dni->ino, dni->nid);
 		f2fs_put_page(node_page, 1);
 		return false;
 	}



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

* [PATCH 5.10 088/139] wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (86 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 087/139] f2fs: fix to do sanity check on i_extra_isize in is_alive() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 089/139] nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property Greg Kroah-Hartman
                   ` (59 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dokyung Song, Jisoo Jang,
	Minsuk Kang, Arend van Spriel, Kalle Valo

From: Minsuk Kang <linuxlovemin@yonsei.ac.kr>

commit 4920ab131b2dbae7464b72bdcac465d070254209 upstream.

This patch fixes slab-out-of-bounds reads in brcmfmac that occur in
brcmf_construct_chaninfo() and brcmf_enable_bw40_2g() when the count
value of channel specifications provided by the device is greater than
the length of 'list->element[]', decided by the size of the 'list'
allocated with kzalloc(). The patch adds checks that make the functions
free the buffer and return -EINVAL if that is the case. Note that the
negative return is handled by the caller, brcmf_setup_wiphybands() or
brcmf_cfg80211_attach().

Found by a modified version of syzkaller.

Crash Report from brcmf_construct_chaninfo():
==================================================================
BUG: KASAN: slab-out-of-bounds in brcmf_setup_wiphybands+0x1238/0x1430
Read of size 4 at addr ffff888115f24600 by task kworker/0:2/1896

CPU: 0 PID: 1896 Comm: kworker/0:2 Tainted: G        W  O      5.14.0+ #132
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
Workqueue: usb_hub_wq hub_event
Call Trace:
 dump_stack_lvl+0x57/0x7d
 print_address_description.constprop.0.cold+0x93/0x334
 kasan_report.cold+0x83/0xdf
 brcmf_setup_wiphybands+0x1238/0x1430
 brcmf_cfg80211_attach+0x2118/0x3fd0
 brcmf_attach+0x389/0xd40
 brcmf_usb_probe+0x12de/0x1690
 usb_probe_interface+0x25f/0x710
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_set_configuration+0x984/0x1770
 usb_generic_driver_probe+0x69/0x90
 usb_probe_device+0x9c/0x220
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_new_device.cold+0x463/0xf66
 hub_event+0x10d5/0x3330
 process_one_work+0x873/0x13e0
 worker_thread+0x8b/0xd10
 kthread+0x379/0x450
 ret_from_fork+0x1f/0x30

Allocated by task 1896:
 kasan_save_stack+0x1b/0x40
 __kasan_kmalloc+0x7c/0x90
 kmem_cache_alloc_trace+0x19e/0x330
 brcmf_setup_wiphybands+0x290/0x1430
 brcmf_cfg80211_attach+0x2118/0x3fd0
 brcmf_attach+0x389/0xd40
 brcmf_usb_probe+0x12de/0x1690
 usb_probe_interface+0x25f/0x710
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_set_configuration+0x984/0x1770
 usb_generic_driver_probe+0x69/0x90
 usb_probe_device+0x9c/0x220
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_new_device.cold+0x463/0xf66
 hub_event+0x10d5/0x3330
 process_one_work+0x873/0x13e0
 worker_thread+0x8b/0xd10
 kthread+0x379/0x450
 ret_from_fork+0x1f/0x30

The buggy address belongs to the object at ffff888115f24000
 which belongs to the cache kmalloc-2k of size 2048
The buggy address is located 1536 bytes inside of
 2048-byte region [ffff888115f24000, ffff888115f24800)

Memory state around the buggy address:
 ffff888115f24500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffff888115f24580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff888115f24600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                   ^
 ffff888115f24680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff888115f24700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================

Crash Report from brcmf_enable_bw40_2g():
==================================================================
BUG: KASAN: slab-out-of-bounds in brcmf_cfg80211_attach+0x3d11/0x3fd0
Read of size 4 at addr ffff888103787600 by task kworker/0:2/1896

CPU: 0 PID: 1896 Comm: kworker/0:2 Tainted: G        W  O      5.14.0+ #132
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
Workqueue: usb_hub_wq hub_event
Call Trace:
 dump_stack_lvl+0x57/0x7d
 print_address_description.constprop.0.cold+0x93/0x334
 kasan_report.cold+0x83/0xdf
 brcmf_cfg80211_attach+0x3d11/0x3fd0
 brcmf_attach+0x389/0xd40
 brcmf_usb_probe+0x12de/0x1690
 usb_probe_interface+0x25f/0x710
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_set_configuration+0x984/0x1770
 usb_generic_driver_probe+0x69/0x90
 usb_probe_device+0x9c/0x220
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_new_device.cold+0x463/0xf66
 hub_event+0x10d5/0x3330
 process_one_work+0x873/0x13e0
 worker_thread+0x8b/0xd10
 kthread+0x379/0x450
 ret_from_fork+0x1f/0x30

Allocated by task 1896:
 kasan_save_stack+0x1b/0x40
 __kasan_kmalloc+0x7c/0x90
 kmem_cache_alloc_trace+0x19e/0x330
 brcmf_cfg80211_attach+0x3302/0x3fd0
 brcmf_attach+0x389/0xd40
 brcmf_usb_probe+0x12de/0x1690
 usb_probe_interface+0x25f/0x710
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_set_configuration+0x984/0x1770
 usb_generic_driver_probe+0x69/0x90
 usb_probe_device+0x9c/0x220
 really_probe+0x1be/0xa90
 __driver_probe_device+0x2ab/0x460
 driver_probe_device+0x49/0x120
 __device_attach_driver+0x18a/0x250
 bus_for_each_drv+0x123/0x1a0
 __device_attach+0x207/0x330
 bus_probe_device+0x1a2/0x260
 device_add+0xa61/0x1ce0
 usb_new_device.cold+0x463/0xf66
 hub_event+0x10d5/0x3330
 process_one_work+0x873/0x13e0
 worker_thread+0x8b/0xd10
 kthread+0x379/0x450
 ret_from_fork+0x1f/0x30

The buggy address belongs to the object at ffff888103787000
 which belongs to the cache kmalloc-2k of size 2048
The buggy address is located 1536 bytes inside of
 2048-byte region [ffff888103787000, ffff888103787800)

Memory state around the buggy address:
 ffff888103787500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffff888103787580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff888103787600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                   ^
 ffff888103787680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff888103787700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================

Reported-by: Dokyung Song <dokyungs@yonsei.ac.kr>
Reported-by: Jisoo Jang <jisoo.jang@yonsei.ac.kr>
Reported-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20221116142952.518241-1-linuxlovemin@yonsei.ac.kr
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c |   17 ++++++++++++
 1 file changed, 17 insertions(+)

--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -90,6 +90,9 @@
 #define BRCMF_ASSOC_PARAMS_FIXED_SIZE \
 	(sizeof(struct brcmf_assoc_params_le) - sizeof(u16))
 
+#define BRCMF_MAX_CHANSPEC_LIST \
+	(BRCMF_DCMD_MEDLEN / sizeof(__le32) - 1)
+
 static bool check_vif_up(struct brcmf_cfg80211_vif *vif)
 {
 	if (!test_bit(BRCMF_VIF_STATUS_READY, &vif->sme_state)) {
@@ -6459,6 +6462,13 @@ static int brcmf_construct_chaninfo(stru
 			band->channels[i].flags = IEEE80211_CHAN_DISABLED;
 
 	total = le32_to_cpu(list->count);
+	if (total > BRCMF_MAX_CHANSPEC_LIST) {
+		bphy_err(drvr, "Invalid count of channel Spec. (%u)\n",
+			 total);
+		err = -EINVAL;
+		goto fail_pbuf;
+	}
+
 	for (i = 0; i < total; i++) {
 		ch.chspec = (u16)le32_to_cpu(list->element[i]);
 		cfg->d11inf.decchspec(&ch);
@@ -6604,6 +6614,13 @@ static int brcmf_enable_bw40_2g(struct b
 		band = cfg_to_wiphy(cfg)->bands[NL80211_BAND_2GHZ];
 		list = (struct brcmf_chanspec_list *)pbuf;
 		num_chan = le32_to_cpu(list->count);
+		if (num_chan > BRCMF_MAX_CHANSPEC_LIST) {
+			bphy_err(drvr, "Invalid count of channel Spec. (%u)\n",
+				 num_chan);
+			kfree(pbuf);
+			return -EINVAL;
+		}
+
 		for (i = 0; i < num_chan; i++) {
 			ch.chspec = (u16)le32_to_cpu(list->element[i]);
 			cfg->d11inf.decchspec(&ch);



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

* [PATCH 5.10 089/139] nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (87 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 088/139] wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 090/139] nvmem: core: add error handling for dev_set_name Greg Kroah-Hartman
                   ` (58 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christophe Kerello,
	Srinivas Kandagatla, Sasha Levin

From: Christophe Kerello <christophe.kerello@foss.st.com>

[ Upstream commit f6c052afe6f802d87c74153b7a57c43b2e9faf07 ]

Wp-gpios property can be used on NVMEM nodes and the same property can
be also used on MTD NAND nodes. In case of the wp-gpios property is
defined at NAND level node, the GPIO management is done at NAND driver
level. Write protect is disabled when the driver is probed or resumed
and is enabled when the driver is released or suspended.

When no partitions are defined in the NAND DT node, then the NAND DT node
will be passed to NVMEM framework. If wp-gpios property is defined in
this node, the GPIO resource is taken twice and the NAND controller
driver fails to probe.

It would be possible to set config->wp_gpio at MTD level before calling
nvmem_register function but NVMEM framework will toggle this GPIO on
each write when this GPIO should only be controlled at NAND level driver
to ensure that the Write Protect has not been enabled.

A way to fix this conflict is to add a new boolean flag in nvmem_config
named ignore_wp. In case ignore_wp is set, the GPIO resource will
be managed by the provider.

Fixes: 2a127da461a9 ("nvmem: add support for the write-protect pin")
Cc: stable@vger.kernel.org
Signed-off-by: Christophe Kerello <christophe.kerello@foss.st.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20220220151432.16605-2-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: ab3428cfd9aa ("nvmem: core: fix registration vs use race")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvmem/core.c           | 2 +-
 include/linux/nvmem-provider.h | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 7b281ae540ad8..48fbe49e3772b 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -629,7 +629,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 
 	if (config->wp_gpio)
 		nvmem->wp_gpio = config->wp_gpio;
-	else
+	else if (!config->ignore_wp)
 		nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp",
 						    GPIOD_OUT_HIGH);
 	if (IS_ERR(nvmem->wp_gpio)) {
diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
index 06409a6c40bcb..39ec67689898b 100644
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -49,7 +49,8 @@ enum nvmem_type {
  * @word_size:	Minimum read/write access granularity.
  * @stride:	Minimum read/write access stride.
  * @priv:	User context passed to read/write callbacks.
- * @wp-gpio:   Write protect pin
+ * @wp-gpio:	Write protect pin
+ * @ignore_wp:  Write Protect pin is managed by the provider.
  *
  * Note: A default "nvmem<id>" name will be assigned to the device if
  * no name is specified in its configuration. In such case "<id>" is
@@ -69,6 +70,7 @@ struct nvmem_config {
 	enum nvmem_type		type;
 	bool			read_only;
 	bool			root_only;
+	bool			ignore_wp;
 	bool			no_of_node;
 	nvmem_reg_read_t	reg_read;
 	nvmem_reg_write_t	reg_write;
-- 
2.39.0




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

* [PATCH 5.10 090/139] nvmem: core: add error handling for dev_set_name
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (88 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 089/139] nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 091/139] nvmem: core: remove nvmem_config wp_gpio Greg Kroah-Hartman
                   ` (57 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Gaosheng Cui, Srinivas Kandagatla,
	Sasha Levin

From: Gaosheng Cui <cuigaosheng1@huawei.com>

[ Upstream commit 5544e90c81261e82e02bbf7c6015a4b9c8c825ef ]

The type of return value of dev_set_name is int, which may return
wrong result, so we add error handling for it to reclaim memory
of nvmem resource, and return early when an error occurs.

Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20220916122100.170016-4-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: ab3428cfd9aa ("nvmem: core: fix registration vs use race")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvmem/core.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 48fbe49e3772b..9da4edbabfe75 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -661,18 +661,24 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 
 	switch (config->id) {
 	case NVMEM_DEVID_NONE:
-		dev_set_name(&nvmem->dev, "%s", config->name);
+		rval = dev_set_name(&nvmem->dev, "%s", config->name);
 		break;
 	case NVMEM_DEVID_AUTO:
-		dev_set_name(&nvmem->dev, "%s%d", config->name, nvmem->id);
+		rval = dev_set_name(&nvmem->dev, "%s%d", config->name, nvmem->id);
 		break;
 	default:
-		dev_set_name(&nvmem->dev, "%s%d",
+		rval = dev_set_name(&nvmem->dev, "%s%d",
 			     config->name ? : "nvmem",
 			     config->name ? config->id : nvmem->id);
 		break;
 	}
 
+	if (rval) {
+		ida_free(&nvmem_ida, nvmem->id);
+		kfree(nvmem);
+		return ERR_PTR(rval);
+	}
+
 	nvmem->read_only = device_property_present(config->dev, "read-only") ||
 			   config->read_only || !nvmem->reg_write;
 
-- 
2.39.0




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

* [PATCH 5.10 091/139] nvmem: core: remove nvmem_config wp_gpio
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (89 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 090/139] nvmem: core: add error handling for dev_set_name Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 092/139] nvmem: core: fix cleanup after dev_set_name() Greg Kroah-Hartman
                   ` (56 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Russell King (Oracle),
	Srinivas Kandagatla, Sasha Levin

From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

[ Upstream commit 569653f022a29a1a44ea9de5308b657228303fa5 ]

No one provides wp_gpio, so let's remove it to avoid issues with
the nvmem core putting this gpio.

Cc: stable@vger.kernel.org
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-5-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: ab3428cfd9aa ("nvmem: core: fix registration vs use race")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvmem/core.c           | 4 +---
 include/linux/nvmem-provider.h | 2 --
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 9da4edbabfe75..38c05fce7d740 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -627,9 +627,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 
 	nvmem->id = rval;
 
-	if (config->wp_gpio)
-		nvmem->wp_gpio = config->wp_gpio;
-	else if (!config->ignore_wp)
+	if (!config->ignore_wp)
 		nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp",
 						    GPIOD_OUT_HIGH);
 	if (IS_ERR(nvmem->wp_gpio)) {
diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
index 39ec67689898b..5e07f3cfad301 100644
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -49,7 +49,6 @@ enum nvmem_type {
  * @word_size:	Minimum read/write access granularity.
  * @stride:	Minimum read/write access stride.
  * @priv:	User context passed to read/write callbacks.
- * @wp-gpio:	Write protect pin
  * @ignore_wp:  Write Protect pin is managed by the provider.
  *
  * Note: A default "nvmem<id>" name will be assigned to the device if
@@ -64,7 +63,6 @@ struct nvmem_config {
 	const char		*name;
 	int			id;
 	struct module		*owner;
-	struct gpio_desc	*wp_gpio;
 	const struct nvmem_cell_info	*cells;
 	int			ncells;
 	enum nvmem_type		type;
-- 
2.39.0




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

* [PATCH 5.10 092/139] nvmem: core: fix cleanup after dev_set_name()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (90 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 091/139] nvmem: core: remove nvmem_config wp_gpio Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 093/139] nvmem: core: fix registration vs use race Greg Kroah-Hartman
                   ` (55 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, kernel test robot, Dan Carpenter,
	Russell King (Oracle),
	Srinivas Kandagatla, Sasha Levin

From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

[ Upstream commit 560181d3ace61825f4ca9dd3481d6c0ee6709fa8 ]

If dev_set_name() fails, we leak nvmem->wp_gpio as the cleanup does not
put this. While a minimal fix for this would be to add the gpiod_put()
call, we can do better if we split device_register(), and use the
tested nvmem_release() cleanup code by initialising the device early,
and putting the device.

This results in a slightly larger fix, but results in clear code.

Note: this patch depends on "nvmem: core: initialise nvmem->id early"
and "nvmem: core: remove nvmem_config wp_gpio".

Fixes: 5544e90c8126 ("nvmem: core: add error handling for dev_set_name")
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
[Srini: Fixed subject line and error code handing with wp_gpio while applying.]
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-6-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: ab3428cfd9aa ("nvmem: core: fix registration vs use race")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvmem/core.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 38c05fce7d740..de356cdde4ce8 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -627,14 +627,18 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 
 	nvmem->id = rval;
 
+	nvmem->dev.type = &nvmem_provider_type;
+	nvmem->dev.bus = &nvmem_bus_type;
+	nvmem->dev.parent = config->dev;
+
+	device_initialize(&nvmem->dev);
+
 	if (!config->ignore_wp)
 		nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp",
 						    GPIOD_OUT_HIGH);
 	if (IS_ERR(nvmem->wp_gpio)) {
-		ida_free(&nvmem_ida, nvmem->id);
 		rval = PTR_ERR(nvmem->wp_gpio);
-		kfree(nvmem);
-		return ERR_PTR(rval);
+		goto err_put_device;
 	}
 
 	kref_init(&nvmem->refcnt);
@@ -646,9 +650,6 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 	nvmem->stride = config->stride ?: 1;
 	nvmem->word_size = config->word_size ?: 1;
 	nvmem->size = config->size;
-	nvmem->dev.type = &nvmem_provider_type;
-	nvmem->dev.bus = &nvmem_bus_type;
-	nvmem->dev.parent = config->dev;
 	nvmem->root_only = config->root_only;
 	nvmem->priv = config->priv;
 	nvmem->type = config->type;
@@ -671,11 +672,8 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 		break;
 	}
 
-	if (rval) {
-		ida_free(&nvmem_ida, nvmem->id);
-		kfree(nvmem);
-		return ERR_PTR(rval);
-	}
+	if (rval)
+		goto err_put_device;
 
 	nvmem->read_only = device_property_present(config->dev, "read-only") ||
 			   config->read_only || !nvmem->reg_write;
@@ -686,7 +684,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 
 	dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
 
-	rval = device_register(&nvmem->dev);
+	rval = device_add(&nvmem->dev);
 	if (rval)
 		goto err_put_device;
 
-- 
2.39.0




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

* [PATCH 5.10 093/139] nvmem: core: fix registration vs use race
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (91 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 092/139] nvmem: core: fix cleanup after dev_set_name() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 094/139] bpf: Do not reject when the stack read size is different from the tracked scalar size Greg Kroah-Hartman
                   ` (54 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Russell King (Oracle),
	Srinivas Kandagatla, Sasha Levin

From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

[ Upstream commit ab3428cfd9aa2f3463ee4b2909b5bb2193bd0c4a ]

The i.MX6 CPU frequency driver sometimes fails to register at boot time
due to nvmem_cell_read_u32() sporadically returning -ENOENT.

This happens because there is a window where __nvmem_device_get() in
of_nvmem_cell_get() is able to return the nvmem device, but as cells
have been setup, nvmem_find_cell_entry_by_node() returns NULL.

The occurs because the nvmem core registration code violates one of the
fundamental principles of kernel programming: do not publish data
structures before their setup is complete.

Fix this by making nvmem core code conform with this principle.

Fixes: eace75cfdcf7 ("nvmem: Add a simple NVMEM framework for nvmem providers")
Cc: stable@vger.kernel.org
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-7-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvmem/core.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index de356cdde4ce8..cdbd943d2c348 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -691,7 +691,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 	if (config->compat) {
 		rval = nvmem_sysfs_setup_compat(nvmem, config);
 		if (rval)
-			goto err_device_del;
+			goto err_put_device;
 	}
 
 	if (config->cells) {
@@ -708,6 +708,12 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 	if (rval)
 		goto err_remove_cells;
 
+	dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
+
+	rval = device_add(&nvmem->dev);
+	if (rval)
+		goto err_remove_cells;
+
 	blocking_notifier_call_chain(&nvmem_notifier, NVMEM_ADD, nvmem);
 
 	return nvmem;
@@ -716,8 +722,6 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 	nvmem_device_remove_all_cells(nvmem);
 	if (config->compat)
 		nvmem_sysfs_remove_compat(nvmem, config);
-err_device_del:
-	device_del(&nvmem->dev);
 err_put_device:
 	put_device(&nvmem->dev);
 
-- 
2.39.0




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

* [PATCH 5.10 094/139] bpf: Do not reject when the stack read size is different from the tracked scalar size
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (92 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 093/139] nvmem: core: fix registration vs use race Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 095/139] iio:adc:twl6030: Enable measurement of VAC Greg Kroah-Hartman
                   ` (53 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hengqi Chen, Yonghong Song,
	Martin KaFai Lau, Daniel Borkmann, Yonghong Song, Sasha Levin

From: Martin KaFai Lau <kafai@fb.com>

[ Upstream commit f30d4968e9aee737e174fc97942af46cfb49b484 ]

Below is a simplified case from a report in bcc [0]:

  r4 = 20
  *(u32 *)(r10 -4) = r4
  *(u32 *)(r10 -8) = r4  /* r4 state is tracked */
  r4 = *(u64 *)(r10 -8)  /* Read more than the tracked 32bit scalar.
			  * verifier rejects as 'corrupted spill memory'.
			  */

After commit 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill"),
the 8-byte aligned 32bit spill is also tracked by the verifier and the
register state is stored.

However, if 8 bytes are read from the stack instead of the tracked 4 byte
scalar, then verifier currently rejects the program as "corrupted spill
memory". This patch fixes this case by allowing it to read but marks the
register as unknown.

Also note that, if the prog is trying to corrupt/leak an earlier spilled
pointer by spilling another <8 bytes register on top, this has already
been rejected in the check_stack_write_fixed_off().

  [0] https://github.com/iovisor/bcc/pull/3683

Fixes: 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill")
Reported-by: Hengqi Chen <hengqi.chen@gmail.com>
Reported-by: Yonghong Song <yhs@gmail.com>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Hengqi Chen <hengqi.chen@gmail.com>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20211102064535.316018-1-kafai@fb.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/bpf/verifier.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 0d0d7b140f05a..9e5f1ebe67d7f 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -2597,9 +2597,12 @@ static int check_stack_read_fixed_off(struct bpf_verifier_env *env,
 	reg = &reg_state->stack[spi].spilled_ptr;
 
 	if (is_spilled_reg(&reg_state->stack[spi])) {
-		if (size != BPF_REG_SIZE) {
-			u8 scalar_size = 0;
+		u8 spill_size = 1;
+
+		for (i = BPF_REG_SIZE - 1; i > 0 && stype[i - 1] == STACK_SPILL; i--)
+			spill_size++;
 
+		if (size != BPF_REG_SIZE || spill_size != BPF_REG_SIZE) {
 			if (reg->type != SCALAR_VALUE) {
 				verbose_linfo(env, env->insn_idx, "; ");
 				verbose(env, "invalid size of register fill\n");
@@ -2610,10 +2613,7 @@ static int check_stack_read_fixed_off(struct bpf_verifier_env *env,
 			if (dst_regno < 0)
 				return 0;
 
-			for (i = BPF_REG_SIZE; i > 0 && stype[i - 1] == STACK_SPILL; i--)
-				scalar_size++;
-
-			if (!(off % BPF_REG_SIZE) && size == scalar_size) {
+			if (!(off % BPF_REG_SIZE) && size == spill_size) {
 				/* The earlier check_reg_arg() has decided the
 				 * subreg_def for this insn.  Save it first.
 				 */
@@ -2637,12 +2637,6 @@ static int check_stack_read_fixed_off(struct bpf_verifier_env *env,
 			state->regs[dst_regno].live |= REG_LIVE_WRITTEN;
 			return 0;
 		}
-		for (i = 1; i < BPF_REG_SIZE; i++) {
-			if (stype[(slot - i) % BPF_REG_SIZE] != STACK_SPILL) {
-				verbose(env, "corrupted spill memory\n");
-				return -EACCES;
-			}
-		}
 
 		if (dst_regno >= 0) {
 			/* restore register state from stack */
-- 
2.39.0




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

* [PATCH 5.10 095/139] iio:adc:twl6030: Enable measurement of VAC
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (93 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 094/139] bpf: Do not reject when the stack read size is different from the tracked scalar size Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 096/139] mm/migration: return errno when isolate_huge_page failed Greg Kroah-Hartman
                   ` (52 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, kernel test robot, Julia Lawall,
	Andreas Kemnade, Jonathan Cameron, Sasha Levin

From: Andreas Kemnade <andreas@kemnade.info>

[ Upstream commit bffb7d9d1a3dbd09e083b88aefd093b3b10abbfb ]

VAC needs to be wired up to produce proper measurements,
without this change only near zero values are reported.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Fixes: 1696f36482e7 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Link: https://lore.kernel.org/r/20221217221305.671117-1-andreas@kemnade.info
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/iio/adc/twl6030-gpadc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/twl6030-gpadc.c b/drivers/iio/adc/twl6030-gpadc.c
index 9ab23b29bee3f..024bdc1ef77e6 100644
--- a/drivers/iio/adc/twl6030-gpadc.c
+++ b/drivers/iio/adc/twl6030-gpadc.c
@@ -952,7 +952,7 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)
 	}
 
 	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0,
-				VBAT_MEAS | BB_MEAS | BB_MEAS,
+				VBAT_MEAS | BB_MEAS | VAC_MEAS,
 				TWL6030_MISC1);
 	if (ret < 0) {
 		dev_err(dev, "failed to wire up inputs\n");
-- 
2.39.0




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

* [PATCH 5.10 096/139] mm/migration: return errno when isolate_huge_page failed
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (94 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 095/139] iio:adc:twl6030: Enable measurement of VAC Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 097/139] migrate: hugetlb: check for hugetlb shared PMD in node migration Greg Kroah-Hartman
                   ` (51 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Miaohe Lin, Huang Ying,
	Alistair Popple, Christoph Hellwig, Christoph Lameter,
	David Hildenbrand, David Howells, Mike Kravetz, Muchun Song,
	Oscar Salvador, Peter Xu, Andrew Morton, Sasha Levin,
	kernel test robot

From: Miaohe Lin <linmiaohe@huawei.com>

[ Upstream commit 7ce82f4c3f3ead13a9d9498768e3b1a79975c4d8 ]

We might fail to isolate huge page due to e.g.  the page is under
migration which cleared HPageMigratable.  We should return errno in this
case rather than always return 1 which could confuse the user, i.e.  the
caller might think all of the memory is migrated while the hugetlb page is
left behind.  We make the prototype of isolate_huge_page consistent with
isolate_lru_page as suggested by Huang Ying and rename isolate_huge_page
to isolate_hugetlb as suggested by Muchun to improve the readability.

Link: https://lkml.kernel.org/r/20220530113016.16663-4-linmiaohe@huawei.com
Fixes: e8db67eb0ded ("mm: migrate: move_pages() supports thp migration")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Suggested-by: Huang Ying <ying.huang@intel.com>
Reported-by: kernel test robot <lkp@intel.com> (build error)
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Christoph Lameter <cl@linux.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Stable-dep-of: 73bdf65ea748 ("migrate: hugetlb: check for hugetlb shared PMD in node migration")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/hugetlb.h | 6 +++---
 mm/gup.c                | 2 +-
 mm/hugetlb.c            | 6 +++---
 mm/memory-failure.c     | 2 +-
 mm/memory_hotplug.c     | 2 +-
 mm/mempolicy.c          | 2 +-
 mm/migrate.c            | 7 ++++---
 7 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index a18fc8e5a3ddb..c0ba379574a46 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -145,7 +145,7 @@ int hugetlb_reserve_pages(struct inode *inode, long from, long to,
 						vm_flags_t vm_flags);
 long hugetlb_unreserve_pages(struct inode *inode, long start, long end,
 						long freed);
-bool isolate_huge_page(struct page *page, struct list_head *list);
+int isolate_hugetlb(struct page *page, struct list_head *list);
 void putback_active_hugepage(struct page *page);
 void move_hugetlb_state(struct page *oldpage, struct page *newpage, int reason);
 void free_huge_page(struct page *page);
@@ -326,9 +326,9 @@ static inline pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr,
 	return NULL;
 }
 
-static inline bool isolate_huge_page(struct page *page, struct list_head *list)
+static inline int isolate_hugetlb(struct page *page, struct list_head *list)
 {
-	return false;
+	return -EBUSY;
 }
 
 static inline void putback_active_hugepage(struct page *page)
diff --git a/mm/gup.c b/mm/gup.c
index 6d5e4fd55d320..11307a8b20d58 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -1627,7 +1627,7 @@ static long check_and_migrate_cma_pages(struct mm_struct *mm,
 		 */
 		if (is_migrate_cma_page(head)) {
 			if (PageHuge(head)) {
-				if (!isolate_huge_page(head, &cma_page_list))
+				if (isolate_hugetlb(head, &cma_page_list))
 					isolation_error_count++;
 			} else {
 				if (!PageLRU(head) && drain_allow) {
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 3499b3803384b..81949f6d29af5 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -5655,14 +5655,14 @@ follow_huge_pgd(struct mm_struct *mm, unsigned long address, pgd_t *pgd, int fla
 	return pte_page(*(pte_t *)pgd) + ((address & ~PGDIR_MASK) >> PAGE_SHIFT);
 }
 
-bool isolate_huge_page(struct page *page, struct list_head *list)
+int isolate_hugetlb(struct page *page, struct list_head *list)
 {
-	bool ret = true;
+	int ret = 0;
 
 	spin_lock(&hugetlb_lock);
 	if (!PageHeadHuge(page) || !page_huge_active(page) ||
 	    !get_page_unless_zero(page)) {
-		ret = false;
+		ret = -EBUSY;
 		goto unlock;
 	}
 	clear_page_huge_active(page);
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index aef267c6a7246..b21dd4a793926 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1763,7 +1763,7 @@ static bool isolate_page(struct page *page, struct list_head *pagelist)
 	bool lru = PageLRU(page);
 
 	if (PageHuge(page)) {
-		isolated = isolate_huge_page(page, pagelist);
+		isolated = !isolate_hugetlb(page, pagelist);
 	} else {
 		if (lru)
 			isolated = !isolate_lru_page(page);
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 6275b1c05f111..f0633f9a91166 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1288,7 +1288,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
 
 		if (PageHuge(page)) {
 			pfn = page_to_pfn(head) + compound_nr(head) - 1;
-			isolate_huge_page(head, &source);
+			isolate_hugetlb(head, &source);
 			continue;
 		} else if (PageTransHuge(page))
 			pfn = page_to_pfn(head) + thp_nr_pages(page) - 1;
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index f9f47449e8dda..59d72b121346f 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -623,7 +623,7 @@ static int queue_pages_hugetlb(pte_t *pte, unsigned long hmask,
 	/* With MPOL_MF_MOVE, we migrate only unshared hugepage. */
 	if (flags & (MPOL_MF_MOVE_ALL) ||
 	    (flags & MPOL_MF_MOVE && page_mapcount(page) == 1)) {
-		if (!isolate_huge_page(page, qp->pagelist) &&
+		if (isolate_hugetlb(page, qp->pagelist) &&
 			(flags & MPOL_MF_STRICT))
 			/*
 			 * Failed to isolate page but allow migrating pages
diff --git a/mm/migrate.c b/mm/migrate.c
index b716b8fa2c3ff..fcb7eb6a6ecae 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -164,7 +164,7 @@ void putback_movable_page(struct page *page)
  *
  * This function shall be used whenever the isolated pageset has been
  * built from lru, balloon, hugetlbfs page. See isolate_migratepages_range()
- * and isolate_huge_page().
+ * and isolate_hugetlb().
  */
 void putback_movable_pages(struct list_head *l)
 {
@@ -1657,8 +1657,9 @@ static int add_page_for_migration(struct mm_struct *mm, unsigned long addr,
 
 	if (PageHuge(page)) {
 		if (PageHead(page)) {
-			isolate_huge_page(page, pagelist);
-			err = 1;
+			err = isolate_hugetlb(page, pagelist);
+			if (!err)
+				err = 1;
 		}
 	} else {
 		struct page *head;
-- 
2.39.0




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

* [PATCH 5.10 097/139] migrate: hugetlb: check for hugetlb shared PMD in node migration
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (95 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 096/139] mm/migration: return errno when isolate_huge_page failed Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 098/139] btrfs: limit device extents to the device size Greg Kroah-Hartman
                   ` (50 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mike Kravetz, Peter Xu,
	David Hildenbrand, James Houghton, Matthew Wilcox, Michal Hocko,
	Muchun Song, Naoya Horiguchi, Vishal Moola (Oracle),
	Yang Shi, Andrew Morton, Sasha Levin

From: Mike Kravetz <mike.kravetz@oracle.com>

[ Upstream commit 73bdf65ea74857d7fb2ec3067a3cec0e261b1462 ]

migrate_pages/mempolicy semantics state that CAP_SYS_NICE is required to
move pages shared with another process to a different node.  page_mapcount
> 1 is being used to determine if a hugetlb page is shared.  However, a
hugetlb page will have a mapcount of 1 if mapped by multiple processes via
a shared PMD.  As a result, hugetlb pages shared by multiple processes and
mapped with a shared PMD can be moved by a process without CAP_SYS_NICE.

To fix, check for a shared PMD if mapcount is 1.  If a shared PMD is found
consider the page shared.

Link: https://lkml.kernel.org/r/20230126222721.222195-3-mike.kravetz@oracle.com
Fixes: e2d8cf405525 ("migrate: add hugepage migration code to migrate_pages()")
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Acked-by: Peter Xu <peterx@redhat.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: James Houghton <jthoughton@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Cc: Yang Shi <shy828301@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 mm/mempolicy.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 59d72b121346f..6c98585f20dfe 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -622,7 +622,8 @@ static int queue_pages_hugetlb(pte_t *pte, unsigned long hmask,
 
 	/* With MPOL_MF_MOVE, we migrate only unshared hugepage. */
 	if (flags & (MPOL_MF_MOVE_ALL) ||
-	    (flags & MPOL_MF_MOVE && page_mapcount(page) == 1)) {
+	    (flags & MPOL_MF_MOVE && page_mapcount(page) == 1 &&
+	     !hugetlb_pmd_shared(pte))) {
 		if (isolate_hugetlb(page, qp->pagelist) &&
 			(flags & MPOL_MF_STRICT))
 			/*
-- 
2.39.0




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

* [PATCH 5.10 098/139] btrfs: limit device extents to the device size
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (96 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 097/139] migrate: hugetlb: check for hugetlb shared PMD in node migration Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 099/139] btrfs: zlib: zero-initialize zlib workspace Greg Kroah-Hartman
                   ` (49 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Josef Bacik, David Sterba

From: Josef Bacik <josef@toxicpanda.com>

commit 3c538de0f2a74d50aff7278c092f88ae59cee688 upstream.

There was a recent regression in btrfs/177 that started happening with
the size class patches ("btrfs: introduce size class to block group
allocator").  This however isn't a regression introduced by those
patches, but rather the bug was uncovered by a change in behavior in
these patches.  The patches triggered more chunk allocations in the
^free-space-tree case, which uncovered a race with device shrink.

The problem is we will set the device total size to the new size, and
use this to find a hole for a device extent.  However during shrink we
may have device extents allocated past this range, so we could
potentially find a hole in a range past our new shrink size.  We don't
actually limit our found extent to the device size anywhere, we assume
that we will not find a hole past our device size.  This isn't true with
shrink as we're relocating block groups and thus creating holes past the
device size.

Fix this by making sure we do not search past the new device size, and
if we wander into any device extents that start after our device size
simply break from the loop and use whatever hole we've already found.

CC: stable@vger.kernel.org # 4.14+
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/btrfs/volumes.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1580,7 +1580,7 @@ again:
 			goto out;
 	}
 
-	while (1) {
+	while (search_start < search_end) {
 		l = path->nodes[0];
 		slot = path->slots[0];
 		if (slot >= btrfs_header_nritems(l)) {
@@ -1603,6 +1603,9 @@ again:
 		if (key.type != BTRFS_DEV_EXTENT_KEY)
 			goto next;
 
+		if (key.offset > search_end)
+			break;
+
 		if (key.offset > search_start) {
 			hole_size = key.offset - search_start;
 			dev_extent_hole_check(device, &search_start, &hole_size,
@@ -1663,6 +1666,7 @@ next:
 	else
 		ret = 0;
 
+	ASSERT(max_hole_start + max_hole_size <= search_end);
 out:
 	btrfs_free_path(path);
 	*start = max_hole_start;



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

* [PATCH 5.10 099/139] btrfs: zlib: zero-initialize zlib workspace
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (97 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 098/139] btrfs: limit device extents to the device size Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 100/139] ALSA: hda/realtek: Add Positivo N14KP6-TG Greg Kroah-Hartman
                   ` (48 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, syzbot+14d9e7602ebdf7ec0a60,
	Alexander Potapenko, David Sterba

From: Alexander Potapenko <glider@google.com>

commit eadd7deca0ad8a83edb2b894d8326c78e78635d6 upstream.

KMSAN reports uses of uninitialized memory in zlib's longest_match()
called on memory originating from zlib_alloc_workspace().
This issue is known by zlib maintainers and is claimed to be harmless,
but to be on the safe side we'd better initialize the memory.

Link: https://zlib.net/zlib_faq.html#faq36
Reported-by: syzbot+14d9e7602ebdf7ec0a60@syzkaller.appspotmail.com
CC: stable@vger.kernel.org # 5.4+
Signed-off-by: Alexander Potapenko <glider@google.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/zlib.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/fs/btrfs/zlib.c
+++ b/fs/btrfs/zlib.c
@@ -63,7 +63,7 @@ struct list_head *zlib_alloc_workspace(u
 
 	workspacesize = max(zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL),
 			zlib_inflate_workspacesize());
-	workspace->strm.workspace = kvmalloc(workspacesize, GFP_KERNEL);
+	workspace->strm.workspace = kvzalloc(workspacesize, GFP_KERNEL);
 	workspace->level = level;
 	workspace->buf = NULL;
 	/*



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

* [PATCH 5.10 100/139] ALSA: hda/realtek: Add Positivo N14KP6-TG
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (98 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 099/139] btrfs: zlib: zero-initialize zlib workspace Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 101/139] ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control() Greg Kroah-Hartman
                   ` (47 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Edson Juliano Drosdeck, Takashi Iwai

From: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>

commit 88d18b8896bd98e636b632f805b7e84e61458255 upstream.

Positivo N14KP6-TG (1c6c:1251)
require quirk for enabling headset-mic

Signed-off-by: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20230207183720.2519-1-edson.drosdeck@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -9261,6 +9261,7 @@ static const struct snd_pci_quirk alc269
 	SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */
 	SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802),
 	SND_PCI_QUIRK(0x1c06, 0x2015, "Lemote A190X", ALC269_FIXUP_LEMOTE_A190X),
+	SND_PCI_QUIRK(0x1c6c, 0x1251, "Positivo N14KP6-TG", ALC288_FIXUP_DELL1_MIC_NO_PRESENCE),
 	SND_PCI_QUIRK(0x1d05, 0x1132, "TongFang PHxTxX1", ALC256_FIXUP_SET_COEF_DEFAULTS),
 	SND_PCI_QUIRK(0x1d05, 0x1096, "TongFang GMxMRxx", ALC269_FIXUP_NO_SHUTUP),
 	SND_PCI_QUIRK(0x1d05, 0x1100, "TongFang GKxNRxx", ALC269_FIXUP_NO_SHUTUP),



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

* [PATCH 5.10 101/139] ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (99 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 100/139] ALSA: hda/realtek: Add Positivo N14KP6-TG Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 102/139] ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360 Greg Kroah-Hartman
                   ` (46 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Artemii Karasev, Takashi Iwai

From: Artemii Karasev <karasev@ispras.ru>

commit 6a32425f953b955b4ff82f339d01df0b713caa5d upstream.

snd_emux_xg_control() can be called with an argument 'param' greater
than size of 'control' array. It may lead to accessing 'control'
array at a wrong index.

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

Signed-off-by: Artemii Karasev <karasev@ispras.ru>
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20230207132026.2870-1-karasev@ispras.ru
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 sound/synth/emux/emux_nrpn.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/sound/synth/emux/emux_nrpn.c
+++ b/sound/synth/emux/emux_nrpn.c
@@ -349,6 +349,9 @@ int
 snd_emux_xg_control(struct snd_emux_port *port, struct snd_midi_channel *chan,
 		    int param)
 {
+	if (param >= ARRAY_SIZE(chan->control))
+		return -EINVAL;
+
 	return send_converted_effect(xg_effects, ARRAY_SIZE(xg_effects),
 				     port, chan, param,
 				     chan->control[param],



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

* [PATCH 5.10 102/139] ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (100 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 101/139] ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 103/139] tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw Greg Kroah-Hartman
                   ` (45 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Guillaume Pinot, Takashi Iwai

From: Guillaume Pinot <texitoi@texitoi.eu>

commit bd401fd730cbcb0717bbc5438f15084db10f9259 upstream.

Samsung Galaxy Book2 Pro 360 (13" 2022 NP930QED-KA1FR) with codec SSID
144d:ca03 requires the same workaround for enabling the speaker amp
like other Samsung models with ALC298 codec.

Cc: <stable@vger.kernel.org>
Signed-off-by: Guillaume Pinot <texitoi@texitoi.eu>
Link: https://lore.kernel.org/r/20230129171338.17249-1-texitoi@texitoi.eu
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -9090,6 +9090,7 @@ static const struct snd_pci_quirk alc269
 	SND_PCI_QUIRK(0x144d, 0xc812, "Samsung Notebook Pen S (NT950SBE-X58)", ALC298_FIXUP_SAMSUNG_AMP),
 	SND_PCI_QUIRK(0x144d, 0xc830, "Samsung Galaxy Book Ion (NT950XCJ-X716A)", ALC298_FIXUP_SAMSUNG_AMP),
 	SND_PCI_QUIRK(0x144d, 0xc832, "Samsung Galaxy Book Flex Alpha (NP730QCJ)", ALC256_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET),
+	SND_PCI_QUIRK(0x144d, 0xca03, "Samsung Galaxy Book2 Pro 360 (NP930QED)", ALC298_FIXUP_SAMSUNG_AMP),
 	SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_HEADSET_MIC),
 	SND_PCI_QUIRK(0x1462, 0xb120, "MSI Cubi MS-B120", ALC283_FIXUP_HEADSET_MIC),
 	SND_PCI_QUIRK(0x1462, 0xb171, "Cubi N 8GL (MS-B171)", ALC283_FIXUP_HEADSET_MIC),



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

* [PATCH 5.10 103/139] tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (101 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 102/139] ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360 Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 104/139] of/address: Return an error when no valid dma-ranges are found Greg Kroah-Hartman
                   ` (44 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, mhiramat, mchehab, linux-edac,
	Shiju Jose, Steven Rostedt (Google)

From: Shiju Jose <shiju.jose@huawei.com>

commit 3e46d910d8acf94e5360126593b68bf4fee4c4a1 upstream.

poll() and select() on per_cpu trace_pipe and trace_pipe_raw do not work
since kernel 6.1-rc6. This issue is seen after the commit
42fb0a1e84ff525ebe560e2baf9451ab69127e2b ("tracing/ring-buffer: Have
polling block on watermark").

This issue is firstly detected and reported, when testing the CXL error
events in the rasdaemon and also erified using the test application for poll()
and select().

This issue occurs for the per_cpu case, when calling the ring_buffer_poll_wait(),
in kernel/trace/ring_buffer.c, with the buffer_percent > 0 and then wait until the
percentage of pages are available. The default value set for the buffer_percent is 50
in the kernel/trace/trace.c.

As a fix, allow userspace application could set buffer_percent as 0 through
the buffer_percent_fops, so that the task will wake up as soon as data is added
to any of the specific cpu buffer.

Link: https://lore.kernel.org/linux-trace-kernel/20230202182309.742-2-shiju.jose@huawei.com

Cc: <mhiramat@kernel.org>
Cc: <mchehab@kernel.org>
Cc: <linux-edac@vger.kernel.org>
Cc: stable@vger.kernel.org
Fixes: 42fb0a1e84ff5 ("tracing/ring-buffer: Have polling block on watermark")
Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 kernel/trace/trace.c |    3 ---
 1 file changed, 3 deletions(-)

--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -8569,9 +8569,6 @@ buffer_percent_write(struct file *filp,
 	if (val > 100)
 		return -EINVAL;
 
-	if (!val)
-		val = 1;
-
 	tr->buffer_percent = val;
 
 	(*ppos)++;



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

* [PATCH 5.10 104/139] of/address: Return an error when no valid dma-ranges are found
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (102 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 103/139] tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 105/139] can: j1939: do not wait 250 ms if the same addr was already claimed Greg Kroah-Hartman
                   ` (43 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Mark Brown, Luca Di Stefano, 993612,
	stable, Rob Herring

From: Mark Brown <broonie@kernel.org>

commit f6933c01e42d2fc83b9133ed755609e4aac6eadd upstream.

Commit 7a8b64d17e35 ("of/address: use range parser for of_dma_get_range")
converted the parsing of dma-range properties to use code shared with the
PCI range parser. The intent was to introduce no functional changes however
in the case where we fail to translate the first resource instead of
returning -EINVAL the new code we return 0. Restore the previous behaviour
by returning an error if we find no valid ranges, the original code only
handled the first range but subsequently support for parsing all supplied
ranges was added.

This avoids confusing code using the parsed ranges which doesn't expect to
successfully parse ranges but have only a list terminator returned, this
fixes breakage with so far as I can tell all DMA for on SoC devices on the
Socionext Synquacer platform which has a firmware supplied DT. A bisect
identified the original conversion as triggering the issues there.

Fixes: 7a8b64d17e35 ("of/address: use range parser for of_dma_get_range")
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: Luca Di Stefano <luca.distefano@linaro.org>
Cc: 993612@bugs.debian.org
Cc: stable@kernel.org
Link: https://lore.kernel.org/r/20230126-synquacer-boot-v2-1-cb80fd23c4e2@kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/of/address.c |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -990,8 +990,19 @@ int of_dma_get_range(struct device_node
 	}
 
 	of_dma_range_parser_init(&parser, node);
-	for_each_of_range(&parser, &range)
+	for_each_of_range(&parser, &range) {
+		if (range.cpu_addr == OF_BAD_ADDR) {
+			pr_err("translation of DMA address(%llx) to CPU address failed node(%pOF)\n",
+			       range.bus_addr, node);
+			continue;
+		}
 		num_ranges++;
+	}
+
+	if (!num_ranges) {
+		ret = -EINVAL;
+		goto out;
+	}
 
 	r = kcalloc(num_ranges + 1, sizeof(*r), GFP_KERNEL);
 	if (!r) {
@@ -1000,18 +1011,16 @@ int of_dma_get_range(struct device_node
 	}
 
 	/*
-	 * Record all info in the generic DMA ranges array for struct device.
+	 * Record all info in the generic DMA ranges array for struct device,
+	 * returning an error if we don't find any parsable ranges.
 	 */
 	*map = r;
 	of_dma_range_parser_init(&parser, node);
 	for_each_of_range(&parser, &range) {
 		pr_debug("dma_addr(%llx) cpu_addr(%llx) size(%llx)\n",
 			 range.bus_addr, range.cpu_addr, range.size);
-		if (range.cpu_addr == OF_BAD_ADDR) {
-			pr_err("translation of DMA address(%llx) to CPU address failed node(%pOF)\n",
-			       range.bus_addr, node);
+		if (range.cpu_addr == OF_BAD_ADDR)
 			continue;
-		}
 		r->cpu_start = range.cpu_addr;
 		r->dma_start = range.bus_addr;
 		r->size = range.size;



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

* [PATCH 5.10 105/139] can: j1939: do not wait 250 ms if the same addr was already claimed
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (103 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 104/139] of/address: Return an error when no valid dma-ranges are found Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 106/139] xfrm: compat: change expression for switch in xfrm_xlate64 Greg Kroah-Hartman
                   ` (42 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Devid Antonio Filoni,
	Oleksij Rempel, Marc Kleine-Budde

From: Devid Antonio Filoni <devid.filoni@egluetechnologies.com>

commit 4ae5e1e97c44f4654516c1d41591a462ed62fa7b upstream.

The ISO 11783-5 standard, in "4.5.2 - Address claim requirements", states:
  d) No CF shall begin, or resume, transmission on the network until 250
     ms after it has successfully claimed an address except when
     responding to a request for address-claimed.

But "Figure 6" and "Figure 7" in "4.5.4.2 - Address-claim
prioritization" show that the CF begins the transmission after 250 ms
from the first AC (address-claimed) message even if it sends another AC
message during that time window to resolve the address contention with
another CF.

As stated in "4.4.2.3 - Address-claimed message":
  In order to successfully claim an address, the CF sending an address
  claimed message shall not receive a contending claim from another CF
  for at least 250 ms.

As stated in "4.4.3.2 - NAME management (NM) message":
  1) A commanding CF can
     d) request that a CF with a specified NAME transmit the address-
        claimed message with its current NAME.
  2) A target CF shall
     d) send an address-claimed message in response to a request for a
        matching NAME

Taking the above arguments into account, the 250 ms wait is requested
only during network initialization.

Do not restart the timer on AC message if both the NAME and the address
match and so if the address has already been claimed (timer has expired)
or the AC message has been sent to resolve the contention with another
CF (timer is still running).

Signed-off-by: Devid Antonio Filoni <devid.filoni@egluetechnologies.com>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://lore.kernel.org/all/20221125170418.34575-1-devid.filoni@egluetechnologies.com
Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Cc: stable@vger.kernel.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/can/j1939/address-claim.c |   40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

--- a/net/can/j1939/address-claim.c
+++ b/net/can/j1939/address-claim.c
@@ -165,6 +165,46 @@ static void j1939_ac_process(struct j193
 	 * leaving this function.
 	 */
 	ecu = j1939_ecu_get_by_name_locked(priv, name);
+
+	if (ecu && ecu->addr == skcb->addr.sa) {
+		/* The ISO 11783-5 standard, in "4.5.2 - Address claim
+		 * requirements", states:
+		 *   d) No CF shall begin, or resume, transmission on the
+		 *      network until 250 ms after it has successfully claimed
+		 *      an address except when responding to a request for
+		 *      address-claimed.
+		 *
+		 * But "Figure 6" and "Figure 7" in "4.5.4.2 - Address-claim
+		 * prioritization" show that the CF begins the transmission
+		 * after 250 ms from the first AC (address-claimed) message
+		 * even if it sends another AC message during that time window
+		 * to resolve the address contention with another CF.
+		 *
+		 * As stated in "4.4.2.3 - Address-claimed message":
+		 *   In order to successfully claim an address, the CF sending
+		 *   an address claimed message shall not receive a contending
+		 *   claim from another CF for at least 250 ms.
+		 *
+		 * As stated in "4.4.3.2 - NAME management (NM) message":
+		 *   1) A commanding CF can
+		 *      d) request that a CF with a specified NAME transmit
+		 *         the address-claimed message with its current NAME.
+		 *   2) A target CF shall
+		 *      d) send an address-claimed message in response to a
+		 *         request for a matching NAME
+		 *
+		 * Taking the above arguments into account, the 250 ms wait is
+		 * requested only during network initialization.
+		 *
+		 * Do not restart the timer on AC message if both the NAME and
+		 * the address match and so if the address has already been
+		 * claimed (timer has expired) or the AC message has been sent
+		 * to resolve the contention with another CF (timer is still
+		 * running).
+		 */
+		goto out_ecu_put;
+	}
+
 	if (!ecu && j1939_address_is_unicast(skcb->addr.sa))
 		ecu = j1939_ecu_create_locked(priv, name);
 



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

* [PATCH 5.10 106/139] xfrm: compat: change expression for switch in xfrm_xlate64
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (104 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 105/139] can: j1939: do not wait 250 ms if the same addr was already claimed Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 107/139] IB/hfi1: Restore allocated resources on failed copyout Greg Kroah-Hartman
                   ` (41 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Anastasia Belova, Dmitry Safonov,
	Steffen Klassert, Sasha Levin

From: Anastasia Belova <abelova@astralinux.ru>

[ Upstream commit eb6c59b735aa6cca77cdbb59cc69d69a0d63d986 ]

Compare XFRM_MSG_NEWSPDINFO (value from netlink
configuration messages enum) with nlh_src->nlmsg_type
instead of nlh_src->nlmsg_type - XFRM_MSG_BASE.

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

Fixes: 4e9505064f58 ("net/xfrm/compat: Copy xfrm_spdattr_type_t atributes")
Signed-off-by: Anastasia Belova <abelova@astralinux.ru>
Acked-by: Dmitry Safonov <0x7f454c46@gmail.com>
Tested-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/xfrm/xfrm_compat.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/xfrm/xfrm_compat.c b/net/xfrm/xfrm_compat.c
index a0f62fa02e06e..12405aa5bce84 100644
--- a/net/xfrm/xfrm_compat.c
+++ b/net/xfrm/xfrm_compat.c
@@ -302,7 +302,7 @@ static int xfrm_xlate64(struct sk_buff *dst, const struct nlmsghdr *nlh_src)
 	nla_for_each_attr(nla, attrs, len, remaining) {
 		int err;
 
-		switch (type) {
+		switch (nlh_src->nlmsg_type) {
 		case XFRM_MSG_NEWSPDINFO:
 			err = xfrm_nla_cpy(dst, nla, nla_len(nla));
 			break;
-- 
2.39.0




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

* [PATCH 5.10 107/139] IB/hfi1: Restore allocated resources on failed copyout
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (105 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 106/139] xfrm: compat: change expression for switch in xfrm_xlate64 Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 108/139] xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr() Greg Kroah-Hartman
                   ` (40 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dean Luick, Dennis Dalessandro,
	Leon Romanovsky, Sasha Levin

From: Dean Luick <dean.luick@cornelisnetworks.com>

[ Upstream commit 6601fc0d15ffc20654e39486f9bef35567106d68 ]

Fix a resource leak if an error occurs.

Fixes: f404ca4c7ea8 ("IB/hfi1: Refactor hfi_user_exp_rcv_setup() IOCTL")
Signed-off-by: Dean Luick <dean.luick@cornelisnetworks.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Link: https://lore.kernel.org/r/167354736291.2132367.10894218740150168180.stgit@awfm-02.cornelisnetworks.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/hfi1/file_ops.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/hfi1/file_ops.c b/drivers/infiniband/hw/hfi1/file_ops.c
index d84b1098762c1..7828fb5931203 100644
--- a/drivers/infiniband/hw/hfi1/file_ops.c
+++ b/drivers/infiniband/hw/hfi1/file_ops.c
@@ -1359,12 +1359,15 @@ static int user_exp_rcv_setup(struct hfi1_filedata *fd, unsigned long arg,
 		addr = arg + offsetof(struct hfi1_tid_info, tidcnt);
 		if (copy_to_user((void __user *)addr, &tinfo.tidcnt,
 				 sizeof(tinfo.tidcnt)))
-			return -EFAULT;
+			ret = -EFAULT;
 
 		addr = arg + offsetof(struct hfi1_tid_info, length);
-		if (copy_to_user((void __user *)addr, &tinfo.length,
+		if (!ret && copy_to_user((void __user *)addr, &tinfo.length,
 				 sizeof(tinfo.length)))
 			ret = -EFAULT;
+
+		if (ret)
+			hfi1_user_exp_rcv_invalid(fd, &tinfo);
 	}
 
 	return ret;
-- 
2.39.0




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

* [PATCH 5.10 108/139] xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (106 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 107/139] IB/hfi1: Restore allocated resources on failed copyout Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 109/139] IB/IPoIB: Fix legacy IPoIB due to wrong number of queues Greg Kroah-Hartman
                   ` (39 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Eric Dumazet, Dmitry Safonov,
	Steffen Klassert, Sasha Levin

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit b6ee896385380aa621102e8ea402ba12db1cabff ]

  int type = nla_type(nla);

  if (type > XFRMA_MAX) {
            return -EOPNOTSUPP;
  }

@type is then used as an array index and can be used
as a Spectre v1 gadget.

  if (nla_len(nla) < compat_policy[type].len) {

array_index_nospec() can be used to prevent leaking
content of kernel memory to malicious users.

Fixes: 5106f4a8acff ("xfrm/compat: Add 32=>64-bit messages translator")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Dmitry Safonov <dima@arista.com>
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Reviewed-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/xfrm/xfrm_compat.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/xfrm/xfrm_compat.c b/net/xfrm/xfrm_compat.c
index 12405aa5bce84..8cbf45a8bcdc2 100644
--- a/net/xfrm/xfrm_compat.c
+++ b/net/xfrm/xfrm_compat.c
@@ -5,6 +5,7 @@
  * Based on code and translator idea by: Florian Westphal <fw@strlen.de>
  */
 #include <linux/compat.h>
+#include <linux/nospec.h>
 #include <linux/xfrm.h>
 #include <net/xfrm.h>
 
@@ -437,6 +438,7 @@ static int xfrm_xlate32_attr(void *dst, const struct nlattr *nla,
 		NL_SET_ERR_MSG(extack, "Bad attribute");
 		return -EOPNOTSUPP;
 	}
+	type = array_index_nospec(type, XFRMA_MAX + 1);
 	if (nla_len(nla) < compat_policy[type].len) {
 		NL_SET_ERR_MSG(extack, "Attribute bad length");
 		return -EOPNOTSUPP;
-- 
2.39.0




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

* [PATCH 5.10 109/139] IB/IPoIB: Fix legacy IPoIB due to wrong number of queues
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (107 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 108/139] xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 110/139] RDMA/usnic: use iommu_map_atomic() under spin_lock() Greg Kroah-Hartman
                   ` (38 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dragos Tatulea, Leon Romanovsky,
	Sasha Levin

From: Dragos Tatulea <dtatulea@nvidia.com>

[ Upstream commit e632291a2dbce45a24cddeb5fe28fe71d724ba43 ]

The cited commit creates child PKEY interfaces over netlink will
multiple tx and rx queues, but some devices doesn't support more than 1
tx and 1 rx queues. This causes to a crash when traffic is sent over the
PKEY interface due to the parent having a single queue but the child
having multiple queues.

This patch fixes the number of queues to 1 for legacy IPoIB at the
earliest possible point in time.

BUG: kernel NULL pointer dereference, address: 000000000000036b
PGD 0 P4D 0
Oops: 0000 [#1] SMP
CPU: 4 PID: 209665 Comm: python3 Not tainted 6.1.0_for_upstream_min_debug_2022_12_12_17_02 #1
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
RIP: 0010:kmem_cache_alloc+0xcb/0x450
Code: ce 7e 49 8b 50 08 49 83 78 10 00 4d 8b 28 0f 84 cb 02 00 00 4d 85 ed 0f 84 c2 02 00 00 41 8b 44 24 28 48 8d 4a
01 49 8b 3c 24 <49> 8b 5c 05 00 4c 89 e8 65 48 0f c7 0f 0f 94 c0 84 c0 74 b8 41 8b
RSP: 0018:ffff88822acbbab8 EFLAGS: 00010202
RAX: 0000000000000070 RBX: ffff8881c28e3e00 RCX: 00000000064f8dae
RDX: 00000000064f8dad RSI: 0000000000000a20 RDI: 0000000000030d00
RBP: 0000000000000a20 R08: ffff8882f5d30d00 R09: ffff888104032f40
R10: ffff88810fade828 R11: 736f6d6570736575 R12: ffff88810081c000
R13: 00000000000002fb R14: ffffffff817fc865 R15: 0000000000000000
FS:  00007f9324ff9700(0000) GS:ffff8882f5d00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000000000036b CR3: 00000001125af004 CR4: 0000000000370ea0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 skb_clone+0x55/0xd0
 ip6_finish_output2+0x3fe/0x690
 ip6_finish_output+0xfa/0x310
 ip6_send_skb+0x1e/0x60
 udp_v6_send_skb+0x1e5/0x420
 udpv6_sendmsg+0xb3c/0xe60
 ? ip_mc_finish_output+0x180/0x180
 ? __switch_to_asm+0x3a/0x60
 ? __switch_to_asm+0x34/0x60
 sock_sendmsg+0x33/0x40
 __sys_sendto+0x103/0x160
 ? _copy_to_user+0x21/0x30
 ? kvm_clock_get_cycles+0xd/0x10
 ? ktime_get_ts64+0x49/0xe0
 __x64_sys_sendto+0x25/0x30
 do_syscall_64+0x3d/0x90
 entry_SYSCALL_64_after_hwframe+0x46/0xb0
RIP: 0033:0x7f9374f1ed14
Code: 42 41 f8 ff 44 8b 4c 24 2c 4c 8b 44 24 20 89 c5 44 8b 54 24 28 48 8b 54 24 18 b8 2c 00 00 00 48 8b 74 24 10 8b
7c 24 08 0f 05 <48> 3d 00 f0 ff ff 77 34 89 ef 48 89 44 24 08 e8 68 41 f8 ff 48 8b
RSP: 002b:00007f9324ff7bd0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
RAX: ffffffffffffffda RBX: 00007f9324ff7cc8 RCX: 00007f9374f1ed14
RDX: 00000000000002fb RSI: 00007f93000052f0 RDI: 0000000000000030
RBP: 0000000000000000 R08: 00007f9324ff7d40 R09: 000000000000001c
R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
R13: 000000012a05f200 R14: 0000000000000001 R15: 00007f9374d57bdc
 </TASK>

Fixes: dbc94a0fb817 ("IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces")
Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
Link: https://lore.kernel.org/r/95eb6b74c7cf49fa46281f9d056d685c9fa11d38.1674584576.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/ulp/ipoib/ipoib_main.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index abfab89423f41..35322d23fc340 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -2188,6 +2188,14 @@ int ipoib_intf_init(struct ib_device *hca, u8 port, const char *name,
 		rn->attach_mcast = ipoib_mcast_attach;
 		rn->detach_mcast = ipoib_mcast_detach;
 		rn->hca = hca;
+
+		rc = netif_set_real_num_tx_queues(dev, 1);
+		if (rc)
+			goto out;
+
+		rc = netif_set_real_num_rx_queues(dev, 1);
+		if (rc)
+			goto out;
 	}
 
 	priv->rn_ops = dev->netdev_ops;
-- 
2.39.0




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

* [PATCH 5.10 110/139] RDMA/usnic: use iommu_map_atomic() under spin_lock()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (108 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 109/139] IB/IPoIB: Fix legacy IPoIB due to wrong number of queues Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 111/139] xfrm: fix bug with DSCP copy to v6 from v4 tunnel Greg Kroah-Hartman
                   ` (37 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Yang Yingliang, Leon Romanovsky,
	Sasha Levin

From: Yang Yingliang <yangyingliang@huawei.com>

[ Upstream commit b7e08a5a63a11627601915473c3b569c1f6c6c06 ]

usnic_uiom_map_sorted_intervals() is called under spin_lock(), iommu_map()
might sleep, use iommu_map_atomic() to avoid potential sleep in atomic
context.

Fixes: e3cf00d0a87f ("IB/usnic: Add Cisco VIC low-level hardware driver")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20230129093757.637354-1-yangyingliang@huawei.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/usnic/usnic_uiom.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/usnic/usnic_uiom.c b/drivers/infiniband/hw/usnic/usnic_uiom.c
index 760b254ba42d6..48a57568cad69 100644
--- a/drivers/infiniband/hw/usnic/usnic_uiom.c
+++ b/drivers/infiniband/hw/usnic/usnic_uiom.c
@@ -281,8 +281,8 @@ static int usnic_uiom_map_sorted_intervals(struct list_head *intervals,
 				size = pa_end - pa_start + PAGE_SIZE;
 				usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x",
 					va_start, &pa_start, size, flags);
-				err = iommu_map(pd->domain, va_start, pa_start,
-							size, flags);
+				err = iommu_map_atomic(pd->domain, va_start,
+						       pa_start, size, flags);
 				if (err) {
 					usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n",
 						va_start, &pa_start, size, err);
@@ -298,8 +298,8 @@ static int usnic_uiom_map_sorted_intervals(struct list_head *intervals,
 				size = pa - pa_start + PAGE_SIZE;
 				usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x\n",
 					va_start, &pa_start, size, flags);
-				err = iommu_map(pd->domain, va_start, pa_start,
-						size, flags);
+				err = iommu_map_atomic(pd->domain, va_start,
+						       pa_start, size, flags);
 				if (err) {
 					usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n",
 						va_start, &pa_start, size, err);
-- 
2.39.0




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

* [PATCH 5.10 111/139] xfrm: fix bug with DSCP copy to v6 from v4 tunnel
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (109 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 110/139] RDMA/usnic: use iommu_map_atomic() under spin_lock() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 112/139] bonding: fix error checking in bond_debug_reregister() Greg Kroah-Hartman
                   ` (36 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Christian Hopps, Herbert Xu,
	Steffen Klassert, Sasha Levin

From: Christian Hopps <chopps@chopps.org>

[ Upstream commit 6028da3f125fec34425dbd5fec18e85d372b2af6 ]

When copying the DSCP bits for decap-dscp into IPv6 don't assume the
outer encap is always IPv6. Instead, as with the inner IPv4 case, copy
the DSCP bits from the correctly saved "tos" value in the control block.

Fixes: 227620e29509 ("[IPSEC]: Separate inner/outer mode processing on input")
Signed-off-by: Christian Hopps <chopps@chopps.org>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/xfrm/xfrm_input.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
index 77e82033ad700..fef99a1c5df10 100644
--- a/net/xfrm/xfrm_input.c
+++ b/net/xfrm/xfrm_input.c
@@ -277,8 +277,7 @@ static int xfrm6_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb)
 		goto out;
 
 	if (x->props.flags & XFRM_STATE_DECAP_DSCP)
-		ipv6_copy_dscp(ipv6_get_dsfield(ipv6_hdr(skb)),
-			       ipipv6_hdr(skb));
+		ipv6_copy_dscp(XFRM_MODE_SKB_CB(skb)->tos, ipipv6_hdr(skb));
 	if (!(x->props.flags & XFRM_STATE_NOECN))
 		ipip6_ecn_decapsulate(skb);
 
-- 
2.39.0




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

* [PATCH 5.10 112/139] bonding: fix error checking in bond_debug_reregister()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (110 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 111/139] xfrm: fix bug with DSCP copy to v6 from v4 tunnel Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 113/139] net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY Greg Kroah-Hartman
                   ` (35 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Qi Zheng, Jay Vosburgh,
	Jakub Kicinski, Sasha Levin

From: Qi Zheng <zhengqi.arch@bytedance.com>

[ Upstream commit cbe83191d40d8925b7a99969d037d2a0caf69294 ]

Since commit ff9fb72bc077 ("debugfs: return error values,
not NULL") changed return value of debugfs_rename() in
error cases from %NULL to %ERR_PTR(-ERROR), we should
also check error values instead of NULL.

Fixes: ff9fb72bc077 ("debugfs: return error values, not NULL")
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
Link: https://lore.kernel.org/r/20230202093256.32458-1-zhengqi.arch@bytedance.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/bonding/bond_debugfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bonding/bond_debugfs.c b/drivers/net/bonding/bond_debugfs.c
index f3f86ef68ae0c..8b6cf2bf9025a 100644
--- a/drivers/net/bonding/bond_debugfs.c
+++ b/drivers/net/bonding/bond_debugfs.c
@@ -76,7 +76,7 @@ void bond_debug_reregister(struct bonding *bond)
 
 	d = debugfs_rename(bonding_debug_root, bond->debug_dir,
 			   bonding_debug_root, bond->dev->name);
-	if (d) {
+	if (!IS_ERR(d)) {
 		bond->debug_dir = d;
 	} else {
 		netdev_warn(bond->dev, "failed to reregister, so just unregister old one\n");
-- 
2.39.0




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

* [PATCH 5.10 113/139] net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (111 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 112/139] bonding: fix error checking in bond_debug_reregister() Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:50 ` [PATCH 5.10 114/139] ionic: clean interrupt before enabling queue to avoid credit race Greg Kroah-Hartman
                   ` (34 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jerome Brunet, Heiner Kallweit,
	Jakub Kicinski, Sasha Levin

From: Heiner Kallweit <hkallweit1@gmail.com>

[ Upstream commit 69ff53e4a4c9498eeed7d1441f68a1481dc69251 ]

Jerome provided the information that also the GXL internal PHY doesn't
support MMD register access and EEE. MMD reads return 0xffff, what
results in e.g. completely wrong ethtool --show-eee output.
Therefore use the MMD dummy stubs.

Fixes: d853d145ea3e ("net: phy: add an option to disable EEE advertisement")
Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/84432fe4-0be4-bc82-4e5c-557206b40f56@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/meson-gxl.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c
index f7a9e6599a642..39151ec6f65e2 100644
--- a/drivers/net/phy/meson-gxl.c
+++ b/drivers/net/phy/meson-gxl.c
@@ -235,6 +235,8 @@ static struct phy_driver meson_gxl_phy[] = {
 		.config_intr	= meson_gxl_config_intr,
 		.suspend        = genphy_suspend,
 		.resume         = genphy_resume,
+		.read_mmd	= genphy_read_mmd_unsupported,
+		.write_mmd	= genphy_write_mmd_unsupported,
 	}, {
 		PHY_ID_MATCH_EXACT(0x01803301),
 		.name		= "Meson G12A Internal PHY",
-- 
2.39.0




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

* [PATCH 5.10 114/139] ionic: clean interrupt before enabling queue to avoid credit race
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (112 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 113/139] net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY Greg Kroah-Hartman
@ 2023-02-13 14:50 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 115/139] uapi: add missing ip/ipv6 header dependencies for linux/stddef.h Greg Kroah-Hartman
                   ` (33 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:50 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Neel Patel, Shannon Nelson,
	Leon Romanovsky, Jakub Kicinski, Sasha Levin

From: Neel Patel <neel.patel@amd.com>

[ Upstream commit e8797a058466b60fc5a3291b92430c93ba90eaff ]

Clear the interrupt credits before enabling the queue rather
than after to be sure that the enabled queue starts at 0 and
that we don't wipe away possible credits after enabling the
queue.

Fixes: 0f3154e6bcb3 ("ionic: Add Tx and Rx handling")
Signed-off-by: Neel Patel <neel.patel@amd.com>
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/pensando/ionic/ionic_lif.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
index cb12d0171517e..fcd4213c99b83 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
@@ -257,6 +257,7 @@ static int ionic_qcq_enable(struct ionic_qcq *qcq)
 			.oper = IONIC_Q_ENABLE,
 		},
 	};
+	int ret;
 
 	idev = &lif->ionic->idev;
 	dev = lif->ionic->dev;
@@ -264,16 +265,24 @@ static int ionic_qcq_enable(struct ionic_qcq *qcq)
 	dev_dbg(dev, "q_enable.index %d q_enable.qtype %d\n",
 		ctx.cmd.q_control.index, ctx.cmd.q_control.type);
 
+	if (qcq->flags & IONIC_QCQ_F_INTR)
+		ionic_intr_clean(idev->intr_ctrl, qcq->intr.index);
+
+	ret = ionic_adminq_post_wait(lif, &ctx);
+	if (ret)
+		return ret;
+
+	if (qcq->napi.poll)
+		napi_enable(&qcq->napi);
+
 	if (qcq->flags & IONIC_QCQ_F_INTR) {
 		irq_set_affinity_hint(qcq->intr.vector,
 				      &qcq->intr.affinity_mask);
-		napi_enable(&qcq->napi);
-		ionic_intr_clean(idev->intr_ctrl, qcq->intr.index);
 		ionic_intr_mask(idev->intr_ctrl, qcq->intr.index,
 				IONIC_INTR_MASK_CLEAR);
 	}
 
-	return ionic_adminq_post_wait(lif, &ctx);
+	return 0;
 }
 
 static int ionic_qcq_disable(struct ionic_qcq *qcq, bool send_to_hw)
-- 
2.39.0




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

* [PATCH 5.10 115/139] uapi: add missing ip/ipv6 header dependencies for linux/stddef.h
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (113 preceding siblings ...)
  2023-02-13 14:50 ` [PATCH 5.10 114/139] ionic: clean interrupt before enabling queue to avoid credit race Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 116/139] ice: Do not use WQ_MEM_RECLAIM flag for workqueue Greg Kroah-Hartman
                   ` (32 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Herton R. Krzesinski,
	Carlos ODonell, David S. Miller, Sasha Levin

From: Herton R. Krzesinski <herton@redhat.com>

[ Upstream commit 03702d4d29be4e2510ec80b248dbbde4e57030d9 ]

Since commit 58e0be1ef6118 ("net: use struct_group to copy ip/ipv6
header addresses"), ip and ipv6 headers started to use the __struct_group
definition, which is defined at include/uapi/linux/stddef.h. However,
linux/stddef.h isn't explicitly included in include/uapi/linux/{ip,ipv6}.h,
which breaks build of xskxceiver bpf selftest if you install the uapi
headers in the system:

$ make V=1 xskxceiver -C tools/testing/selftests/bpf
...
make: Entering directory '(...)/tools/testing/selftests/bpf'
gcc -g -O0 -rdynamic -Wall -Werror (...)
In file included from xskxceiver.c:79:
/usr/include/linux/ip.h:103:9: error: expected specifier-qualifier-list before ‘__struct_group’
  103 |         __struct_group(/* no tag */, addrs, /* no attrs */,
      |         ^~~~~~~~~~~~~~
...

Include the missing <linux/stddef.h> dependency in ip.h and do the
same for the ipv6.h header.

Fixes: 58e0be1ef611 ("net: use struct_group to copy ip/ipv6 header addresses")
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/uapi/linux/ip.h   | 1 +
 include/uapi/linux/ipv6.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
index d2f143393780c..860bbf6bf29cb 100644
--- a/include/uapi/linux/ip.h
+++ b/include/uapi/linux/ip.h
@@ -18,6 +18,7 @@
 #ifndef _UAPI_LINUX_IP_H
 #define _UAPI_LINUX_IP_H
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <asm/byteorder.h>
 
 #define IPTOS_TOS_MASK		0x1E
diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h
index 766ab5c8ee655..d44d0483fd73f 100644
--- a/include/uapi/linux/ipv6.h
+++ b/include/uapi/linux/ipv6.h
@@ -4,6 +4,7 @@
 
 #include <linux/libc-compat.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/in6.h>
 #include <asm/byteorder.h>
 
-- 
2.39.0




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

* [PATCH 5.10 116/139] ice: Do not use WQ_MEM_RECLAIM flag for workqueue
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (114 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 115/139] uapi: add missing ip/ipv6 header dependencies for linux/stddef.h Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 117/139] net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q" Greg Kroah-Hartman
                   ` (31 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Anirudh Venkataramanan,
	Marcin Szycik, Jakub Andrysiak, Tony Nguyen, Leon Romanovsky,
	Sasha Levin

From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

[ Upstream commit 4d159f7884f78b1aacb99b4fc37d1e3cb1194e39 ]

When both ice and the irdma driver are loaded, a warning in
check_flush_dependency is being triggered. This is due to ice driver
workqueue being allocated with the WQ_MEM_RECLAIM flag and the irdma one
is not.

According to kernel documentation, this flag should be set if the
workqueue will be involved in the kernel's memory reclamation flow.
Since it is not, there is no need for the ice driver's WQ to have this
flag set so remove it.

Example trace:

[  +0.000004] workqueue: WQ_MEM_RECLAIM ice:ice_service_task [ice] is flushing !WQ_MEM_RECLAIM infiniband:0x0
[  +0.000139] WARNING: CPU: 0 PID: 728 at kernel/workqueue.c:2632 check_flush_dependency+0x178/0x1a0
[  +0.000011] Modules linked in: bonding tls xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 nft_compat nft_cha
in_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables nfnetlink bridge stp llc rfkill vfat fat intel_rapl_msr intel
_rapl_common isst_if_common skx_edac nfit libnvdimm x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct1
0dif_pclmul crc32_pclmul ghash_clmulni_intel rapl intel_cstate rpcrdma sunrpc rdma_ucm ib_srpt ib_isert iscsi_target_mod target_
core_mod ib_iser libiscsi scsi_transport_iscsi rdma_cm ib_cm iw_cm iTCO_wdt iTCO_vendor_support ipmi_ssif irdma mei_me ib_uverbs
ib_core intel_uncore joydev pcspkr i2c_i801 acpi_ipmi mei lpc_ich i2c_smbus intel_pch_thermal ioatdma ipmi_si acpi_power_meter
acpi_pad xfs libcrc32c sd_mod t10_pi crc64_rocksoft crc64 sg ahci ixgbe libahci ice i40e igb crc32c_intel mdio i2c_algo_bit liba
ta dca wmi dm_mirror dm_region_hash dm_log dm_mod ipmi_devintf ipmi_msghandler fuse
[  +0.000161]  [last unloaded: bonding]
[  +0.000006] CPU: 0 PID: 728 Comm: kworker/0:2 Tainted: G S                 6.2.0-rc2_next-queue-13jan-00458-gc20aabd57164 #1
[  +0.000006] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0010.010620200716 01/06/2020
[  +0.000003] Workqueue: ice ice_service_task [ice]
[  +0.000127] RIP: 0010:check_flush_dependency+0x178/0x1a0
[  +0.000005] Code: 89 8e 02 01 e8 49 3d 40 00 49 8b 55 18 48 8d 8d d0 00 00 00 48 8d b3 d0 00 00 00 4d 89 e0 48 c7 c7 e0 3b 08
9f e8 bb d3 07 01 <0f> 0b e9 be fe ff ff 80 3d 24 89 8e 02 00 0f 85 6b ff ff ff e9 06
[  +0.000004] RSP: 0018:ffff88810a39f990 EFLAGS: 00010282
[  +0.000005] RAX: 0000000000000000 RBX: ffff888141bc2400 RCX: 0000000000000000
[  +0.000004] RDX: 0000000000000001 RSI: dffffc0000000000 RDI: ffffffffa1213a80
[  +0.000003] RBP: ffff888194bf3400 R08: ffffed117b306112 R09: ffffed117b306112
[  +0.000003] R10: ffff888bd983088b R11: ffffed117b306111 R12: 0000000000000000
[  +0.000003] R13: ffff888111f84d00 R14: ffff88810a3943ac R15: ffff888194bf3400
[  +0.000004] FS:  0000000000000000(0000) GS:ffff888bd9800000(0000) knlGS:0000000000000000
[  +0.000003] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  +0.000003] CR2: 000056035b208b60 CR3: 000000017795e005 CR4: 00000000007706f0
[  +0.000003] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  +0.000003] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  +0.000002] PKRU: 55555554
[  +0.000003] Call Trace:
[  +0.000002]  <TASK>
[  +0.000003]  __flush_workqueue+0x203/0x840
[  +0.000006]  ? mutex_unlock+0x84/0xd0
[  +0.000008]  ? __pfx_mutex_unlock+0x10/0x10
[  +0.000004]  ? __pfx___flush_workqueue+0x10/0x10
[  +0.000006]  ? mutex_lock+0xa3/0xf0
[  +0.000005]  ib_cache_cleanup_one+0x39/0x190 [ib_core]
[  +0.000174]  __ib_unregister_device+0x84/0xf0 [ib_core]
[  +0.000094]  ib_unregister_device+0x25/0x30 [ib_core]
[  +0.000093]  irdma_ib_unregister_device+0x97/0xc0 [irdma]
[  +0.000064]  ? __pfx_irdma_ib_unregister_device+0x10/0x10 [irdma]
[  +0.000059]  ? up_write+0x5c/0x90
[  +0.000005]  irdma_remove+0x36/0x90 [irdma]
[  +0.000062]  auxiliary_bus_remove+0x32/0x50
[  +0.000007]  device_release_driver_internal+0xfa/0x1c0
[  +0.000005]  bus_remove_device+0x18a/0x260
[  +0.000007]  device_del+0x2e5/0x650
[  +0.000005]  ? __pfx_device_del+0x10/0x10
[  +0.000003]  ? mutex_unlock+0x84/0xd0
[  +0.000004]  ? __pfx_mutex_unlock+0x10/0x10
[  +0.000004]  ? _raw_spin_unlock+0x18/0x40
[  +0.000005]  ice_unplug_aux_dev+0x52/0x70 [ice]
[  +0.000160]  ice_service_task+0x1309/0x14f0 [ice]
[  +0.000134]  ? __pfx___schedule+0x10/0x10
[  +0.000006]  process_one_work+0x3b1/0x6c0
[  +0.000008]  worker_thread+0x69/0x670
[  +0.000005]  ? __kthread_parkme+0xec/0x110
[  +0.000007]  ? __pfx_worker_thread+0x10/0x10
[  +0.000005]  kthread+0x17f/0x1b0
[  +0.000005]  ? __pfx_kthread+0x10/0x10
[  +0.000004]  ret_from_fork+0x29/0x50
[  +0.000009]  </TASK>

Fixes: 940b61af02f4 ("ice: Initialize PF and setup miscellaneous interrupt")
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
Tested-by: Jakub Andrysiak <jakub.andrysiak@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index f193709c8efc6..c1465096239b6 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4853,7 +4853,7 @@ static int __init ice_module_init(void)
 	pr_info("%s\n", ice_driver_string);
 	pr_info("%s\n", ice_copyright);
 
-	ice_wq = alloc_workqueue("%s", WQ_MEM_RECLAIM, 0, KBUILD_MODNAME);
+	ice_wq = alloc_workqueue("%s", 0, 0, KBUILD_MODNAME);
 	if (!ice_wq) {
 		pr_err("Failed to create workqueue\n");
 		return -ENOMEM;
-- 
2.39.0




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

* [PATCH 5.10 117/139] net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q"
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (115 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 116/139] ice: Do not use WQ_MEM_RECLAIM flag for workqueue Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 118/139] net/mlx5e: IPoIB, Show unknown speed instead of error Greg Kroah-Hartman
                   ` (30 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Vladimir Oltean, Simon Horman,
	Paolo Abeni, Sasha Levin

From: Vladimir Oltean <vladimir.oltean@nxp.com>

[ Upstream commit f964f8399df29d3e3ced77177cf35131cd2491bf ]

Alternative short title: don't instruct the hardware to match on
EtherType with "protocol 802.1Q" flower filters. It doesn't work for the
reasons detailed below.

With a command such as the following:

tc filter add dev $swp1 ingress chain $(IS1 2) pref 3 \
	protocol 802.1Q flower skip_sw vlan_id 200 src_mac $h1_mac \
	action vlan modify id 300 \
	action goto chain $(IS2 0 0)

the created filter is set by ocelot_flower_parse_key() to be of type
OCELOT_VCAP_KEY_ETYPE, and etype is set to {value=0x8100, mask=0xffff}.
This gets propagated all the way to is1_entry_set() which commits it to
hardware (the VCAP_IS1_HK_ETYPE field of the key). Compare this to the
case where src_mac isn't specified - the key type is OCELOT_VCAP_KEY_ANY,
and is1_entry_set() doesn't populate VCAP_IS1_HK_ETYPE.

The problem is that for VLAN-tagged frames, the hardware interprets the
ETYPE field as holding the encapsulated VLAN protocol. So the above
filter will only match those packets which have an encapsulated protocol
of 0x8100, rather than all packets with VLAN ID 200 and the given src_mac.

The reason why this is allowed to occur is because, although we have a
block of code in ocelot_flower_parse_key() which sets "match_protocol"
to false when VLAN keys are present, that code executes too late.
There is another block of code, which executes for Ethernet addresses,
and has a "goto finished_key_parsing" and skips the VLAN header parsing.
By skipping it, "match_protocol" remains with the value it was
initialized with, i.e. "true", and "proto" is set to f->common.protocol,
or 0x8100.

The concept of ignoring some keys rather than erroring out when they are
present but can't be offloaded is dubious in itself, but is present
since the initial commit fe3490e6107e ("net: mscc: ocelot: Hardware
ofload for tc flower filter"), and it's outside of the scope of this
patch to change that.

The problem was introduced when the driver started to interpret the
flower filter's protocol, and populate the VCAP filter's ETYPE field
based on it.

To fix this, it is sufficient to move the code that parses the VLAN keys
earlier than the "goto finished_key_parsing" instruction. This will
ensure that if we have a flower filter with both VLAN and Ethernet
address keys, it won't match on ETYPE 0x8100, because the VLAN key
parsing sets "match_protocol = false".

Fixes: 86b956de119c ("net: mscc: ocelot: support matching on EtherType")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230205192409.1796428-1-vladimir.oltean@nxp.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mscc/ocelot_flower.c | 24 +++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/mscc/ocelot_flower.c b/drivers/net/ethernet/mscc/ocelot_flower.c
index b221b83ec5a6f..e56e540ce05c3 100644
--- a/drivers/net/ethernet/mscc/ocelot_flower.c
+++ b/drivers/net/ethernet/mscc/ocelot_flower.c
@@ -468,6 +468,18 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress,
 		flow_rule_match_control(rule, &match);
 	}
 
+	if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
+		struct flow_match_vlan match;
+
+		flow_rule_match_vlan(rule, &match);
+		filter->key_type = OCELOT_VCAP_KEY_ANY;
+		filter->vlan.vid.value = match.key->vlan_id;
+		filter->vlan.vid.mask = match.mask->vlan_id;
+		filter->vlan.pcp.value[0] = match.key->vlan_priority;
+		filter->vlan.pcp.mask[0] = match.mask->vlan_priority;
+		match_protocol = false;
+	}
+
 	if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
 		struct flow_match_eth_addrs match;
 
@@ -600,18 +612,6 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress,
 		match_protocol = false;
 	}
 
-	if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
-		struct flow_match_vlan match;
-
-		flow_rule_match_vlan(rule, &match);
-		filter->key_type = OCELOT_VCAP_KEY_ANY;
-		filter->vlan.vid.value = match.key->vlan_id;
-		filter->vlan.vid.mask = match.mask->vlan_id;
-		filter->vlan.pcp.value[0] = match.key->vlan_priority;
-		filter->vlan.pcp.mask[0] = match.mask->vlan_priority;
-		match_protocol = false;
-	}
-
 finished_key_parsing:
 	if (match_protocol && proto != ETH_P_ALL) {
 		if (filter->block_id == VCAP_ES0) {
-- 
2.39.0




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

* [PATCH 5.10 118/139] net/mlx5e: IPoIB, Show unknown speed instead of error
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (116 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 117/139] net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q" Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 119/139] net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers Greg Kroah-Hartman
                   ` (29 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dragos Tatulea, Gal Pressman,
	Tariq Toukan, Saeed Mahameed, Sasha Levin

From: Dragos Tatulea <dtatulea@nvidia.com>

[ Upstream commit 8aa5f171d51c1cb69e5e3106df4dd1a446102823 ]

ethtool is returning an error for unknown speeds for the IPoIB interface:

$ ethtool ib0
netlink error: failed to retrieve link settings
netlink error: Invalid argument
netlink error: failed to retrieve link settings
netlink error: Invalid argument
Settings for ib0:
Link detected: no

After this change, ethtool will return success and show "unknown speed":

$ ethtool ib0
Settings for ib0:
Supported ports: [  ]
Supported link modes:   Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes:  Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Full
Auto-negotiation: off
Port: Other
PHYAD: 0
Transceiver: internal
Link detected: no

Fixes: eb234ee9d541 ("net/mlx5e: IPoIB, Add support for get_link_ksettings in ethtool")
Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
Reviewed-by: Gal Pressman <gal@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>
---
 .../net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c
index cac8f085b16d7..2cf7f0fc170b8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c
@@ -166,16 +166,16 @@ static inline int mlx5_ptys_rate_enum_to_int(enum mlx5_ptys_rate rate)
 	}
 }
 
-static int mlx5i_get_speed_settings(u16 ib_link_width_oper, u16 ib_proto_oper)
+static u32 mlx5i_get_speed_settings(u16 ib_link_width_oper, u16 ib_proto_oper)
 {
 	int rate, width;
 
 	rate = mlx5_ptys_rate_enum_to_int(ib_proto_oper);
 	if (rate < 0)
-		return -EINVAL;
+		return SPEED_UNKNOWN;
 	width = mlx5_ptys_width_enum_to_int(ib_link_width_oper);
 	if (width < 0)
-		return -EINVAL;
+		return SPEED_UNKNOWN;
 
 	return rate * width;
 }
@@ -198,16 +198,13 @@ static int mlx5i_get_link_ksettings(struct net_device *netdev,
 	ethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);
 
 	speed = mlx5i_get_speed_settings(ib_link_width_oper, ib_proto_oper);
-	if (speed < 0)
-		return -EINVAL;
+	link_ksettings->base.speed = speed;
+	link_ksettings->base.duplex = speed == SPEED_UNKNOWN ? DUPLEX_UNKNOWN : DUPLEX_FULL;
 
-	link_ksettings->base.duplex = DUPLEX_FULL;
 	link_ksettings->base.port = PORT_OTHER;
 
 	link_ksettings->base.autoneg = AUTONEG_DISABLE;
 
-	link_ksettings->base.speed = speed;
-
 	return 0;
 }
 
-- 
2.39.0




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

* [PATCH 5.10 119/139] net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (117 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 118/139] net/mlx5e: IPoIB, Show unknown speed instead of error Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 120/139] net/mlx5: fw_tracer, Zero consumer index when reloading the tracer Greg Kroah-Hartman
                   ` (28 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 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 db561fed6b8fa3878e74d5df6512a4a38152b63e ]

Whenever the driver is reading the string DBs into buffers, the driver
is setting the load bit, but the driver never clears this bit.
As a result, in case load bit is on and the driver query the device for
new string DBs, the driver won't read again the string DBs.
Fix it by clearing the load bit when query the device for new string
DBs.

Fixes: 2d69356752ff ("net/mlx5: Add support for fw live patch event")
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/diag/fw_tracer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
index f800e1ca5ba62..76232abfc7863 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
@@ -64,6 +64,7 @@ static int mlx5_query_mtrc_caps(struct mlx5_fw_tracer *tracer)
 			MLX5_GET(mtrc_cap, out, num_string_trace);
 	tracer->str_db.num_string_db = MLX5_GET(mtrc_cap, out, num_string_db);
 	tracer->owner = !!MLX5_GET(mtrc_cap, out, trace_owner);
+	tracer->str_db.loaded = false;
 
 	for (i = 0; i < tracer->str_db.num_string_db; i++) {
 		mtrc_cap_sp = MLX5_ADDR_OF(mtrc_cap, out, string_db_param[i]);
-- 
2.39.0




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

* [PATCH 5.10 120/139] net/mlx5: fw_tracer, Zero consumer index when reloading the tracer
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (118 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 119/139] net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 121/139] rds: rds_rm_zerocopy_callback() use list_first_entry() Greg Kroah-Hartman
                   ` (27 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Shay Drory, Saeed Mahameed, Sasha Levin

From: Shay Drory <shayd@nvidia.com>

[ Upstream commit 184e1e4474dbcfebc4dbd1fa823a329978f25506 ]

When tracer is reloaded, the device will log the traces at the
beginning of the log buffer. Also, driver is reading the log buffer in
chunks in accordance to the consumer index.
Hence, zero consumer index when reloading the tracer.

Fixes: 4383cfcc65e7 ("net/mlx5: Add devlink reload")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
index 76232abfc7863..40d7bfca37499 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
@@ -757,6 +757,7 @@ static int mlx5_fw_tracer_set_mtrc_conf(struct mlx5_fw_tracer *tracer)
 	if (err)
 		mlx5_core_warn(dev, "FWTracer: Failed to set tracer configurations %d\n", err);
 
+	tracer->buff.consumer_index = 0;
 	return err;
 }
 
@@ -821,7 +822,6 @@ static void mlx5_fw_tracer_ownership_change(struct work_struct *work)
 	mlx5_core_dbg(tracer->dev, "FWTracer: ownership changed, current=(%d)\n", tracer->owner);
 	if (tracer->owner) {
 		tracer->owner = false;
-		tracer->buff.consumer_index = 0;
 		return;
 	}
 
-- 
2.39.0




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

* [PATCH 5.10 121/139] rds: rds_rm_zerocopy_callback() use list_first_entry()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (119 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 120/139] net/mlx5: fw_tracer, Zero consumer index when reloading the tracer Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 122/139] selftests: forwarding: lib: quote the sysctl values Greg Kroah-Hartman
                   ` (26 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Willem de Bruijn, Pietro Borrello,
	Paolo Abeni, Sasha Levin

From: Pietro Borrello <borrello@diag.uniroma1.it>

[ Upstream commit f753a68980cf4b59a80fe677619da2b1804f526d ]

rds_rm_zerocopy_callback() uses list_entry() on the head of a list
causing a type confusion.
Use list_first_entry() to actually access the first element of the
rs_zcookie_queue list.

Fixes: 9426bbc6de99 ("rds: use list structure to track information for zerocopy completion notification")
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Pietro Borrello <borrello@diag.uniroma1.it>
Link: https://lore.kernel.org/r/20230202-rds-zerocopy-v3-1-83b0df974f9a@diag.uniroma1.it
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/rds/message.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/rds/message.c b/net/rds/message.c
index 799034e0f513d..b363ef13c75ef 100644
--- a/net/rds/message.c
+++ b/net/rds/message.c
@@ -104,9 +104,9 @@ static void rds_rm_zerocopy_callback(struct rds_sock *rs,
 	spin_lock_irqsave(&q->lock, flags);
 	head = &q->zcookie_head;
 	if (!list_empty(head)) {
-		info = list_entry(head, struct rds_msg_zcopy_info,
-				  rs_zcookie_next);
-		if (info && rds_zcookie_add(info, cookie)) {
+		info = list_first_entry(head, struct rds_msg_zcopy_info,
+					rs_zcookie_next);
+		if (rds_zcookie_add(info, cookie)) {
 			spin_unlock_irqrestore(&q->lock, flags);
 			kfree(rds_info_from_znotifier(znotif));
 			/* caller invokes rds_wake_sk_sleep() */
-- 
2.39.0




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

* [PATCH 5.10 122/139] selftests: forwarding: lib: quote the sysctl values
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (120 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 121/139] rds: rds_rm_zerocopy_callback() use list_first_entry() Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 123/139] ALSA: pci: lx6464es: fix a debug loop Greg Kroah-Hartman
                   ` (25 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Hangbin Liu, Petr Machata,
	Paolo Abeni, Sasha Levin

From: Hangbin Liu <liuhangbin@gmail.com>

[ Upstream commit 3a082086aa200852545cf15159213582c0c80eba ]

When set/restore sysctl value, we should quote the value as some keys
may have multi values, e.g. net.ipv4.ping_group_range

Fixes: f5ae57784ba8 ("selftests: forwarding: lib: Add sysctl_set(), sysctl_restore()")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Link: https://lore.kernel.org/r/20230208032110.879205-1-liuhangbin@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/net/forwarding/lib.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/net/forwarding/lib.sh b/tools/testing/selftests/net/forwarding/lib.sh
index 54020d05a62b8..9605e158a0bfc 100644
--- a/tools/testing/selftests/net/forwarding/lib.sh
+++ b/tools/testing/selftests/net/forwarding/lib.sh
@@ -731,14 +731,14 @@ sysctl_set()
 	local value=$1; shift
 
 	SYSCTL_ORIG[$key]=$(sysctl -n $key)
-	sysctl -qw $key=$value
+	sysctl -qw $key="$value"
 }
 
 sysctl_restore()
 {
 	local key=$1; shift
 
-	sysctl -qw $key=${SYSCTL_ORIG["$key"]}
+	sysctl -qw $key="${SYSCTL_ORIG[$key]}"
 }
 
 forwarding_enable()
-- 
2.39.0




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

* [PATCH 5.10 123/139] ALSA: pci: lx6464es: fix a debug loop
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (121 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 122/139] selftests: forwarding: lib: quote the sysctl values Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 124/139] pinctrl: aspeed: Fix confusing types in return value Greg Kroah-Hartman
                   ` (24 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Takashi Iwai, Sasha Levin

From: Dan Carpenter <error27@gmail.com>

[ Upstream commit 5dac9f8dc25fefd9d928b98f6477ff3daefd73e3 ]

This loop accidentally reuses the "i" iterator for both the inside and
the outside loop.  The value of MAX_STREAM_BUFFER is 5.  I believe that
chip->rmh.stat_len is in the 2-12 range.  If the value of .stat_len is
4 or more then it will loop exactly one time, but if it's less then it
is a forever loop.

It looks like it was supposed to combined into one loop where
conditions are checked.

Fixes: 8e6320064c33 ("ALSA: lx_core: Remove useless #if 0 .. #endif")
Signed-off-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/r/Y9jnJTis/mRFJAQp@kili
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/pci/lx6464es/lx_core.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/sound/pci/lx6464es/lx_core.c b/sound/pci/lx6464es/lx_core.c
index f884f5a6a61c2..a49a3254f9677 100644
--- a/sound/pci/lx6464es/lx_core.c
+++ b/sound/pci/lx6464es/lx_core.c
@@ -493,12 +493,11 @@ int lx_buffer_ask(struct lx6464es *chip, u32 pipe, int is_capture,
 		dev_dbg(chip->card->dev,
 			"CMD_08_ASK_BUFFERS: needed %d, freed %d\n",
 			    *r_needed, *r_freed);
-		for (i = 0; i < MAX_STREAM_BUFFER; ++i) {
-			for (i = 0; i != chip->rmh.stat_len; ++i)
-				dev_dbg(chip->card->dev,
-					"  stat[%d]: %x, %x\n", i,
-					    chip->rmh.stat[i],
-					    chip->rmh.stat[i] & MASK_DATA_SIZE);
+		for (i = 0; i < MAX_STREAM_BUFFER && i < chip->rmh.stat_len;
+		     ++i) {
+			dev_dbg(chip->card->dev, "  stat[%d]: %x, %x\n", i,
+				chip->rmh.stat[i],
+				chip->rmh.stat[i] & MASK_DATA_SIZE);
 		}
 	}
 
-- 
2.39.0




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

* [PATCH 5.10 124/139] pinctrl: aspeed: Fix confusing types in return value
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (122 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 123/139] ALSA: pci: lx6464es: fix a debug loop Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 125/139] pinctrl: single: fix potential NULL dereference Greg Kroah-Hartman
                   ` (23 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Joel Stanley, Andrew Jeffery,
	Linus Walleij, Sasha Levin

From: Joel Stanley <joel@jms.id.au>

[ Upstream commit 287a344a11f1ebd31055cf9b22c88d7005f108d7 ]

The function signature is int, but we return a bool. Instead return a
negative errno as the kerneldoc suggests.

Fixes: 4d3d0e4272d8 ("pinctrl: Add core support for Aspeed SoCs")
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
Link: https://lore.kernel.org/r/20230119231856.52014-1-joel@jms.id.au
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/aspeed/pinctrl-aspeed.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed.c b/drivers/pinctrl/aspeed/pinctrl-aspeed.c
index e792318c38946..d26d859546275 100644
--- a/drivers/pinctrl/aspeed/pinctrl-aspeed.c
+++ b/drivers/pinctrl/aspeed/pinctrl-aspeed.c
@@ -121,7 +121,7 @@ static int aspeed_disable_sig(struct aspeed_pinmux_data *ctx,
 	int ret = 0;
 
 	if (!exprs)
-		return true;
+		return -EINVAL;
 
 	while (*exprs && !ret) {
 		ret = aspeed_sig_expr_disable(ctx, *exprs);
-- 
2.39.0




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

* [PATCH 5.10 125/139] pinctrl: single: fix potential NULL dereference
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (123 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 124/139] pinctrl: aspeed: Fix confusing types in return value Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 126/139] spi: dw: Fix wrong FIFO level setting for long xfers Greg Kroah-Hartman
                   ` (22 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Maxim Korotkov, Tony Lindgren,
	Linus Walleij, Sasha Levin

From: Maxim Korotkov <korotkov.maxim.s@gmail.com>

[ Upstream commit d2d73e6d4822140445ad4a7b1c6091e0f5fe703b ]

Added checking of pointer "function" in pcs_set_mux().
pinmux_generic_get_function() can return NULL and the pointer
"function" was dereferenced without checking against NULL.

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

Fixes: 571aec4df5b7 ("pinctrl: single: Use generic pinmux helpers for managing functions")
Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20221118104332.943-1-korotkov.maxim.s@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/pinctrl-single.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index d139cd9e6d130..22e471933b373 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -372,6 +372,8 @@ static int pcs_set_mux(struct pinctrl_dev *pctldev, unsigned fselector,
 	if (!pcs->fmask)
 		return 0;
 	function = pinmux_generic_get_function(pctldev, fselector);
+	if (!function)
+		return -EINVAL;
 	func = function->data;
 	if (!func)
 		return -EINVAL;
-- 
2.39.0




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

* [PATCH 5.10 126/139] spi: dw: Fix wrong FIFO level setting for long xfers
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (124 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 125/139] pinctrl: single: fix potential NULL dereference Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 127/139] pinctrl: intel: Restore the pins that used to be in Direct IRQ mode Greg Kroah-Hartman
                   ` (21 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Sergey Nazarov, Serge Semin,
	Andy Shevchenko, Mark Brown, Sasha Levin

From: Serge Semin <Sergey.Semin@baikalelectronics.ru>

[ Upstream commit c63b8fd14a7db719f8252038a790638728c4eb66 ]

Due to using the u16 type in the min_t() macros the SPI transfer length
will be cast to word before participating in the conditional statement
implied by the macro. Thus if the transfer length is greater than 64KB the
Tx/Rx FIFO threshold level value will be determined by the leftover of the
truncated after the type-case length. In the worst case it will cause the
dramatical performance drop due to the "Tx FIFO Empty" or "Rx FIFO Full"
interrupts triggered on each xfer word sent/received to/from the bus.

The problem can be easily fixed by specifying the unsigned int type in the
min_t() macros thus preventing the possible data loss.

Fixes: ea11370fffdf ("spi: dw: get TX level without an additional variable")
Reported-by: Sergey Nazarov <Sergey.Nazarov@baikalelectronics.ru>
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230113185942.2516-1-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/spi/spi-dw-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
index c33866f747dbe..aa116cee1fd8d 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
@@ -353,7 +353,7 @@ static void dw_spi_irq_setup(struct dw_spi *dws)
 	 * will be adjusted at the final stage of the IRQ-based SPI transfer
 	 * execution so not to lose the leftover of the incoming data.
 	 */
-	level = min_t(u16, dws->fifo_len / 2, dws->tx_len);
+	level = min_t(unsigned int, dws->fifo_len / 2, dws->tx_len);
 	dw_writel(dws, DW_SPI_TXFTLR, level);
 	dw_writel(dws, DW_SPI_RXFTLR, level - 1);
 
-- 
2.39.0




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

* [PATCH 5.10 127/139] pinctrl: intel: Restore the pins that used to be in Direct IRQ mode
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (125 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 126/139] spi: dw: Fix wrong FIFO level setting for long xfers Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 128/139] cifs: Fix use-after-free in rdata->read_into_pages() Greg Kroah-Hartman
                   ` (20 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Jim Minter, Andy Shevchenko,
	Mika Westerberg, Linus Walleij, Sasha Levin

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

[ Upstream commit a8520be3ffef3d25b53bf171a7ebe17ee0154175 ]

If the firmware mangled the register contents too much,
check the saved value for the Direct IRQ mode. If it
matches, we will restore the pin state.

Reported-by: Jim Minter <jimminter@microsoft.com>
Fixes: 6989ea4881c8 ("pinctrl: intel: Save and restore pins in "direct IRQ" mode")
Tested-by: Jim Minter <jimminter@microsoft.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Link: https://lore.kernel.org/r/20230206141558.20916-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/intel/pinctrl-intel.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index db9087c129c0d..2ef9e2d8fd9c5 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -1606,6 +1606,12 @@ const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(struct platform_
 EXPORT_SYMBOL_GPL(intel_pinctrl_get_soc_data);
 
 #ifdef CONFIG_PM_SLEEP
+static bool __intel_gpio_is_direct_irq(u32 value)
+{
+	return (value & PADCFG0_GPIROUTIOXAPIC) && (value & PADCFG0_GPIOTXDIS) &&
+	       (__intel_gpio_get_gpio_mode(value) == PADCFG0_PMODE_GPIO);
+}
+
 static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned int pin)
 {
 	const struct pin_desc *pd = pin_desc_get(pctrl->pctldev, pin);
@@ -1639,8 +1645,7 @@ static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned int
 	 * See https://bugzilla.kernel.org/show_bug.cgi?id=214749.
 	 */
 	value = readl(intel_get_padcfg(pctrl, pin, PADCFG0));
-	if ((value & PADCFG0_GPIROUTIOXAPIC) && (value & PADCFG0_GPIOTXDIS) &&
-	    (__intel_gpio_get_gpio_mode(value) == PADCFG0_PMODE_GPIO))
+	if (__intel_gpio_is_direct_irq(value))
 		return true;
 
 	return false;
@@ -1770,7 +1775,12 @@ int intel_pinctrl_resume_noirq(struct device *dev)
 	for (i = 0; i < pctrl->soc->npins; i++) {
 		const struct pinctrl_pin_desc *desc = &pctrl->soc->pins[i];
 
-		if (!intel_pinctrl_should_save(pctrl, desc->number))
+		if (!(intel_pinctrl_should_save(pctrl, desc->number) ||
+		      /*
+		       * If the firmware mangled the register contents too much,
+		       * check the saved value for the Direct IRQ mode.
+		       */
+		      __intel_gpio_is_direct_irq(pads[i].padcfg0)))
 			continue;
 
 		intel_restore_padcfg(pctrl, desc->number, PADCFG0, pads[i].padcfg0);
-- 
2.39.0




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

* [PATCH 5.10 128/139] cifs: Fix use-after-free in rdata->read_into_pages()
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (126 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 127/139] pinctrl: intel: Restore the pins that used to be in Direct IRQ mode Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 129/139] net: USB: Fix wrong-direction WARNING in plusb.c Greg Kroah-Hartman
                   ` (19 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, ZhaoLong Wang,
	Paulo Alcantara (SUSE),
	Steve French

From: ZhaoLong Wang <wangzhaolong1@huawei.com>

commit aa5465aeca3c66fecdf7efcf554aed79b4c4b211 upstream.

When the network status is unstable, use-after-free may occur when
read data from the server.

  BUG: KASAN: use-after-free in readpages_fill_pages+0x14c/0x7e0

  Call Trace:
   <TASK>
   dump_stack_lvl+0x38/0x4c
   print_report+0x16f/0x4a6
   kasan_report+0xb7/0x130
   readpages_fill_pages+0x14c/0x7e0
   cifs_readv_receive+0x46d/0xa40
   cifs_demultiplex_thread+0x121c/0x1490
   kthread+0x16b/0x1a0
   ret_from_fork+0x2c/0x50
   </TASK>

  Allocated by task 2535:
   kasan_save_stack+0x22/0x50
   kasan_set_track+0x25/0x30
   __kasan_kmalloc+0x82/0x90
   cifs_readdata_direct_alloc+0x2c/0x110
   cifs_readdata_alloc+0x2d/0x60
   cifs_readahead+0x393/0xfe0
   read_pages+0x12f/0x470
   page_cache_ra_unbounded+0x1b1/0x240
   filemap_get_pages+0x1c8/0x9a0
   filemap_read+0x1c0/0x540
   cifs_strict_readv+0x21b/0x240
   vfs_read+0x395/0x4b0
   ksys_read+0xb8/0x150
   do_syscall_64+0x3f/0x90
   entry_SYSCALL_64_after_hwframe+0x72/0xdc

  Freed by task 79:
   kasan_save_stack+0x22/0x50
   kasan_set_track+0x25/0x30
   kasan_save_free_info+0x2e/0x50
   __kasan_slab_free+0x10e/0x1a0
   __kmem_cache_free+0x7a/0x1a0
   cifs_readdata_release+0x49/0x60
   process_one_work+0x46c/0x760
   worker_thread+0x2a4/0x6f0
   kthread+0x16b/0x1a0
   ret_from_fork+0x2c/0x50

  Last potentially related work creation:
   kasan_save_stack+0x22/0x50
   __kasan_record_aux_stack+0x95/0xb0
   insert_work+0x2b/0x130
   __queue_work+0x1fe/0x660
   queue_work_on+0x4b/0x60
   smb2_readv_callback+0x396/0x800
   cifs_abort_connection+0x474/0x6a0
   cifs_reconnect+0x5cb/0xa50
   cifs_readv_from_socket.cold+0x22/0x6c
   cifs_read_page_from_socket+0xc1/0x100
   readpages_fill_pages.cold+0x2f/0x46
   cifs_readv_receive+0x46d/0xa40
   cifs_demultiplex_thread+0x121c/0x1490
   kthread+0x16b/0x1a0
   ret_from_fork+0x2c/0x50

The following function calls will cause UAF of the rdata pointer.

readpages_fill_pages
 cifs_read_page_from_socket
  cifs_readv_from_socket
   cifs_reconnect
    __cifs_reconnect
     cifs_abort_connection
      mid->callback() --> smb2_readv_callback
       queue_work(&rdata->work)  # if the worker completes first,
                                 # the rdata is freed
          cifs_readv_complete
            kref_put
              cifs_readdata_release
                kfree(rdata)
 return rdata->...               # UAF in readpages_fill_pages()

Similarly, this problem also occurs in the uncache_fill_pages().

Fix this by adjusts the order of condition judgment in the return
statement.

Signed-off-by: ZhaoLong Wang <wangzhaolong1@huawei.com>
Cc: stable@vger.kernel.org
Acked-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/file.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -3539,7 +3539,7 @@ uncached_fill_pages(struct TCP_Server_In
 		rdata->got_bytes += result;
 	}
 
-	return rdata->got_bytes > 0 && result != -ECONNABORTED ?
+	return result != -ECONNABORTED && rdata->got_bytes > 0 ?
 						rdata->got_bytes : result;
 }
 
@@ -4302,7 +4302,7 @@ readpages_fill_pages(struct TCP_Server_I
 		rdata->got_bytes += result;
 	}
 
-	return rdata->got_bytes > 0 && result != -ECONNABORTED ?
+	return result != -ECONNABORTED && rdata->got_bytes > 0 ?
 						rdata->got_bytes : result;
 }
 



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

* [PATCH 5.10 129/139] net: USB: Fix wrong-direction WARNING in plusb.c
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (127 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 128/139] cifs: Fix use-after-free in rdata->read_into_pages() Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 130/139] btrfs: free device in btrfs_close_devices for a single device filesystem Greg Kroah-Hartman
                   ` (18 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Alan Stern, David S. Miller,
	syzbot+2a0e7abd24f1eb90ce25

From: Alan Stern <stern@rowland.harvard.edu>

commit 811d581194f7412eda97acc03d17fc77824b561f upstream.

The syzbot fuzzer detected a bug in the plusb network driver: A
zero-length control-OUT transfer was treated as a read instead of a
write.  In modern kernels this error provokes a WARNING:

usb 1-1: BOGUS control dir, pipe 80000280 doesn't match bRequestType c0
WARNING: CPU: 0 PID: 4645 at drivers/usb/core/urb.c:411
usb_submit_urb+0x14a7/0x1880 drivers/usb/core/urb.c:411
Modules linked in:
CPU: 1 PID: 4645 Comm: dhcpcd Not tainted
6.2.0-rc6-syzkaller-00050-g9f266ccaa2f5 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google
01/12/2023
RIP: 0010:usb_submit_urb+0x14a7/0x1880 drivers/usb/core/urb.c:411
...
Call Trace:
 <TASK>
 usb_start_wait_urb+0x101/0x4b0 drivers/usb/core/message.c:58
 usb_internal_control_msg drivers/usb/core/message.c:102 [inline]
 usb_control_msg+0x320/0x4a0 drivers/usb/core/message.c:153
 __usbnet_read_cmd+0xb9/0x390 drivers/net/usb/usbnet.c:2010
 usbnet_read_cmd+0x96/0xf0 drivers/net/usb/usbnet.c:2068
 pl_vendor_req drivers/net/usb/plusb.c:60 [inline]
 pl_set_QuickLink_features drivers/net/usb/plusb.c:75 [inline]
 pl_reset+0x2f/0xf0 drivers/net/usb/plusb.c:85
 usbnet_open+0xcc/0x5d0 drivers/net/usb/usbnet.c:889
 __dev_open+0x297/0x4d0 net/core/dev.c:1417
 __dev_change_flags+0x587/0x750 net/core/dev.c:8530
 dev_change_flags+0x97/0x170 net/core/dev.c:8602
 devinet_ioctl+0x15a2/0x1d70 net/ipv4/devinet.c:1147
 inet_ioctl+0x33f/0x380 net/ipv4/af_inet.c:979
 sock_do_ioctl+0xcc/0x230 net/socket.c:1169
 sock_ioctl+0x1f8/0x680 net/socket.c:1286
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:870 [inline]
 __se_sys_ioctl fs/ioctl.c:856 [inline]
 __x64_sys_ioctl+0x197/0x210 fs/ioctl.c:856
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

The fix is to call usbnet_write_cmd() instead of usbnet_read_cmd() and
remove the USB_DIR_IN flag.

Reported-and-tested-by: syzbot+2a0e7abd24f1eb90ce25@syzkaller.appspotmail.com
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Fixes: 090ffa9d0e90 ("[PATCH] USB: usbnet (9/9) module for pl2301/2302 cables")
CC: stable@vger.kernel.org
Link: https://lore.kernel.org/r/00000000000052099f05f3b3e298@google.com/
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/usb/plusb.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

--- a/drivers/net/usb/plusb.c
+++ b/drivers/net/usb/plusb.c
@@ -57,9 +57,7 @@
 static inline int
 pl_vendor_req(struct usbnet *dev, u8 req, u8 val, u8 index)
 {
-	return usbnet_read_cmd(dev, req,
-				USB_DIR_IN | USB_TYPE_VENDOR |
-				USB_RECIP_DEVICE,
+	return usbnet_write_cmd(dev, req, USB_TYPE_VENDOR | USB_RECIP_DEVICE,
 				val, index, NULL, 0);
 }
 



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

* [PATCH 5.10 130/139] btrfs: free device in btrfs_close_devices for a single device filesystem
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (128 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 129/139] net: USB: Fix wrong-direction WARNING in plusb.c Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 131/139] usb: core: add quirk for Alcor Link AK9563 smartcard reader Greg Kroah-Hartman
                   ` (17 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Daan De Meyer, Josef Bacik,
	Anand Jain, David Sterba

From: Anand Jain <anand.jain@oracle.com>

commit 5f58d783fd7823b2c2d5954d1126e702f94bfc4c upstream.

We have this check to make sure we don't accidentally add older devices
that may have disappeared and re-appeared with an older generation from
being added to an fs_devices (such as a replace source device). This
makes sense, we don't want stale disks in our file system. However for
single disks this doesn't really make sense.

I've seen this in testing, but I was provided a reproducer from a
project that builds btrfs images on loopback devices. The loopback
device gets cached with the new generation, and then if it is re-used to
generate a new file system we'll fail to mount it because the new fs is
"older" than what we have in cache.

Fix this by freeing the cache when closing the device for a single device
filesystem. This will ensure that the mount command passed device path is
scanned successfully during the next mount.

CC: stable@vger.kernel.org # 5.10+
Reported-by: Daan De Meyer <daandemeyer@fb.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Anand Jain <anand.jain@oracle.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/volumes.c |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -381,6 +381,7 @@ void btrfs_free_device(struct btrfs_devi
 static void free_fs_devices(struct btrfs_fs_devices *fs_devices)
 {
 	struct btrfs_device *device;
+
 	WARN_ON(fs_devices->opened);
 	while (!list_empty(&fs_devices->devices)) {
 		device = list_entry(fs_devices->devices.next,
@@ -1227,9 +1228,22 @@ void btrfs_close_devices(struct btrfs_fs
 
 	mutex_lock(&uuid_mutex);
 	close_fs_devices(fs_devices);
-	if (!fs_devices->opened)
+	if (!fs_devices->opened) {
 		list_splice_init(&fs_devices->seed_list, &list);
 
+		/*
+		 * If the struct btrfs_fs_devices is not assembled with any
+		 * other device, it can be re-initialized during the next mount
+		 * without the needing device-scan step. Therefore, it can be
+		 * fully freed.
+		 */
+		if (fs_devices->num_devices == 1) {
+			list_del(&fs_devices->fs_list);
+			free_fs_devices(fs_devices);
+		}
+	}
+
+
 	list_for_each_entry_safe(fs_devices, tmp, &list, seed_list) {
 		close_fs_devices(fs_devices);
 		list_del(&fs_devices->seed_list);



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

* [PATCH 5.10 131/139] usb: core: add quirk for Alcor Link AK9563 smartcard reader
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (129 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 130/139] btrfs: free device in btrfs_close_devices for a single device filesystem Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 132/139] usb: typec: altmodes/displayport: Fix probe pin assign check Greg Kroah-Hartman
                   ` (16 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Miroslav Zatko, Dennis Wassenberg,
	Mark Pearson

From: Mark Pearson <mpearson-lenovo@squebb.ca>

commit 303e724d7b1e1a0a93daf0b1ab5f7c4f53543b34 upstream.

The Alcor Link AK9563 smartcard reader used on some Lenovo platforms
doesn't work. If LPM is enabled the reader will provide an invalid
usb config descriptor. Added quirk to disable LPM.

Verified fix on Lenovo P16 G1 and T14 G3

Tested-by: Miroslav Zatko <mzatko@mirexoft.com>
Tested-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Link: https://lore.kernel.org/r/20230208181223.1092654-1-mpearson-lenovo@squebb.ca
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/usb/core/quirks.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -527,6 +527,9 @@ static const struct usb_device_id usb_qu
 	/* DJI CineSSD */
 	{ USB_DEVICE(0x2ca3, 0x0031), .driver_info = USB_QUIRK_NO_LPM },
 
+	/* Alcor Link AK9563 SC Reader used in 2022 Lenovo ThinkPads */
+	{ USB_DEVICE(0x2ce3, 0x9563), .driver_info = USB_QUIRK_NO_LPM },
+
 	/* DELL USB GEN2 */
 	{ USB_DEVICE(0x413c, 0xb062), .driver_info = USB_QUIRK_NO_LPM | USB_QUIRK_RESET_RESUME },
 



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

* [PATCH 5.10 132/139] usb: typec: altmodes/displayport: Fix probe pin assign check
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (130 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 131/139] usb: core: add quirk for Alcor Link AK9563 smartcard reader Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 133/139] ceph: flush cap releases when the session is flushed Greg Kroah-Hartman
                   ` (15 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Diana Zigterman, Prashant Malani

From: Prashant Malani <pmalani@chromium.org>

commit 54e5c00a4eb0a4c663445b245f641bbfab142430 upstream.

While checking Pin Assignments of the port and partner during probe, we
don't take into account whether the peripheral is a plug or receptacle.

This manifests itself in a mode entry failure on certain docks and
dongles with captive cables. For instance, the Startech.com Type-C to DP
dongle (Model #CDP2DP) advertises its DP VDO as 0x405. This would fail
the Pin Assignment compatibility check, despite it supporting
Pin Assignment C as a UFP.

Update the check to use the correct DP Pin Assign macros that
take the peripheral's receptacle bit into account.

Fixes: c1e5c2f0cb8a ("usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles")
Cc: stable@vger.kernel.org
Reported-by: Diana Zigterman <dzigterman@chromium.org>
Signed-off-by: Prashant Malani <pmalani@chromium.org>
Link: https://lore.kernel.org/r/20230208205318.131385-1-pmalani@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/usb/typec/altmodes/displayport.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

--- a/drivers/usb/typec/altmodes/displayport.c
+++ b/drivers/usb/typec/altmodes/displayport.c
@@ -524,10 +524,10 @@ int dp_altmode_probe(struct typec_altmod
 	/* FIXME: Port can only be DFP_U. */
 
 	/* Make sure we have compatiple pin configurations */
-	if (!(DP_CAP_DFP_D_PIN_ASSIGN(port->vdo) &
-	      DP_CAP_UFP_D_PIN_ASSIGN(alt->vdo)) &&
-	    !(DP_CAP_UFP_D_PIN_ASSIGN(port->vdo) &
-	      DP_CAP_DFP_D_PIN_ASSIGN(alt->vdo)))
+	if (!(DP_CAP_PIN_ASSIGN_DFP_D(port->vdo) &
+	      DP_CAP_PIN_ASSIGN_UFP_D(alt->vdo)) &&
+	    !(DP_CAP_PIN_ASSIGN_UFP_D(port->vdo) &
+	      DP_CAP_PIN_ASSIGN_DFP_D(alt->vdo)))
 		return -ENODEV;
 
 	ret = sysfs_create_group(&alt->dev.kobj, &dp_altmode_group);



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

* [PATCH 5.10 133/139] ceph: flush cap releases when the session is flushed
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (131 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 132/139] usb: typec: altmodes/displayport: Fix probe pin assign check Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 134/139] riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte Greg Kroah-Hartman
                   ` (14 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Xiubo Li, Venky Shankar,
	Jeff Layton, Ilya Dryomov

From: Xiubo Li <xiubli@redhat.com>

commit e7d84c6a1296d059389f7342d9b4b7defb518d3a upstream.

MDS expects the completed cap release prior to responding to the
session flush for cache drop.

Cc: stable@vger.kernel.org
Link: http://tracker.ceph.com/issues/38009
Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/ceph/mds_client.c |    6 ++++++
 1 file changed, 6 insertions(+)

--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -3496,6 +3496,12 @@ static void handle_session(struct ceph_m
 		break;
 
 	case CEPH_SESSION_FLUSHMSG:
+		/* flush cap releases */
+		spin_lock(&session->s_cap_lock);
+		if (session->s_num_cap_releases)
+			ceph_flush_cap_releases(mdsc, session);
+		spin_unlock(&session->s_cap_lock);
+
 		send_flushmsg_ack(mdsc, session, seq);
 		break;
 



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

* [PATCH 5.10 134/139] riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (132 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 133/139] ceph: flush cap releases when the session is flushed Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 135/139] arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive Greg Kroah-Hartman
                   ` (13 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Guo Ren, Guo Ren, Andrew Jones,
	Conor Dooley, Palmer Dabbelt

From: Guo Ren <guoren@linux.alibaba.com>

commit 950b879b7f0251317d26bae0687e72592d607532 upstream.

In commit 588a513d3425 ("arm64: Fix race condition on PG_dcache_clean
in __sync_icache_dcache()"), we found RISC-V has the same issue as the
previous arm64. The previous implementation didn't guarantee the correct
sequence of operations, which means flush_icache_all() hasn't been
called when the PG_dcache_clean was set. That would cause a risk of page
synchronization.

Fixes: 08f051eda33b ("RISC-V: Flush I$ when making a dirty page executable")
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20230127035306.1819561-1-guoren@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/mm/cacheflush.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/arch/riscv/mm/cacheflush.c
+++ b/arch/riscv/mm/cacheflush.c
@@ -85,7 +85,9 @@ void flush_icache_pte(pte_t pte)
 {
 	struct page *page = pte_page(pte);
 
-	if (!test_and_set_bit(PG_dcache_clean, &page->flags))
+	if (!test_bit(PG_dcache_clean, &page->flags)) {
 		flush_icache_all();
+		set_bit(PG_dcache_clean, &page->flags);
+	}
 }
 #endif /* CONFIG_MMU */



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

* [PATCH 5.10 135/139] arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (133 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 134/139] riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 136/139] arm64: dts: meson-g12-common: " Greg Kroah-Hartman
                   ` (12 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable; +Cc: Greg Kroah-Hartman, patches, Heiner Kallweit, Neil Armstrong

From: Heiner Kallweit <hkallweit1@gmail.com>

commit 66e45351f7d6798751f98001d1fcd572024d87f0 upstream.

The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.

[0] https://www.spinics.net/lists/linux-mmc/msg73991.html

Fixes: ef8d2ffedf18 ("ARM64: dts: meson-gxbb: add MMC support")
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/76e042e0-a610-5ed5-209f-c4d7f879df44@gmail.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -595,21 +595,21 @@
 			sd_emmc_a: mmc@70000 {
 				compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
 				reg = <0x0 0x70000 0x0 0x800>;
-				interrupts = <GIC_SPI 216 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
 				status = "disabled";
 			};
 
 			sd_emmc_b: mmc@72000 {
 				compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
 				reg = <0x0 0x72000 0x0 0x800>;
-				interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
 				status = "disabled";
 			};
 
 			sd_emmc_c: mmc@74000 {
 				compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
 				reg = <0x0 0x74000 0x0 0x800>;
-				interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
 				status = "disabled";
 			};
 		};



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

* [PATCH 5.10 136/139] arm64: dts: meson-g12-common: Make mmc host controller interrupts level-sensitive
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (134 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 135/139] arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 137/139] arm64: dts: meson-axg: " Greg Kroah-Hartman
                   ` (11 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, FUKAUMI Naoki, Martin Blumenstingl,
	Jerome Brunet, Heiner Kallweit, Neil Armstrong

From: Heiner Kallweit <hkallweit1@gmail.com>

commit ac8db4cceed218cca21c84f9d75ce88182d8b04f upstream.

The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.

[0] https://www.spinics.net/lists/linux-mmc/msg73991.html

Fixes: 4759fd87b928 ("arm64: dts: meson: g12a: add mmc nodes")
Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/27d89baa-b8fa-baca-541b-ef17a97cde3c@gmail.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
@@ -2317,7 +2317,7 @@
 		sd_emmc_a: sd@ffe03000 {
 			compatible = "amlogic,meson-axg-mmc";
 			reg = <0x0 0xffe03000 0x0 0x800>;
-			interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
+			interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
 			status = "disabled";
 			clocks = <&clkc CLKID_SD_EMMC_A>,
 				 <&clkc CLKID_SD_EMMC_A_CLK0>,
@@ -2329,7 +2329,7 @@
 		sd_emmc_b: sd@ffe05000 {
 			compatible = "amlogic,meson-axg-mmc";
 			reg = <0x0 0xffe05000 0x0 0x800>;
-			interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
+			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
 			status = "disabled";
 			clocks = <&clkc CLKID_SD_EMMC_B>,
 				 <&clkc CLKID_SD_EMMC_B_CLK0>,
@@ -2341,7 +2341,7 @@
 		sd_emmc_c: mmc@ffe07000 {
 			compatible = "amlogic,meson-axg-mmc";
 			reg = <0x0 0xffe07000 0x0 0x800>;
-			interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>;
+			interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
 			status = "disabled";
 			clocks = <&clkc CLKID_SD_EMMC_C>,
 				 <&clkc CLKID_SD_EMMC_C_CLK0>,



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

* [PATCH 5.10 137/139] arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (135 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 136/139] arm64: dts: meson-g12-common: " Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 138/139] Fix page corruption caused by racy check in __free_pages Greg Kroah-Hartman
                   ` (10 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Peter Suti, Vyacheslav Bocharov,
	Heiner Kallweit, Neil Armstrong

From: Heiner Kallweit <hkallweit1@gmail.com>

commit d182bcf300772d8b2e5f43e47fa0ebda2b767cc4 upstream.

The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.

[0] https://www.spinics.net/lists/linux-mmc/msg73991.html

Fixes: 221cf34bac54 ("ARM64: dts: meson-axg: enable the eMMC controller")
Reported-by: Peter Suti <peter.suti@streamunlimited.com>
Tested-by: Vyacheslav Bocharov <adeep@lexina.in>
Tested-by: Peter Suti <peter.suti@streamunlimited.com>
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/c00655d3-02f8-6f5f-4239-ca2412420cad@gmail.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm64/boot/dts/amlogic/meson-axg.dtsi |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
@@ -1754,7 +1754,7 @@
 			sd_emmc_b: sd@5000 {
 				compatible = "amlogic,meson-axg-mmc";
 				reg = <0x0 0x5000 0x0 0x800>;
-				interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
 				status = "disabled";
 				clocks = <&clkc CLKID_SD_EMMC_B>,
 					<&clkc CLKID_SD_EMMC_B_CLK0>,
@@ -1766,7 +1766,7 @@
 			sd_emmc_c: mmc@7000 {
 				compatible = "amlogic,meson-axg-mmc";
 				reg = <0x0 0x7000 0x0 0x800>;
-				interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
 				status = "disabled";
 				clocks = <&clkc CLKID_SD_EMMC_C>,
 					<&clkc CLKID_SD_EMMC_C_CLK0>,



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

* [PATCH 5.10 138/139] Fix page corruption caused by racy check in __free_pages
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (136 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 137/139] arm64: dts: meson-axg: " Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 14:51 ` [PATCH 5.10 139/139] nvmem: core: fix return value Greg Kroah-Hartman
                   ` (9 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, Andrew Morton, Chunwei Chen,
	Vlastimil Babka, Matthew Wilcox (Oracle),
	Linus Torvalds

From: David Chen <david.chen@nutanix.com>

commit 462a8e08e0e6287e5ce13187257edbf24213ed03 upstream.

When we upgraded our kernel, we started seeing some page corruption like
the following consistently:

  BUG: Bad page state in process ganesha.nfsd  pfn:1304ca
  page:0000000022261c55 refcount:0 mapcount:-128 mapping:0000000000000000 index:0x0 pfn:0x1304ca
  flags: 0x17ffffc0000000()
  raw: 0017ffffc0000000 ffff8a513ffd4c98 ffffeee24b35ec08 0000000000000000
  raw: 0000000000000000 0000000000000001 00000000ffffff7f 0000000000000000
  page dumped because: nonzero mapcount
  CPU: 0 PID: 15567 Comm: ganesha.nfsd Kdump: loaded Tainted: P    B      O      5.10.158-1.nutanix.20221209.el7.x86_64 #1
  Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/05/2016
  Call Trace:
   dump_stack+0x74/0x96
   bad_page.cold+0x63/0x94
   check_new_page_bad+0x6d/0x80
   rmqueue+0x46e/0x970
   get_page_from_freelist+0xcb/0x3f0
   ? _cond_resched+0x19/0x40
   __alloc_pages_nodemask+0x164/0x300
   alloc_pages_current+0x87/0xf0
   skb_page_frag_refill+0x84/0x110
   ...

Sometimes, it would also show up as corruption in the free list pointer
and cause crashes.

After bisecting the issue, we found the issue started from commit
e320d3012d25 ("mm/page_alloc.c: fix freeing non-compound pages"):

	if (put_page_testzero(page))
		free_the_page(page, order);
	else if (!PageHead(page))
		while (order-- > 0)
			free_the_page(page + (1 << order), order);

So the problem is the check PageHead is racy because at this point we
already dropped our reference to the page.  So even if we came in with
compound page, the page can already be freed and PageHead can return
false and we will end up freeing all the tail pages causing double free.

Fixes: e320d3012d25 ("mm/page_alloc.c: fix freeing non-compound pages")
Link: https://lore.kernel.org/lkml/BYAPR02MB448855960A9656EEA81141FC94D99@BYAPR02MB4488.namprd02.prod.outlook.com/
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: stable@vger.kernel.org
Signed-off-by: Chunwei Chen <david.chen@nutanix.com>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 mm/page_alloc.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5054,9 +5054,12 @@ static inline void free_the_page(struct
 
 void __free_pages(struct page *page, unsigned int order)
 {
+	/* get PageHead before we drop reference */
+	int head = PageHead(page);
+
 	if (put_page_testzero(page))
 		free_the_page(page, order);
-	else if (!PageHead(page))
+	else if (!head)
 		while (order-- > 0)
 			free_the_page(page + (1 << order), order);
 }



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

* [PATCH 5.10 139/139] nvmem: core: fix return value
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (137 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 138/139] Fix page corruption caused by racy check in __free_pages Greg Kroah-Hartman
@ 2023-02-13 14:51 ` Greg Kroah-Hartman
  2023-02-13 17:26 ` [PATCH 5.10 000/139] 5.10.168-rc1 review Pavel Machek
                   ` (8 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-13 14:51 UTC (permalink / raw)
  To: stable
  Cc: Greg Kroah-Hartman, patches, kernel test robot, Dan Carpenter,
	Russell King (Oracle),
	Srinivas Kandagatla

From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

commit 0c4862b1c1465e473bc961a02765490578bf5c20 upstream.

Dan Carpenter points out that the return code was not set in commit
60c8b4aebd8e ("nvmem: core: fix cleanup after dev_set_name()"), but
this is not the only issue - we also need to zero wp_gpio to prevent
gpiod_put() being called on an error value.

Fixes: 560181d3ace6 ("nvmem: core: fix cleanup after dev_set_name()")
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230127104015.23839-10-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/nvmem/core.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -638,6 +638,7 @@ struct nvmem_device *nvmem_register(cons
 						    GPIOD_OUT_HIGH);
 	if (IS_ERR(nvmem->wp_gpio)) {
 		rval = PTR_ERR(nvmem->wp_gpio);
+		nvmem->wp_gpio = NULL;
 		goto err_put_device;
 	}
 



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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (138 preceding siblings ...)
  2023-02-13 14:51 ` [PATCH 5.10 139/139] nvmem: core: fix return value Greg Kroah-Hartman
@ 2023-02-13 17:26 ` Pavel Machek
  2023-02-13 19:50 ` Florian Fainelli
                   ` (7 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Pavel Machek @ 2023-02-13 17:26 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: 662 bytes --]

Hi!

> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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.

CIP testing did not find any problems here:

https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-5.10.y

Tested-by: Pavel Machek (CIP) <pavel@denx.de>

Best regards,
                                                                Pavel
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (139 preceding siblings ...)
  2023-02-13 17:26 ` [PATCH 5.10 000/139] 5.10.168-rc1 review Pavel Machek
@ 2023-02-13 19:50 ` Florian Fainelli
  2023-02-14  6:20   ` Greg Kroah-Hartman
  2023-02-14  9:16   ` Naresh Kamboju
  2023-02-13 23:33 ` Shuah Khan
                   ` (6 subsequent siblings)
  147 siblings, 2 replies; 165+ messages in thread
From: Florian Fainelli @ 2023-02-13 19:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable, rmk+kernel, Srinivas Kandagatla
  Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
	lkft-triage, pavel, jonathanh, sudipm.mukherjee, srw, rwarsow

[-- Attachment #1: Type: text/plain, Size: 1215 bytes --]

On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h

There is a regression coming from:

nvmem: core: fix registration vs use race

which causes the following to happen for MTD devices:

[    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't 
try to register things with the same name in the same directory.
[    7.846965] spi-nor: probe of spi0.0 failed with error -17

attached is a full log with the call trace. This does not happen with 
v6.2-rc8 where the MTD partitions are successfully registered.
-- 
Florian

[-- Attachment #2: 72116b0-bselinux-rack-23.log --]
[-- Type: text/x-log, Size: 39819 bytes --]




boot  stbirv-lnx-3:users/fainelli/510/vmlinuz-initrd-arm ""
sensors\rsleep 5\rping -c 2 192.168.1.254\rcat /sys/devices/platform/rdb/*/dpfe_*\rpml\rsensors\rsleep 5\rping -c 2 192.168.1.254\rcat /sys/devices/platform/rdb/*/dpfe_*\rpml -d\rsensors\rsleep 5\rping -c 2 192.168.1.254\rcat /sys/devices/platform/rdb/*/dpfe_*\r8-0E-CB-6D, ipaddr 192.168.1.28, mask 255.255.255.0
        gateway 192.168.1.254, nameserver 192.168.1.254, domain igp.broadcom.net
        DHCP server 192.168.1.254, DHCP server MAC B8-AC-6F-80-AF-7E
Loader:zimg Filesys:tftp Dev:(null) File:stbirv-lnx-3:users/fainelli/510/vmlinuz-initrd-arm Options:(null)
Reading 21815520 bytes from zImage...........
Closing network 'eth0'
RPMB: disabling host access prior to program run.
Starting program at 0x2080000 (DTB @ 0x7612000)

astrasl-lib: v1.12
SBL v4.2.2.0, Signing Tool v4.4.2.0, Profile 72116B0 ZD, Part ZD, Release build .. OK
SRR: 0x02000000@0xbe000000
AMS v2.16.4.0, Signing Tool v4.4.2.0, Profile 72116B0 ZD, Part ZD, DevOnly build .. OK
Boot Status SBL 0x00000005 AMS 0x00000005
Mon Install done
Starting AMS with no ASF
Setting params for Linux @ 0x2080000 (DTB @ 0x7612000)
Monitor virtual pstates off
TZ CPU Mask: 0xe, NW CPU Mask: 0xf
Starting mon at 0x6400000 (params @ 0x70607a8 0x0)

AMS version v1.82:v2.16.4 v1.82-13-g4841047e6ea1-dirty
(2022-12-21 15:45:00 fainelli@fainelli-desktop)
Libsec v2.16.4 git:v1.82-AMS_2_16_4_82

AMS: clk: ver={v4,rdb=35d145a,pl=5c356dc,xls=28-12,S=7fd0}, nclks=245, Pmap4(nc=5)^[[0m
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.10.167-1.2pre-g7221b85b7881 (ff944844@stbirv-lnx-3) (arm-linux-gcc (stbgcc-8.3-0.4-dirty) 8.3.0, GNU ld (stbgcc-8.3-0.4-dirty) 2.32) #2 SMP Mon Feb 13 11:30:53 PST 2023
[    0.000000] CPU: ARMv7 Processor [420f1000] revision 0 (ARMv7), cr=30c5383d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: BCM972116SV
[    0.000000] random: crng init done
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Alloc: MEMC0: 0x0000000010800000-0x00000000bdc00000
[    0.000000] Alloc: MEMC0: 0x0000000100000000-0x0000000104000000
[    0.000000] cma: Reserved 16 MiB at 0x000000000f800000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x00000000107fffff]
[    0.000000]   Normal   empty
[    0.000000]   HighMem  [mem 0x0000000010800000-0x000000013fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x00000000107fffff]
[    0.000000]   node   0: [mem 0x0000000010800000-0x00000000bdbfffff]
[    0.000000]   node   0: [mem 0x00000000bdc00000-0x00000000bdffefff]
[    0.000000]   node   0: [mem 0x00000000bdfff000-0x00000000bfffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x0000000103ffffff]
[    0.000000]   node   0: [mem 0x0000000104000000-0x000000013fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000013fffffff]
[    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: Trusted OS resident on physical CPU 0x0
[    0.000000] psci: SMC Calling Convention v1.1
[    0.000000] percpu: Embedded 20 pages/cpu s49548 r8192 d24180 u81920
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1048048
[    0.000000] Kernel command line: 
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x0000000009600000-0x000000000d600000] (64MB)
[    0.000000] Memory: 4008192K/4194304K available (12288K kernel code, 1248K rwdata, 2776K rodata, 18432K init, 277K bss, 169728K reserved, 16384K cma-reserved, 3891196K highmem)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] ftrace: allocating 39073 entries in 115 pages
[    0.000000] ftrace: allocated 115 pages with 5 groups
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 27.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x63a1e71a3, max_idle_ns: 440795203123 ns
[    0.000006] sched_clock: 56 bits at 27MHz, resolution 37ns, wraps every 4398046511093ns
[    0.000015] Switching to timer-based delay loop, resolution 37ns
[    0.000287] Console: colour dummy device 80x30
[    0.000607] printk: console [tty0] enabled
[    0.000647] Calibrating delay loop (skipped), value calculated using timer frequency.. 54.00 BogoMIPS (lpj=27000)
[    0.000669] pid_max: default: 32768 minimum: 301
[    0.000786] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.000798] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.001358] CPU: Testing write buffer coherency: ok
[    0.001650] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.001941] Setting up static identity map for 0x200000 - 0x200060
[    0.002033] rcu: Hierarchical SRCU implementation.
[    0.002888] brcmstb: biuctrl: MCP: Enabling write pairing
[    0.003001] smp: Bringing up secondary CPUs ...
[    0.003955] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.004888] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.005756] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.005810] smp: Brought up 1 node, 4 CPUs
[    0.005848] SMP: Total of 4 processors activated (216.00 BogoMIPS).
[    0.005857] CPU: All CPU(s) started in HYP mode.
[    0.005864] CPU: Virtualization extensions available.
[    0.006906] devtmpfs: initialized
[    0.009695] VFP support v0.3: implementor 42 architecture 3 part 10 variant 0 rev 0
[    0.009887] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.009921] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.010533] pinctrl core: initialized pinctrl subsystem
[    0.011653] NET: Registered protocol family 16
[    0.012533] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.013506] thermal_sys: Registered thermal governor 'step_wise'
[    0.013525] thermal_sys: Registered thermal governor 'user_space'
[    0.014004] cpuidle: using governor menu
[    0.014051] No ATAGs?
[    0.014146] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.014158] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.014475] /rdb/syscon@f0202400: Broadcom Brahma-B15 readahead cache
[    0.014880] Serial: AMBA PL011 UART driver
[    0.037034] SCSI subsystem initialized
[    0.037429] usbcore: registered new interface driver usbfs
[    0.037496] usbcore: registered new interface driver hub
[    0.037546] usbcore: registered new device driver usb
[    0.037636] mc: Linux media interface: v0.10
[    0.037680] videodev: Linux video capture interface: v2.00
[    0.037717] pps_core: LinuxPPS API ver. 1 registered
[    0.037727] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.037753] PTP clock support registered
[    0.038341] arm-scmi brcm_scmi@0: SCMI Notifications - Core Enabled.
[    0.054874] arm-scmi brcm_scmi@0: SCMI Protocol v1.0 'brcm-scmi:' Firmware version 0x1
[    0.055398] Advanced Linux Sound Architecture Driver Initialized.
[    0.056210] clocksource: Switched to clocksource arch_sys_counter
[    0.639489] NET: Registered protocol family 2
[    0.639612] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.639894] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[    0.639920] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.639942] TCP bind hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.639966] TCP: Hash tables configured (established 2048 bind 2048)
[    0.640055] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.640074] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.640159] NET: Registered protocol family 1
[    0.640529] RPC: Registered named UNIX socket transport module.
[    0.640540] RPC: Registered udp transport module.
[    0.640548] RPC: Registered tcp transport module.
[    0.640555] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.641128] PCI: CLS 0 bytes, default 64
[    3.992327] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    3.992584] hw perfevents: enabled with armv7_cortex_a15_on_a53 PMU driver, 7 counters available
[    3.993853] Initialise system trusted keyrings
[    3.994035] workingset: timestamp_bits=30 max_order=20 bucket_order=0
[    3.997079] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    3.997556] NFS: Registering the id_resolver key type
[    3.997587] Key type id_resolver registered
[    3.997594] Key type id_legacy registered
[    3.997647] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    3.997658] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    3.997682] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    3.997853] fuse: init (API version 7.32)
[    3.998562] Key type asymmetric registered
[    3.998584] Asymmetric key parser 'x509' registered
[    3.998621] bounce: pool size: 64 pages
[    3.998655] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    3.998669] io scheduler mq-deadline registered
[    3.998677] io scheduler kyber registered
[    3.999394] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f0403000, parent irq: 44)
[    3.999516] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f0201000, parent irq: 45)
[    3.999585] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f0201a00, parent irq: 46)
[    3.999660] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f0410640, parent irq: 47)
[    3.999732] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f04d1200, parent irq: 48)
[    3.999815] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f041a600, parent irq: 49)
[    3.999969] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f040a500, parent irq: 52)
[    4.000040] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f041a400, parent irq: 53)
[    4.000108] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f040a540, parent irq: 54)
[    4.000177] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f041a440, parent irq: 55)
[    4.000294] irq_brcmstb_l2: registered L2 intc (/rdb/interrupt-controller@f0419000, parent irq: 56)
[    4.000743] brcm-gisb-arb f0400000.gisb-arb: registered irqs: 57, 58
[    4.004690] brcm-pcie f0460000.pcie: host bridge /pcie@f0460000 ranges:
[    4.004739] brcm-pcie f0460000.pcie:      MEM 0x00c0000000..0x00dfffffff -> 0x00c0000000
[    4.004761] brcm-pcie f0460000.pcie:   IB MEM 0x0000000000..0x00bfffffff -> 0x0100000000
[    4.004777] brcm-pcie f0460000.pcie:   IB MEM 0x0100000000..0x013fffffff -> 0x01c0000000
[    4.060530] brcmstb-pm-psci: Using PSCI based system PM (full featured)
[    4.060595] debugfs: Directory 'brcmstb-pm' with parent '/' already present!
[    4.061240] brcmstb_memc f1102000.memc-ddr: registered
[    4.061923] brcm-waketimer f041a680.waketimer: wake IRQ found: 63
[    4.061992] brcm-waketimer f041a680.waketimer: timer IRQ found: 64
[    4.062363] brcm-waketimer f041a680.waketimer: registered as rtc0
[    4.062409] brcm-waketimer f041a680.waketimer: setting system clock to 1970-01-01T00:00:28 UTC (28)
[    4.062428] brcm-waketimer f041a680.waketimer: registered wake timer
[    4.065944] brcmstb-scmi-dvfs scmi_dev.3: ClkVerTest: PASS: {v4,rdb=35d145a,pl=5c356dc,xls=28-12,S=7fd0}
[    4.066659] arm-scmi brcm_scmi@0: Failed. SCMI protocol 22 not active.
[    4.092472] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    4.095582] f040c000.serial: ttyS0 at MMIO 0xf040c000 (irq = 36, base_baud = 5062500) is a 16550A
[    5.076647] printk: console [ttyS0] enabled
[    5.083210] f040d000.serial: ttyS1 at MMIO 0xf040d000 (irq = 37, base_baud = 5062500) is a 16550A
[    5.094382] f040e000.serial: ttyS2 at MMIO 0xf040e000 (irq = 38, base_baud = 5062500) is a 16550A
[    5.109445] brd: module loaded
[    5.117711] loop: module loaded
[    5.122480] brcmstb_qspi f0200920.qspi: using bspi-mspi mode
[    5.129216] spi-nor spi0.0: found mt25qu512a, expected m25p80
[    5.135083] spi-nor spi0.0: mt25qu512a (65536 Kbytes)
[    5.140210] 12 fixed-partitions partitions found on MTD device spi0.0
[    5.146669] Creating 12 MTD partitions on "spi0.0":
[    5.151562] 0x000000000000-0x000000180000 : "flash0.bolt"
[    5.157220] sysfs: cannot create duplicate filename '/devices/platform/rdb/f0200920.qspi/spi_master/spi0/spi0.0/mtd/mtd0/mtd0'
[    5.168647] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.10.167-1.2pre-g7221b85b7881 #2
[    5.176577] Hardware name: Broadcom STB (Flattened Device Tree)
[    5.182507] Backtrace: 
[    5.184972] [<c0d37da0>] (dump_backtrace) from [<c0d38050>] (show_stack+0x20/0x24)
[    5.192557]  r7:c36074d0 r6:60000013 r5:00000000 r4:c24bfdac
[    5.198228] [<c0d38030>] (show_stack) from [<c0d3d180>] (dump_stack+0xa4/0xb8)
[    5.205470] [<c0d3d0dc>] (dump_stack) from [<c0447e40>] (sysfs_warn_dup+0x68/0x74)
[    5.213054]  r7:c36074d0 r6:c363b7c0 r5:c36074d0 r4:c3342000
[    5.218725] [<c0447dd8>] (sysfs_warn_dup) from [<c0447f5c>] (sysfs_create_dir_ns+0xbc/0xfc)
[    5.227091]  r7:c36074d0 r6:ffffffef r5:c2404d08 r4:c2bd8008
[    5.232766] [<c0447ea0>] (sysfs_create_dir_ns) from [<c0714c28>] (kobject_add_internal+0xcc/0x36c)
[    5.241740]  r7:c365bcf8 r6:00000000 r5:c365bcf8 r4:c2bd8008
[    5.247411] [<c0714b5c>] (kobject_add_internal) from [<c0714f28>] (kobject_add+0x60/0xbc)
[    5.255604]  r9:00000000 r8:00000000 r7:c365bcf8 r6:00000000 r5:c2bd8008 r4:c2404d08
[    5.263366] [<c0714ec8>] (kobject_add) from [<c0835260>] (device_add+0x11c/0x7b0)
[    5.270862]  r3:00000000 r2:00000000
[    5.274443]  r7:c365bcf8 r6:c2404d08 r5:c2404d08 r4:c2bd8008
[    5.280117] [<c0835144>] (device_add) from [<c0ab4a14>] (nvmem_register+0x31c/0x884)
[    5.287875]  r10:c1047438 r9:00000000 r8:00000000 r7:00000000 r6:c2404d08 r5:c29518e4
[    5.295718]  r4:c2bd8000
[    5.298261] [<c0ab46f8>] (nvmem_register) from [<c08b66c4>] (add_mtd_device+0x294/0x574)
[    5.306368]  r10:c365bb50 r9:00000000 r8:c2404d08 r7:00000000 r6:05a00000 r5:c365bcf8
[    5.314212]  r4:c365bc00
[    5.316752] [<c08b6430>] (add_mtd_device) from [<c08b9bd8>] (add_mtd_partitions+0xcc/0x170)
[    5.325118]  r9:c365bc00 r8:0000000c r7:c306f628 r6:c365b840 r5:c365b840 r4:00000001
[    5.332878] [<c08b9b0c>] (add_mtd_partitions) from [<c08b9778>] (parse_mtd_partitions+0x114/0x4a8)
[    5.341854]  r10:00000000 r9:c365b840 r8:c2404d08 r7:00000000 r6:0000000c r5:00000000
[    5.349698]  r4:c24d1068
[    5.352238] [<c08b9664>] (parse_mtd_partitions) from [<c08b6b18>] (mtd_device_parse_register+0x78/0x1e4)
[    5.361735]  r10:00000000 r9:00000000 r8:c2404d08 r7:00000000 r6:00000000 r5:00000000
[    5.369577]  r4:c365b840
[    5.372121] [<c08b6aa0>] (mtd_device_parse_register) from [<c08e7d48>] (spi_nor_probe+0x28c/0x2cc)
[    5.381096]  r7:00000000 r6:04000000 r5:00000000 r4:c365b840
[    5.386768] [<c08e7abc>] (spi_nor_probe) from [<c09066bc>] (spi_mem_probe+0x94/0xa0)
[    5.394527]  r9:c24d2300 r8:c2524960 r7:c24d2300 r6:c310c800 r5:c35efcc0 r4:c365b400
[    5.402286] [<c0906628>] (spi_mem_probe) from [<c090177c>] (spi_drv_probe+0x94/0xb8)
[    5.410043]  r7:00000000 r6:c24d22f0 r5:00000000 r4:c365b400
[    5.415715] [<c09016e8>] (spi_drv_probe) from [<c083aa9c>] (really_probe+0x11c/0x4f4)
[    5.423559]  r7:00000000 r6:c256d5f4 r5:c256d5ec r4:c365b400
[    5.429230] [<c083a980>] (really_probe) from [<c083b0b8>] (driver_probe_device+0x88/0x204)
[    5.437511]  r10:c24c8aec r9:00000000 r8:00000001 r7:c2524960 r6:c2951ba4 r5:c24d2300
[    5.445354]  r4:c365b400
[    5.447895] [<c083b030>] (driver_probe_device) from [<c083b400>] (__device_attach_driver+0xbc/0x120)
[    5.457045]  r9:00000000 r8:00000001 r7:c365b400 r6:c2951ba4 r5:00000001 r4:c24d2300
[    5.464804] [<c083b344>] (__device_attach_driver) from [<c0838950>] (bus_for_each_drv+0x90/0xd4)
[    5.473605]  r7:c083b344 r6:c2951ba4 r5:c2404d08 r4:00000000
[    5.479276] [<c08388c0>] (bus_for_each_drv) from [<c083a888>] (__device_attach+0x104/0x1dc)
[    5.487642]  r7:c310c800 r6:c365b444 r5:c2404d08 r4:c365b400
[    5.493312] [<c083a784>] (__device_attach) from [<c083b480>] (device_initial_probe+0x1c/0x20)
[    5.501852]  r8:c256d5c4 r7:c310c800 r6:c24d263c r5:c365b400 r4:c365b400
[    5.508567] [<c083b464>] (device_initial_probe) from [<c08398b4>] (bus_probe_device+0x94/0x9c)
[    5.517195] [<c0839820>] (bus_probe_device) from [<c0835588>] (device_add+0x444/0x7b0)
[    5.525127]  r7:c310c800 r6:00000000 r5:c2404d08 r4:c365b400
[    5.530797] [<c0835144>] (device_add) from [<c0902d10>] (spi_add_device+0xbc/0x1cc)
[    5.538468]  r10:c2b9e810 r9:00000001 r8:00000000 r7:c2b9e810 r6:00000000 r5:c310c800
[    5.546310]  r4:c365b400
[    5.548850] [<c0902c54>] (spi_add_device) from [<c09031b0>] (of_register_spi_device+0x254/0x360)
[    5.557651]  r7:c310c800 r6:c2404d08 r5:cf7eaba8 r4:c365b400
[    5.563322] [<c0902f5c>] (of_register_spi_device) from [<c0903830>] (spi_register_controller+0x574/0x82c)
[    5.572906]  r9:c2404d08 r8:c0ff0900 r7:cf7eabf8 r6:cf7eaba8 r5:00000000 r4:c310c800
[    5.580666] [<c09032bc>] (spi_register_controller) from [<c090b8a8>] (bcm_qspi_probe+0x614/0x644)
[    5.589555]  r10:c2b9e810 r9:c2404d08 r8:00000000 r7:c2404d08 r6:c310cb80 r5:c2b9e800
[    5.597397]  r4:c310c800
[    5.599939] [<c090b294>] (bcm_qspi_probe) from [<c0908f48>] (brcmstb_qspi_probe+0x1c/0x20)
[    5.608218]  r10:00000000 r9:c24d3300 r8:c2524960 r7:00000000 r6:c24d3300 r5:00000000
[    5.616061]  r4:c2b9e810
[    5.618602] [<c0908f2c>] (brcmstb_qspi_probe) from [<c083d86c>] (platform_drv_probe+0x58/0xa8)
[    5.627231] [<c083d814>] (platform_drv_probe) from [<c083aa9c>] (really_probe+0x11c/0x4f4)
[    5.635510]  r7:00000000 r6:c256d5f4 r5:c256d5ec r4:c2b9e810
[    5.641180] [<c083a980>] (really_probe) from [<c083b0b8>] (driver_probe_device+0x88/0x204)
[    5.649459]  r10:c2539000 r9:c1259854 r8:c35ef2b8 r7:c2524960 r6:c24d3300 r5:c24d3300
[    5.657301]  r4:c2b9e810
[    5.659842] [<c083b030>] (driver_probe_device) from [<c083b4ec>] (device_driver_attach+0x68/0x70)
[    5.668731]  r9:c1259854 r8:c35ef2b8 r7:c083b4f4 r6:c24d3300 r5:00000000 r4:c2b9e810
[    5.676490] [<c083b484>] (device_driver_attach) from [<c083b5f8>] (__driver_attach+0x104/0x170)
[    5.685203]  r7:c083b4f4 r6:c24d3300 r5:c2b9e810 r4:c24d3300
[    5.690873] [<c083b4f4>] (__driver_attach) from [<c0838854>] (bus_for_each_dev+0x84/0xc4)
[    5.699066]  r7:c083b4f4 r6:c24d3300 r5:c2404d08 r4:c2b73934
[    5.704736] [<c08387d0>] (bus_for_each_dev) from [<c083a2c4>] (driver_attach+0x2c/0x30)
[    5.712754]  r7:00000000 r6:c35ef280 r5:c24c90b0 r4:c24d3300
[    5.718424] [<c083a298>] (driver_attach) from [<c0839bb8>] (bus_add_driver+0x1b4/0x220)
[    5.726443] [<c0839a04>] (bus_add_driver) from [<c083c140>] (driver_register+0x84/0x118)
[    5.734549]  r8:ffffe000 r7:00000000 r6:c122e828 r5:c2404d08 r4:c24d3300
[    5.741264] [<c083c0bc>] (driver_register) from [<c083d7c0>] (__platform_driver_register+0x50/0x58)
[    5.750325]  r5:c2404d08 r4:c2515640
[    5.753912] [<c083d770>] (__platform_driver_register) from [<c122e84c>] (brcmstb_qspi_driver_init+0x24/0x28)
[    5.763759] [<c122e828>] (brcmstb_qspi_driver_init) from [<c0202244>] (do_one_initcall+0x64/0x26c)
[    5.772738] [<c02021e0>] (do_one_initcall) from [<c12014bc>] (kernel_init_freeable+0x1ec/0x244)
[    5.781452]  r8:00000007 r7:c2a1c2c0 r6:c1259834 r5:0000011d r4:c1290ba4
[    5.788168] [<c12012d0>] (kernel_init_freeable) from [<c0d462b8>] (kernel_init+0x18/0x12c)
[    5.796448]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c0d462a0
[    5.804291]  r4:00000000
[    5.806830] [<c0d462a0>] (kernel_init) from [<c0200138>] (ret_from_fork+0x14/0x3c)
[    5.814413] Exception stack(0xc2951fb0 to 0xc2951ff8)
[    5.819473] 1fa0:                                     00000000 00000000 00000000 00000000
[    5.827666] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    5.835858] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    5.842483]  r5:c0d462a0 r4:00000000
[    5.846078] kobject_add_internal failed for mtd0 with -EEXIST, don't try to register things with the same name in the same directory.
[    5.858106] mtd mtd0: Failed to register NVMEM device
[    5.863340] Deleting MTD partitions on "spi0.0":
[    5.868137] sysfs: cannot create duplicate filename '/bus/nvmem/devices/mtd0'
[    5.875298] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.10.167-1.2pre-g7221b85b7881 #2
[    5.883229] Hardware name: Broadcom STB (Flattened Device Tree)
[    5.889157] Backtrace: 
[    5.891620] [<c0d37da0>] (dump_backtrace) from [<c0d38050>] (show_stack+0x20/0x24)
[    5.899204]  r7:c363b980 r6:60000013 r5:00000000 r4:c24bfdac
[    5.904875] [<c0d38030>] (show_stack) from [<c0d3d180>] (dump_stack+0xa4/0xb8)
[    5.912116] [<c0d3d0dc>] (dump_stack) from [<c0447e40>] (sysfs_warn_dup+0x68/0x74)
[    5.919698]  r7:c363b980 r6:c363b980 r5:c2b0d108 r4:c3343000
[    5.925369] [<c0447dd8>] (sysfs_warn_dup) from [<c04481cc>] (sysfs_do_create_link_sd+0xec/0xf8)
[    5.934083]  r7:c363b980 r6:c2b0d108 r5:ffffffef r4:c35acb58
[    5.939753] [<c04480e0>] (sysfs_do_create_link_sd) from [<c0448210>] (sysfs_create_link+0x38/0x44)
[    5.948729]  r9:c0e92434 r8:00000000 r7:c365b938 r6:00000000 r5:c24e5960 r4:c2bd8408
[    5.956491] [<c04481d8>] (sysfs_create_link) from [<c0839768>] (bus_add_device+0x84/0x13c)
[    5.964770] [<c08396e4>] (bus_add_device) from [<c0835510>] (device_add+0x3cc/0x7b0)
[    5.972528]  r7:c365b938 r6:00000000 r5:c2404d08 r4:c2bd8408
[    5.978201] [<c0835144>] (device_add) from [<c0ab48d0>] (nvmem_register+0x1d8/0x884)
[    5.985958]  r10:c1047438 r9:00000000 r8:00000000 r7:00000000 r6:c2404d08 r5:c295198c
[    5.993801]  r4:c2bd8400
[    5.996342] [<c0ab46f8>] (nvmem_register) from [<c08b66c4>] (add_mtd_device+0x294/0x574)
[    6.004449]  r10:00000000 r9:00000000 r8:c2404d08 r7:00000000 r6:05a00000 r5:c365b938
[    6.012291]  r4:c365b840
[    6.014832] [<c08b6430>] (add_mtd_device) from [<c08b6bbc>] (mtd_device_parse_register+0x11c/0x1e4)
[    6.023895]  r9:00000000 r8:c2404d08 r7:00000000 r6:00000000 r5:ffffffef r4:c365b840
[    6.031656] [<c08b6aa0>] (mtd_device_parse_register) from [<c08e7d48>] (spi_nor_probe+0x28c/0x2cc)
[    6.040632]  r7:00000000 r6:04000000 r5:00000000 r4:c365b840
[    6.046303] [<c08e7abc>] (spi_nor_probe) from [<c09066bc>] (spi_mem_probe+0x94/0xa0)
[    6.054061]  r9:c24d2300 r8:c2524960 r7:c24d2300 r6:c310c800 r5:c35efcc0 r4:c365b400
[    6.061820] [<c0906628>] (spi_mem_probe) from [<c090177c>] (spi_drv_probe+0x94/0xb8)
[    6.069577]  r7:00000000 r6:c24d22f0 r5:00000000 r4:c365b400
[    6.075248] [<c09016e8>] (spi_drv_probe) from [<c083aa9c>] (really_probe+0x11c/0x4f4)
[    6.083092]  r7:00000000 r6:c256d5f4 r5:c256d5ec r4:c365b400
[    6.088763] [<c083a980>] (really_probe) from [<c083b0b8>] (driver_probe_device+0x88/0x204)
[    6.097042]  r10:c24c8aec r9:00000000 r8:00000001 r7:c2524960 r6:c2951ba4 r5:c24d2300
[    6.104885]  r4:c365b400
[    6.107426] [<c083b030>] (driver_probe_device) from [<c083b400>] (__device_attach_driver+0xbc/0x120)
[    6.116575]  r9:00000000 r8:00000001 r7:c365b400 r6:c2951ba4 r5:00000001 r4:c24d2300
[    6.124335] [<c083b344>] (__device_attach_driver) from [<c0838950>] (bus_for_each_drv+0x90/0xd4)
[    6.133137]  r7:c083b344 r6:c2951ba4 r5:c2404d08 r4:00000000
[    6.138807] [<c08388c0>] (bus_for_each_drv) from [<c083a888>] (__device_attach+0x104/0x1dc)
[    6.147173]  r7:c310c800 r6:c365b444 r5:c2404d08 r4:c365b400
[    6.152844] [<c083a784>] (__device_attach) from [<c083b480>] (device_initial_probe+0x1c/0x20)
[    6.161384]  r8:c256d5c4 r7:c310c800 r6:c24d263c r5:c365b400 r4:c365b400
[    6.168098] [<c083b464>] (device_initial_probe) from [<c08398b4>] (bus_probe_device+0x94/0x9c)
[    6.176726] [<c0839820>] (bus_probe_device) from [<c0835588>] (device_add+0x444/0x7b0)
[    6.184657]  r7:c310c800 r6:00000000 r5:c2404d08 r4:c365b400
[    6.190327] [<c0835144>] (device_add) from [<c0902d10>] (spi_add_device+0xbc/0x1cc)
[    6.197998]  r10:c2b9e810 r9:00000001 r8:00000000 r7:c2b9e810 r6:00000000 r5:c310c800
[    6.205841]  r4:c365b400
[    6.208380] [<c0902c54>] (spi_add_device) from [<c09031b0>] (of_register_spi_device+0x254/0x360)
[    6.217182]  r7:c310c800 r6:c2404d08 r5:cf7eaba8 r4:c365b400
[    6.222853] [<c0902f5c>] (of_register_spi_device) from [<c0903830>] (spi_register_controller+0x574/0x82c)
[    6.232436]  r9:c2404d08 r8:c0ff0900 r7:cf7eabf8 r6:cf7eaba8 r5:00000000 r4:c310c800
[    6.240196] [<c09032bc>] (spi_register_controller) from [<c090b8a8>] (bcm_qspi_probe+0x614/0x644)
[    6.249086]  r10:c2b9e810 r9:c2404d08 r8:00000000 r7:c2404d08 r6:c310cb80 r5:c2b9e800
[    6.256928]  r4:c310c800
[    6.259468] [<c090b294>] (bcm_qspi_probe) from [<c0908f48>] (brcmstb_qspi_probe+0x1c/0x20)
[    6.267747]  r10:00000000 r9:c24d3300 r8:c2524960 r7:00000000 r6:c24d3300 r5:00000000
[    6.275590]  r4:c2b9e810
[    6.278129] [<c0908f2c>] (brcmstb_qspi_probe) from [<c083d86c>] (platform_drv_probe+0x58/0xa8)
[    6.286757] [<c083d814>] (platform_drv_probe) from [<c083aa9c>] (really_probe+0x11c/0x4f4)
[    6.295036]  r7:00000000 r6:c256d5f4 r5:c256d5ec r4:c2b9e810
[    6.300707] [<c083a980>] (really_probe) from [<c083b0b8>] (driver_probe_device+0x88/0x204)
[    6.308987]  r10:c2539000 r9:c1259854 r8:c35ef2b8 r7:c2524960 r6:c24d3300 r5:c24d3300
[    6.316829]  r4:c2b9e810
[    6.319369] [<c083b030>] (driver_probe_device) from [<c083b4ec>] (device_driver_attach+0x68/0x70)
[    6.328257]  r9:c1259854 r8:c35ef2b8 r7:c083b4f4 r6:c24d3300 r5:00000000 r4:c2b9e810
[    6.336015] [<c083b484>] (device_driver_attach) from [<c083b5f8>] (__driver_attach+0x104/0x170)
[    6.344730]  r7:c083b4f4 r6:c24d3300 r5:c2b9e810 r4:c24d3300
[    6.350401] [<c083b4f4>] (__driver_attach) from [<c0838854>] (bus_for_each_dev+0x84/0xc4)
[    6.358593]  r7:c083b4f4 r6:c24d3300 r5:c2404d08 r4:c2b73934
[    6.364264] [<c08387d0>] (bus_for_each_dev) from [<c083a2c4>] (driver_attach+0x2c/0x30)
[    6.372283]  r7:00000000 r6:c35ef280 r5:c24c90b0 r4:c24d3300
[    6.377955] [<c083a298>] (driver_attach) from [<c0839bb8>] (bus_add_driver+0x1b4/0x220)
[    6.385975] [<c0839a04>] (bus_add_driver) from [<c083c140>] (driver_register+0x84/0x118)
[    6.394080]  r8:ffffe000 r7:00000000 r6:c122e828 r5:c2404d08 r4:c24d3300
[    6.400795] [<c083c0bc>] (driver_register) from [<c083d7c0>] (__platform_driver_register+0x50/0x58)
[    6.409856]  r5:c2404d08 r4:c2515640
[    6.413442] [<c083d770>] (__platform_driver_register) from [<c122e84c>] (brcmstb_qspi_driver_init+0x24/0x28)
[    6.423291] [<c122e828>] (brcmstb_qspi_driver_init) from [<c0202244>] (do_one_initcall+0x64/0x26c)
[    6.432269] [<c02021e0>] (do_one_initcall) from [<c12014bc>] (kernel_init_freeable+0x1ec/0x244)
[    6.440982]  r8:00000007 r7:c2a1c2c0 r6:c1259834 r5:0000011d r4:c1290ba4
[    6.447699] [<c12012d0>] (kernel_init_freeable) from [<c0d462b8>] (kernel_init+0x18/0x12c)
[    6.455978]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c0d462a0
[    6.463821]  r4:00000000
[    6.466360] [<c0d462a0>] (kernel_init) from [<c0200138>] (ret_from_fork+0x14/0x3c)
[    6.473943] Exception stack(0xc2951fb0 to 0xc2951ff8)
[    6.479004] 1fa0:                                     00000000 00000000 00000000 00000000
[    6.487196] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    6.495388] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    6.502013]  r5:c0d462a0 r4:00000000
[    6.505635] mtd mtd0: Failed to register NVMEM device
[    6.510832] spi-nor: probe of spi0.0 failed with error -17
[    6.516646] brcmstb_qspi f0418000.mspi: using mspi mode
[    6.525470] bcmgenet f0480000.ethernet: GENET 5.0 EPHY: 0x0000
[    6.570267] unimac-mdio unimac-mdio.0: Broadcom UniMAC MDIO bus
[    6.577641] e1000e: Intel(R) PRO/1000 Network Driver
[    6.582660] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    6.588659] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver
[    6.596126] usbcore: registered new interface driver pegasus
[    6.601836] usbcore: registered new interface driver r8152
[    6.607362] usbcore: registered new interface driver asix
[    6.612805] usbcore: registered new interface driver ax88179_178a
[    6.618938] usbcore: registered new interface driver cdc_ether
[    6.624820] usbcore: registered new interface driver cdc_ncm
[    6.630757] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    6.637331] ehci-pci: EHCI PCI platform driver
[    6.642536] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    6.648770] ohci-pci: OHCI PCI platform driver
[    6.653271] ohci-platform: OHCI generic platform driver
[    6.659594] usbcore: registered new interface driver cdc_acm
[    6.665296] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    6.673368] usbcore: registered new interface driver usb-storage
[    6.679938] i2c /dev entries driver
[    6.684453] hwmon hwmon0: temp1_input not attached to any thermal zone
[    6.691637] brcmstb_thermal f04d1500.thermal: registered AVS TMON of-sensor driver
[    6.699985] bcm7038-wdt f040a5a8.watchdog: Registered BCM7038 Watchdog
[    6.707817] sdhci: Secure Digital Host Controller Interface driver
[    6.714064] sdhci: Copyright(c) Pierre Ossman
[    6.718440] sdhci-pltfm: SDHCI platform and OF driver helper
[    6.724595] arm-scmi brcm_scmi@0: Failed. SCMI protocol 17 not active.
[    6.731271] hid: raw HID events driver (C) Jiri Kosina
[    6.736678] usbcore: registered new interface driver usbhid
[    6.742284] usbhid: USB HID core driver
[    6.747583] NET: Registered protocol family 10
[    6.752630] Segment Routing with IPv6
[    6.756353] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    6.762705] NET: Registered protocol family 17
[    6.767238] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    6.780338] 8021q: 802.1Q VLAN Support v1.8
[    6.784575] Key type dns_resolver registered
[    6.788872] Registering SWP/SWPB emulation handler
[    6.793913] Loading compiled-in X.509 certificates
[    6.809444] brcmstb-usb-phy f0b00200.usb-phy: Suspend Clock not found in Device Tree
[    6.817818] brcm-pcie f0460000.pcie: host bridge /pcie@f0460000 ranges:
[    6.824492] brcm-pcie f0460000.pcie:      MEM 0x00c0000000..0x00dfffffff -> 0x00c0000000
[    6.832623] brcm-pcie f0460000.pcie:   IB MEM 0x0000000000..0x00bfffffff -> 0x0100000000
[    6.840738] brcm-pcie f0460000.pcie:   IB MEM 0x0100000000..0x013fffffff -> 0x01c0000000
[    6.989198] brcm-pcie f0460000.pcie: link down
[    6.998487] ehci-brcm f0b00500.ehci_v2: EHCI Host Controller
[    7.004323] ehci-brcm f0b00500.ehci_v2: new USB bus registered, assigned bus number 1
[    7.022414] ehci-brcm f0b00500.ehci_v2: irq 39, io mem 0xf0b00500
[    7.035205] ehci-brcm f0b00500.ehci_v2: USB 2.0 started, EHCI 1.00
[    7.041869] hub 1-0:1.0: USB hub found
[    7.045662] hub 1-0:1.0: 1 port detected
[    7.050323] ohci-platform f0b00600.ohci_v2: Generic Platform OHCI controller
[    7.057577] ohci-platform f0b00600.ohci_v2: new USB bus registered, assigned bus number 2
[    7.065946] ohci-platform f0b00600.ohci_v2: irq 40, io mem 0xf0b00600
[    7.128639] hub 2-0:1.0: USB hub found
[    7.132434] hub 2-0:1.0: 1 port detected
[    7.137306] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    7.153357] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    7.160486] ALSA device list:
[    7.163467]   No soundcards found.
[    7.181552] Freeing unused kernel memory: 18432K
[    7.194400] Run /init as init process
Mounting /proc and /sys...
Looking for modules to load...
Mounting remaining file systems...
Starting rngd...
Switching to schedutil governor...
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Configuring eth0 interface
[    7.385647] unimac-mdio-0:01: Broadcom BCM72116 PHY revision: 0x00
[    7.392417] bcmgenet f0480000.ethernet: configuring instance for internal PHY
[    7.400291] bcmgenet f0480000.ethernet eth0: Link is Down
Configuring lo interface
Configuring sit0 interface
Starting network services
* WARNING: this system uses box mode #0 until Nexus is loaded.
* This box mode is extremely conservative and will not produce
* meaningful benchmarks when used. Consider loading the desired
* box mode through Nexus before benchmarking this system.
# sensors
scmi_sensors-virtual-0
Adapter: Virtual device
avs_stb_volt: 983.00 mV 
avs_pvt_temp:  +32.1 C  

# sleep 5
[    9.706183] bcmgenet f0480000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[    9.714758] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
# ping -c 2 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: seq=0 ttl=64 time=0.539 ms
64 bytes from 192.168.1.254: seq=1 ttl=64 time=0.324 ms

--- 192.168.1.254 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.324/0.431/0.539 ms
# cat /sys/devices/platform/rdb/*/dpfe_*
cat: can't open '/sys/devices/platform/rdb/*/dpfe_*': No such file or directory
# pml
[   13.717888] brcm-waketimer f041a680.waketimer: Using sysfs attributes, consider using 'rtcwake'
Pass 1 out of 1, mode=none, tp_a[   13.734880] PM: suspend entry (deep)
ll=1, cycle_tp=, sleep=, wakeup_[   13.740989] Filesystems sync: 0.000 seconds
time=1
[   13.750169] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   13.758279] OOM killer disabled.
[   13.761524] Freezing remaining freezable tasks ... (elapsed 0.000 seconds) done.
[   13.769648] printk: Suspending console(s) (use no_console_suspend to debug)
AMS: System is entering S2 (retention: 1)...^[[0m
[   13.873572] bcmgenet f0480000.ethernet eth0: Link is Down
[   13.877613] Disabling non-boot CPUs ...
[   13.879261] CPU1 killed.
[   13.881063] CPU2 killed.
[   13.882939] CPU3 killed.
[   13.883463] Enabling non-boot CPUs ...
[   13.884391] CPU1 is up
[   13.885198] CPU2 is up
[   13.886023] CPU3 is up
[   13.898317] bcmgenet f0480000.ethernet eth0: Link is Down
[   14.005465] OOM killer enabled.
[   14.008633] Restarting tasks ... done.
[   14.013410] PM: suspend exit
------------------------------[   14.017946] brcm-waketimer f041a680.waketimer: Using sysfs attributes, consider using 'rtcwake'

# sensors
scmi_sensors-virtual-0
Adapter: Virtual device
avs_stb_volt: 961.00 mV 
avs_pvt_temp:  +32.1 C  

# sleep 5
[   16.467499] bcmgenet f0480000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
# ping -c 2 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: seq=0 ttl=64 time=0.541 ms
64 bytes from 192.168.1.254: seq=1 ttl=64 time=0.312 ms

--- 192.168.1.254 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.312/0.426/0.541 ms
# cat /sys/devices/platform/rdb/*/dpfe_*
cat: can't open '/sys/devices/platform/rdb/*/dpfe_*': No such file or directory
# pml -d
[   20.218288] brcm-waketimer f041a680.waketimer: Using sysfs attributes, consider using 'rtcwake'
Pass 1 out of 1, mode=none, tp_a[   20.234915] PM: suspend entry (deep)
ll=1, cycle_tp=, sleep=, wakeup_[   20.241025] Filesystems sync: 0.000 seconds
time=1
[   20.248721] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   20.256910] OOM killer disabled.
[   20.260162] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   20.268691] printk: Suspending console(s) (use no_console_suspend to debug)
AMS: System is entering S3...^[[0m
\0CPU 0123
AVS init...
AVS init OK
AVS load:select_image: addr_offset: 00051000 part_offset: 00000000 bootStatus: 20252b25
AVS load_code offset =00051000
LOADED
I2C @ f041a380
BID: 00000010
BCM972116SV

using board #a
select_image: addr_offset: 00056800 part_offset: 00000000 bootStatus: 202b2525
MEMSYS-STD
SHMOO 03480100 BLD:memsys-72165a-m2rc2-3433-g129c38858b-dirty HW:hpg0_b2p8 shmoo_ver:3.72.1.0
MCB: FLEX
OVERTEMP: mon ON
AVS start:AVS resuming S3...


81840001
001ff308
10000008
OK
Resume DDR PHYs...Done
DDR0: !@ ffe09800 <= ffe084a0 006071f8 MEMSYS-0 @ f1100000 OK
Sdram Scramble OTP = 0x00000001
SCRAMBLE_S3
Sdram Scramble OK
select_image: addr_offset: 00020000 part_offset: 00000000 bootStatus: 2025252b
BFW load mode OTP = 0x0000000f 
bfw_hash_locked = 0x00000000 
BFW key3 OK, BFW load OK
BFW v4.8.1
PM: verify params @ 064a4140
PM: verify OK
DTU: enabled
MVBAR: 07008000 -> 06400000
PM: re-entry not covered by hash
PM: verify main memory, len 000040f0
PM: verify OK
MICH: disable success
AVS: Running!
status=000000ff
AVS-STB:
v=978
t=32089
PV=858
MV=978
PC2=0
AVS rev=032a0100
OS reentry @ 06400000
SSBM1
CLR BSS 0700a8b0 to 0700a920
SSBM2
CACHE FLUSH OK
STACK @ 0700af00
ARCH: CONFIG OK
astrasl-lib: v1.12
SBL v4.2.2.0, Signing Tool v4.4.2.0, Profile 72116B0 ZD, Part ZD, Release build .. OK
SRR: 0x02000000@0xbe000000
AMS v2.16.4.0, Signing Tool v4.4.2.0, Profile 72116B0 ZD, Part ZD, DevOnly build .. OK
Boot Status SBL 0x00000005 AMS 0x00000005
Starting AMS with no ASF

AMS version v1.82:v2.16.4 v1.82-13-g4841047e6ea1-dirty
(2022-12-21 15:45:00 fainelli@fainelli-desktop)
Libsec v2.16.4 git:v1.82-AMS_2_16_4_82

AMS: clk: ver={v4,rdb=35d145a,pl=5c356dc,xls=28-12,S=7fd0}, nclks=245, Pmap4(nc=5)^[[0m\r[   20.372553] bcmgenet f0480000.ethernet eth0: Link is Down
[   20.376573] Disabling non-boot CPUs ...
[   20.378105] CPU1 killed.
[   20.379845] CPU2 killed.
[   20.381441] CPU3 killed.
[   20.381902] Enabling non-boot CPUs ...
[   20.382957] CPU1 is up
[   20.383811] CPU2 is up
[   20.384676] CPU3 is up
[   20.416231] usb usb1: root hub lost power or was reset
[   20.416306] bcmgenet f0480000.ethernet eth0: Link is Down
[   20.472148] usb usb2: root hub lost power or was reset
[   20.581769] OOM killer enabled.
[   20.584930] Restarting tasks ... done.
[   20.589282] PM: suspend exit
------------------------------
[   20.593484] brcm-waketimer f041a680.waketimer: Using sysfs attributes, consider using 'rtcwake'
# sensors
scmi_sensors-virtual-0
Adapter: Virtual device
avs_stb_volt: 978.00 mV 
avs_pvt_temp:  +32.1 C  

# sleep 5
[   22.926562] bcmgenet f0480000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
# ping -c 2 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: seq=0 ttl=64 time=0.561 ms
64 bytes from 192.168.1.254: seq=1 ttl=64 time=0.327 ms

--- 192.168.1.254 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.327/0.444/0.561 ms
# cat /sys/devices/platform/rdb/*/dpfe_*
cat: can't open '/sys/devices/platform/rdb/*/dpfe_*': No such file or directory
# 

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (140 preceding siblings ...)
  2023-02-13 19:50 ` Florian Fainelli
@ 2023-02-13 23:33 ` Shuah Khan
  2023-02-14  6:51 ` Guenter Roeck
                   ` (5 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Shuah Khan @ 2023-02-13 23:33 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 2/13/23 07:49, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.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] 165+ messages in thread

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 19:50 ` Florian Fainelli
@ 2023-02-14  6:20   ` Greg Kroah-Hartman
  2023-02-14 13:20     ` Russell King (Oracle)
  2023-02-14 14:53     ` Russell King (Oracle)
  2023-02-14  9:16   ` Naresh Kamboju
  1 sibling, 2 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-14  6:20 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: stable, rmk+kernel, Srinivas Kandagatla, patches, linux-kernel,
	torvalds, akpm, linux, shuah, patches, lkft-triage, pavel,
	jonathanh, sudipm.mukherjee, srw, rwarsow

On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
> On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 5.10.168 release.
> > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > and the diffstat can be found below.
> > 
> > thanks,
> > 
> > greg k-h
> 
> There is a regression coming from:
> 
> nvmem: core: fix registration vs use race
> 
> which causes the following to happen for MTD devices:
> 
> [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
> to register things with the same name in the same directory.
> [    7.846965] spi-nor: probe of spi0.0 failed with error -17
> 
> attached is a full log with the call trace. This does not happen with
> v6.2-rc8 where the MTD partitions are successfully registered.

Can you use `git bisect` to find the offending commit?

thanks,

greg k-h

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (141 preceding siblings ...)
  2023-02-13 23:33 ` Shuah Khan
@ 2023-02-14  6:51 ` Guenter Roeck
  2023-02-14 11:05 ` Sudip Mukherjee (Codethink)
                   ` (4 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14  6:51 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
> Anything received after that time might be too late.
> 

Building powerpc:ppc32_allmodconfig ... failed
--------------
Error log:
In file included from arch/powerpc/net/bpf_jit_comp.c:16:
arch/powerpc/net/bpf_jit32.h:131:8: error: redefinition of 'struct codegen_context'
   131 | struct codegen_context {
       |        ^~~~~~~~~~~~~~~
In file included from arch/powerpc/net/bpf_jit32.h:13,
                  from arch/powerpc/net/bpf_jit_comp.c:16:
arch/powerpc/net/bpf_jit.h:124:8: note: originally defined here
   124 | struct codegen_context {
       |        ^~~~~~~~~~~~~~~
arch/powerpc/net/bpf_jit_comp.c:18:20: error: redefinition of 'bpf_flush_icache'
    18 | static inline void bpf_flush_icache(void *start, void *end)
       |                    ^~~~~~~~~~~~~~~~
In file included from arch/powerpc/net/bpf_jit32.h:13,
                  from arch/powerpc/net/bpf_jit_comp.c:16:
arch/powerpc/net/bpf_jit.h:139:20: note: previous definition of 'bpf_flush_icache' with type 'void(void *, void *)'
   139 | static inline void bpf_flush_icache(void *start, void *end)
       |                    ^~~~~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:286: arch/powerpc/net/bpf_jit_comp.o] Error 1

Guenter


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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 19:50 ` Florian Fainelli
  2023-02-14  6:20   ` Greg Kroah-Hartman
@ 2023-02-14  9:16   ` Naresh Kamboju
  2023-02-14 13:21     ` Naresh Kamboju
  1 sibling, 1 reply; 165+ messages in thread
From: Naresh Kamboju @ 2023-02-14  9:16 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Florian Fainelli
  Cc: stable, rmk+kernel, Srinivas Kandagatla, patches, linux-kernel,
	torvalds, akpm, linux, shuah, patches, lkft-triage, pavel,
	jonathanh, sudipm.mukherjee, srw, rwarsow, christophe.kerello,
	Arnd Bergmann

Hi Greg and Florian,

On Tue, 14 Feb 2023 at 01:20, Florian Fainelli <f.fainelli@gmail.com> wrote:
>
> On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 5.10.168 release.
> > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
>
> There is a regression coming from:
>
> nvmem: core: fix registration vs use race
>
> which causes the following to happen for MTD devices:
>
> [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't
> try to register things with the same name in the same directory.
> [    7.846965] spi-nor: probe of spi0.0 failed with error -17
>
> attached is a full log with the call trace. This does not happen with
> v6.2-rc8 where the MTD partitions are successfully registered.qfprom

Like said above,
[    5.965191] kobject_add_internal failed for qfprom0 with -EEXIST,
don't try to register things with the same name in the same directory.
[    5.969110] qcom,qfprom: probe of 5c000.qfprom failed with error -17

Following kernel crash noticed on arm64 Qcom dragonboard 410c
device.

We will bisect this problem and get back to you soon.

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd030]
[    0.000000] Linux version 5.10.168-rc1 (tuxmake@tuxmake)
(aarch64-linux-gnu-gcc (Debian 11.3.0-11) 11.3.0, GNU ld (GNU Binutils
for Debian) 2.40) #1 SMP PREEMPT @1676300748
[    0.000000] Machine model: Qualcomm Technologies, Inc. APQ 8016 SBC
..
[    5.808975] usbhid: USB HID core driver
[    5.827592] genirq: irq_chip msmgpio did not update eff. affinity
mask of irq 75
[    5.845725] sysfs: cannot create duplicate filename
'/devices/platform/soc/5c000.qfprom/qfprom0'
[    5.845994] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.10.168-rc1 #1
[    5.853735] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
[    5.860077] Call trace:
[    5.866760]  dump_backtrace+0x0/0x1f0
[    5.868952]  show_stack+0x20/0x30
[    5.872766]  dump_stack+0x110/0x160
[    5.876068]  sysfs_warn_dup+0x6c/0x90
[    5.879371]  sysfs_create_dir_ns+0xf0/0x110
[    5.883201]  kobject_add_internal+0xa0/0x324
[    5.887195]  kobject_add+0x94/0x10c
[    5.891693]  device_add+0xfc/0x780
[    5.894902]  nvmem_register+0x6fc/0x930
[    5.898383]  devm_nvmem_register+0x4c/0x94
[    5.902121]  qfprom_probe+0x1e0/0x29c
[    5.906279]  platform_drv_probe+0x5c/0xb4
[    5.910021]  really_probe+0xf8/0x52c
[    5.914004]  driver_probe_device+0xfc/0x170
[    5.917663]  device_driver_attach+0xd0/0xe0
[    5.921567]  __driver_attach+0xd4/0x194
[    5.925729]  bus_for_each_dev+0x78/0xdc
[    5.929546]  driver_attach+0x2c/0x40
[    5.933361]  bus_add_driver+0x154/0x254
[    5.937183]  driver_register+0x80/0x13c
[    5.940745]  __platform_driver_register+0x50/0x5c
[    5.944583]  qfprom_driver_init+0x24/0x30
[    5.949428]  do_one_initcall+0x8c/0x470
[    5.953419]  kernel_init_freeable+0x320/0x38c
[    5.957077]  kernel_init+0x1c/0x128
[    5.961570]  ret_from_fork+0x10/0x30
[    5.965191] kobject_add_internal failed for qfprom0 with -EEXIST,
don't try to register things with the same name in the same directory.
[    5.969110] qcom,qfprom: probe of 5c000.qfprom failed with error -17
[    6.000014] netem: version 1.3
[    6.000346] ipip: IPv4 and MPLS over IPv4 tunneling driver
[    6.005040] gre: GRE over IPv4 demultiplexor driver
[    6.007652] ip_gre: GRE over IPv4 tunneling driver
[    6.018597] IPv4 over IPsec tunneling driver
[    6.024506] NET: Registered protocol family 10
[    6.031635] Segment Routing with IPv6
[    6.036627] ip6_gre: GRE over IPv6 tunneling driver
[    6.039047] NET: Registered protocol family 17
[    6.042070] 8021q: 802.1Q VLAN Support v1.8
[    6.045837] 9pnet: Installing 9P2000 support
[    6.049608] Key type dns_resolver registered
[    6.055585] registered taskstats version 1
[    6.057828] Loading compiled-in X.509 certificates
[    6.393191] debugfs: Directory '4a9000.thermal-sensor' with parent
'tsens' already present!


please refer following link for more details on boot and test logs,
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.167-140-g65fa84413c15/testrun/14762346/suite/log-parser-test/test/check-kernel-exception/log
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.167-140-g65fa84413c15/testrun/14762346/suite/log-parser-test/test/check-kernel-exception/details/

metadata:
  git_ref: linux-5.10.y
  git_repo: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
  git_sha: 65fa84413c15ee131ad4b76077c48f0603d1d8ec
  git_describe: v5.10.167-140-g65fa84413c15
  kernel_version: 5.10.168-rc1
  kernel-config:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2LglWCZtZStAHvQWoY1YTAIT2ws/config
  build-url: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc/-/pipelines/776087062
  artifact-location:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2LglWCZtZStAHvQWoY1YTAIT2ws
  toolchain: gcc-11


--
Linaro LKFT
https://lkft.linaro.org

> --
> Florian

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (142 preceding siblings ...)
  2023-02-14  6:51 ` Guenter Roeck
@ 2023-02-14 11:05 ` Sudip Mukherjee (Codethink)
  2023-02-14 17:04 ` Guenter Roeck
                   ` (3 subsequent siblings)
  147 siblings, 0 replies; 165+ messages in thread
From: Sudip Mukherjee (Codethink) @ 2023-02-14 11:05 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 Mon, Feb 13, 2023 at 03:49:05PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
> Anything received after that time might be too late.

Build test (gcc version 11.3.1 20230210):
mips: 63 configs -> no failure
arm: 104 configs -> no failure
arm64: 3 configs -> no failure
x86_64: 4 configs -> no failure
alpha 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 qemu. New warning. [1]

[    0.768162] sysfs: cannot create duplicate filename '/devices/pnp0/00:05/cmos_nvram0'
[    0.768167] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.168-rc1 #1
[    0.768168] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a-rebuilt.opensuse.org 04/01/2014
[    0.768170] Call Trace:
[    0.768184]  dump_stack+0x72/0x92
[    0.768187]  sysfs_warn_dup.cold+0x17/0x2a
[    0.768191]  sysfs_create_dir_ns+0xbc/0xd0
[    0.768194]  kobject_add_internal+0xb4/0x300
[    0.768195]  kobject_add+0x81/0xb0
[    0.768198]  ? klist_children_get+0x1a/0x30
[    0.768200]  device_add+0xdc/0x820
[    0.768203]  ? acpi_fwnode_property_present+0x5a/0x70
[    0.768206]  nvmem_register+0x4d6/0x7e0
[    0.768208]  devm_nvmem_register+0x3f/0x80
[    0.768211]  rtc_nvmem_register+0x38/0xe0
[    0.768213]  cmos_do_probe+0x56b/0x610
[    0.768215]  ? cmos_set_alarm_callback+0xd0/0xd0
[    0.768216]  ? rtc_handler+0xe0/0xe0
[    0.768218]  cmos_pnp_probe+0x74/0xa0
[    0.768220]  pnp_device_probe+0xc2/0x170
[    0.768222]  ? cmos_do_probe+0x610/0x610
[    0.768223]  really_probe+0x28a/0x470
[    0.768225]  driver_probe_device+0xec/0x160
[    0.768227]  device_driver_attach+0xb3/0xc0
[    0.768229]  ? device_driver_attach+0xc0/0xc0
[    0.768230]  __driver_attach+0xae/0x160
[    0.768232]  ? device_driver_attach+0xc0/0xc0
[    0.768234]  bus_for_each_dev+0x7c/0xc0
[    0.768235]  driver_attach+0x1e/0x30
[    0.768237]  bus_add_driver+0x148/0x210
[    0.768239]  driver_register+0x8f/0xf0
[    0.768241]  ? rtc_dev_init+0x39/0x39
[    0.768243]  pnp_register_driver+0x20/0x30
[    0.768244]  cmos_init+0x16/0x7d
[    0.768245]  ? rtc_dev_init+0x39/0x39
[    0.768249]  do_one_initcall+0x4a/0x1e0
[    0.768251]  kernel_init_freeable+0x22a/0x281
[    0.768254]  ? rest_init+0xbe/0xbe
[    0.768255]  kernel_init+0xe/0x112
[    0.768257]  ret_from_fork+0x22/0x30
[    0.768259] kobject_add_internal failed for cmos_nvram0 with -EEXIST, don't try to register things with the same name in the same directory.


arm64: Booted on rpi4b (4GB model). No regression. [2]

Regression:
x86_64: Boot failed on my test laptop with a panic. Will try a bisect later today.


[1]. https://openqa.qa.codethink.co.uk/tests/2856
[2]. https://openqa.qa.codethink.co.uk/tests/2857


Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>

-- 
Regards
Sudip

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14  6:20   ` Greg Kroah-Hartman
@ 2023-02-14 13:20     ` Russell King (Oracle)
  2023-02-14 14:53     ` Russell King (Oracle)
  1 sibling, 0 replies; 165+ messages in thread
From: Russell King (Oracle) @ 2023-02-14 13:20 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Florian Fainelli, stable, Srinivas Kandagatla, patches,
	linux-kernel, torvalds, akpm, linux, shuah, patches, lkft-triage,
	pavel, jonathanh, sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 07:20:46AM +0100, Greg Kroah-Hartman wrote:
> On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
> > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 5.10.168 release.
> > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > > and the diffstat can be found below.
> > > 
> > > thanks,
> > > 
> > > greg k-h
> > 
> > There is a regression coming from:
> > 
> > nvmem: core: fix registration vs use race
> > 
> > which causes the following to happen for MTD devices:
> > 
> > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
> > to register things with the same name in the same directory.
> > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
> > 
> > attached is a full log with the call trace. This does not happen with
> > v6.2-rc8 where the MTD partitions are successfully registered.
> 
> Can you use `git bisect` to find the offending commit?

I would guess that there is something wrong with the backporting of
my series - possibly a patch was dropped from the series?

"nvmem: core: fix cleanup after dev_set_name()" missing, which
initialises the struct device? But if that was missing, then
"nvmem: core: fix registration vs use race" wouldn't apply.

... but then you did send me a failure notice for the above
blamed commit, so I wonder how you applied it.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14  9:16   ` Naresh Kamboju
@ 2023-02-14 13:21     ` Naresh Kamboju
  0 siblings, 0 replies; 165+ messages in thread
From: Naresh Kamboju @ 2023-02-14 13:21 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Florian Fainelli, rmk+kernel
  Cc: stable, Srinivas Kandagatla, patches, linux-kernel, torvalds,
	akpm, linux, shuah, patches, lkft-triage, pavel, jonathanh,
	sudipm.mukherjee, srw, rwarsow, christophe.kerello,
	Arnd Bergmann, Anders Roxell

On Tue, 14 Feb 2023 at 14:46, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
>
> Hi Greg and Florian,
>
> On Tue, 14 Feb 2023 at 01:20, Florian Fainelli <f.fainelli@gmail.com> wrote:
> >
> > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 5.10.168 release.
> > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > > and the diffstat can be found below.
> > >
> > > thanks,
> > >
> > > greg k-h
> >
> > There is a regression coming from:
> >
> > nvmem: core: fix registration vs use race
> >
> > which causes the following to happen for MTD devices:
> >
> > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't
> > try to register things with the same name in the same directory.
> > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
> >
> > attached is a full log with the call trace. This does not happen with
> > v6.2-rc8 where the MTD partitions are successfully registered.qfprom
>
> Like said above,
> [    5.965191] kobject_add_internal failed for qfprom0 with -EEXIST,
> don't try to register things with the same name in the same directory.
> [    5.969110] qcom,qfprom: probe of 5c000.qfprom failed with error -17
>
> Following kernel crash noticed on arm64 Qcom dragonboard 410c
> device.
>
> We will bisect this problem and get back to you soon.

Our bisection found this as the first bad commit and reverting this patch
solved the reported problem.

first bad commit: [a4aee79941de8559ce6e28d47fad22efc89bfe92]
       nvmem: core: fix registration vs use race


> Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
>
> [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd030]
> [    0.000000] Linux version 5.10.168-rc1 (tuxmake@tuxmake)
> (aarch64-linux-gnu-gcc (Debian 11.3.0-11) 11.3.0, GNU ld (GNU Binutils
> for Debian) 2.40) #1 SMP PREEMPT @1676300748
> [    0.000000] Machine model: Qualcomm Technologies, Inc. APQ 8016 SBC
> ..
> [    5.808975] usbhid: USB HID core driver
> [    5.827592] genirq: irq_chip msmgpio did not update eff. affinity
> mask of irq 75
> [    5.845725] sysfs: cannot create duplicate filename
> '/devices/platform/soc/5c000.qfprom/qfprom0'
> [    5.845994] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.10.168-rc1 #1
> [    5.853735] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
> [    5.860077] Call trace:
> [    5.866760]  dump_backtrace+0x0/0x1f0
> [    5.868952]  show_stack+0x20/0x30
> [    5.872766]  dump_stack+0x110/0x160
> [    5.876068]  sysfs_warn_dup+0x6c/0x90
> [    5.879371]  sysfs_create_dir_ns+0xf0/0x110
> [    5.883201]  kobject_add_internal+0xa0/0x324
> [    5.887195]  kobject_add+0x94/0x10c
> [    5.891693]  device_add+0xfc/0x780
> [    5.894902]  nvmem_register+0x6fc/0x930
> [    5.898383]  devm_nvmem_register+0x4c/0x94
> [    5.902121]  qfprom_probe+0x1e0/0x29c
> [    5.906279]  platform_drv_probe+0x5c/0xb4
> [    5.910021]  really_probe+0xf8/0x52c
> [    5.914004]  driver_probe_device+0xfc/0x170
> [    5.917663]  device_driver_attach+0xd0/0xe0
> [    5.921567]  __driver_attach+0xd4/0x194
> [    5.925729]  bus_for_each_dev+0x78/0xdc
> [    5.929546]  driver_attach+0x2c/0x40
> [    5.933361]  bus_add_driver+0x154/0x254
> [    5.937183]  driver_register+0x80/0x13c
> [    5.940745]  __platform_driver_register+0x50/0x5c
> [    5.944583]  qfprom_driver_init+0x24/0x30
> [    5.949428]  do_one_initcall+0x8c/0x470
> [    5.953419]  kernel_init_freeable+0x320/0x38c
> [    5.957077]  kernel_init+0x1c/0x128
> [    5.961570]  ret_from_fork+0x10/0x30
> [    5.965191] kobject_add_internal failed for qfprom0 with -EEXIST,
> don't try to register things with the same name in the same directory.
> [    5.969110] qcom,qfprom: probe of 5c000.qfprom failed with error -17
> [    6.000014] netem: version 1.3
> [    6.000346] ipip: IPv4 and MPLS over IPv4 tunneling driver
> [    6.005040] gre: GRE over IPv4 demultiplexor driver
> [    6.007652] ip_gre: GRE over IPv4 tunneling driver
> [    6.018597] IPv4 over IPsec tunneling driver
> [    6.024506] NET: Registered protocol family 10
> [    6.031635] Segment Routing with IPv6
> [    6.036627] ip6_gre: GRE over IPv6 tunneling driver
> [    6.039047] NET: Registered protocol family 17
> [    6.042070] 8021q: 802.1Q VLAN Support v1.8
> [    6.045837] 9pnet: Installing 9P2000 support
> [    6.049608] Key type dns_resolver registered
> [    6.055585] registered taskstats version 1
> [    6.057828] Loading compiled-in X.509 certificates
> [    6.393191] debugfs: Directory '4a9000.thermal-sensor' with parent
> 'tsens' already present!
>
>
> please refer following link for more details on boot and test logs,
> https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.167-140-g65fa84413c15/testrun/14762346/suite/log-parser-test/test/check-kernel-exception/log
> https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.167-140-g65fa84413c15/testrun/14762346/suite/log-parser-test/test/check-kernel-exception/details/
>
> metadata:
>   git_ref: linux-5.10.y
>   git_repo: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
>   git_sha: 65fa84413c15ee131ad4b76077c48f0603d1d8ec
>   git_describe: v5.10.167-140-g65fa84413c15
>   kernel_version: 5.10.168-rc1
>   kernel-config:
> https://storage.tuxsuite.com/public/linaro/lkft/builds/2LglWCZtZStAHvQWoY1YTAIT2ws/config
>   build-url: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc/-/pipelines/776087062
>   artifact-location:
> https://storage.tuxsuite.com/public/linaro/lkft/builds/2LglWCZtZStAHvQWoY1YTAIT2ws
>   toolchain: gcc-11
>

- Naresh

> --
> Linaro LKFT
> https://lkft.linaro.org
>
> > --
> > Florian

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14  6:20   ` Greg Kroah-Hartman
  2023-02-14 13:20     ` Russell King (Oracle)
@ 2023-02-14 14:53     ` Russell King (Oracle)
  2023-02-14 15:09       ` Sasha Levin
  1 sibling, 1 reply; 165+ messages in thread
From: Russell King (Oracle) @ 2023-02-14 14:53 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Florian Fainelli, stable, Srinivas Kandagatla, patches,
	linux-kernel, torvalds, akpm, linux, shuah, patches, lkft-triage,
	pavel, jonathanh, sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 07:20:46AM +0100, Greg Kroah-Hartman wrote:
> On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
> > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 5.10.168 release.
> > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > > and the diffstat can be found below.
> > > 
> > > thanks,
> > > 
> > > greg k-h
> > 
> > There is a regression coming from:
> > 
> > nvmem: core: fix registration vs use race
> > 
> > which causes the following to happen for MTD devices:
> > 
> > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
> > to register things with the same name in the same directory.
> > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
> > 
> > attached is a full log with the call trace. This does not happen with
> > v6.2-rc8 where the MTD partitions are successfully registered.
> 
> Can you use `git bisect` to find the offending commit?

The reason for this is because, due to how my patch series was
backported, you have ended up with nvmem_register() initialising
its embedded device, and then calling device_add() on it _twice_.

Basically, the backport of:

	"nvmem: core: fix registration vs use race"

is broken, because the original patch _moved_ the device_add() and
that has not been carried forward to whatever got applied to stable
trees.

It looks like the 5.15-stable version of this patch was correct.

Maybe whoever tried to fixup the failure needs to try again?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 14:53     ` Russell King (Oracle)
@ 2023-02-14 15:09       ` Sasha Levin
  2023-02-14 15:25         ` Russell King (Oracle)
  0 siblings, 1 reply; 165+ messages in thread
From: Sasha Levin @ 2023-02-14 15:09 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Greg Kroah-Hartman, Florian Fainelli, stable,
	Srinivas Kandagatla, patches, linux-kernel, torvalds, akpm,
	linux, shuah, patches, lkft-triage, pavel, jonathanh,
	sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 02:53:13PM +0000, Russell King (Oracle) wrote:
>On Tue, Feb 14, 2023 at 07:20:46AM +0100, Greg Kroah-Hartman wrote:
>> On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
>> > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
>> > > This is the start of the stable review cycle for the 5.10.168 release.
>> > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
>> > > and the diffstat can be found below.
>> > >
>> > > thanks,
>> > >
>> > > greg k-h
>> >
>> > There is a regression coming from:
>> >
>> > nvmem: core: fix registration vs use race
>> >
>> > which causes the following to happen for MTD devices:
>> >
>> > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
>> > to register things with the same name in the same directory.
>> > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
>> >
>> > attached is a full log with the call trace. This does not happen with
>> > v6.2-rc8 where the MTD partitions are successfully registered.
>>
>> Can you use `git bisect` to find the offending commit?
>
>The reason for this is because, due to how my patch series was
>backported, you have ended up with nvmem_register() initialising
>its embedded device, and then calling device_add() on it _twice_.
>
>Basically, the backport of:
>
>	"nvmem: core: fix registration vs use race"
>
>is broken, because the original patch _moved_ the device_add() and
>that has not been carried forward to whatever got applied to stable
>trees.
>
>It looks like the 5.15-stable version of this patch was correct.
>
>Maybe whoever tried to fixup the failure needs to try again?

I've dropped the backport series from both 5.15 and 5.10.

-- 
Thanks,
Sasha

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 15:09       ` Sasha Levin
@ 2023-02-14 15:25         ` Russell King (Oracle)
  2023-02-14 15:33           ` Sasha Levin
  0 siblings, 1 reply; 165+ messages in thread
From: Russell King (Oracle) @ 2023-02-14 15:25 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Greg Kroah-Hartman, Florian Fainelli, stable,
	Srinivas Kandagatla, patches, linux-kernel, torvalds, akpm,
	linux, shuah, patches, lkft-triage, pavel, jonathanh,
	sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 10:09:38AM -0500, Sasha Levin wrote:
> On Tue, Feb 14, 2023 at 02:53:13PM +0000, Russell King (Oracle) wrote:
> > On Tue, Feb 14, 2023 at 07:20:46AM +0100, Greg Kroah-Hartman wrote:
> > > On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
> > > > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > > > > This is the start of the stable review cycle for the 5.10.168 release.
> > > > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > > > > and the diffstat can be found below.
> > > > >
> > > > > thanks,
> > > > >
> > > > > greg k-h
> > > >
> > > > There is a regression coming from:
> > > >
> > > > nvmem: core: fix registration vs use race
> > > >
> > > > which causes the following to happen for MTD devices:
> > > >
> > > > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
> > > > to register things with the same name in the same directory.
> > > > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
> > > >
> > > > attached is a full log with the call trace. This does not happen with
> > > > v6.2-rc8 where the MTD partitions are successfully registered.
> > > 
> > > Can you use `git bisect` to find the offending commit?
> > 
> > The reason for this is because, due to how my patch series was
> > backported, you have ended up with nvmem_register() initialising
> > its embedded device, and then calling device_add() on it _twice_.
> > 
> > Basically, the backport of:
> > 
> > 	"nvmem: core: fix registration vs use race"
> > 
> > is broken, because the original patch _moved_ the device_add() and
> > that has not been carried forward to whatever got applied to stable
> > trees.
> > 
> > It looks like the 5.15-stable version of this patch was correct.
> > 
> > Maybe whoever tried to fixup the failure needs to try again?
> 
> I've dropped the backport series from both 5.15 and 5.10.

So you've dropped what looks to be a perfectly good backport in 5.15,
and all of the 5.10 despite it just being the last patch which is the
problem. Sounds like a total over-reaction to me.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 15:25         ` Russell King (Oracle)
@ 2023-02-14 15:33           ` Sasha Levin
  2023-02-14 15:39             ` Russell King (Oracle)
  0 siblings, 1 reply; 165+ messages in thread
From: Sasha Levin @ 2023-02-14 15:33 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Greg Kroah-Hartman, Florian Fainelli, stable,
	Srinivas Kandagatla, patches, linux-kernel, torvalds, akpm,
	linux, shuah, patches, lkft-triage, pavel, jonathanh,
	sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 03:25:52PM +0000, Russell King (Oracle) wrote:
>On Tue, Feb 14, 2023 at 10:09:38AM -0500, Sasha Levin wrote:
>> On Tue, Feb 14, 2023 at 02:53:13PM +0000, Russell King (Oracle) wrote:
>> > On Tue, Feb 14, 2023 at 07:20:46AM +0100, Greg Kroah-Hartman wrote:
>> > > On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
>> > > > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
>> > > > > This is the start of the stable review cycle for the 5.10.168 release.
>> > > > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
>> > > > > and the diffstat can be found below.
>> > > > >
>> > > > > thanks,
>> > > > >
>> > > > > greg k-h
>> > > >
>> > > > There is a regression coming from:
>> > > >
>> > > > nvmem: core: fix registration vs use race
>> > > >
>> > > > which causes the following to happen for MTD devices:
>> > > >
>> > > > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
>> > > > to register things with the same name in the same directory.
>> > > > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
>> > > >
>> > > > attached is a full log with the call trace. This does not happen with
>> > > > v6.2-rc8 where the MTD partitions are successfully registered.
>> > >
>> > > Can you use `git bisect` to find the offending commit?
>> >
>> > The reason for this is because, due to how my patch series was
>> > backported, you have ended up with nvmem_register() initialising
>> > its embedded device, and then calling device_add() on it _twice_.
>> >
>> > Basically, the backport of:
>> >
>> > 	"nvmem: core: fix registration vs use race"
>> >
>> > is broken, because the original patch _moved_ the device_add() and
>> > that has not been carried forward to whatever got applied to stable
>> > trees.
>> >
>> > It looks like the 5.15-stable version of this patch was correct.
>> >
>> > Maybe whoever tried to fixup the failure needs to try again?
>>
>> I've dropped the backport series from both 5.15 and 5.10.
>
>So you've dropped what looks to be a perfectly good backport in 5.15,
>and all of the 5.10 despite it just being the last patch which is the
>problem. Sounds like a total over-reaction to me.

The context is that we want to get the releases out today, and neither
of us will have time to verify that we did the right thing in 5.15 in
the next few hours.

I'm just defering it to the next release cycle which is probably a few
days away, not completely throwing it away.... why is it such a big
deal?

-- 
Thanks,
Sasha

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 15:33           ` Sasha Levin
@ 2023-02-14 15:39             ` Russell King (Oracle)
  0 siblings, 0 replies; 165+ messages in thread
From: Russell King (Oracle) @ 2023-02-14 15:39 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Greg Kroah-Hartman, Florian Fainelli, stable,
	Srinivas Kandagatla, patches, linux-kernel, torvalds, akpm,
	linux, shuah, patches, lkft-triage, pavel, jonathanh,
	sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 10:33:15AM -0500, Sasha Levin wrote:
> On Tue, Feb 14, 2023 at 03:25:52PM +0000, Russell King (Oracle) wrote:
> > On Tue, Feb 14, 2023 at 10:09:38AM -0500, Sasha Levin wrote:
> > > On Tue, Feb 14, 2023 at 02:53:13PM +0000, Russell King (Oracle) wrote:
> > > > On Tue, Feb 14, 2023 at 07:20:46AM +0100, Greg Kroah-Hartman wrote:
> > > > > On Mon, Feb 13, 2023 at 11:50:24AM -0800, Florian Fainelli wrote:
> > > > > > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > > > > > > This is the start of the stable review cycle for the 5.10.168 release.
> > > > > > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > > > > > > and the diffstat can be found below.
> > > > > > >
> > > > > > > thanks,
> > > > > > >
> > > > > > > greg k-h
> > > > > >
> > > > > > There is a regression coming from:
> > > > > >
> > > > > > nvmem: core: fix registration vs use race
> > > > > >
> > > > > > which causes the following to happen for MTD devices:
> > > > > >
> > > > > > [    6.031640] kobject_add_internal failed for mtd0 with -EEXIST, don't try
> > > > > > to register things with the same name in the same directory.
> > > > > > [    7.846965] spi-nor: probe of spi0.0 failed with error -17
> > > > > >
> > > > > > attached is a full log with the call trace. This does not happen with
> > > > > > v6.2-rc8 where the MTD partitions are successfully registered.
> > > > >
> > > > > Can you use `git bisect` to find the offending commit?
> > > >
> > > > The reason for this is because, due to how my patch series was
> > > > backported, you have ended up with nvmem_register() initialising
> > > > its embedded device, and then calling device_add() on it _twice_.
> > > >
> > > > Basically, the backport of:
> > > >
> > > > 	"nvmem: core: fix registration vs use race"
> > > >
> > > > is broken, because the original patch _moved_ the device_add() and
> > > > that has not been carried forward to whatever got applied to stable
> > > > trees.
> > > >
> > > > It looks like the 5.15-stable version of this patch was correct.
> > > >
> > > > Maybe whoever tried to fixup the failure needs to try again?
> > > 
> > > I've dropped the backport series from both 5.15 and 5.10.
> > 
> > So you've dropped what looks to be a perfectly good backport in 5.15,
> > and all of the 5.10 despite it just being the last patch which is the
> > problem. Sounds like a total over-reaction to me.
> 
> The context is that we want to get the releases out today, and neither
> of us will have time to verify that we did the right thing in 5.15 in
> the next few hours.
> 
> I'm just defering it to the next release cycle which is probably a few
> days away, not completely throwing it away.... why is it such a big
> deal?

Maybe because you didn't explain that it was being dropped
_temporarily_?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (143 preceding siblings ...)
  2023-02-14 11:05 ` Sudip Mukherjee (Codethink)
@ 2023-02-14 17:04 ` Guenter Roeck
  2023-02-14 17:59   ` Guenter Roeck
  2023-02-14 17:15 ` Guenter Roeck
                   ` (2 subsequent siblings)
  147 siblings, 1 reply; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14 17:04 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
> Anything received after that time might be too late.
> 

We don't know the reason/cause yet, but Chromebooks with arm64 CPU
no longer boot with this merge applied to chromeos-5.10. We'll revert
the nvmem patches and try again. If that doesn't help we'll need
to bisect which will take some time.

Guenter


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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (144 preceding siblings ...)
  2023-02-14 17:04 ` Guenter Roeck
@ 2023-02-14 17:15 ` Guenter Roeck
  2023-02-14 17:51   ` Guenter Roeck
  2023-02-14 19:45 ` Salvatore Bonaccorso
  2023-02-15  7:30 ` zhouzhixiu
  147 siblings, 1 reply; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14 17:15 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
> Anything received after that time might be too late.
> 

Seen with several x86_64 boot tests during reboot:

[   13.465146] ------------[ cut here ]------------
[   13.465644] list_del corruption. prev->next should be ffff9836448a5008, but was ffff9836448a2010
ILLOPC: ffffffffae597813: 0f 0b
[   13.466452] WARNING: CPU: 0 PID: 302 at lib/list_debug.c:59 __list_del_entry_valid+0xb3/0xe0
[   13.466710] Modules linked in:
[   13.467103] CPU: 0 PID: 302 Comm: init Not tainted 5.10.168-rc1+ #1
[   13.467281] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
[   13.467545] RIP: 0010:__list_del_entry_valid+0xb3/0xe0
[   13.468234] Code: cc cc cc 4c 89 c2 48 c7 c7 f8 c6 82 af e8 ad c9 8e 00 0f 0b 31 c0 c3 cc cc cc cc 4c 89 c2 48 c7 c7 30 c7 82 af e8 95 c9 8e 00 <0f> 0b 31 c0 c3 cc cc cc cc 4c 89 c6 48 c7 c7 70 c7 82 af e8 7d c9
[   13.468694] RSP: 0018:ffff9f160017bde0 EFLAGS: 00000282
[   13.469076] RAX: 0000000000000000 RBX: ffff9836448a5008 RCX: 0000000000000006
[   13.469297] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffffae0e03dd
[   13.469494] RBP: ffff98364482c2f0 R08: 0000000000000001 R09: 0000000000000001
[   13.469699] R10: 0000000000000001 R11: ffffffffafa6f3e0 R12: ffff9836448a5000
[   13.469974] R13: ffff9836448a3910 R14: 00000000fee1dead R15: 0000000000000000
[   13.470122] FS:  00007ff4118d7b28(0000) GS:ffff98365f600000(0000) knlGS:0000000000000000
[   13.470230] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   13.470311] CR2: 00007fd877982830 CR3: 0000000005218000 CR4: 00000000001506f0
[   13.470438] Call Trace:
[   13.470532]  device_shutdown+0xae/0x1c0
[   13.470610]  __do_sys_reboot.cold+0x2f/0x5b
[   13.470675]  ? __lock_acquire+0x5bd/0x2640
[   13.470777]  ? lock_acquire+0xc6/0x2b0
[   13.470934]  ? lockdep_hardirqs_on_prepare+0xdc/0x1a0
[   13.471015]  ? syscall_enter_from_user_mode+0x1d/0x50
[   13.471101]  do_syscall_64+0x33/0x40
[   13.471162]  entry_SYSCALL_64_after_hwframe+0x61/0xc6
[   13.471313] RIP: 0033:0x7ff411860aa6
[   13.471437] Code: ff 5a c3 48 63 ff b8 bb 00 00 00 0f 05 48 89 c7 e9 95 e9 ff ff 48 63 d7 bf ad de e1 fe 50 be 69 19 12 28 b8 a9 00 00 00 0f 05 <48> 89 c7 e8 78 e9 ff ff 5a c3 49 89 ca 50 48 63 d2 4d 63 c0 b8 d8
[   13.471627] RSP: 002b:00007ffd01d415e0 EFLAGS: 00000246 ORIG_RAX: 00000000000000a9
[   13.471741] RAX: ffffffffffffffda RBX: 000000000000000f RCX: 00007ff411860aa6
[   13.471899] RDX: 0000000001234567 RSI: 0000000028121969 RDI: 00000000fee1dead
[   13.472008] RBP: 0000000001234567 R08: 0000000000000000 R09: 0000000000000000
[   13.472099] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[   13.472185] R13: 00007ffd01d417a8 R14: 00007ff4118d7b28 R15: 0000000000000000
[   13.472384] irq event stamp: 479
[   13.472453] hardirqs last  enabled at (487): [<ffffffffae0e03dd>] console_unlock+0x4dd/0x5e0
[   13.472560] hardirqs last disabled at (494): [<ffffffffae0e0334>] console_unlock+0x434/0x5e0
[   13.472666] softirqs last  enabled at (242): [<ffffffffaf000fe2>] asm_call_irq_on_stack+0x12/0x20
[   13.472775] softirqs last disabled at (237): [<ffffffffaf000fe2>] asm_call_irq_on_stack+0x12/0x20
[   13.472964] ---[ end trace 34290884cd36b277 ]---

Currently bisecting.

Guenter


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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 17:15 ` Guenter Roeck
@ 2023-02-14 17:51   ` Guenter Roeck
  2023-02-14 17:54     ` Linus Torvalds
  2023-02-14 18:05     ` Greg Kroah-Hartman
  0 siblings, 2 replies; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14 17:51 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 2/14/23 09:15, Guenter Roeck wrote:
> On 2/13/23 06:49, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 5.10.168 release.
>> There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
>> Anything received after that time might be too late.
>>
> 
> Seen with several x86_64 boot tests during reboot:
> 
> [   13.465146] ------------[ cut here ]------------
> [   13.465644] list_del corruption. prev->next should be ffff9836448a5008, but was ffff9836448a2010
> ILLOPC: ffffffffae597813: 0f 0b
> [   13.466452] WARNING: CPU: 0 PID: 302 at lib/list_debug.c:59 __list_del_entry_valid+0xb3/0xe0
> [   13.466710] Modules linked in:
> [   13.467103] CPU: 0 PID: 302 Comm: init Not tainted 5.10.168-rc1+ #1
> [   13.467281] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
> [   13.467545] RIP: 0010:__list_del_entry_valid+0xb3/0xe0
> [   13.468234] Code: cc cc cc 4c 89 c2 48 c7 c7 f8 c6 82 af e8 ad c9 8e 00 0f 0b 31 c0 c3 cc cc cc cc 4c 89 c2 48 c7 c7 30 c7 82 af e8 95 c9 8e 00 <0f> 0b 31 c0 c3 cc cc cc cc 4c 89 c6 48 c7 c7 70 c7 82 af e8 7d c9
> [   13.468694] RSP: 0018:ffff9f160017bde0 EFLAGS: 00000282
> [   13.469076] RAX: 0000000000000000 RBX: ffff9836448a5008 RCX: 0000000000000006
> [   13.469297] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffffae0e03dd
> [   13.469494] RBP: ffff98364482c2f0 R08: 0000000000000001 R09: 0000000000000001
> [   13.469699] R10: 0000000000000001 R11: ffffffffafa6f3e0 R12: ffff9836448a5000
> [   13.469974] R13: ffff9836448a3910 R14: 00000000fee1dead R15: 0000000000000000
> [   13.470122] FS:  00007ff4118d7b28(0000) GS:ffff98365f600000(0000) knlGS:0000000000000000
> [   13.470230] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   13.470311] CR2: 00007fd877982830 CR3: 0000000005218000 CR4: 00000000001506f0
> [   13.470438] Call Trace:
> [   13.470532]  device_shutdown+0xae/0x1c0
> [   13.470610]  __do_sys_reboot.cold+0x2f/0x5b
> [   13.470675]  ? __lock_acquire+0x5bd/0x2640
> [   13.470777]  ? lock_acquire+0xc6/0x2b0
> [   13.470934]  ? lockdep_hardirqs_on_prepare+0xdc/0x1a0
> [   13.471015]  ? syscall_enter_from_user_mode+0x1d/0x50
> [   13.471101]  do_syscall_64+0x33/0x40
> [   13.471162]  entry_SYSCALL_64_after_hwframe+0x61/0xc6
> [   13.471313] RIP: 0033:0x7ff411860aa6
> [   13.471437] Code: ff 5a c3 48 63 ff b8 bb 00 00 00 0f 05 48 89 c7 e9 95 e9 ff ff 48 63 d7 bf ad de e1 fe 50 be 69 19 12 28 b8 a9 00 00 00 0f 05 <48> 89 c7 e8 78 e9 ff ff 5a c3 49 89 ca 50 48 63 d2 4d 63 c0 b8 d8
> [   13.471627] RSP: 002b:00007ffd01d415e0 EFLAGS: 00000246 ORIG_RAX: 00000000000000a9
> [   13.471741] RAX: ffffffffffffffda RBX: 000000000000000f RCX: 00007ff411860aa6
> [   13.471899] RDX: 0000000001234567 RSI: 0000000028121969 RDI: 00000000fee1dead
> [   13.472008] RBP: 0000000001234567 R08: 0000000000000000 R09: 0000000000000000
> [   13.472099] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
> [   13.472185] R13: 00007ffd01d417a8 R14: 00007ff4118d7b28 R15: 0000000000000000
> [   13.472384] irq event stamp: 479
> [   13.472453] hardirqs last  enabled at (487): [<ffffffffae0e03dd>] console_unlock+0x4dd/0x5e0
> [   13.472560] hardirqs last disabled at (494): [<ffffffffae0e0334>] console_unlock+0x434/0x5e0
> [   13.472666] softirqs last  enabled at (242): [<ffffffffaf000fe2>] asm_call_irq_on_stack+0x12/0x20
> [   13.472775] softirqs last disabled at (237): [<ffffffffaf000fe2>] asm_call_irq_on_stack+0x12/0x20
> [   13.472964] ---[ end trace 34290884cd36b277 ]---
> 
> Currently bisecting.
> 
Reverting the nvmem patches fixed this problem.

Guenter


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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 17:51   ` Guenter Roeck
@ 2023-02-14 17:54     ` Linus Torvalds
  2023-02-14 18:09       ` Guenter Roeck
  2023-02-14 18:05     ` Greg Kroah-Hartman
  1 sibling, 1 reply; 165+ messages in thread
From: Linus Torvalds @ 2023-02-14 17:54 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Greg Kroah-Hartman, stable, patches, linux-kernel, akpm, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

On Tue, Feb 14, 2023 at 9:51 AM Guenter Roeck <linux@roeck-us.net> wrote:
>
> Reverting the nvmem patches fixed this problem.

But upstream is fine?

                 Linus

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 17:04 ` Guenter Roeck
@ 2023-02-14 17:59   ` Guenter Roeck
  0 siblings, 0 replies; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14 17:59 UTC (permalink / raw)
  To: Greg Kroah-Hartman, stable
  Cc: patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 2/14/23 09:04, Guenter Roeck wrote:
> On 2/13/23 06:49, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 5.10.168 release.
>> There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
>> Anything received after that time might be too late.
>>
> 
> We don't know the reason/cause yet, but Chromebooks with arm64 CPU
> no longer boot with this merge applied to chromeos-5.10. We'll revert
> the nvmem patches and try again. If that doesn't help we'll need
> to bisect which will take some time.
> 

This is also caused by the nvmem problem.

Guenter


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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 17:51   ` Guenter Roeck
  2023-02-14 17:54     ` Linus Torvalds
@ 2023-02-14 18:05     ` Greg Kroah-Hartman
  1 sibling, 0 replies; 165+ messages in thread
From: Greg Kroah-Hartman @ 2023-02-14 18:05 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: stable, patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On Tue, Feb 14, 2023 at 09:51:39AM -0800, Guenter Roeck wrote:
> On 2/14/23 09:15, Guenter Roeck wrote:
> > On 2/13/23 06:49, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 5.10.168 release.
> > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +0000.
> > > Anything received after that time might be too late.
> > > 
> > 
> > Seen with several x86_64 boot tests during reboot:
> > 
> > [   13.465146] ------------[ cut here ]------------
> > [   13.465644] list_del corruption. prev->next should be ffff9836448a5008, but was ffff9836448a2010
> > ILLOPC: ffffffffae597813: 0f 0b
> > [   13.466452] WARNING: CPU: 0 PID: 302 at lib/list_debug.c:59 __list_del_entry_valid+0xb3/0xe0
> > [   13.466710] Modules linked in:
> > [   13.467103] CPU: 0 PID: 302 Comm: init Not tainted 5.10.168-rc1+ #1
> > [   13.467281] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
> > [   13.467545] RIP: 0010:__list_del_entry_valid+0xb3/0xe0
> > [   13.468234] Code: cc cc cc 4c 89 c2 48 c7 c7 f8 c6 82 af e8 ad c9 8e 00 0f 0b 31 c0 c3 cc cc cc cc 4c 89 c2 48 c7 c7 30 c7 82 af e8 95 c9 8e 00 <0f> 0b 31 c0 c3 cc cc cc cc 4c 89 c6 48 c7 c7 70 c7 82 af e8 7d c9
> > [   13.468694] RSP: 0018:ffff9f160017bde0 EFLAGS: 00000282
> > [   13.469076] RAX: 0000000000000000 RBX: ffff9836448a5008 RCX: 0000000000000006
> > [   13.469297] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffffae0e03dd
> > [   13.469494] RBP: ffff98364482c2f0 R08: 0000000000000001 R09: 0000000000000001
> > [   13.469699] R10: 0000000000000001 R11: ffffffffafa6f3e0 R12: ffff9836448a5000
> > [   13.469974] R13: ffff9836448a3910 R14: 00000000fee1dead R15: 0000000000000000
> > [   13.470122] FS:  00007ff4118d7b28(0000) GS:ffff98365f600000(0000) knlGS:0000000000000000
> > [   13.470230] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [   13.470311] CR2: 00007fd877982830 CR3: 0000000005218000 CR4: 00000000001506f0
> > [   13.470438] Call Trace:
> > [   13.470532]  device_shutdown+0xae/0x1c0
> > [   13.470610]  __do_sys_reboot.cold+0x2f/0x5b
> > [   13.470675]  ? __lock_acquire+0x5bd/0x2640
> > [   13.470777]  ? lock_acquire+0xc6/0x2b0
> > [   13.470934]  ? lockdep_hardirqs_on_prepare+0xdc/0x1a0
> > [   13.471015]  ? syscall_enter_from_user_mode+0x1d/0x50
> > [   13.471101]  do_syscall_64+0x33/0x40
> > [   13.471162]  entry_SYSCALL_64_after_hwframe+0x61/0xc6
> > [   13.471313] RIP: 0033:0x7ff411860aa6
> > [   13.471437] Code: ff 5a c3 48 63 ff b8 bb 00 00 00 0f 05 48 89 c7 e9 95 e9 ff ff 48 63 d7 bf ad de e1 fe 50 be 69 19 12 28 b8 a9 00 00 00 0f 05 <48> 89 c7 e8 78 e9 ff ff 5a c3 49 89 ca 50 48 63 d2 4d 63 c0 b8 d8
> > [   13.471627] RSP: 002b:00007ffd01d415e0 EFLAGS: 00000246 ORIG_RAX: 00000000000000a9
> > [   13.471741] RAX: ffffffffffffffda RBX: 000000000000000f RCX: 00007ff411860aa6
> > [   13.471899] RDX: 0000000001234567 RSI: 0000000028121969 RDI: 00000000fee1dead
> > [   13.472008] RBP: 0000000001234567 R08: 0000000000000000 R09: 0000000000000000
> > [   13.472099] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
> > [   13.472185] R13: 00007ffd01d417a8 R14: 00007ff4118d7b28 R15: 0000000000000000
> > [   13.472384] irq event stamp: 479
> > [   13.472453] hardirqs last  enabled at (487): [<ffffffffae0e03dd>] console_unlock+0x4dd/0x5e0
> > [   13.472560] hardirqs last disabled at (494): [<ffffffffae0e0334>] console_unlock+0x434/0x5e0
> > [   13.472666] softirqs last  enabled at (242): [<ffffffffaf000fe2>] asm_call_irq_on_stack+0x12/0x20
> > [   13.472775] softirqs last disabled at (237): [<ffffffffaf000fe2>] asm_call_irq_on_stack+0x12/0x20
> > [   13.472964] ---[ end trace 34290884cd36b277 ]---
> > 
> > Currently bisecting.
> > 
> Reverting the nvmem patches fixed this problem.

nvmem patches are now dropped and a -rc2 is pushed out.

thanks,

greg k-h

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 17:54     ` Linus Torvalds
@ 2023-02-14 18:09       ` Guenter Roeck
  0 siblings, 0 replies; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14 18:09 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Greg Kroah-Hartman, stable, patches, linux-kernel, akpm, shuah,
	patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

On 2/14/23 09:54, Linus Torvalds wrote:
> On Tue, Feb 14, 2023 at 9:51 AM Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> Reverting the nvmem patches fixed this problem.
> 
> But upstream is fine?
> 

Yes, this was a bad backport. One of the nvmem patches was missing
from the backport. However, a fix for that missing patch was backported,
causing a double device registration and all kinds of interesting
problems.

Guenter


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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (145 preceding siblings ...)
  2023-02-14 17:15 ` Guenter Roeck
@ 2023-02-14 19:45 ` Salvatore Bonaccorso
  2023-02-14 19:57   ` Guenter Roeck
  2023-02-15  7:30 ` zhouzhixiu
  147 siblings, 1 reply; 165+ messages in thread
From: Salvatore Bonaccorso @ 2023-02-14 19:45 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,

On Mon, Feb 13, 2023 at 03:49:05PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> and the diffstat can be found below.

Not pinpointed the exact cause, but booting 5.10.168-rc1 here on a
x86_64 system:

[    0.853375] rtc_cmos 00:03: RTC can wake from S4
[    0.854150] rtc_cmos 00:03: registered as rtc0
[    0.854694] rtc_cmos 00:03: setting system clock to 2023-02-14T19:44:16 UTC (1676403856)
[    0.855555] list_add double add: new=ffff90df87f15810, prev=ffff90df87f15810, next=ffff90df80145420.
[    0.856513] ------------[ cut here ]------------
[    0.857023] kernel BUG at lib/list_debug.c:33!
[    0.857519] invalid opcode: 0000 [#1] SMP NOPTI
[    0.858024] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.168-rc1+ #1
[    0.858713] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
[    0.859562] RIP: 0010:__list_add_valid.cold+0x23/0x5b
[    0.860112] Code: 01 00 e9 5c c9 bb ff 48 c7 c7 e8 35 52 ac e8 94 10 ff ff 0f 0b 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 e8 36 52 ac e8 7d 10 ff ff <0f> 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 90 36 52 ac e8 66 10 ff
[    0.860502] RSP: 0018:ffffa8db40013a78 EFLAGS: 00010246
[    0.860502] RAX: 0000000000000058 RBX: ffff90dfefaf4c00 RCX: ffffffffac8b3648
[    0.860502] RDX: 0000000000000000 RSI: 00000000ffffefff RDI: 0000000000000246
[    0.860502] RBP: ffff90df87f15808 R08: 0000000000000000 R09: ffffa8db400138a0
[    0.860502] R10: ffffa8db40013898 R11: ffffffffac8cb688 R12: ffff90df80145420
[    0.860502] R13: ffff90df87f15810 R14: ffff90df87f15810 R15: 0000000000000000
[    0.860502] FS:  0000000000000000(0000) GS:ffff90dffbc00000(0000) knlGS:0000000000000000
[    0.860502] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    0.860502] CR2: 0000000000000000 CR3: 000000016ee0a000 CR4: 0000000000350ef0
[    0.860502] Call Trace:
[    0.860502]  kobject_add_internal+0x7e/0x2d0
[    0.860502]  ? rpm_idle+0x1d/0x310
[    0.860502]  kobject_add+0x7e/0xb0
[    0.860502]  ? _cond_resched+0x16/0x50
[    0.860502]  device_add+0x118/0x840
[    0.860502]  nvmem_register+0x547/0x720
[    0.860502]  ? nvmem_unregister+0x40/0x40
[    0.860502]  devm_nvmem_register+0x3b/0x80
[    0.860502]  rtc_nvmem_register+0x33/0xe0
[    0.860502]  cmos_do_probe+0x3cc/0x5d0
[    0.860502]  ? cmos_validate_alarm+0x1c0/0x1c0
[    0.860502]  ? rtc_handler+0xd0/0xd0
[    0.860502]  ? cmos_do_probe+0x5d0/0x5d0
[    0.860502]  pnp_device_probe+0xb3/0x150
[    0.860502]  really_probe+0x222/0x480
[    0.860502]  driver_probe_device+0xe5/0x150
[    0.860502]  device_driver_attach+0xa9/0xb0
[    0.860502]  __driver_attach+0xa7/0x150
[    0.860502]  ? device_driver_attach+0xb0/0xb0
[    0.860502]  bus_for_each_dev+0x78/0xc0
[    0.860502]  bus_add_driver+0x13a/0x200
[    0.860502]  driver_register+0x8b/0xe0
[    0.860502]  ? rtc_dev_init+0x34/0x34
[    0.860502]  cmos_init+0x13/0x74
[    0.860502]  do_one_initcall+0x44/0x1d0
[    0.860502]  kernel_init_freeable+0x21e/0x280
[    0.860502]  ? rest_init+0xb4/0xb4
[    0.860502]  kernel_init+0xa/0x10c
[    0.860502]  ret_from_fork+0x22/0x30
[    0.860502] Modules linked in:
[    0.881782] ---[ end trace 15ab58632cc3d5c4 ]---
[    0.882291] RIP: 0010:__list_add_valid.cold+0x23/0x5b
[    0.882839] Code: 01 00 e9 5c c9 bb ff 48 c7 c7 e8 35 52 ac e8 94 10 ff ff 0f 0b 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 e8 36 52 ac e8 7d 10 ff ff <0f> 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 90 36 52 ac e8 66 10 ff
[    0.884708] RSP: 0018:ffffa8db40013a78 EFLAGS: 00010246
[    0.885274] RAX: 0000000000000058 RBX: ffff90dfefaf4c00 RCX: ffffffffac8b3648
[    0.886021] RDX: 0000000000000000 RSI: 00000000ffffefff RDI: 0000000000000246
[    0.886767] RBP: ffff90df87f15808 R08: 0000000000000000 R09: ffffa8db400138a0
[    0.887518] R10: ffffa8db40013898 R11: ffffffffac8cb688 R12: ffff90df80145420
[    0.888266] R13: ffff90df87f15810 R14: ffff90df87f15810 R15: 0000000000000000
[    0.889454] FS:  0000000000000000(0000) GS:ffff90dffbc00000(0000) knlGS:0000000000000000
[    0.890295] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    0.890916] CR2: 0000000000000000 CR3: 000000016ee0a000 CR4: 0000000000350ef0
[    0.891670] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    0.892493] Kernel Offset: 0x2a400000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[    0.893451] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---

Regards,
Salvatore

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 19:45 ` Salvatore Bonaccorso
@ 2023-02-14 19:57   ` Guenter Roeck
  2023-02-14 20:30     ` Salvatore Bonaccorso
  0 siblings, 1 reply; 165+ messages in thread
From: Guenter Roeck @ 2023-02-14 19:57 UTC (permalink / raw)
  To: Salvatore Bonaccorso, Greg Kroah-Hartman
  Cc: stable, patches, linux-kernel, torvalds, akpm, shuah, patches,
	lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
	rwarsow

On 2/14/23 11:45, Salvatore Bonaccorso wrote:
> Hi Greg,
> 
> On Mon, Feb 13, 2023 at 03:49:05PM +0100, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 5.10.168 release.
>> There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
>> and the diffstat can be found below.
> 
> Not pinpointed the exact cause, but booting 5.10.168-rc1 here on a
> x86_64 system:
> 
> [    0.853375] rtc_cmos 00:03: RTC can wake from S4
> [    0.854150] rtc_cmos 00:03: registered as rtc0
> [    0.854694] rtc_cmos 00:03: setting system clock to 2023-02-14T19:44:16 UTC (1676403856)
> [    0.855555] list_add double add: new=ffff90df87f15810, prev=ffff90df87f15810, next=ffff90df80145420.
> [    0.856513] ------------[ cut here ]------------
> [    0.857023] kernel BUG at lib/list_debug.c:33!
> [    0.857519] invalid opcode: 0000 [#1] SMP NOPTI
> [    0.858024] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.168-rc1+ #1
> [    0.858713] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
> [    0.859562] RIP: 0010:__list_add_valid.cold+0x23/0x5b
> [    0.860112] Code: 01 00 e9 5c c9 bb ff 48 c7 c7 e8 35 52 ac e8 94 10 ff ff 0f 0b 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 e8 36 52 ac e8 7d 10 ff ff <0f> 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 90 36 52 ac e8 66 10 ff
> [    0.860502] RSP: 0018:ffffa8db40013a78 EFLAGS: 00010246
> [    0.860502] RAX: 0000000000000058 RBX: ffff90dfefaf4c00 RCX: ffffffffac8b3648
> [    0.860502] RDX: 0000000000000000 RSI: 00000000ffffefff RDI: 0000000000000246
> [    0.860502] RBP: ffff90df87f15808 R08: 0000000000000000 R09: ffffa8db400138a0
> [    0.860502] R10: ffffa8db40013898 R11: ffffffffac8cb688 R12: ffff90df80145420
> [    0.860502] R13: ffff90df87f15810 R14: ffff90df87f15810 R15: 0000000000000000
> [    0.860502] FS:  0000000000000000(0000) GS:ffff90dffbc00000(0000) knlGS:0000000000000000
> [    0.860502] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [    0.860502] CR2: 0000000000000000 CR3: 000000016ee0a000 CR4: 0000000000350ef0
> [    0.860502] Call Trace:
> [    0.860502]  kobject_add_internal+0x7e/0x2d0
> [    0.860502]  ? rpm_idle+0x1d/0x310
> [    0.860502]  kobject_add+0x7e/0xb0
> [    0.860502]  ? _cond_resched+0x16/0x50
> [    0.860502]  device_add+0x118/0x840
> [    0.860502]  nvmem_register+0x547/0x720
> [    0.860502]  ? nvmem_unregister+0x40/0x40
> [    0.860502]  devm_nvmem_register+0x3b/0x80
> [    0.860502]  rtc_nvmem_register+0x33/0xe0
> [    0.860502]  cmos_do_probe+0x3cc/0x5d0
> [    0.860502]  ? cmos_validate_alarm+0x1c0/0x1c0
> [    0.860502]  ? rtc_handler+0xd0/0xd0
> [    0.860502]  ? cmos_do_probe+0x5d0/0x5d0
> [    0.860502]  pnp_device_probe+0xb3/0x150
> [    0.860502]  really_probe+0x222/0x480
> [    0.860502]  driver_probe_device+0xe5/0x150
> [    0.860502]  device_driver_attach+0xa9/0xb0
> [    0.860502]  __driver_attach+0xa7/0x150
> [    0.860502]  ? device_driver_attach+0xb0/0xb0
> [    0.860502]  bus_for_each_dev+0x78/0xc0
> [    0.860502]  bus_add_driver+0x13a/0x200
> [    0.860502]  driver_register+0x8b/0xe0
> [    0.860502]  ? rtc_dev_init+0x34/0x34
> [    0.860502]  cmos_init+0x13/0x74
> [    0.860502]  do_one_initcall+0x44/0x1d0
> [    0.860502]  kernel_init_freeable+0x21e/0x280
> [    0.860502]  ? rest_init+0xb4/0xb4
> [    0.860502]  kernel_init+0xa/0x10c
> [    0.860502]  ret_from_fork+0x22/0x30
> [    0.860502] Modules linked in:
> [    0.881782] ---[ end trace 15ab58632cc3d5c4 ]---
> [    0.882291] RIP: 0010:__list_add_valid.cold+0x23/0x5b
> [    0.882839] Code: 01 00 e9 5c c9 bb ff 48 c7 c7 e8 35 52 ac e8 94 10 ff ff 0f 0b 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 e8 36 52 ac e8 7d 10 ff ff <0f> 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 90 36 52 ac e8 66 10 ff
> [    0.884708] RSP: 0018:ffffa8db40013a78 EFLAGS: 00010246
> [    0.885274] RAX: 0000000000000058 RBX: ffff90dfefaf4c00 RCX: ffffffffac8b3648
> [    0.886021] RDX: 0000000000000000 RSI: 00000000ffffefff RDI: 0000000000000246
> [    0.886767] RBP: ffff90df87f15808 R08: 0000000000000000 R09: ffffa8db400138a0
> [    0.887518] R10: ffffa8db40013898 R11: ffffffffac8cb688 R12: ffff90df80145420
> [    0.888266] R13: ffff90df87f15810 R14: ffff90df87f15810 R15: 0000000000000000
> [    0.889454] FS:  0000000000000000(0000) GS:ffff90dffbc00000(0000) knlGS:0000000000000000
> [    0.890295] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [    0.890916] CR2: 0000000000000000 CR3: 000000016ee0a000 CR4: 0000000000350ef0
> [    0.891670] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [    0.892493] Kernel Offset: 0x2a400000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
> [    0.893451] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
> 

This is caused by the bad nvmem patch in -rc1. -rc2 has the fix.

Guenter



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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-14 19:57   ` Guenter Roeck
@ 2023-02-14 20:30     ` Salvatore Bonaccorso
  0 siblings, 0 replies; 165+ messages in thread
From: Salvatore Bonaccorso @ 2023-02-14 20:30 UTC (permalink / raw)
  To: Guenter Roeck, gregkh
  Cc: Greg Kroah-Hartman, stable, patches, linux-kernel, torvalds,
	akpm, shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
	sudipm.mukherjee, srw, rwarsow

Hi Guenter,

On Tue, Feb 14, 2023 at 11:57:04AM -0800, Guenter Roeck wrote:
> On 2/14/23 11:45, Salvatore Bonaccorso wrote:
> > Hi Greg,
> > 
> > On Mon, Feb 13, 2023 at 03:49:05PM +0100, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 5.10.168 release.
> > > There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> > > and the diffstat can be found below.
> > 
> > Not pinpointed the exact cause, but booting 5.10.168-rc1 here on a
> > x86_64 system:
> > 
> > [    0.853375] rtc_cmos 00:03: RTC can wake from S4
> > [    0.854150] rtc_cmos 00:03: registered as rtc0
> > [    0.854694] rtc_cmos 00:03: setting system clock to 2023-02-14T19:44:16 UTC (1676403856)
> > [    0.855555] list_add double add: new=ffff90df87f15810, prev=ffff90df87f15810, next=ffff90df80145420.
> > [    0.856513] ------------[ cut here ]------------
> > [    0.857023] kernel BUG at lib/list_debug.c:33!
> > [    0.857519] invalid opcode: 0000 [#1] SMP NOPTI
> > [    0.858024] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.168-rc1+ #1
> > [    0.858713] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
> > [    0.859562] RIP: 0010:__list_add_valid.cold+0x23/0x5b
> > [    0.860112] Code: 01 00 e9 5c c9 bb ff 48 c7 c7 e8 35 52 ac e8 94 10 ff ff 0f 0b 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 e8 36 52 ac e8 7d 10 ff ff <0f> 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 90 36 52 ac e8 66 10 ff
> > [    0.860502] RSP: 0018:ffffa8db40013a78 EFLAGS: 00010246
> > [    0.860502] RAX: 0000000000000058 RBX: ffff90dfefaf4c00 RCX: ffffffffac8b3648
> > [    0.860502] RDX: 0000000000000000 RSI: 00000000ffffefff RDI: 0000000000000246
> > [    0.860502] RBP: ffff90df87f15808 R08: 0000000000000000 R09: ffffa8db400138a0
> > [    0.860502] R10: ffffa8db40013898 R11: ffffffffac8cb688 R12: ffff90df80145420
> > [    0.860502] R13: ffff90df87f15810 R14: ffff90df87f15810 R15: 0000000000000000
> > [    0.860502] FS:  0000000000000000(0000) GS:ffff90dffbc00000(0000) knlGS:0000000000000000
> > [    0.860502] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [    0.860502] CR2: 0000000000000000 CR3: 000000016ee0a000 CR4: 0000000000350ef0
> > [    0.860502] Call Trace:
> > [    0.860502]  kobject_add_internal+0x7e/0x2d0
> > [    0.860502]  ? rpm_idle+0x1d/0x310
> > [    0.860502]  kobject_add+0x7e/0xb0
> > [    0.860502]  ? _cond_resched+0x16/0x50
> > [    0.860502]  device_add+0x118/0x840
> > [    0.860502]  nvmem_register+0x547/0x720
> > [    0.860502]  ? nvmem_unregister+0x40/0x40
> > [    0.860502]  devm_nvmem_register+0x3b/0x80
> > [    0.860502]  rtc_nvmem_register+0x33/0xe0
> > [    0.860502]  cmos_do_probe+0x3cc/0x5d0
> > [    0.860502]  ? cmos_validate_alarm+0x1c0/0x1c0
> > [    0.860502]  ? rtc_handler+0xd0/0xd0
> > [    0.860502]  ? cmos_do_probe+0x5d0/0x5d0
> > [    0.860502]  pnp_device_probe+0xb3/0x150
> > [    0.860502]  really_probe+0x222/0x480
> > [    0.860502]  driver_probe_device+0xe5/0x150
> > [    0.860502]  device_driver_attach+0xa9/0xb0
> > [    0.860502]  __driver_attach+0xa7/0x150
> > [    0.860502]  ? device_driver_attach+0xb0/0xb0
> > [    0.860502]  bus_for_each_dev+0x78/0xc0
> > [    0.860502]  bus_add_driver+0x13a/0x200
> > [    0.860502]  driver_register+0x8b/0xe0
> > [    0.860502]  ? rtc_dev_init+0x34/0x34
> > [    0.860502]  cmos_init+0x13/0x74
> > [    0.860502]  do_one_initcall+0x44/0x1d0
> > [    0.860502]  kernel_init_freeable+0x21e/0x280
> > [    0.860502]  ? rest_init+0xb4/0xb4
> > [    0.860502]  kernel_init+0xa/0x10c
> > [    0.860502]  ret_from_fork+0x22/0x30
> > [    0.860502] Modules linked in:
> > [    0.881782] ---[ end trace 15ab58632cc3d5c4 ]---
> > [    0.882291] RIP: 0010:__list_add_valid.cold+0x23/0x5b
> > [    0.882839] Code: 01 00 e9 5c c9 bb ff 48 c7 c7 e8 35 52 ac e8 94 10 ff ff 0f 0b 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 e8 36 52 ac e8 7d 10 ff ff <0f> 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 90 36 52 ac e8 66 10 ff
> > [    0.884708] RSP: 0018:ffffa8db40013a78 EFLAGS: 00010246
> > [    0.885274] RAX: 0000000000000058 RBX: ffff90dfefaf4c00 RCX: ffffffffac8b3648
> > [    0.886021] RDX: 0000000000000000 RSI: 00000000ffffefff RDI: 0000000000000246
> > [    0.886767] RBP: ffff90df87f15808 R08: 0000000000000000 R09: ffffa8db400138a0
> > [    0.887518] R10: ffffa8db40013898 R11: ffffffffac8cb688 R12: ffff90df80145420
> > [    0.888266] R13: ffff90df87f15810 R14: ffff90df87f15810 R15: 0000000000000000
> > [    0.889454] FS:  0000000000000000(0000) GS:ffff90dffbc00000(0000) knlGS:0000000000000000
> > [    0.890295] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [    0.890916] CR2: 0000000000000000 CR3: 000000016ee0a000 CR4: 0000000000350ef0
> > [    0.891670] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> > [    0.892493] Kernel Offset: 0x2a400000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
> > [    0.893451] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
> > 
> 
> This is caused by the bad nvmem patch in -rc1. -rc2 has the fix.

Confirmed; -rc3 boots fine.

For 5.10.168-rc3:

Tested-by: Salvatore Bonaccorso <carnil@debian.org>

Regards,
Salvatore

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

* Re: [PATCH 5.10 000/139] 5.10.168-rc1 review
  2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
                   ` (146 preceding siblings ...)
  2023-02-14 19:45 ` Salvatore Bonaccorso
@ 2023-02-15  7:30 ` zhouzhixiu
  147 siblings, 0 replies; 165+ messages in thread
From: zhouzhixiu @ 2023-02-15  7:30 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 2023/2/13 22:49, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.10.168 release.
> There are 139 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 Wed, 15 Feb 2023 14:46:51 +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/v5.x/stable-review/patch-5.10.168-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-5.10.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
> -------------
Tested on arm64 and x86 for  5.10.168-rc1,

Kernel 
repo:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-5.10.y
Version:  5.10.168-rc1
Commit: 65fa84413c15ee131ad4b76077c48f0603d1d8ec
Compiler: gcc version 7.3.0 (GCC)

arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 9023
passed: 9023
failed: 0
timeout: 0
--------------------------------------------------------------------

x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 9023
passed: 9023
failed: 0
timeout: 0
--------------------------------------------------------------------
Tested-by: Hulk Robot <hulkrobot@huawei.com>


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

end of thread, other threads:[~2023-02-15  7:48 UTC | newest]

Thread overview: 165+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-13 14:49 [PATCH 5.10 000/139] 5.10.168-rc1 review Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 001/139] firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 002/139] bus: sunxi-rsb: Fix error handling in sunxi_rsb_init() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 003/139] bpf: Fix incorrect state pruning for <8B spill/fill Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 004/139] powerpc/imc-pmu: Revert nest_init_lock to being a mutex Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 005/139] bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 006/139] ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 007/139] powerpc/bpf: Change register numbering for bpf_set/is_seen_register() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 008/139] powerpc/bpf: Move common helpers into bpf_jit.h Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 009/139] bpf: Support <8-byte scalar spill and refill Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 010/139] bpf: Fix to preserve reg parent/live fields when copying range info Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 011/139] bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 012/139] arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 013/139] drm/vc4: hdmi: make CEC adapter name unique Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 014/139] scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT" Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 015/139] vhost/net: Clear the pending messages when the backend is removed Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 016/139] WRITE is "data source", not destination Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 017/139] READ is "data destination", not source Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 018/139] fix iov_iter_bvec() "direction" argument Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 019/139] fix "direction" argument of iov_iter_kvec() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 020/139] virtio-net: execute xdp_do_flush() before napi_complete_done() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 021/139] sfc: correctly advertise tunneled IPv6 segmentation Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 022/139] net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 023/139] netrom: Fix use-after-free caused by accept on already connected socket Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 024/139] netfilter: br_netfilter: disable sabotage_in hook after first suppression Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 025/139] squashfs: harden sanity check in squashfs_read_xattr_id_table Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 026/139] net: phy: meson-gxl: Add generic dummy stubs for MMD register access Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 027/139] igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 028/139] can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 029/139] ata: libata: Fix sata_down_spd_limit() when no link speed is reported Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 030/139] selftests: net: udpgso_bench_rx: Fix used uninitialized compiler warning Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 031/139] selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 032/139] selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 033/139] selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 034/139] virtio-net: Keep stop() to follow mirror sequence of open() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 035/139] net: openvswitch: fix flow memory leak in ovs_flow_cmd_new Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 036/139] efi: fix potential NULL deref in efi_mem_reserve_persistent Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 037/139] qede: add netpoll support for qede driver Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 038/139] qede: execute xdp_do_flush() before napi_complete_done() Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 039/139] i2c: mxs: suppress probe-deferral error message Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 040/139] scsi: target: core: Fix warning on RT kernels Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 041/139] scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 042/139] i2c: rk3x: fix a bunch of kernel-doc warnings Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 043/139] platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 044/139] net/x25: Fix to not accept on connected socket Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 045/139] iio: adc: stm32-dfsdm: fill module aliases Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 046/139] usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 047/139] usb: dwc3: qcom: enable vbus override when in OTG dr-mode Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 048/139] usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 049/139] vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 050/139] Input: i8042 - move __initconst to fix code styling warning Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 051/139] Input: i8042 - merge quirk tables Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 052/139] Input: i8042 - add TUXEDO devices to i8042 " Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 053/139] Input: i8042 - add Clevo PCX0DX to i8042 quirk table Greg Kroah-Hartman
2023-02-13 14:49 ` [PATCH 5.10 054/139] fbcon: Check font dimension limits Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 055/139] net: qrtr: free memory on error path in radix_tree_insert() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 056/139] watchdog: diag288_wdt: do not use stack buffers for hardware data Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 057/139] watchdog: diag288_wdt: fix __diag288() inline assembly Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 058/139] ALSA: hda/realtek: Add Acer Predator PH315-54 Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 059/139] efi: Accept version 2 of memory attributes table Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 060/139] iio: hid: fix the retval in accel_3d_capture_sample Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 061/139] iio: adc: berlin2-adc: Add missing of_node_put() in error path Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 062/139] iio:adc:twl6030: Enable measurements of VUSB, VBAT and others Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 063/139] iio: imu: fxos8700: fix ACCEL measurement range selection Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 064/139] iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 065/139] iio: imu: fxos8700: fix IMU data bits returned to user space Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 066/139] iio: imu: fxos8700: fix map label of channel type to MAGN sensor Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 067/139] iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 068/139] iio: imu: fxos8700: fix incorrect ODR mode readback Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 069/139] iio: imu: fxos8700: fix failed initialization ODR mode assignment Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 070/139] iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 071/139] iio: imu: fxos8700: fix MAGN sensor scale and unit Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 072/139] nvmem: qcom-spmi-sdam: fix module autoloading Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 073/139] parisc: Fix return code of pdc_iodc_print() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 074/139] parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 075/139] riscv: disable generation of unwind tables Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 076/139] mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 077/139] x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 078/139] fpga: stratix10-soc: Fix return value check in s10_ops_write_init() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 079/139] mm/swapfile: add cond_resched() in get_swap_pages() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 080/139] Squashfs: fix handling and sanity checking of xattr_ids count Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 081/139] drm/i915: Fix potential bit_17 double-free Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 082/139] nvmem: core: initialise nvmem->id early Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 083/139] nvmem: core: fix cell removal on error Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 084/139] serial: 8250_dma: Fix DMA Rx completion race Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 085/139] serial: 8250_dma: Fix DMA Rx rearm race Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 086/139] fbdev: smscufx: fix error handling code in ufx_usb_probe Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 087/139] f2fs: fix to do sanity check on i_extra_isize in is_alive() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 088/139] wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 089/139] nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 090/139] nvmem: core: add error handling for dev_set_name Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 091/139] nvmem: core: remove nvmem_config wp_gpio Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 092/139] nvmem: core: fix cleanup after dev_set_name() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 093/139] nvmem: core: fix registration vs use race Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 094/139] bpf: Do not reject when the stack read size is different from the tracked scalar size Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 095/139] iio:adc:twl6030: Enable measurement of VAC Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 096/139] mm/migration: return errno when isolate_huge_page failed Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 097/139] migrate: hugetlb: check for hugetlb shared PMD in node migration Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 098/139] btrfs: limit device extents to the device size Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 099/139] btrfs: zlib: zero-initialize zlib workspace Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 100/139] ALSA: hda/realtek: Add Positivo N14KP6-TG Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 101/139] ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 102/139] ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360 Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 103/139] tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 104/139] of/address: Return an error when no valid dma-ranges are found Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 105/139] can: j1939: do not wait 250 ms if the same addr was already claimed Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 106/139] xfrm: compat: change expression for switch in xfrm_xlate64 Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 107/139] IB/hfi1: Restore allocated resources on failed copyout Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 108/139] xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 109/139] IB/IPoIB: Fix legacy IPoIB due to wrong number of queues Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 110/139] RDMA/usnic: use iommu_map_atomic() under spin_lock() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 111/139] xfrm: fix bug with DSCP copy to v6 from v4 tunnel Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 112/139] bonding: fix error checking in bond_debug_reregister() Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 113/139] net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY Greg Kroah-Hartman
2023-02-13 14:50 ` [PATCH 5.10 114/139] ionic: clean interrupt before enabling queue to avoid credit race Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 115/139] uapi: add missing ip/ipv6 header dependencies for linux/stddef.h Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 116/139] ice: Do not use WQ_MEM_RECLAIM flag for workqueue Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 117/139] net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q" Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 118/139] net/mlx5e: IPoIB, Show unknown speed instead of error Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 119/139] net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 120/139] net/mlx5: fw_tracer, Zero consumer index when reloading the tracer Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 121/139] rds: rds_rm_zerocopy_callback() use list_first_entry() Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 122/139] selftests: forwarding: lib: quote the sysctl values Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 123/139] ALSA: pci: lx6464es: fix a debug loop Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 124/139] pinctrl: aspeed: Fix confusing types in return value Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 125/139] pinctrl: single: fix potential NULL dereference Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 126/139] spi: dw: Fix wrong FIFO level setting for long xfers Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 127/139] pinctrl: intel: Restore the pins that used to be in Direct IRQ mode Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 128/139] cifs: Fix use-after-free in rdata->read_into_pages() Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 129/139] net: USB: Fix wrong-direction WARNING in plusb.c Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 130/139] btrfs: free device in btrfs_close_devices for a single device filesystem Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 131/139] usb: core: add quirk for Alcor Link AK9563 smartcard reader Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 132/139] usb: typec: altmodes/displayport: Fix probe pin assign check Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 133/139] ceph: flush cap releases when the session is flushed Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 134/139] riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 135/139] arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 136/139] arm64: dts: meson-g12-common: " Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 137/139] arm64: dts: meson-axg: " Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 138/139] Fix page corruption caused by racy check in __free_pages Greg Kroah-Hartman
2023-02-13 14:51 ` [PATCH 5.10 139/139] nvmem: core: fix return value Greg Kroah-Hartman
2023-02-13 17:26 ` [PATCH 5.10 000/139] 5.10.168-rc1 review Pavel Machek
2023-02-13 19:50 ` Florian Fainelli
2023-02-14  6:20   ` Greg Kroah-Hartman
2023-02-14 13:20     ` Russell King (Oracle)
2023-02-14 14:53     ` Russell King (Oracle)
2023-02-14 15:09       ` Sasha Levin
2023-02-14 15:25         ` Russell King (Oracle)
2023-02-14 15:33           ` Sasha Levin
2023-02-14 15:39             ` Russell King (Oracle)
2023-02-14  9:16   ` Naresh Kamboju
2023-02-14 13:21     ` Naresh Kamboju
2023-02-13 23:33 ` Shuah Khan
2023-02-14  6:51 ` Guenter Roeck
2023-02-14 11:05 ` Sudip Mukherjee (Codethink)
2023-02-14 17:04 ` Guenter Roeck
2023-02-14 17:59   ` Guenter Roeck
2023-02-14 17:15 ` Guenter Roeck
2023-02-14 17:51   ` Guenter Roeck
2023-02-14 17:54     ` Linus Torvalds
2023-02-14 18:09       ` Guenter Roeck
2023-02-14 18:05     ` Greg Kroah-Hartman
2023-02-14 19:45 ` Salvatore Bonaccorso
2023-02-14 19:57   ` Guenter Roeck
2023-02-14 20:30     ` Salvatore Bonaccorso
2023-02-15  7:30 ` zhouzhixiu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.