commit 37238449af786e1be06f193ab54a60a39a776826
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jun 29 09:03:32 2022 +0200

    Linux 5.15.51
    
    Link: https://lore.kernel.org/r/20220627111938.151743692@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fc188a9a9ccdb70ccec5b2644aad0db97677611
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat Jun 11 17:10:15 2022 +0200

    powerpc/pseries: wire up rng during setup_arch()
    
    commit e561e472a3d441753bd012333b057f48fef1045b upstream.
    
    The platform's RNG must be available before random_init() in order to be
    useful for initial seeding, which in turn means that it needs to be
    called from setup_arch(), rather than from an init call. Fortunately,
    each platform already has a setup_arch function pointer, which means
    it's easy to wire this up. This commit also removes some noisy log
    messages that don't add much.
    
    Fixes: a489043f4626 ("powerpc/pseries: Implement arch_get_random_long() based on H_RANDOM")
    Cc: stable@vger.kernel.org # v3.13+
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220611151015.548325-4-Jason@zx2c4.com
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17aa69b458fde6c4a9cf5e2ff73d5b1a9346651b
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Fri Jun 24 04:11:47 2022 +0900

    kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS (2nd attempt)
    
    commit 53632ba87d9f302a8d97a11ec2f4f4eec7bb75ea upstream.
    
    If CONFIG_TRIM_UNUSED_KSYMS is enabled and the kernel is built from
    a pristine state, the vmlinux is linked twice.
    
    Commit 3fdc7d3fe4c0 ("kbuild: link vmlinux only once for
    CONFIG_TRIM_UNUSED_KSYMS") explains why this happens, but it did not fix
    the issue at all.
    
    Now I realized I had applied a wrong patch.
    
    In v1 patch [1], the autoksyms_recursive target correctly recurses to
    "$(MAKE) -f $(srctree)/Makefile autoksyms_recursive".
    
    In v2 patch [2], I accidentally dropped the diff line, and it recurses to
    "$(MAKE) -f $(srctree)/Makefile vmlinux".
    
    Restore the code I intended in v1.
    
    [1]: https://lore.kernel.org/linux-kbuild/1521045861-22418-8-git-send-email-yamada.masahiro@socionext.com/
    [2]: https://lore.kernel.org/linux-kbuild/1521166725-24157-8-git-send-email-yamada.masahiro@socionext.com/
    
    Fixes: 3fdc7d3fe4c0 ("kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Tested-by: Sami Tolvanen <samitolvanen@google.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cced9ce619ef483616b9e5ef4da6287ba2292a29
Author: Dexuan Cui <decui@microsoft.com>
Date:   Wed Jun 22 12:14:24 2022 -0700

    dma-direct: use the correct size for dma_set_encrypted()
    
    commit 3be4562584bba603f33863a00c1c32eecf772ee6 upstream.
    
    The third parameter of dma_set_encrypted() is a size in bytes rather than
    the number of pages.
    
    Fixes: 4d0564785bb0 ("dma-direct: factor out dma_set_{de,en}crypted helpers")
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8bbb4c26460cf5b6cda080c58c49faf10e9bcda
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue Jun 21 15:51:44 2022 +0300

    perf build-id: Fix caching files with a wrong build ID
    
    commit ab66fdace8581ef3b4e7cf5381a168ed4058d779 upstream.
    
    Build ID events associate a file name with a build ID.  However, when
    using perf inject, there is no guarantee that the file on the current
    machine at the current time has that build ID. Fix by comparing the
    build IDs and skip adding to the cache if they are different.
    
    Example:
    
      $ echo "int main() {return 0;}" > prog.c
      $ gcc -o prog prog.c
      $ perf record --buildid-all ./prog
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.019 MB perf.data ]
      $ file-buildid() { file $1 | awk -F= '{print $2}' | awk -F, '{print $1}' ; }
      $ file-buildid prog
      444ad9be165d8058a48ce2ffb4e9f55854a3293e
      $ file-buildid ~/.debug/$(pwd)/prog/444ad9be165d8058a48ce2ffb4e9f55854a3293e/elf
      444ad9be165d8058a48ce2ffb4e9f55854a3293e
      $ echo "int main() {return 1;}" > prog.c
      $ gcc -o prog prog.c
      $ file-buildid prog
      885524d5aaa24008a3e2b06caa3ea95d013c0fc5
    
    Before:
    
      $ perf buildid-cache --purge $(pwd)/prog
      $ perf inject -i perf.data -o junk
      $ file-buildid ~/.debug/$(pwd)/prog/444ad9be165d8058a48ce2ffb4e9f55854a3293e/elf
      885524d5aaa24008a3e2b06caa3ea95d013c0fc5
      $
    
    After:
    
      $ perf buildid-cache --purge $(pwd)/prog
      $ perf inject -i perf.data -o junk
      $ file-buildid ~/.debug/$(pwd)/prog/444ad9be165d8058a48ce2ffb4e9f55854a3293e/elf
    
      $
    
    Fixes: 454c407ec17a0c63 ("perf: add perf-inject builtin")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Link: https://lore.kernel.org/r/20220621125144.5623-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46a78d1413350571eeffc5a8b2ff1eceeb9e305b
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Mon Jun 20 11:03:48 2022 +0200

    random: update comment from copy_to_user() -> copy_to_iter()
    
    commit 63b8ea5e4f1a87dea4d3114293fc8e96a8f193d7 upstream.
    
    This comment wasn't updated when we moved from read() to read_iter(), so
    this patch makes the trivial fix.
    
    Fixes: 1b388e7765f2 ("random: convert to using fops->read_iter()")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a3a4683562ee54be46697bc9bbc55e1f14c051e
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Wed Jun 15 23:05:34 2022 +0200

    ARM: dts: bcm2711-rpi-400: Fix GPIO line names
    
    commit b9b6d4c925604b70d007feb4c77b8cc4c038d2da upstream.
    
    The GPIO expander line names has been fixed in the vendor tree last year,
    so upstream these changes.
    
    Fixes: 1c701accecf2 ("ARM: dts: Add Raspberry Pi 400 support")
    Reported-by: Ivan T. Ivanov <iivanov@suse.de>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcf2087ce4de18a55c23b1985b7ba8440224b775
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sat Jun 11 03:32:30 2022 +0900

    modpost: fix section mismatch check for exported init/exit sections
    
    commit 28438794aba47a27e922857d27b31b74e8559143 upstream.
    
    Since commit f02e8a6596b7 ("module: Sort exported symbols"),
    EXPORT_SYMBOL* is placed in the individual section ___ksymtab(_gpl)+<sym>
    (3 leading underscores instead of 2).
    
    Since then, modpost cannot detect the bad combination of EXPORT_SYMBOL
    and __init/__exit.
    
    Fix the .fromsec field.
    
    Fixes: f02e8a6596b7 ("module: Sort exported symbols")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da3ee7cd2f15922ad88a7ca6deee2eafdc7cd214
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Sun Jun 5 11:58:41 2022 +0400

    ARM: cns3xxx: Fix refcount leak in cns3xxx_init
    
    commit 1ba904b6b16e08de5aed7c1349838d9cd0d178c5 upstream.
    
    of_find_compatible_node() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when done.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: 415f59142d9d ("ARM: cns3xxx: initial DT support")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Acked-by: Krzysztof Halasa <khalasa@piap.pl>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cde4480b5ab06195b9164184b0c02ced71e601b4
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu Jun 2 08:17:21 2022 +0400

    memory: samsung: exynos5422-dmc: Fix refcount leak in of_get_dram_timings
    
    commit 1332661e09304b7b8e84e5edc11811ba08d12abe upstream.
    
    of_parse_phandle() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    This function doesn't call of_node_put() in some error paths.
    To unify the structure, Add put_node label and goto it on errors.
    
    Fixes: 6e7674c3c6df ("memory: Add DMC driver for Exynos5422")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
    Link: https://lore.kernel.org/r/20220602041721.64348-1-linmq006@gmail.com
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d9c60e868f7cf8e09956e7d5bb44d807d712699
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Jun 1 13:05:48 2022 +0400

    ARM: Fix refcount leak in axxia_boot_secondary
    
    commit 7c7ff68daa93d8c4cdea482da4f2429c0398fcde upstream.
    
    of_find_compatible_node() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when done.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: 1d22924e1c4e ("ARM: Add platform support for LSI AXM55xx SoC")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220601090548.47616-1-linmq006@gmail.com'
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10ba9d499a9fd82ed40897e734ba19870a879407
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu May 26 11:53:22 2022 +0400

    soc: bcm: brcmstb: pm: pm-arm: Fix refcount leak in brcmstb_pm_probe
    
    commit 37d838de369b07b596c19ff3662bf0293fdb09ee upstream.
    
    of_find_matching_node() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    
    In brcmstb_init_sram, it pass dn to of_address_to_resource(),
    of_address_to_resource() will call of_find_device_by_node() to take
    reference, so we should release the reference returned by
    of_find_matching_node().
    
    Fixes: 0b741b8234c8 ("soc: bcm: brcmstb: Add support for S2/S3/S5 suspend states (ARM)")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d23f76018e17618559da9eea179d137362023f95
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Mon May 23 18:55:13 2022 +0400

    ARM: exynos: Fix refcount leak in exynos_map_pmu
    
    commit c4c79525042a4a7df96b73477feaf232fe44ae81 upstream.
    
    of_find_matching_node() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    of_node_put() checks null pointer.
    
    Fixes: fce9e5bb2526 ("ARM: EXYNOS: Add support for mapping PMU base address via DT")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220523145513.12341-1-linmq006@gmail.com
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e00d3d4023c1d60e53d9200a66fe934b07ce290
Author: Aswath Govindraju <a-govindraju@ti.com>
Date:   Thu May 12 12:18:58 2022 +0530

    arm64: dts: ti: k3-am64-main: Remove support for HS400 speed mode
    
    commit 0c0af88f3f318e73237f7fadd02d0bf2b6c996bb upstream.
    
    AM64 SoC, does not support HS400 and HS200 is the maximum supported speed
    mode[1]. Therefore, fix the device tree node to reflect the same.
    
    [1] - https://www.ti.com/lit/ds/symlink/am6442.pdf
          (SPRSP56C – JANUARY 2021 – REVISED FEBRUARY 2022)
    
    Fixes: 8abae9389bdb ("arm64: dts: ti: Add support for AM642 SoC")
    Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Link: https://lore.kernel.org/r/20220512064859.32059-1-a-govindraju@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b5047643466c3ef7ea71cc8c0f5d2dc2631d7ce
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Wed May 11 18:08:23 2022 +0200

    ARM: dts: imx6qdl: correct PU regulator ramp delay
    
    commit 93a8ba2a619816d631bd69e9ce2172b4d7a481b8 upstream.
    
    Contrary to what was believed at the time, the ramp delay of 150us is not
    plenty for the PU LDO with the default step time of 512 pulses of the 24MHz
    clock. Measurements have shown that after enabling the LDO the voltage on
    VDDPU_CAP jumps to ~750mV in the first step and after that the regulator
    executes the normal ramp up as defined by the step size control.
    
    This means it takes the regulator between 360us and 370us to ramp up to
    the nominal 1.15V voltage for this power domain. With the old setting of
    the ramp delay the power up of the PU GPC domain would happen in the middle
    of the regulator ramp with the voltage being at around 900mV. Apparently
    this was enough for most units to properly power up the peripherals in the
    domain and execute the reset. Some units however, fail to power up properly,
    especially when the chip is at a low temperature. In that case any access
    to the GPU registers would yield an incorrect result with no way to recover
    from this situation.
    
    Change the ramp delay to 380us to cover the measured ramp up time with a
    bit of additional slack.
    
    Fixes: 40130d327f72 ("ARM: dts: imx6qdl: Allow disabling the PU regulator, add a enable ramp delay")
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c845b98be950768b7971e5a2d47f4ffca876e3f1
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Tue May 10 07:46:12 2022 +0200

    ARM: dts: imx7: Move hsic_phy power domain to HSIC PHY node
    
    commit 552ca27929ab28b341ae9b2629f0de3a84c98ee8 upstream.
    
    Move the power domain to its actual user. This keeps the power domain
    enabled even when the USB host is runtime suspended. This is necessary
    to detect any downstream events, like device attach.
    
    Fixes: 02f8eb40ef7b ("ARM: dts: imx7s: Add power domain for imx7d HSIC")
    Suggested-by: Jun Li <jun.li@nxp.com>
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93f7d2a7fcf33e77285db44b512eb5a8e4657fe7
Author: Kuogee Hsieh <quic_khsieh@quicinc.com>
Date:   Tue May 17 09:21:34 2022 -0700

    drm/msm/dp: Always clear mask bits to disable interrupts at dp_ctrl_reset_irq_ctrl()
    
    commit 993a2adc6e2e94a0a7b5bfc054eda90ac95f62c3 upstream.
    
    dp_catalog_ctrl_reset() will software reset DP controller. But it will
    not reset programmable registers to default value. DP driver still have
    to clear mask bits to interrupt status registers to disable interrupts
    after software reset of controller.
    
    At current implementation, dp_ctrl_reset_irq_ctrl() will software reset dp
    controller but did not call dp_catalog_ctrl_enable_irq(false) to clear hpd
    related interrupt mask bits to disable hpd related interrupts due to it
    mistakenly think hpd related interrupt mask bits will be cleared by software
    reset of dp controller automatically. This mistake may cause system to crash
    during suspending procedure due to unexpected irq fired and trigger event
    thread to access dp controller registers with controller clocks are disabled.
    
    This patch fixes system crash during suspending problem by removing "enable"
    flag condition checking at dp_ctrl_reset_irq_ctrl() so that hpd related
    interrupt mask bits are cleared to prevent unexpected from happening.
    
    Changes in v2:
    -- add more details commit text
    
    Changes in v3:
    -- add synchrons_irq()
    -- add atomic_t suspended
    
    Changes in v4:
    -- correct Fixes's commit ID
    -- remove synchrons_irq()
    
    Changes in v5:
    -- revise commit text
    
    Changes in v6:
    -- add event_lock to protect "suspended"
    
    Changes in v7:
    -- delete "suspended" flag
    
    Fixes: 989ebe7bc446 ("drm/msm/dp: do not initialize phy until plugin interrupt received")
    Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Patchwork: https://patchwork.freedesktop.org/patch/486591/
    Link: https://lore.kernel.org/r/1652804494-19650-1-git-send-email-quic_khsieh@quicinc.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ad385647bf3d89bcb58d39c8bde29be71e56aa7
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Tue Jun 21 16:08:49 2022 +0200

    powerpc/powernv: wire up rng during setup_arch
    
    commit f3eac426657d985b97c92fa5f7ae1d43f04721f3 upstream.
    
    The platform's RNG must be available before random_init() in order to be
    useful for initial seeding, which in turn means that it needs to be
    called from setup_arch(), rather than from an init call.
    
    Complicating things, however, is that POWER8 systems need some per-cpu
    state and kmalloc, which isn't available at this stage. So we split
    things up into an early phase and a later opportunistic phase. This
    commit also removes some noisy log messages that don't add much.
    
    Fixes: a4da0d50b2a0 ("powerpc: Implement arch_get_random_long/int() for powernv")
    Cc: stable@vger.kernel.org # v3.13+
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    [mpe: Add of_node_put(), use pnv naming, minor change log editing]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220621140849.127227-1-Jason@zx2c4.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1cfae46c5dc1d450defc5b31dd8d90ab4f46f8d
Author: Andrew Donnellan <ajd@linux.ibm.com>
Date:   Tue Jun 14 23:49:52 2022 +1000

    powerpc/rtas: Allow ibm,platform-dump RTAS call with null buffer address
    
    commit 7bc08056a6dabc3a1442216daf527edf61ac24b6 upstream.
    
    Add a special case to block_rtas_call() to allow the ibm,platform-dump RTAS
    call through the RTAS filter if the buffer address is 0.
    
    According to PAPR, ibm,platform-dump is called with a null buffer address
    to notify the platform firmware that processing of a particular dump is
    finished.
    
    Without this, on a pseries machine with CONFIG_PPC_RTAS_FILTER enabled, an
    application such as rtas_errd that is attempting to retrieve a dump will
    encounter an error at the end of the retrieval process.
    
    Fixes: bd59380c5ba4 ("powerpc/rtas: Restrict RTAS requests from userspace")
    Cc: stable@vger.kernel.org
    Reported-by: Sathvika Vasireddy <sathvika@linux.ibm.com>
    Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com>
    Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220614134952.156010-1-ajd@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe643b5afde63936c5ff97806f15d87cae87e8cc
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Thu Jun 9 16:03:28 2022 +0530

    powerpc: Enable execve syscall exit tracepoint
    
    commit ec6d0dde71d760aa60316f8d1c9a1b0d99213529 upstream.
    
    On execve[at], we are zero'ing out most of the thread register state
    including gpr[0], which contains the syscall number. Due to this, we
    fail to trigger the syscall exit tracepoint properly. Fix this by
    retaining gpr[0] in the thread register state.
    
    Before this patch:
      # tail /sys/kernel/debug/tracing/trace
                   cat-123     [000] .....    61.449351: sys_execve(filename:
      7fffa6b23448, argv: 7fffa6b233e0, envp: 7fffa6b233f8)
                   cat-124     [000] .....    62.428481: sys_execve(filename:
      7fffa6b23448, argv: 7fffa6b233e0, envp: 7fffa6b233f8)
                  echo-125     [000] .....    65.813702: sys_execve(filename:
      7fffa6b23378, argv: 7fffa6b233a0, envp: 7fffa6b233b0)
                  echo-125     [000] .....    65.822214: sys_execveat(fd: 0,
      filename: 1009ac48, argv: 7ffff65d0c98, envp: 7ffff65d0ca8, flags: 0)
    
    After this patch:
      # tail /sys/kernel/debug/tracing/trace
                   cat-127     [000] .....   100.416262: sys_execve(filename:
      7fffa41b3448, argv: 7fffa41b33e0, envp: 7fffa41b33f8)
                   cat-127     [000] .....   100.418203: sys_execve -> 0x0
                  echo-128     [000] .....   103.873968: sys_execve(filename:
      7fffa41b3378, argv: 7fffa41b33a0, envp: 7fffa41b33b0)
                  echo-128     [000] .....   103.875102: sys_execve -> 0x0
                  echo-128     [000] .....   103.882097: sys_execveat(fd: 0,
      filename: 1009ac48, argv: 7fffd10d2148, envp: 7fffd10d2158, flags: 0)
                  echo-128     [000] .....   103.883225: sys_execveat -> 0x0
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Tested-by: Sumit Dubey2 <Sumit.Dubey2@ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220609103328.41306-1-naveen.n.rao@linux.vnet.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 416d16b7dc0ba2fd0e585a82b18babb450b13aab
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat Jun 11 17:10:13 2022 +0200

    powerpc/microwatt: wire up rng during setup_arch()
    
    commit 20a9689b3607456d92c6fb764501f6a95950b098 upstream.
    
    The platform's RNG must be available before random_init() in order to be
    useful for initial seeding, which in turn means that it needs to be
    called from setup_arch(), rather than from an init call. Fortunately,
    each platform already has a setup_arch function pointer, which means
    it's easy to wire this up. This commit also removes some noisy log
    messages that don't add much.
    
    Fixes: c25769fddaec ("powerpc/microwatt: Add support for hardware random number generator")
    Cc: stable@vger.kernel.org # v5.14+
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220611151015.548325-2-Jason@zx2c4.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b28ca2cf3446cacc46a0b2b4c1d26dfd39e4562
Author: Helge Deller <deller@gmx.de>
Date:   Sun Jun 26 11:50:43 2022 +0200

    parisc: Enable ARCH_HAS_STRICT_MODULE_RWX
    
    commit 0a1355db36718178becd2bfe728a023933d73123 upstream.
    
    Fix a boot crash on a c8000 machine as reported by Dave.  Basically it changes
    patch_map() to return an alias mapping to the to-be-patched code in order to
    prevent writing to write-protected memory.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Suggested-by: John David Anglin <dave.anglin@bell.net>
    Cc: stable@vger.kernel.org   # v5.2+
    Link: https://lore.kernel.org/all/e8ec39e8-25f8-e6b4-b7ed-4cb23efc756e@bell.net/
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb4d52085c8b682aa65eed79bf76b76190fa5d73
Author: Helge Deller <deller@gmx.de>
Date:   Tue Jun 7 12:57:58 2022 +0200

    parisc/stifb: Fix fb_is_primary_device() only available with CONFIG_FB_STI
    
    commit 1d0811b03eb30b2f0793acaa96c6ce90b8b9c87a upstream.
    
    Fix this build error noticed by the kernel test robot:
    
    drivers/video/console/sticore.c:1132:5: error: redefinition of 'fb_is_primary_device'
     arch/parisc/include/asm/fb.h:18:19: note: previous definition of 'fb_is_primary_device'
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: stable@vger.kernel.org   # v5.10+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dcc1dd8a5dd9240639f1051dfaa2dffc9fbbde5
Author: Liang He <windhl@126.com>
Date:   Fri Jun 17 20:44:32 2022 +0800

    xtensa: Fix refcount leak bug in time.c
    
    commit a0117dc956429f2ede17b323046e1968d1849150 upstream.
    
    In calibrate_ccount(), of_find_compatible_node() will return a node
    pointer with refcount incremented. We should use of_node_put() when
    it is not used anymore.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Liang He <windhl@126.com>
    Message-Id: <20220617124432.4049006-1-windhl@126.com>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0162451723178602c37f0555d235dfa17e486112
Author: Liang He <windhl@126.com>
Date:   Fri Jun 17 19:53:23 2022 +0800

    xtensa: xtfpga: Fix refcount leak bug in setup
    
    commit 173940b3ae40114d4179c251a98ee039dc9cd5b3 upstream.
    
    In machine_setup(), of_find_compatible_node() will return a node
    pointer with refcount incremented. We should use of_node_put() when
    it is not used anymore.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Liang He <windhl@126.com>
    Message-Id: <20220617115323.4046905-1-windhl@126.com>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 711591bf1dab25f5887317dcf31fac5b04e7512e
Author: Jialin Zhang <zhangjialin11@huawei.com>
Date:   Tue May 17 11:30:20 2022 +0800

    iio: adc: ti-ads131e08: add missing fwnode_handle_put() in ads131e08_alloc_channels()
    
    commit 47dcf770abc793f347a65a24c24d550c936f08b0 upstream.
    
    fwnode_handle_put() should be used when terminating
    device_for_each_child_node() iteration with break or return to prevent
    stale device node references from being left behind.
    
    Fixes: d935eddd2799 ("iio: adc: Add driver for Texas Instruments ADS131E0x ADC family")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Jialin Zhang <zhangjialin11@huawei.com>
    Link: https://lore.kernel.org/r/20220517033020.2033324-1-zhangjialin11@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>

commit ab7bf025cee89db73c649216ddd2bc589c3d3862
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue May 24 11:45:17 2022 +0400

    iio: adc: adi-axi-adc: Fix refcount leak in adi_axi_adc_attach_client
    
    commit ada7b0c0dedafd7d059115adf49e48acba3153a8 upstream.
    
    of_parse_phandle() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: ef04070692a2 ("iio: adc: adi-axi-adc: add support for AXI ADC IP core")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220524074517.45268-1-linmq006@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4358bf6b1aadb5c2ed0e3ee0ae4748c1273f3718
Author: Jialin Zhang <zhangjialin11@huawei.com>
Date:   Tue May 17 11:35:26 2022 +0800

    iio: adc: rzg2l_adc: add missing fwnode_handle_put() in rzg2l_adc_parse_properties()
    
    commit d836715f588ea15f905f607c27bc693587058db4 upstream.
    
    fwnode_handle_put() should be used when terminating
    device_for_each_child_node() iteration with break or return to prevent
    stale device node references from being left behind.
    
    Fixes: d484c21bacfa ("iio: adc: Add driver for Renesas RZ/G2L A/D converter")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Jialin Zhang <zhangjialin11@huawei.com>
    Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20220517033526.2035735-1-zhangjialin11@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>

commit bb6f853289fe0cce52a8f9264d7b3928eefe62b5
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri May 6 11:50:40 2022 +0200

    iio: adc: axp288: Override TS pin bias current for some models
    
    commit 048058399f19d43cf21de9f5d36cd8144337d004 upstream.
    
    Since commit 9bcf15f75cac ("iio: adc: axp288: Fix TS-pin handling") we
    preserve the bias current set by the firmware at boot. This fixes issues
    we were seeing on various models.
    
    Some models like the Nuvision Solo 10 Draw tablet actually need the
    old hardcoded 80ųA bias current for battery temperature monitoring
    to work properly.
    
    Add a quirk entry for the Nuvision Solo 10 Draw to the DMI quirk table
    to restore setting the bias current to 80ųA on this model.
    
    Fixes: 9bcf15f75cac ("iio: adc: axp288: Fix TS-pin handling")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215882
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220506095040.21008-1-hdegoede@redhat.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f89730288ee7e1a5fba304f5a505ae221a40906
Author: Yannick Brosseau <yannick.brosseau@gmail.com>
Date:   Mon May 16 16:39:39 2022 -0400

    iio: adc: stm32: Fix IRQs on STM32F4 by removing custom spurious IRQs message
    
    commit 99bded02dae5e1e2312813506c41dc8db2fb656c upstream.
    
    The check for spurious IRQs introduced in 695e2f5c289bb assumed that the bits
    in the control and status registers are aligned. This is true for the H7 and MP1
    version, but not the F4. The interrupt was then never handled on the F4.
    
    Instead of increasing the complexity of the comparison and check each bit specifically,
    we remove this check completely and rely on the generic handler for spurious IRQs.
    
    Fixes: 695e2f5c289b ("iio: adc: stm32-adc: fix a regression when using dma and irq")
    Signed-off-by: Yannick Brosseau <yannick.brosseau@gmail.com>
    Reviewed-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
    Link: https://lore.kernel.org/r/20220516203939.3498673-3-yannick.brosseau@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d361b3cc1cf8abe81a7046cd6e4a583aad867dfe
Author: Yannick Brosseau <yannick.brosseau@gmail.com>
Date:   Mon May 16 16:39:38 2022 -0400

    iio: adc: stm32: Fix ADCs iteration in irq handler
    
    commit d2214cca4d3eadc74eac9e30301ec7cad5355f00 upstream.
    
    The irq handler was only checking the mask for the first ADCs in the case of the
    F4 and H7 generation, since it was iterating up to the num_irq value. This patch add
    the maximum number of ADC in the common register, which map to the number of entries of
    eoc_msk and ovr_msk in stm32_adc_common_regs. This allow the handler to check all ADCs in
    that module.
    
    Tested on a STM32F429NIH6.
    
    Fixes: 695e2f5c289b ("iio: adc: stm32-adc: fix a regression when using dma and irq")
    Signed-off-by: Yannick Brosseau <yannick.brosseau@gmail.com>
    Reviewed-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
    Link: https://lore.kernel.org/r/20220516203939.3498673-2-yannick.brosseau@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 148bab179f04583b271aaf584f333a1678f6cc09
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue May 24 09:54:48 2022 +0200

    iio: afe: rescale: Fix boolean logic bug
    
    commit 9decacd8b3a432316d61c4366f302e63384cb08d upstream.
    
    When introducing support for processed channels I needed
    to invert the expression:
    
      if (!iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) ||
          !iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE))
            dev_err(dev, "source channel does not support raw/scale\n");
    
    To the inverse, meaning detect when we can usse raw+scale
    rather than when we can not. This was the result:
    
      if (iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) ||
          iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE))
           dev_info(dev, "using raw+scale source channel\n");
    
    Ooops. Spot the error. Yep old George Boole came up and bit me.
    That should be an &&.
    
    The current code "mostly works" because we have not run into
    systems supporting only raw but not scale or only scale but not
    raw, and I doubt there are few using the rescaler on anything
    such, but let's fix the logic.
    
    Cc: Liam Beguin <liambeguin@gmail.com>
    Cc: stable@vger.kernel.org
    Fixes: 53ebee949980 ("iio: afe: iio-rescale: Support processed channels")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Liam Beguin <liambeguin@gmail.com>
    Acked-by: Peter Rosin <peda@axentia.se>
    Link: https://lore.kernel.org/r/20220524075448.140238-1-linus.walleij@linaro.org
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80e80577043fa4336126f0886de6cd39366765b3
Author: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Date:   Thu Jun 9 12:23:01 2022 +0200

    iio: imu: inv_icm42600: Fix broken icm42600 (chip id 0 value)
    
    commit 106b391e1b859100a3f38f0ad874236e9be06bde upstream.
    
    The 0 value used for INV_CHIP_ICM42600 was not working since the
    match in i2c/spi was checking against NULL value.
    
    To keep this check, add a first INV_CHIP_INVALID 0 value as safe
    guard.
    
    Fixes: 31c24c1e93c3 ("iio: imu: inv_icm42600: add core of new inv_icm42600 driver")
    Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
    Link: https://lore.kernel.org/r/20220609102301.4794-1-jmaneyrol@invensense.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a2d448a74ab0c06410a3d7ba680026bd1cabef2
Author: Olivier Moysan <olivier.moysan@foss.st.com>
Date:   Thu Jun 9 11:52:34 2022 +0200

    iio: adc: stm32: fix maximum clock rate for stm32mp15x
    
    commit 990539486e7e311fb5dab1bf4d85d1a8973ae644 upstream.
    
    Change maximum STM32 ADC input clock rate to 36MHz, as specified
    in STM32MP15x datasheets.
    
    Fixes: d58c67d1d851 ("iio: adc: stm32-adc: add support for STM32MP1")
    Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Reviewed-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
    Link: https://lore.kernel.org/r/20220609095234.375925-1-olivier.moysan@foss.st.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4687c3f955240ca2a576bdc3f742d4d915b6272d
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Thu May 19 11:19:25 2022 +0200

    iio: trigger: sysfs: fix use-after-free on remove
    
    commit 78601726d4a59a291acc5a52da1d3a0a6831e4e8 upstream.
    
    Ensure that the irq_work has completed before the trigger is freed.
    
     ==================================================================
     BUG: KASAN: use-after-free in irq_work_run_list
     Read of size 8 at addr 0000000064702248 by task python3/25
    
     Call Trace:
      irq_work_run_list
      irq_work_tick
      update_process_times
      tick_sched_handle
      tick_sched_timer
      __hrtimer_run_queues
      hrtimer_interrupt
    
     Allocated by task 25:
      kmem_cache_alloc_trace
      iio_sysfs_trig_add
      dev_attr_store
      sysfs_kf_write
      kernfs_fop_write_iter
      new_sync_write
      vfs_write
      ksys_write
      sys_write
    
     Freed by task 25:
      kfree
      iio_sysfs_trig_remove
      dev_attr_store
      sysfs_kf_write
      kernfs_fop_write_iter
      new_sync_write
      vfs_write
      ksys_write
      sys_write
    
     ==================================================================
    
    Fixes: f38bc926d022 ("staging:iio:sysfs-trigger: Use irq_work to properly active trigger")
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20220519091925.1053897-1-vincent.whitchurch@axis.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f359c4751de1c2f1b07851fc95834331941cb8cb
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Tue May 10 17:24:31 2022 +0800

    iio: gyro: mpu3050: Fix the error handling in mpu3050_power_up()
    
    commit b2f5ad97645e1deb5ca9bcb7090084b92cae35d2 upstream.
    
    The driver should disable regulators when fails at regmap_update_bits().
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220510092431.1711284-1-zheyuma97@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 005cb02224a9c9b0ab487df86a18328e99b05f1e
Author: Haibo Chen <haibo.chen@nxp.com>
Date:   Wed Jun 15 19:31:58 2022 +0800

    iio: accel: mma8452: ignore the return value of reset operation
    
    commit bf745142cc0a3e1723f9207fb0c073c88464b7b4 upstream.
    
    On fxls8471, after set the reset bit, the device will reset immediately,
    will not give ACK. So ignore the return value of this reset operation,
    let the following code logic to check whether the reset operation works.
    
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Fixes: ecabae713196 ("iio: mma8452: Initialise before activating")
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/1655292718-14287-1-git-send-email-haibo.chen@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>

commit cb0d87f2519dc309b58c3fe3d6239441a4b5ce74
Author: Dmitry Rokosov <DDRokosov@sberdevices.ru>
Date:   Tue May 24 18:14:43 2022 +0000

    iio:accel:mxc4005: rearrange iio trigger get and register
    
    commit 9354c224c9b4f55847a0de3e968cba2ebf15af3b upstream.
    
    IIO trigger interface function iio_trigger_get() should be called after
    iio_trigger_register() (or its devm analogue) strictly, because of
    iio_trigger_get() acquires module refcnt based on the trigger->owner
    pointer, which is initialized inside iio_trigger_register() to
    THIS_MODULE.
    If this call order is wrong, the next iio_trigger_put() (from sysfs
    callback or "delete module" path) will dereference "default" module
    refcnt, which is incorrect behaviour.
    
    Fixes: 47196620c82f ("iio: mxc4005: add data ready trigger for mxc4005")
    Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220524181150.9240-4-ddrokosov@sberdevices.ru
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3357fb9da21aefdab80a980bb506da6caf20ae7d
Author: Dmitry Rokosov <DDRokosov@sberdevices.ru>
Date:   Tue May 24 18:14:39 2022 +0000

    iio:accel:bma180: rearrange iio trigger get and register
    
    commit e5f3205b04d7f95a2ef43bce4b454a7f264d6923 upstream.
    
    IIO trigger interface function iio_trigger_get() should be called after
    iio_trigger_register() (or its devm analogue) strictly, because of
    iio_trigger_get() acquires module refcnt based on the trigger->owner
    pointer, which is initialized inside iio_trigger_register() to
    THIS_MODULE.
    If this call order is wrong, the next iio_trigger_put() (from sysfs
    callback or "delete module" path) will dereference "default" module
    refcnt, which is incorrect behaviour.
    
    Fixes: 0668a4e4d297 ("iio: accel: bma180: Fix indio_dev->trig assignment")
    Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220524181150.9240-2-ddrokosov@sberdevices.ru
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 240fb3913f183eb5c0fc45d86b51f1c5e9754ed2
Author: Dmitry Rokosov <DDRokosov@sberdevices.ru>
Date:   Tue May 24 18:14:42 2022 +0000

    iio:accel:kxcjk-1013: rearrange iio trigger get and register
    
    commit ed302925d708f2f97ae5e9fd6c56c16bb34f6629 upstream.
    
    IIO trigger interface function iio_trigger_get() should be called after
    iio_trigger_register() (or its devm analogue) strictly, because of
    iio_trigger_get() acquires module refcnt based on the trigger->owner
    pointer, which is initialized inside iio_trigger_register() to
    THIS_MODULE.
    If this call order is wrong, the next iio_trigger_put() (from sysfs
    callback or "delete module" path) will dereference "default" module
    refcnt, which is incorrect behaviour.
    
    Fixes: c1288b833881 ("iio: accel: kxcjk-1013: Increment ref counter for indio_dev->trig")
    Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220524181150.9240-3-ddrokosov@sberdevices.ru
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1356318042ed84ada9de7bcc3887562e78e729c
Author: Dmitry Rokosov <DDRokosov@sberdevices.ru>
Date:   Tue May 24 18:14:45 2022 +0000

    iio:chemical:ccs811: rearrange iio trigger get and register
    
    commit d710359c0b445e8c03e24f19ae2fb79ce7282260 upstream.
    
    IIO trigger interface function iio_trigger_get() should be called after
    iio_trigger_register() (or its devm analogue) strictly, because of
    iio_trigger_get() acquires module refcnt based on the trigger->owner
    pointer, which is initialized inside iio_trigger_register() to
    THIS_MODULE.
    If this call order is wrong, the next iio_trigger_put() (from sysfs
    callback or "delete module" path) will dereference "default" module
    refcnt, which is incorrect behaviour.
    
    Fixes: f1f065d7ac30 ("iio: chemical: ccs811: Add support for data ready trigger")
    Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220524181150.9240-5-ddrokosov@sberdevices.ru
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 974e69beebb3ca6bf51b1a7734fbc8d67c228f10
Author: Dmitry Rokosov <DDRokosov@sberdevices.ru>
Date:   Tue May 24 18:14:46 2022 +0000

    iio:humidity:hts221: rearrange iio trigger get and register
    
    commit 10b9c2c33ac706face458feab8965f11743c98c0 upstream.
    
    IIO trigger interface function iio_trigger_get() should be called after
    iio_trigger_register() (or its devm analogue) strictly, because of
    iio_trigger_get() acquires module refcnt based on the trigger->owner
    pointer, which is initialized inside iio_trigger_register() to
    THIS_MODULE.
    If this call order is wrong, the next iio_trigger_put() (from sysfs
    callback or "delete module" path) will dereference "default" module
    refcnt, which is incorrect behaviour.
    
    Fixes: e4a70e3e7d84 ("iio: humidity: add support to hts221 rh/temp combo device")
    Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220524181150.9240-6-ddrokosov@sberdevices.ru
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f650029de357bee182233f635589e8afea90ba44
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Tue May 31 18:27:09 2022 -0700

    f2fs: attach inline_data after setting compression
    
    commit 4cde00d50707c2ef6647b9b96b2cb40b6eb24397 upstream.
    
    This fixes the below corruption.
    
    [345393.335389] F2FS-fs (vdb): sanity_check_inode: inode (ino=6d0, mode=33206) should not have inline_data, run fsck to fix
    
    Cc: <stable@vger.kernel.org>
    Fixes: 677a82b44ebf ("f2fs: fix to do sanity check for inline inode")
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d98b5032c9d046c946099fa09a01657f194796ad
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Mon Jun 13 15:09:49 2022 -0400

    btrfs: fix deadlock with fsync+fiemap+transaction commit
    
    commit bf7ba8ee759b7b7a34787ddd8dc3f190a3d7fa24 upstream.
    
    We are hitting the following deadlock in production occasionally
    
    Task 1          Task 2          Task 3          Task 4          Task 5
                    fsync(A)
                     start trans
                                                    start commit
                                    falloc(A)
                                     lock 5m-10m
                                     start trans
                                      wait for commit
    fiemap(A)
     lock 0-10m
      wait for 5m-10m
       (have 0-5m locked)
    
                     have btrfs_need_log_full_commit
                      !full_sync
                      wait_ordered_extents
                                                                    finish_ordered_io(A)
                                                                    lock 0-5m
                                                                    DEADLOCK
    
    We have an existing dependency of file extent lock -> transaction.
    However in fsync if we tried to do the fast logging, but then had to
    fall back to committing the transaction, we will be forced to call
    btrfs_wait_ordered_range() to make sure all of our extents are updated.
    
    This creates a dependency of transaction -> file extent lock, because
    btrfs_finish_ordered_io() will need to take the file extent lock in
    order to run the ordered extents.
    
    Fix this by stopping the transaction if we have to do the full commit
    and we attempted to do the fast logging.  Then attach to the transaction
    and commit it if we need to.
    
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    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>

commit 1238f580cd812c588d5ad67067795692d7a1828f
Author: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
Date:   Wed Jun 8 22:39:36 2022 -0400

    btrfs: don't set lock_owner when locking extent buffer for reading
    
    commit 97e86631bccddfbbe0c13f9a9605cdef11d31296 upstream.
    
    In 196d59ab9ccc "btrfs: switch extent buffer tree lock to rw_semaphore"
    the functions for tree read locking were rewritten, and in the process
    the read lock functions started setting eb->lock_owner = current->pid.
    Previously lock_owner was only set in tree write lock functions.
    
    Read locks are shared, so they don't have exclusive ownership of the
    underlying object, so setting lock_owner to any single value for a
    read lock makes no sense.  It's mostly harmless because write locks
    and read locks are mutually exclusive, and none of the existing code
    in btrfs (btrfs_init_new_buffer and print_eb_refs_lock) cares what
    nonsense is written in lock_owner when no writer is holding the lock.
    
    KCSAN does care, and will complain about the data race incessantly.
    Remove the assignments in the read lock functions because they're
    useless noise.
    
    Fixes: 196d59ab9ccc ("btrfs: switch extent buffer tree lock to rw_semaphore")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46336a59a4a7dc01e5985e3b825d410de657caa0
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Jun 15 15:53:09 2022 +0200

    dt-bindings: usb: ehci: Increase the number of PHYs
    
    commit 9faa1c8f92f33daad9db96944139de225cefa199 upstream.
    
    "make dtbs_check":
    
        arch/arm/boot/dts/r8a77470-iwg23s-sbc.dtb: usb@ee080100: phys: [[17, 0], [31]] is too long
                From schema: Documentation/devicetree/bindings/usb/generic-ehci.yaml
        arch/arm/boot/dts/r8a77470-iwg23s-sbc.dtb: usb@ee0c0100: phys: [[17, 1], [33], [21, 0]] is too long
                From schema: Documentation/devicetree/bindings/usb/generic-ehci.yaml
    
    Some USB EHCI controllers (e.g. on the Renesas RZ/G1C SoC) have multiple
    PHYs.  Increase the maximum number of PHYs to 3, which is sufficient for
    now.
    
    Fixes: 0499220d6dadafa5 ("dt-bindings: Add missing array size constraints")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/c5d19e2f9714f43effd90208798fc1936098078f.1655301043.git.geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a0b865d8b4ce8481bfa783ac41a841c6d0d5731
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Jun 15 15:54:02 2022 +0200

    dt-bindings: usb: ohci: Increase the number of PHYs
    
    commit 0f074c1c95ea496dc91279b6c4b9845a337517fa upstream.
    
    "make dtbs_check":
    
        arch/arm/boot/dts/r8a77470-iwg23s-sbc.dtb: usb@ee080000: phys: [[17, 0], [31]] is too long
                From schema: Documentation/devicetree/bindings/usb/generic-ohci.yaml
        arch/arm/boot/dts/r8a77470-iwg23s-sbc.dtb: usb@ee0c0000: phys: [[17, 1], [33], [21, 0]] is too long
                From schema: Documentation/devicetree/bindings/usb/generic-ohci.yaml
    
    Some USB OHCI controllers (e.g. on the Renesas RZ/G1C SoC) have multiple
    PHYs.  Increase the maximum number of PHYs to 3, which is sufficient for
    now.
    
    Fixes: 0499220d6dadafa5 ("dt-bindings: Add missing array size constraints")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/0112f9c8881513cb33bf7b66bc743dd08b35a2f5.1655301203.git.geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 308df8d4e41b44722525aea81e5de9d976ed9d9f
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Thu Jun 23 11:02:42 2022 +0800

    usb: chipidea: udc: check request status before setting device address
    
    commit b24346a240b36cfc4df194d145463874985aa29b upstream.
    
    The complete() function may be called even though request is not
    completed. In this case, it's necessary to check request status so
    as not to set device address wrongly.
    
    Fixes: 10775eb17bee ("usb: chipidea: udc: update gadget states according to ch9")
    cc: <stable@vger.kernel.org>
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Link: https://lore.kernel.org/r/20220623030242.41796-1-xu.yang_2@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07f1d9a6b75d124715f3c3528932b601bc54f305
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Jun 22 10:46:31 2022 -0400

    USB: gadget: Fix double-free bug in raw_gadget driver
    
    commit 90bc2af24638659da56397ff835f3c95a948f991 upstream.
    
    Re-reading a recently merged fix to the raw_gadget driver showed that
    it inadvertently introduced a double-free bug in a failure pathway.
    If raw_ioctl_init() encounters an error after the driver ID number has
    been allocated, it deallocates the ID number before returning.  But
    when dev_free() runs later on, it will then try to deallocate the ID
    number a second time.
    
    Closely related to this issue is another error in the recent fix: The
    ID number is stored in the raw_dev structure before the code checks to
    see whether the structure has already been initialized, in which case
    the new ID number would overwrite the earlier value.
    
    The solution to both bugs is to keep the new ID number in a local
    variable, and store it in the raw_dev structure only after the check
    for prior initialization.  No errors can occur after that point, so
    the double-free will never happen.
    
    Fixes: f2d8c2606825 ("usb: gadget: Fix non-unique driver names in raw-gadget driver")
    CC: Andrey Konovalov <andreyknvl@gmail.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YrMrRw5AyIZghN0v@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61c3a21ba6f636baeee47a7509154963b23ef999
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Jun 13 10:17:03 2022 -0400

    usb: gadget: Fix non-unique driver names in raw-gadget driver
    
    commit f2d8c2606825317b77db1f9ba0fc26ef26160b30 upstream.
    
    In a report for a separate bug (which has already been fixed by commit
    5f0b5f4d50fa "usb: gadget: fix race when gadget driver register via
    ioctl") in the raw-gadget driver, the syzbot console log included
    error messages caused by attempted registration of a new driver with
    the same name as an existing driver:
    
    > kobject_add_internal failed for raw-gadget with -EEXIST, don't try to register things with the same name in the same directory.
    > UDC core: USB Raw Gadget: driver registration failed: -17
    > misc raw-gadget: fail, usb_gadget_register_driver returned -17
    
    These errors arise because raw_gadget.c registers a separate UDC
    driver for each of the UDC instances it creates, but these drivers all
    have the same name: "raw-gadget".  Until recently this wasn't a
    problem, but when the "gadget" bus was added and UDC drivers were
    registered on this bus, it became possible for name conflicts to cause
    the registrations to fail.  The reason is simply that the bus code in
    the driver core uses the driver name as a sysfs directory name (e.g.,
    /sys/bus/gadget/drivers/raw-gadget/), and you can't create two
    directories with the same pathname.
    
    To fix this problem, the driver names used by raw-gadget are made
    distinct by appending a unique ID number: "raw-gadget.N", with a
    different value of N for each driver instance.  And to avoid the
    proliferation of error handling code in the raw_ioctl_init() routine,
    the error return paths are refactored into the common pattern (goto
    statements leading to cleanup code at the end of the routine).
    
    Link: https://lore.kernel.org/all/0000000000008c664105dffae2eb@google.com/
    Fixes: fc274c1e9973 "USB: gadget: Add a new bus for gadgets"
    CC: Andrey Konovalov <andreyknvl@gmail.com>
    CC: <stable@vger.kernel.org>
    Reported-and-tested-by: syzbot+02b16343704b3af1667e@syzkaller.appspotmail.com
    Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
    Acked-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YqdG32w+3h8c1s7z@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da57f113e817fed31a53838fa7279d6b59dbedaf
Author: Utkarsh Patel <utkarsh.h.patel@intel.com>
Date:   Thu Jun 23 14:19:45 2022 +0300

    xhci-pci: Allow host runtime PM as default for Intel Meteor Lake xHCI
    
    commit 8ffdc53a60049f3930afe161dc51c67959c8d83d upstream.
    
    Meteor Lake TCSS(Type-C Subsystem) xHCI needs to be runtime suspended
    whenever possible to allow the TCSS hardware block to enter D3cold and
    thus save energy.
    
    Cc: stable@kernel.org
    Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20220623111945.1557702-5-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfa16dd21be06b319f8524b44a5e503b2c451b1b
Author: Tanveer Alam <tanveer1.alam@intel.com>
Date:   Thu Jun 23 14:19:44 2022 +0300

    xhci-pci: Allow host runtime PM as default for Intel Raptor Lake xHCI
    
    commit 7516da47a349e74de623243a27f9b8a91446bf4f upstream.
    
    In the same way as Intel Alder Lake TCSS (Type-C Subsystem) the Raptor
    Lake TCSS xHCI needs to be runtime suspended whenever possible to
    allow the TCSS hardware block to enter D3cold and thus save energy.
    
    Cc: stable@kernel.org
    Signed-off-by: Tanveer Alam <tanveer1.alam@intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20220623111945.1557702-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1c78d4d9b0aa155574d7ec09b0408e28d1717f7
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Jun 23 14:19:43 2022 +0300

    xhci: turn off port power in shutdown
    
    commit 83810f84ecf11dfc5a9414a8b762c3501b328185 upstream.
    
    If ports are not turned off in shutdown then runtime suspended
    self-powered USB devices may survive in U3 link state over S5.
    
    During subsequent boot, if firmware sends an IPC command to program
    the port in DISCONNECT state, it will time out, causing significant
    delay in the boot time.
    
    Turning off roothub port power is also recommended in xhci
    specification 4.19.4 "Port Power" in the additional note.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20220623111945.1557702-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9509a175a560bb85605f22b0ff73c9bdb2ab63a2
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Jun 20 13:43:16 2022 +0300

    usb: typec: wcove: Drop wrong dependency to INTEL_SOC_PMIC
    
    [ Upstream commit 9ef165406308515dcf2e3f6e97b39a1c56d86db5 ]
    
    Intel SoC PMIC is a generic name for all PMICs that are used
    on Intel platforms. In particular, INTEL_SOC_PMIC kernel configuration
    option refers to Crystal Cove PMIC, which has never been a part
    of any Intel Broxton hardware. Drop wrong dependency from Kconfig.
    
    Note, the correct dependency is satisfied via ACPI PMIC OpRegion driver,
    which the Type-C depends on.
    
    Fixes: d2061f9cc32d ("usb: typec: add driver for Intel Whiskey Cove PMIC USB Type-C PHY")
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220620104316.57592-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 288f30e17513e2af747b7947973020bb2efabee2
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Mon May 30 11:50:26 2022 +0300

    iio: adc: vf610: fix conversion mode sysfs node name
    
    [ Upstream commit f1a633b15cd5371a2a83f02c513984e51132dd68 ]
    
    The documentation missed the "in_" prefix for this IIO_SHARED_BY_DIR
    entry.
    
    Fixes: bf04c1a367e3 ("iio: adc: vf610: implement configurable conversion modes")
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Acked-by: Haibo Chen <haibo.chen@nxp.com>
    Link: https://lore.kernel.org/r/560dc93fafe5ef7e9a409885fd20b6beac3973d8.1653900626.git.baruch@tkos.co.il
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 466e15f845d7527af9fa380e5abe980c9d69dcf6
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Sun May 1 21:50:29 2022 +0200

    iio: magnetometer: yas530: Fix memchr_inv() misuse
    
    [ Upstream commit bb52d3691db8cf24cea049235223f3599778f264 ]
    
    The call to check if the calibration is all zeroes is doing
    it wrong: memchr_inv() returns NULL if the the calibration
    contains all zeroes, but the check is for != NULL.
    
    Fix it up. It's probably not an urgent fix because the inner
    check for BIT(7) in data[13] will save us. But fix it.
    
    Fixes: de8860b1ed47 ("iio: magnetometer: Add driver for Yamaha YAS530")
    Reported-by: Jakob Hauser <jahau@rocketmail.com>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20220501195029.151852-1-linus.walleij@linaro.org
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 490dd2dd2a79cf1c98cf721af43e4657ce8d5f59
Author: Haibo Chen <haibo.chen@nxp.com>
Date:   Mon Apr 25 16:41:00 2022 +0800

    iio: mma8452: fix probe fail when device tree compatible is used.
    
    [ Upstream commit fe18894930a025617114aa8ca0adbf94d5bffe89 ]
    
    Correct the logic for the probe. First check of_match_table, if
    not meet, then check i2c_driver.id_table. If both not meet, then
    return fail.
    
    Fixes: a47ac019e7e8 ("iio: mma8452: Fix probe failing when an i2c_device_id is used")
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Link: https://lore.kernel.org/r/1650876060-17577-1-git-send-email-haibo.chen@nxp.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff3e50ca9250573d6dbe7fdbed32da7f21d15c3b
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Fri Jun 10 15:19:00 2022 +0200

    s390/cpumf: Handle events cycles and instructions identical
    
    [ Upstream commit be857b7f77d130dbbd47c91fc35198b040f35865 ]
    
    Events CPU_CYCLES and INSTRUCTIONS can be submitted with two different
    perf_event attribute::type values:
     - PERF_TYPE_HARDWARE: when invoked via perf tool predefined events name
       cycles or cpu-cycles or instructions.
     - pmu->type: when invoked via perf tool event name cpu_cf/CPU_CYLCES/ or
       cpu_cf/INSTRUCTIONS/. This invocation also selects the PMU to which
       the event belongs.
    Handle both type of invocations identical for events CPU_CYLCES and
    INSTRUCTIONS. They address the same hardware.
    The result is different when event modifier exclude_kernel is also set.
    Invocation with event modifier for user space event counting fails.
    
    Output before:
    
     # perf stat -e cpum_cf/cpu_cycles/u -- true
    
     Performance counter stats for 'true':
    
       <not supported>      cpum_cf/cpu_cycles/u
    
           0.000761033 seconds time elapsed
    
           0.000076000 seconds user
           0.000725000 seconds sys
    
     #
    
    Output after:
     # perf stat -e cpum_cf/cpu_cycles/u -- true
    
     Performance counter stats for 'true':
    
               349,613      cpum_cf/cpu_cycles/u
    
           0.000844143 seconds time elapsed
    
           0.000079000 seconds user
           0.000800000 seconds sys
     #
    
    Fixes: 6a82e23f45fe ("s390/cpumf: Adjust registration of s390 PMU device drivers")
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Acked-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
    [agordeev@linux.ibm.com corrected commit ID of Fixes commit]
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09dd5630fea6e103aeec77cf0581591957722aa9
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jun 23 11:29:48 2022 +0300

    gpio: winbond: Fix error code in winbond_gpio_get()
    
    [ Upstream commit 9ca766eaea2e87b8b773bff04ee56c055cb76d4e ]
    
    This error path returns 1, but it should instead propagate the negative
    error code from winbond_sio_enter().
    
    Fixes: a0d65009411c ("gpio: winbond: Add driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3ea126c513c93bc4af1d45044e34e3238ac0577
Author: Christoph Hellwig <hch@lst.de>
Date:   Fri Jun 17 10:29:42 2022 +0200

    nvme: move the Samsung X5 quirk entry to the core quirks
    
    [ Upstream commit e6487833182a8a0187f0292aca542fc163ccd03e ]
    
    This device shares the PCI ID with the Samsung 970 Evo Plus that
    does not need or want the quirks.  Move the the quirk entry to the
    core table based on the model number instead.
    
    Fixes: bc360b0b1611 ("nvme-pci: add quirks for Samsung X5 SSDs")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Pankaj Raghav <p.raghav@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1057d42602cb610b06e6ac0495483254e4812d09
Author: Enzo Matsumiya <ematsumiya@suse.de>
Date:   Fri Nov 5 23:08:57 2021 -0300

    nvme-pci: add NO APST quirk for Kioxia device
    
    [ Upstream commit 5a6254d55e2a9f7919ead8580d7aa0c7a382b26a ]
    
    This particular Kioxia device times out and aborts I/O during any load,
    but it's more easily observable with discards (fstrim).
    
    The device gets to a state that is also not possible to use
    "nvme set-feature" to disable APST.
    Booting with nvme_core.default_ps_max_latency=0 solves the issue.
    
    We had a dozen or so of these devices behaving this same way in
    customer environments.
    
    Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72fa0f65b56605b8a9ae9fba2082f2123f7fe017
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Jun 20 12:13:53 2022 -0700

    sock: redo the psock vs ULP protection check
    
    [ Upstream commit e34a07c0ae3906f97eb18df50902e2a01c1015b6 ]
    
    Commit 8a59f9d1e3d4 ("sock: Introduce sk->sk_prot->psock_update_sk_prot()")
    has moved the inet_csk_has_ulp(sk) check from sk_psock_init() to
    the new tcp_bpf_update_proto() function. I'm guessing that this
    was done to allow creating psocks for non-inet sockets.
    
    Unfortunately the destruction path for psock includes the ULP
    unwind, so we need to fail the sk_psock_init() itself.
    Otherwise if ULP is already present we'll notice that later,
    and call tcp_update_ulp() with the sk_proto of the ULP
    itself, which will most likely result in the ULP looping
    its callbacks.
    
    Fixes: 8a59f9d1e3d4 ("sock: Introduce sk->sk_prot->psock_update_sk_prot()")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: John Fastabend <john.fastabend@gmail.com>
    Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
    Tested-by: Jakub Sitnicki <jakub@cloudflare.com>
    Link: https://lore.kernel.org/r/20220620191353.1184629-2-kuba@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb93999705650a86d4d039e3ff71f99bf1f40c59
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Jun 20 12:13:52 2022 -0700

    Revert "net/tls: fix tls_sk_proto_close executed repeatedly"
    
    [ Upstream commit 1b205d948fbb06a7613d87dcea0ff5fd8a08ed91 ]
    
    This reverts commit 69135c572d1f84261a6de2a1268513a7e71753e2.
    
    This commit was just papering over the issue, ULP should not
    get ->update() called with its own sk_prot. Each ULP would
    need to add this check.
    
    Fixes: 69135c572d1f ("net/tls: fix tls_sk_proto_close executed repeatedly")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/r/20220620191353.1184629-1-kuba@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d7fe9ad6fddc2af8bde4b921b4f8fab231ed38c
Author: Stephan Gerhold <stephan.gerhold@kernkonzept.com>
Date:   Tue Jun 21 13:48:44 2022 +0200

    virtio_net: fix xdp_rxq_info bug after suspend/resume
    
    [ Upstream commit 8af52fe9fd3bf5e7478da99193c0632276e1dfce ]
    
    The following sequence currently causes a driver bug warning
    when using virtio_net:
    
      # ip link set eth0 up
      # echo mem > /sys/power/state (or e.g. # rtcwake -s 10 -m mem)
      <resume>
      # ip link set eth0 down
    
      Missing register, driver bug
      WARNING: CPU: 0 PID: 375 at net/core/xdp.c:138 xdp_rxq_info_unreg+0x58/0x60
      Call trace:
       xdp_rxq_info_unreg+0x58/0x60
       virtnet_close+0x58/0xac
       __dev_close_many+0xac/0x140
       __dev_change_flags+0xd8/0x210
       dev_change_flags+0x24/0x64
       do_setlink+0x230/0xdd0
       ...
    
    This happens because virtnet_freeze() frees the receive_queue
    completely (including struct xdp_rxq_info) but does not call
    xdp_rxq_info_unreg(). Similarly, virtnet_restore() sets up the
    receive_queue again but does not call xdp_rxq_info_reg().
    
    Actually, parts of virtnet_freeze_down() and virtnet_restore_up()
    are almost identical to virtnet_close() and virtnet_open(): only
    the calls to xdp_rxq_info_(un)reg() are missing. This means that
    we can fix this easily and avoid such problems in the future by
    just calling virtnet_close()/open() from the freeze/restore handlers.
    
    Aside from adding the missing xdp_rxq_info calls the only difference
    is that the refill work is only cancelled if netif_running(). However,
    this should not make any functional difference since the refill work
    should only be active if the network interface is actually up.
    
    Fixes: 754b8a21a96d ("virtio_net: setup xdp_rxq_info")
    Signed-off-by: Stephan Gerhold <stephan.gerhold@kernkonzept.com>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Link: https://lore.kernel.org/r/20220621114845.3650258-1-stephan.gerhold@kernkonzept.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8eb0223631f8090ce043fadc57eb6fd223a3044b
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Jun 21 15:10:56 2022 -0700

    igb: Make DMA faster when CPU is active on the PCIe link
    
    [ Upstream commit 4e0effd9007ea0be31f7488611eb3824b4541554 ]
    
    Intel I210 on some Intel Alder Lake platforms can only achieve ~750Mbps
    Tx speed via iperf. The RR2DCDELAY shows around 0x2xxx DMA delay, which
    will be significantly lower when 1) ASPM is disabled or 2) SoC package
    c-state stays above PC3. When the RR2DCDELAY is around 0x1xxx the Tx
    speed can reach to ~950Mbps.
    
    According to the I210 datasheet "8.26.1 PCIe Misc. Register - PCIEMISC",
    "DMA Idle Indication" doesn't seem to tie to DMA coalesce anymore, so
    set it to 1b for "DMA is considered idle when there is no Rx or Tx AND
    when there are no TLPs indicating that CPU is active detected on the
    PCIe link (such as the host executes CSR or Configuration register read
    or write operation)" and performing Tx should also fall under "active
    CPU on PCIe link" case.
    
    In addition to that, commit b6e0c419f040 ("igb: Move DMA Coalescing init
    code to separate function.") seems to wrongly changed from enabling
    E1000_PCIEMISC_LX_DECISION to disabling it, also fix that.
    
    Fixes: b6e0c419f040 ("igb: Move DMA Coalescing init code to separate function.")
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20220621221056.604304-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60fd29f1ff46370c9c0a72aeedf4f40f2dea9f93
Author: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
Date:   Mon Jun 20 21:05:57 2022 +0100

    regmap-irq: Fix offset/index mismatch in read_sub_irq_data()
    
    [ Upstream commit 3f05010f243be06478a9b11cfce0ce994f5a0890 ]
    
    We need to divide the sub-irq status register offset by register
    stride to get an index for the status buffer to avoid an out of
    bounds write when the register stride is greater than 1.
    
    Fixes: a2d21848d921 ("regmap: regmap-irq: Add main status register support")
    Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
    Link: https://lore.kernel.org/r/20220620200644.1961936-3-aidanmacdonald.0x0@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0581f93cf05010549c2abe1c04dc6d6f5cafdf9
Author: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
Date:   Mon Jun 20 21:05:56 2022 +0100

    regmap-irq: Fix a bug in regmap_irq_enable() for type_in_mask chips
    
    [ Upstream commit 485037ae9a095491beb7f893c909a76cc4f9d1e7 ]
    
    When enabling a type_in_mask irq, the type_buf contents must be
    AND'd with the mask of the IRQ we're enabling to avoid enabling
    other IRQs by accident, which can happen if several type_in_mask
    irqs share a mask register.
    
    Fixes: bc998a730367 ("regmap: irq: handle HW using separate rising/falling edge interrupts")
    Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
    Link: https://lore.kernel.org/r/20220620200644.1961936-2-aidanmacdonald.0x0@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20229bb9954586fdef301f8db78d32fed7d6bcb2
Author: Anatolii Gerasymenko <anatolii.gerasymenko@intel.com>
Date:   Mon Jun 20 09:47:05 2022 +0200

    ice: ethtool: advertise 1000M speeds properly
    
    [ Upstream commit c3d184c83ff4b80167e34edfc3d21df424bf27ff ]
    
    In current implementation ice_update_phy_type enables all link modes
    for selected speed. This approach doesn't work for 1000M speeds,
    because both copper (1000baseT) and optical (1000baseX) standards
    cannot be enabled at once.
    
    Fix this, by adding the function `ice_set_phy_type_from_speed()`
    for 1000M speeds.
    
    Fixes: 48cb27f2fd18 ("ice: Implement handlers for ethtool PHY/link operations")
    Signed-off-by: Anatolii Gerasymenko <anatolii.gerasymenko@intel.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b2bba96526f25f2eba74ecadb031de2e05a83ce
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jun 21 15:59:57 2022 +0100

    afs: Fix dynamic root getattr
    
    [ Upstream commit cb78d1b5efffe4cf97e16766329dd7358aed3deb ]
    
    The recent patch to make afs_getattr consult the server didn't account
    for the pseudo-inodes employed by the dynamic root-type afs superblock
    not having a volume or a server to access, and thus an oops occurs if
    such a directory is stat'd.
    
    Fix this by checking to see if the vnode->volume pointer actually points
    anywhere before following it in afs_getattr().
    
    This can be tested by stat'ing a directory in /afs.  It may be
    sufficient just to do "ls /afs" and the oops looks something like:
    
            BUG: kernel NULL pointer dereference, address: 0000000000000020
            ...
            RIP: 0010:afs_getattr+0x8b/0x14b
            ...
            Call Trace:
             <TASK>
             vfs_statx+0x79/0xf5
             vfs_fstatat+0x49/0x62
    
    Fixes: 2aeb8c86d499 ("afs: Fix afs_getattr() to refetch file status if callback break occurred")
    Reported-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    Tested-by: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Link: https://lore.kernel.org/r/165408450783.1031787.7941404776393751186.stgit@warthog.procyon.org.uk/
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab150a2bf6c55b77373b8e2c252a5c8241369bce
Author: huhai <huhai@kylinos.cn>
Date:   Fri Jun 10 19:14:20 2022 +0800

    MIPS: Remove repetitive increase irq_err_count
    
    [ Upstream commit c81aba8fde2aee4f5778ebab3a1d51bd2ef48e4c ]
    
    commit 979934da9e7a ("[PATCH] mips: update IRQ handling for vr41xx") added
    a function irq_dispatch, and it'll increase irq_err_count when the get_irq
    callback returns a negative value, but increase irq_err_count in get_irq
    was not removed.
    
    And also, modpost complains once gpio-vr41xx drivers become modules.
      ERROR: modpost: "irq_err_count" [drivers/gpio/gpio-vr41xx.ko] undefined!
    
    So it would be a good idea to remove repetitive increase irq_err_count in
    get_irq callback.
    
    Fixes: 27fdd325dace ("MIPS: Update VR41xx GPIO driver to use gpiolib")
    Fixes: 979934da9e7a ("[PATCH] mips: update IRQ handling for vr41xx")
    Reported-by: k2ci <kernel-bot@kylinos.cn>
    Signed-off-by: huhai <huhai@kylinos.cn>
    Signed-off-by: Genjian Zhang <zhanggenjian@kylinos.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e2c9ee9c1e681277778e4b512f3b04bd0928e15
Author: Julien Grall <jgrall@amazon.com>
Date:   Fri Jun 17 11:30:37 2022 +0100

    x86/xen: Remove undefined behavior in setup_features()
    
    [ Upstream commit ecb6237fa397b7b810d798ad19322eca466dbab1 ]
    
    1 << 31 is undefined. So switch to 1U << 31.
    
    Fixes: 5ead97c84fa7 ("xen: Core Xen implementation")
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20220617103037.57828-1-julien@xen.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ffa12a326415dfe5fc21e66d9d2b86896b4c9eaf
Author: Jason Andryuk <jandryuk@gmail.com>
Date:   Wed Jun 1 15:53:41 2022 -0400

    xen-blkfront: Handle NULL gendisk
    
    [ Upstream commit f9710c357e5bbf64d7ce45ba0bc75a52222491c1 ]
    
    When a VBD is not fully created and then closed, the kernel can have a
    NULL pointer dereference:
    
    The reproducer is trivial:
    
    [user@dom0 ~]$ sudo xl block-attach work backend=sys-usb vdev=xvdi target=/dev/sdz
    [user@dom0 ~]$ xl block-list work
    Vdev  BE  handle state evt-ch ring-ref BE-path
    51712 0   241    4     -1     -1       /local/domain/0/backend/vbd/241/51712
    51728 0   241    4     -1     -1       /local/domain/0/backend/vbd/241/51728
    51744 0   241    4     -1     -1       /local/domain/0/backend/vbd/241/51744
    51760 0   241    4     -1     -1       /local/domain/0/backend/vbd/241/51760
    51840 3   241    3     -1     -1       /local/domain/3/backend/vbd/241/51840
                     ^ note state, the /dev/sdz doesn't exist in the backend
    
    [user@dom0 ~]$ sudo xl block-detach work xvdi
    [user@dom0 ~]$ xl block-list work
    Vdev  BE  handle state evt-ch ring-ref BE-path
    work is an invalid domain identifier
    
    And its console has:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000050
    PGD 80000000edebb067 P4D 80000000edebb067 PUD edec2067 PMD 0
    Oops: 0000 [#1] PREEMPT SMP PTI
    CPU: 1 PID: 52 Comm: xenwatch Not tainted 5.16.18-2.43.fc32.qubes.x86_64 #1
    RIP: 0010:blk_mq_stop_hw_queues+0x5/0x40
    Code: 00 48 83 e0 fd 83 c3 01 48 89 85 a8 00 00 00 41 39 5c 24 50 77 c0 5b 5d 41 5c 41 5d c3 c3 0f 1f 80 00 00 00 00 0f 1f 44 00 00 <8b> 47 50 85 c0 74 32 41 54 49 89 fc 55 53 31 db 49 8b 44 24 48 48
    RSP: 0018:ffffc90000bcfe98 EFLAGS: 00010293
    RAX: ffffffffc0008370 RBX: 0000000000000005 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000005 RDI: 0000000000000000
    RBP: ffff88800775f000 R08: 0000000000000001 R09: ffff888006e620b8
    R10: ffff888006e620b0 R11: f000000000000000 R12: ffff8880bff39000
    R13: ffff8880bff39000 R14: 0000000000000000 R15: ffff88800604be00
    FS:  0000000000000000(0000) GS:ffff8880f3300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000050 CR3: 00000000e932e002 CR4: 00000000003706e0
    Call Trace:
     <TASK>
     blkback_changed+0x95/0x137 [xen_blkfront]
     ? read_reply+0x160/0x160
     xenwatch_thread+0xc0/0x1a0
     ? do_wait_intr_irq+0xa0/0xa0
     kthread+0x16b/0x190
     ? set_kthread_struct+0x40/0x40
     ret_from_fork+0x22/0x30
     </TASK>
    Modules linked in: snd_seq_dummy snd_hrtimer snd_seq snd_seq_device snd_timer snd soundcore ipt_REJECT nf_reject_ipv4 xt_state xt_conntrack nft_counter nft_chain_nat xt_MASQUERADE nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables nfnetlink intel_rapl_msr intel_rapl_common crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel xen_netfront pcspkr xen_scsiback target_core_mod xen_netback xen_privcmd xen_gntdev xen_gntalloc xen_blkback xen_evtchn ipmi_devintf ipmi_msghandler fuse bpf_preload ip_tables overlay xen_blkfront
    CR2: 0000000000000050
    ---[ end trace 7bc9597fd06ae89d ]---
    RIP: 0010:blk_mq_stop_hw_queues+0x5/0x40
    Code: 00 48 83 e0 fd 83 c3 01 48 89 85 a8 00 00 00 41 39 5c 24 50 77 c0 5b 5d 41 5c 41 5d c3 c3 0f 1f 80 00 00 00 00 0f 1f 44 00 00 <8b> 47 50 85 c0 74 32 41 54 49 89 fc 55 53 31 db 49 8b 44 24 48 48
    RSP: 0018:ffffc90000bcfe98 EFLAGS: 00010293
    RAX: ffffffffc0008370 RBX: 0000000000000005 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000005 RDI: 0000000000000000
    RBP: ffff88800775f000 R08: 0000000000000001 R09: ffff888006e620b8
    R10: ffff888006e620b0 R11: f000000000000000 R12: ffff8880bff39000
    R13: ffff8880bff39000 R14: 0000000000000000 R15: ffff88800604be00
    FS:  0000000000000000(0000) GS:ffff8880f3300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000050 CR3: 00000000e932e002 CR4: 00000000003706e0
    Kernel panic - not syncing: Fatal exception
    Kernel Offset: disabled
    
    info->rq and info->gd are only set in blkfront_connect(), which is
    called for state 4 (XenbusStateConnected).  Guard against using NULL
    variables in blkfront_closing() to avoid the issue.
    
    The rest of blkfront_closing looks okay.  If info->nr_rings is 0, then
    for_each_rinfo won't do anything.
    
    blkfront_remove also needs to check for non-NULL pointers before
    cleaning up the gendisk and request queue.
    
    Fixes: 05d69d950d9d "xen-blkfront: sanitize the removal state machine"
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20220601195341.28581-1-jandryuk@gmail.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0315bd8ad0ddcc3c55cca5015777490f92f0db25
Author: Jie2x Zhou <jie2x.zhou@intel.com>
Date:   Thu Jun 16 15:40:46 2022 +0800

    selftests: netfilter: correct PKTGEN_SCRIPT_PATHS in nft_concat_range.sh
    
    [ Upstream commit 5d79d8af8dec58bf709b3124d09d9572edd9c617 ]
    
    Before change:
    make -C netfilter
     TEST: performance
       net,port                                                      [SKIP]
       perf not supported
       port,net                                                      [SKIP]
       perf not supported
       net6,port                                                     [SKIP]
       perf not supported
       port,proto                                                    [SKIP]
       perf not supported
       net6,port,mac                                                 [SKIP]
       perf not supported
       net6,port,mac,proto                                           [SKIP]
       perf not supported
       net,mac                                                       [SKIP]
       perf not supported
    
    After change:
       net,mac                                                       [ OK ]
         baseline (drop from netdev hook):               2061098pps
         baseline hash (non-ranged entries):             1606741pps
         baseline rbtree (match on first field only):    1191607pps
         set with  1000 full, ranged entries:            1639119pps
    ok 8 selftests: netfilter: nft_concat_range.sh
    
    Fixes: 611973c1e06f ("selftests: netfilter: Introduce tests for sets with range concatenation")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Jie2x Zhou <jie2x.zhou@intel.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b45535865d62633e3816ee30eb8d3213038dc17
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Mon Jun 20 09:15:47 2022 +0200

    udmabuf: add back sanity check
    
    [ Upstream commit 05b252cccb2e5c3f56119d25de684b4f810ba40a ]
    
    Check vm_fault->pgoff before using it.  When we removed the warning, we
    also removed the check.
    
    Fixes: 7b26e4e2119d ("udmabuf: drop WARN_ON() check.")
    Reported-by: zdi-disclosures@trendmicro.com
    Suggested-by: Linus Torvalds <torvalds@linuxfoundation.org>
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be64f54a0db2dbf399f3bca45458d06c833641f0
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Mon Jun 20 12:35:08 2022 +0800

    net/tls: fix tls_sk_proto_close executed repeatedly
    
    [ Upstream commit 69135c572d1f84261a6de2a1268513a7e71753e2 ]
    
    After setting the sock ktls, update ctx->sk_proto to sock->sk_prot by
    tls_update(), so now ctx->sk_proto->close is tls_sk_proto_close(). When
    close the sock, tls_sk_proto_close() is called for sock->sk_prot->close
    is tls_sk_proto_close(). But ctx->sk_proto->close() will be executed later
    in tls_sk_proto_close(). Thus tls_sk_proto_close() executed repeatedly
    occurred. That will trigger the following bug.
    
    =================================================================
    KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
    RIP: 0010:tls_sk_proto_close+0xd8/0xaf0 net/tls/tls_main.c:306
    Call Trace:
     <TASK>
     tls_sk_proto_close+0x356/0xaf0 net/tls/tls_main.c:329
     inet_release+0x12e/0x280 net/ipv4/af_inet.c:428
     __sock_release+0xcd/0x280 net/socket.c:650
     sock_close+0x18/0x20 net/socket.c:1365
    
    Updating a proto which is same with sock->sk_prot is incorrect. Add proto
    and sock->sk_prot equality check at the head of tls_update() to fix it.
    
    Fixes: 95fa145479fb ("bpf: sockmap/tls, close can race with map free")
    Reported-by: syzbot+29c3c12f3214b85ad081@syzkaller.appspotmail.com
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3b2470399f679587c45abe56e551caf10becca2
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jun 20 01:35:06 2022 -0700

    erspan: do not assume transport header is always set
    
    [ Upstream commit 301bd140ed0b24f0da660874c7e8a47dad8c8222 ]
    
    Rewrite tests in ip6erspan_tunnel_xmit() and
    erspan_fb_xmit() to not assume transport header is set.
    
    syzbot reported:
    
    WARNING: CPU: 0 PID: 1350 at include/linux/skbuff.h:2911 skb_transport_header include/linux/skbuff.h:2911 [inline]
    WARNING: CPU: 0 PID: 1350 at include/linux/skbuff.h:2911 ip6erspan_tunnel_xmit+0x15af/0x2eb0 net/ipv6/ip6_gre.c:963
    Modules linked in:
    CPU: 0 PID: 1350 Comm: aoe_tx0 Not tainted 5.19.0-rc2-syzkaller-00160-g274295c6e53f #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    RIP: 0010:skb_transport_header include/linux/skbuff.h:2911 [inline]
    RIP: 0010:ip6erspan_tunnel_xmit+0x15af/0x2eb0 net/ipv6/ip6_gre.c:963
    Code: 0f 47 f0 40 88 b5 7f fe ff ff e8 8c 16 4b f9 89 de bf ff ff ff ff e8 a0 12 4b f9 66 83 fb ff 0f 85 1d f1 ff ff e8 71 16 4b f9 <0f> 0b e9 43 f0 ff ff e8 65 16 4b f9 48 8d 85 30 ff ff ff ba 60 00
    RSP: 0018:ffffc90005daf910 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: 000000000000ffff RCX: 0000000000000000
    RDX: ffff88801f032100 RSI: ffffffff882e8d3f RDI: 0000000000000003
    RBP: ffffc90005dafab8 R08: 0000000000000003 R09: 000000000000ffff
    R10: 000000000000ffff R11: 0000000000000000 R12: ffff888024f21d40
    R13: 000000000000a288 R14: 00000000000000b0 R15: ffff888025a2e000
    FS: 0000000000000000(0000) GS:ffff88802c800000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2e425000 CR3: 000000006d099000 CR4: 0000000000152ef0
    Call Trace:
    <TASK>
    __netdev_start_xmit include/linux/netdevice.h:4805 [inline]
    netdev_start_xmit include/linux/netdevice.h:4819 [inline]
    xmit_one net/core/dev.c:3588 [inline]
    dev_hard_start_xmit+0x188/0x880 net/core/dev.c:3604
    sch_direct_xmit+0x19f/0xbe0 net/sched/sch_generic.c:342
    __dev_xmit_skb net/core/dev.c:3815 [inline]
    __dev_queue_xmit+0x14a1/0x3900 net/core/dev.c:4219
    dev_queue_xmit include/linux/netdevice.h:2994 [inline]
    tx+0x6a/0xc0 drivers/block/aoe/aoenet.c:63
    kthread+0x1e7/0x3b0 drivers/block/aoe/aoecmd.c:1229
    kthread+0x2e9/0x3a0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:302
    </TASK>
    
    Fixes: d5db21a3e697 ("erspan: auto detect truncated ipv6 packets.")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 26e70f8989cb8dbdfe65d8b13824e67360fb2353
Author: Leo Yan <leo.yan@linaro.org>
Date:   Tue May 17 02:03:25 2022 +0000

    perf arm-spe: Don't set data source if it's not a memory operation
    
    [ Upstream commit 51ba539f5bdb5a8cc7b1dedd5e73ac54564a7602 ]
    
    Except for memory load and store operations, ARM SPE records also can
    support other operation types, bug when set the data source field the
    current code assumes a record is a either load operation or store
    operation, this leads to wrongly synthesize memory samples.
    
    This patch strictly checks the record operation type, it only sets data
    source only for the operation types ARM_SPE_LD and ARM_SPE_ST,
    otherwise, returns zero for data source.  Therefore, we can synthesize
    memory samples only when data source is a non-zero value, the function
    arm_spe__is_memory_event() is useless and removed.
    
    Fixes: e55ed3423c1bb29f ("perf arm-spe: Synthesize memory event")
    Reviewed-by: Ali Saidi <alisaidi@amazon.com>
    Reviewed-by: German Gomez <german.gomez@arm.com>
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Tested-by: Ali Saidi <alisaidi@amazon.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: alisaidi@amazon.com
    Cc: Andrew Kilroy <andrew.kilroy@arm.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Li Huafei <lihuafei1@huawei.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Nick Forrington <nick.forrington@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will@kernel.org>
    Link: http://lore.kernel.org/lkml/20220517020326.18580-5-alisaidi@amazon.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e24709e89b1b0840647ddbdd7d9e129ba8d47904
Author: Kuogee Hsieh <quic_khsieh@quicinc.com>
Date:   Thu Jun 16 13:26:40 2022 -0700

    drm/msm/dp: force link training for display resolution change
    
    [ Upstream commit a6e2af64a79afa7f1b29375b5231e840a84bb845 ]
    
    Display resolution change is implemented through drm modeset. Older
    modeset (resolution) has to be disabled first before newer modeset
    (resolution) can be enabled. Display disable will turn off both
    pixel clock and main link clock so that main link have to be
    re-trained during display enable to have new video stream flow
    again. At current implementation, display enable function manually
    kicks up irq_hpd_handle which will read panel link status and start
    link training if link status is not in sync state.
    
    However, there is rare case that a particular panel links status keep
    staying in sync for some period of time after main link had been shut
    down previously at display disabled. In this case, main link retraining
    will not be executed by irq_hdp_handle(). Hence video stream of newer
    display resolution will fail to be transmitted to panel due to main
    link is not in sync between host and panel.
    
    This patch will bypass irq_hpd_handle() in favor of directly call
    dp_ctrl_on_stream() to always perform link training in regardless of
    main link status. So that no unexpected exception resolution change
    failure cases will happen. Also this implementation are more efficient
    than manual kicking off irq_hpd_handle function.
    
    Changes in v2:
    -- set force_link_train flag on DP only (is_edp == false)
    
    Changes in v3:
    -- revise commit  text
    -- add Fixes tag
    
    Changes in v4:
    -- revise commit  text
    
    Changes in v5:
    -- fix spelling at commit text
    
    Changes in v6:
    -- split dp_ctrl_on_stream() for phy test case
    -- revise commit text for modeset
    
    Changes in v7:
    -- drop 0 assignment at local variable (ret = 0)
    
    Changes in v8:
    -- add patch to remove pixel_rate from dp_ctrl
    
    Changes in v9:
    -- forward declare dp_ctrl_on_stream_phy_test_report()
    
    Fixes: 62671d2ef24b ("drm/msm/dp: fixes wrong connection state caused by failure of link train")
    Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Patchwork: https://patchwork.freedesktop.org/patch/489895/
    Link: https://lore.kernel.org/r/1655411200-7255-1-git-send-email-quic_khsieh@quicinc.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 796d3acd7d9ed88a0309d123f6f6b235136043c5
Author: Kuogee Hsieh <quic_khsieh@quicinc.com>
Date:   Tue Jan 18 10:47:25 2022 -0800

    drm/msm/dp: do not initialize phy until plugin interrupt received
    
    [ Upstream commit 989ebe7bc4463002c210db0010c8475797a9098f ]
    
    Current DP drivers have regulators, clocks, irq and phy are grouped
    together within a function and executed not in a symmetric manner.
    This increase difficulty of code maintenance and limited code scalability.
    This patch divides the driver life cycle of operation into four states,
    resume (including booting up), dongle plugin, dongle unplugged and suspend.
    Regulators, core clocks and irq are grouped together and enabled at resume
    (or booting up) so that the DP controller is armed and ready to receive HPD
    plugin interrupts. HPD plugin interrupt is generated when a dongle plugs
    into DUT (device under test). Once HPD plugin interrupt is received, DP
    controller will initialize phy so that dpcd read/write will function and
    following link training can be proceeded successfully. DP phy will be
    disabled after main link is teared down at end of unplugged HPD interrupt
    handle triggered by dongle unplugged out of DUT. Finally regulators, code
    clocks and irq are disabled at corresponding suspension.
    
    Changes in V2:
    -- removed unnecessary dp_ctrl NULL check
    -- removed unnecessary phy init_count and power_count DRM_DEBUG_DP logs
    -- remove flip parameter out of dp_ctrl_irq_enable()
    -- add fixes tag
    
    Changes in V3:
    -- call dp_display_host_phy_init() instead of dp_ctrl_phy_init() at
            dp_display_host_init() for eDP
    
    Changes in V4:
    -- rewording commit text to match this commit changes
    
    Changes in V5:
    -- rebase on top of msm-next branch
    
    Changes in V6:
    -- delete flip variable
    
    Changes in V7:
    -- dp_ctrl_irq_enable/disabe() merged into dp_ctrl_reset_irq_ctrl()
    
    Changes in V8:
    -- add more detail comment regrading dp phy at dp_display_host_init()
    
    Changes in V9:
    -- remove set phy_initialized to false when -ECONNRESET detected
    
    Changes in v10:
    --  group into one series
    
    Changes in v11:
    -- drop drm/msm/dp: dp_link_parse_sink_count() return immediately
            if aux read
    
    Changes in v12:
    -- move dp_display_host_phy_exit() after dp_display_host_deinit()
    
    Changes in v13:
    -- do not execute phy_init until plugged_in interrupt for edp, same as DP.
    
    Changes in v14:
    -- remove redundant dp->core_initialized = false form dp_pm_suspend.
    
    Changes in v15:
    -- remove core_initialized flag check at both host_init and host_deinit
    
    Changes in v16:
    -- remove dp_display_host_phy_exit core_initialized=false at dp_pm_suspend
    
    Changes in v17:
    -- remove core_initialized checking before execute attention_cb()
    
    Changes in v18:
    -- remove core_initialized checking at dp_pm_suspend
    
    Fixes: 8ede2ecc3e5e ("drm/msm/dp: Add DP compliance tests on Snapdragon Chipsets")
    Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/1642531648-8448-2-git-send-email-quic_khsieh@quicinc.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40e9efdc2ef9e6bbd7712936606137ec3c94e32b
Author: Kuogee Hsieh <quic_khsieh@quicinc.com>
Date:   Wed Dec 8 09:41:02 2021 -0800

    drm/msm/dp: dp_link_parse_sink_count() return immediately if aux read failed
    
    [ Upstream commit f61550b3864b9578527c28cf9c465316ac1566e1 ]
    
    Add checking aux read/write status at both dp_link_parse_sink_count()
    and dp_link_parse_sink_status_filed() to avoid long timeout delay if
    dp aux read/write failed at timeout due to cable unplugged.
    
    Changes in V4:
    -- split this patch as stand alone patch
    
    Changes in v5:
    -- rebase on msm-next branch
    
    Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Tested-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/1638985262-2072-1-git-send-email-quic_khsieh@quicinc.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ecf5ff9aa14600536d5790451afd5ebba29d739
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Sat Nov 6 10:22:46 2021 -0700

    drm/msm/dp: Drop now unused hpd_high member
    
    [ Upstream commit fabae667b1263216be53e0230cd3966a9a1963a4 ]
    
    Since '8ede2ecc3e5e ("drm/msm/dp: Add DP compliance tests on Snapdragon
    Chipsets")' the hpd_high member of struct dp_usbpd has been write-only.
    
    Let's clean up the code a little bit by removing the writes as well.
    
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20211106172246.2597431-1-bjorn.andersson@linaro.org
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d0b4a61f8713fe4d4b5cd7c525135cf31ad10fe9
Author: Kuogee Hsieh <quic_khsieh@quicinc.com>
Date:   Mon Jun 6 10:55:39 2022 -0700

    drm/msm/dp: check core_initialized before disable interrupts at dp_display_unbind()
    
    [ Upstream commit d80c3ba0ac247791a4ed7a0cd865a64906c8906a ]
    
    During msm initialize phase, dp_display_unbind() will be called to undo
    initializations had been done by dp_display_bind() previously if there is
    error happen at msm_drm_bind. In this case, core_initialized flag had to
    be check to make sure clocks is on before update DP controller register
    to disable HPD interrupts. Otherwise system will crash due to below NOC
    fatal error.
    
    QTISECLIB [01f01a7ad]CNOC2 ERROR: ERRLOG0_LOW = 0x00061007
    QTISECLIB [01f01a7ad]GEM_NOC ERROR: ERRLOG0_LOW = 0x00001007
    QTISECLIB [01f0371a0]CNOC2 ERROR: ERRLOG0_HIGH = 0x00000003
    QTISECLIB [01f055297]GEM_NOC ERROR: ERRLOG0_HIGH = 0x00000003
    QTISECLIB [01f072beb]CNOC2 ERROR: ERRLOG1_LOW = 0x00000024
    QTISECLIB [01f0914b8]GEM_NOC ERROR: ERRLOG1_LOW = 0x00000042
    QTISECLIB [01f0ae639]CNOC2 ERROR: ERRLOG1_HIGH = 0x00004002
    QTISECLIB [01f0cc73f]GEM_NOC ERROR: ERRLOG1_HIGH = 0x00004002
    QTISECLIB [01f0ea092]CNOC2 ERROR: ERRLOG2_LOW = 0x0009020c
    QTISECLIB [01f10895f]GEM_NOC ERROR: ERRLOG2_LOW = 0x0ae9020c
    QTISECLIB [01f125ae1]CNOC2 ERROR: ERRLOG2_HIGH = 0x00000000
    QTISECLIB [01f143be7]GEM_NOC ERROR: ERRLOG2_HIGH = 0x00000000
    QTISECLIB [01f16153a]CNOC2 ERROR: ERRLOG3_LOW = 0x00000000
    QTISECLIB [01f17fe07]GEM_NOC ERROR: ERRLOG3_LOW = 0x00000000
    QTISECLIB [01f19cf89]CNOC2 ERROR: ERRLOG3_HIGH = 0x00000000
    QTISECLIB [01f1bb08e]GEM_NOC ERROR: ERRLOG3_HIGH = 0x00000000
    QTISECLIB [01f1d8a31]CNOC2 ERROR: SBM1 FAULTINSTATUS0_LOW = 0x00000002
    QTISECLIB [01f1f72a4]GEM_NOC ERROR: SBM0 FAULTINSTATUS0_LOW = 0x00000001
    QTISECLIB [01f21a217]CNOC3 ERROR: ERRLOG0_LOW = 0x00000006
    QTISECLIB [01f23dfd3]NOC error fatal
    
    changes in v2:
    -- drop the first patch (drm/msm: enable msm irq after all initializations are done successfully at msm_drm_init()) since the problem had been fixed by other patch
    
    Fixes: 570d3e5d28db ("drm/msm/dp: stop event kernel thread when DP unbind")
    Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Patchwork: https://patchwork.freedesktop.org/patch/488387/
    Link: https://lore.kernel.org/r/1654538139-7450-1-git-send-email-quic_khsieh@quicinc.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c39a17197733bc37786ed68c83267c2f491840b
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Jun 7 15:08:38 2022 +0400

    drm/msm/mdp4: Fix refcount leak in mdp4_modeset_init_intf
    
    [ Upstream commit b9cc4598607cb7f7eae5c75fc1e3209cd52ff5e0 ]
    
    of_graph_get_remote_node() returns remote device node pointer with
    refcount incremented, we should use of_node_put() on it
    when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: 86418f90a4c1 ("drm: convert drivers to use of_graph_get_remote_node")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/488473/
    Link: https://lore.kernel.org/r/20220607110841.53889-1-linmq006@gmail.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45bd293bbcd8ce2d37579d823e25a56043f5f1a6
Author: Peilin Ye <peilin.ye@bytedance.com>
Date:   Thu Jun 16 16:43:36 2022 -0700

    net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit platforms
    
    [ Upstream commit a2b1a5d40bd12b44322c2ccd40bb0ec1699708b6 ]
    
    As reported by Yuming, currently tc always show a latency of UINT_MAX
    for netem Qdisc's on 32-bit platforms:
    
        $ tc qdisc add dev dummy0 root netem latency 100ms
        $ tc qdisc show dev dummy0
        qdisc netem 8001: root refcnt 2 limit 1000 delay 275s  275s
                                                   ^^^^^^^^^^^^^^^^
    
    Let us take a closer look at netem_dump():
    
            qopt.latency = min_t(psched_tdiff_t, PSCHED_NS2TICKS(q->latency,
                                 UINT_MAX);
    
    qopt.latency is __u32, psched_tdiff_t is signed long,
    (psched_tdiff_t)(UINT_MAX) is negative for 32-bit platforms, so
    qopt.latency is always UINT_MAX.
    
    Fix it by using psched_time_t (u64) instead.
    
    Note: confusingly, users have two ways to specify 'latency':
    
      1. normally, via '__u32 latency' in struct tc_netem_qopt;
      2. via the TCA_NETEM_LATENCY64 attribute, which is s64.
    
    For the second case, theoretically 'latency' could be negative.  This
    patch ignores that corner case, since it is broken (i.e. assigning a
    negative s64 to __u32) anyways, and should be handled separately.
    
    Thanks Ted Lin for the analysis [1] .
    
    [1] https://github.com/raspberrypi/linux/issues/3512
    
    Reported-by: Yuming Chen <chenyuming.junnan@bytedance.com>
    Fixes: 112f9cb65643 ("netem: convert to qdisc_watchdog_schedule_ns")
    Reviewed-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
    Acked-by: Stephen Hemminger <stephen@networkplumber.org>
    Link: https://lore.kernel.org/r/20220616234336.2443-1-yepeilin.cs@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit efb10d2a047d115ec953187e1ccfd30b002473a2
Author: Ivan Vecera <ivecera@redhat.com>
Date:   Thu Jun 16 18:08:55 2022 +0200

    ethtool: Fix get module eeprom fallback
    
    [ Upstream commit a3bb7b63813f674fb62bac321cdd897cc62de094 ]
    
    Function fallback_set_params() checks if the module type returned
    by a driver is ETH_MODULE_SFF_8079 and in this case it assumes
    that buffer returns a concatenated content of page  A0h and A2h.
    The check is wrong because the correct type is ETH_MODULE_SFF_8472.
    
    Fixes: 96d971e307cc ("ethtool: Add fallback to get_module_eeprom from netlink command")
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/20220616160856.3623273-1-ivecera@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6386fdde8df05e974e468d392c3684c790d75a4c
Author: Jay Vosburgh <jay.vosburgh@canonical.com>
Date:   Thu Jun 16 12:32:40 2022 -0700

    bonding: ARP monitor spams NETDEV_NOTIFY_PEERS notifiers
    
    [ Upstream commit 7a9214f3d88cfdb099f3896e102a306b316d8707 ]
    
    The bonding ARP monitor fails to decrement send_peer_notif, the
    number of peer notifications (gratuitous ARP or ND) to be sent. This
    results in a continuous series of notifications.
    
    Correct this by decrementing the counter for each notification.
    
    Reported-by: Jonathan Toppins <jtoppins@redhat.com>
    Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Fixes: b0929915e035 ("bonding: Fix RTNL: assertion failed at net/core/rtnetlink.c for ab arp monitor")
    Link: https://lore.kernel.org/netdev/b2fd4147-8f50-bebd-963a-1a3e8d1d9715@redhat.com/
    Tested-by: Jonathan Toppins <jtoppins@redhat.com>
    Reviewed-by: Jonathan Toppins <jtoppins@redhat.com>
    Link: https://lore.kernel.org/r/9400.1655407960@famine
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2af944210dc23d43d8208dafac4df7be7e3c168b
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Thu Jun 16 16:13:20 2022 +0200

    igb: fix a use-after-free issue in igb_clean_tx_ring
    
    [ Upstream commit 3f6a57ee8544ec3982f8a3cbcbf4aea7d47eb9ec ]
    
    Fix the following use-after-free bug in igb_clean_tx_ring routine when
    the NIC is running in XDP mode. The issue can be triggered redirecting
    traffic into the igb NIC and then closing the device while the traffic
    is flowing.
    
    [   73.322719] CPU: 1 PID: 487 Comm: xdp_redirect Not tainted 5.18.3-apu2 #9
    [   73.330639] Hardware name: PC Engines APU2/APU2, BIOS 4.0.7 02/28/2017
    [   73.337434] RIP: 0010:refcount_warn_saturate+0xa7/0xf0
    [   73.362283] RSP: 0018:ffffc9000081f798 EFLAGS: 00010282
    [   73.367761] RAX: 0000000000000000 RBX: ffffc90000420f80 RCX: 0000000000000000
    [   73.375200] RDX: ffff88811ad22d00 RSI: ffff88811ad171e0 RDI: ffff88811ad171e0
    [   73.382590] RBP: 0000000000000900 R08: ffffffff82298f28 R09: 0000000000000058
    [   73.390008] R10: 0000000000000219 R11: ffffffff82280f40 R12: 0000000000000090
    [   73.397356] R13: ffff888102343a40 R14: ffff88810359e0e4 R15: 0000000000000000
    [   73.404806] FS:  00007ff38d31d740(0000) GS:ffff88811ad00000(0000) knlGS:0000000000000000
    [   73.413129] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   73.419096] CR2: 000055cff35f13f8 CR3: 0000000106391000 CR4: 00000000000406e0
    [   73.426565] Call Trace:
    [   73.429087]  <TASK>
    [   73.431314]  igb_clean_tx_ring+0x43/0x140 [igb]
    [   73.436002]  igb_down+0x1d7/0x220 [igb]
    [   73.439974]  __igb_close+0x3c/0x120 [igb]
    [   73.444118]  igb_xdp+0x10c/0x150 [igb]
    [   73.447983]  ? igb_pci_sriov_configure+0x70/0x70 [igb]
    [   73.453362]  dev_xdp_install+0xda/0x110
    [   73.457371]  dev_xdp_attach+0x1da/0x550
    [   73.461369]  do_setlink+0xfd0/0x10f0
    [   73.465166]  ? __nla_validate_parse+0x89/0xc70
    [   73.469714]  rtnl_setlink+0x11a/0x1e0
    [   73.473547]  rtnetlink_rcv_msg+0x145/0x3d0
    [   73.477709]  ? rtnl_calcit.isra.0+0x130/0x130
    [   73.482258]  netlink_rcv_skb+0x8d/0x110
    [   73.486229]  netlink_unicast+0x230/0x340
    [   73.490317]  netlink_sendmsg+0x215/0x470
    [   73.494395]  __sys_sendto+0x179/0x190
    [   73.498268]  ? move_addr_to_user+0x37/0x70
    [   73.502547]  ? __sys_getsockname+0x84/0xe0
    [   73.506853]  ? netlink_setsockopt+0x1c1/0x4a0
    [   73.511349]  ? __sys_setsockopt+0xc8/0x1d0
    [   73.515636]  __x64_sys_sendto+0x20/0x30
    [   73.519603]  do_syscall_64+0x3b/0x80
    [   73.523399]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [   73.528712] RIP: 0033:0x7ff38d41f20c
    [   73.551866] RSP: 002b:00007fff3b945a68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    [   73.559640] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff38d41f20c
    [   73.567066] RDX: 0000000000000034 RSI: 00007fff3b945b30 RDI: 0000000000000003
    [   73.574457] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
    [   73.581852] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff3b945ab0
    [   73.589179] R13: 0000000000000000 R14: 0000000000000003 R15: 00007fff3b945b30
    [   73.596545]  </TASK>
    [   73.598842] ---[ end trace 0000000000000000 ]---
    
    Fixes: 9cbc948b5a20c ("igb: add XDP support")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Link: https://lore.kernel.org/r/e5c01d549dc37bff18e46aeabd6fb28a7bcf84be.1655388571.git.lorenzo@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd7789e659e84f137631dc1f5ec8d794f2700e6c
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Fri Jun 17 08:45:51 2022 +0700

    tipc: fix use-after-free Read in tipc_named_reinit
    
    [ Upstream commit 911600bf5a5e84bfda4d33ee32acc75ecf6159f0 ]
    
    syzbot found the following issue on:
    ==================================================================
    BUG: KASAN: use-after-free in tipc_named_reinit+0x94f/0x9b0
    net/tipc/name_distr.c:413
    Read of size 8 at addr ffff88805299a000 by task kworker/1:9/23764
    
    CPU: 1 PID: 23764 Comm: kworker/1:9 Not tainted
    5.18.0-rc4-syzkaller-00878-g17d49e6e8012 #0
    Hardware name: Google Compute Engine/Google Compute Engine,
    BIOS Google 01/01/2011
    Workqueue: events tipc_net_finalize_work
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description.constprop.0.cold+0xeb/0x495
    mm/kasan/report.c:313
     print_report mm/kasan/report.c:429 [inline]
     kasan_report.cold+0xf4/0x1c6 mm/kasan/report.c:491
     tipc_named_reinit+0x94f/0x9b0 net/tipc/name_distr.c:413
     tipc_net_finalize+0x234/0x3d0 net/tipc/net.c:138
     process_one_work+0x996/0x1610 kernel/workqueue.c:2289
     worker_thread+0x665/0x1080 kernel/workqueue.c:2436
     kthread+0x2e9/0x3a0 kernel/kthread.c:376
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:298
     </TASK>
    [...]
    ==================================================================
    
    In the commit
    d966ddcc3821 ("tipc: fix a deadlock when flushing scheduled work"),
    the cancel_work_sync() function just to make sure ONLY the work
    tipc_net_finalize_work() is executing/pending on any CPU completed before
    tipc namespace is destroyed through tipc_exit_net(). But this function
    is not guaranteed the work is the last queued. So, the destroyed instance
    may be accessed in the work which will try to enqueue later.
    
    In order to completely fix, we re-order the calling of cancel_work_sync()
    to make sure the work tipc_net_finalize_work() was last queued and it
    must be completed by calling cancel_work_sync().
    
    Reported-by: syzbot+47af19f3307fc9c5c82e@syzkaller.appspotmail.com
    Fixes: d966ddcc3821 ("tipc: fix a deadlock when flushing scheduled work")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad10d61c55aaa6e4ce50099d2e85cde4b19f1ac8
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jun 16 00:34:34 2022 -0700

    net: fix data-race in dev_isalive()
    
    [ Upstream commit cc26c2661fefea215f41edb665193324a5f99021 ]
    
    dev_isalive() is called under RTNL or dev_base_lock protection.
    
    This means that changes to dev->reg_state should be done with both locks held.
    
    syzbot reported:
    
    BUG: KCSAN: data-race in register_netdevice / type_show
    
    write to 0xffff888144ecf518 of 1 bytes by task 20886 on cpu 0:
    register_netdevice+0xb9f/0xdf0 net/core/dev.c:10050
    lapbeth_new_device drivers/net/wan/lapbether.c:414 [inline]
    lapbeth_device_event+0x4a0/0x6c0 drivers/net/wan/lapbether.c:456
    notifier_call_chain kernel/notifier.c:87 [inline]
    raw_notifier_call_chain+0x53/0xb0 kernel/notifier.c:455
    __dev_notify_flags+0x1d6/0x3a0
    dev_change_flags+0xa2/0xc0 net/core/dev.c:8607
    do_setlink+0x778/0x2230 net/core/rtnetlink.c:2780
    __rtnl_newlink net/core/rtnetlink.c:3546 [inline]
    rtnl_newlink+0x114c/0x16a0 net/core/rtnetlink.c:3593
    rtnetlink_rcv_msg+0x811/0x8c0 net/core/rtnetlink.c:6089
    netlink_rcv_skb+0x13e/0x240 net/netlink/af_netlink.c:2501
    rtnetlink_rcv+0x18/0x20 net/core/rtnetlink.c:6107
    netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
    netlink_unicast+0x58a/0x660 net/netlink/af_netlink.c:1345
    netlink_sendmsg+0x661/0x750 net/netlink/af_netlink.c:1921
    sock_sendmsg_nosec net/socket.c:714 [inline]
    sock_sendmsg net/socket.c:734 [inline]
    __sys_sendto+0x21e/0x2c0 net/socket.c:2119
    __do_sys_sendto net/socket.c:2131 [inline]
    __se_sys_sendto net/socket.c:2127 [inline]
    __x64_sys_sendto+0x74/0x90 net/socket.c:2127
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    read to 0xffff888144ecf518 of 1 bytes by task 20423 on cpu 1:
    dev_isalive net/core/net-sysfs.c:38 [inline]
    netdev_show net/core/net-sysfs.c:50 [inline]
    type_show+0x24/0x90 net/core/net-sysfs.c:112
    dev_attr_show+0x35/0x90 drivers/base/core.c:2095
    sysfs_kf_seq_show+0x175/0x240 fs/sysfs/file.c:59
    kernfs_seq_show+0x75/0x80 fs/kernfs/file.c:162
    seq_read_iter+0x2c3/0x8e0 fs/seq_file.c:230
    kernfs_fop_read_iter+0xd1/0x2f0 fs/kernfs/file.c:235
    call_read_iter include/linux/fs.h:2052 [inline]
    new_sync_read fs/read_write.c:401 [inline]
    vfs_read+0x5a5/0x6a0 fs/read_write.c:482
    ksys_read+0xe8/0x1a0 fs/read_write.c:620
    __do_sys_read fs/read_write.c:630 [inline]
    __se_sys_read fs/read_write.c:628 [inline]
    __x64_sys_read+0x3e/0x50 fs/read_write.c:628
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    value changed: 0x00 -> 0x01
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 20423 Comm: udevd Tainted: G W 5.19.0-rc2-syzkaller-dirty #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f617cef465523e453ea3df4e87cb8e02c3efbace
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Nov 26 17:15:29 2021 +0100

    net: Write lock dev_base_lock without disabling bottom halves.
    
    [ Upstream commit fd888e85fe6b661e78044dddfec0be5271afa626 ]
    
    The writer acquires dev_base_lock with disabled bottom halves.
    The reader can acquire dev_base_lock without disabling bottom halves
    because there is no writer in softirq context.
    
    On PREEMPT_RT the softirqs are preemptible and local_bh_disable() acts
    as a lock to ensure that resources, that are protected by disabling
    bottom halves, remain protected.
    This leads to a circular locking dependency if the lock acquired with
    disabled bottom halves (as in write_lock_bh()) and somewhere else with
    enabled bottom halves (as by read_lock() in netstat_show()) followed by
    disabling bottom halves (cxgb_get_stats() -> t4_wr_mbox_meat_timeout()
    -> spin_lock_bh()). This is the reverse locking order.
    
    All read_lock() invocation are from sysfs callback which are not invoked
    from softirq context. Therefore there is no need to disable bottom
    halves while acquiring a write lock.
    
    Acquire the write lock of dev_base_lock without disabling bottom halves.
    
    Reported-by: Pei Zhang <pezhang@redhat.com>
    Reported-by: Luis Claudio R. Goncalves <lgoncalv@redhat.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 638be56ae9cc5c25a81c525df20b1b9d92b08613
Author: Quentin Perret <qperret@google.com>
Date:   Thu Jun 16 16:11:34 2022 +0000

    KVM: arm64: Prevent kmemleak from accessing pKVM memory
    
    [ Upstream commit 56961c6331463cce2d84d0f973177a517fb33a82 ]
    
    Commit a7259df76702 ("memblock: make memblock_find_in_range method
    private") changed the API using which memory is reserved for the pKVM
    hypervisor. However, memblock_phys_alloc() differs from the original API in
    terms of kmemleak semantics -- the old one didn't report the reserved
    regions to kmemleak while the new one does. Unfortunately, when protected
    KVM is enabled, all kernel accesses to pKVM-private memory result in a
    fatal exception, which can now happen because of kmemleak scans:
    
    $ echo scan > /sys/kernel/debug/kmemleak
    [   34.991354] kvm [304]: nVHE hyp BUG at: [<ffff800008fa3750>] __kvm_nvhe_handle_host_mem_abort+0x270/0x290!
    [   34.991580] kvm [304]: Hyp Offset: 0xfffe8be807e00000
    [   34.991813] Kernel panic - not syncing: HYP panic:
    [   34.991813] PS:600003c9 PC:0000f418011a3750 ESR:00000000f2000800
    [   34.991813] FAR:ffff000439200000 HPFAR:0000000004792000 PAR:0000000000000000
    [   34.991813] VCPU:0000000000000000
    [   34.993660] CPU: 0 PID: 304 Comm: bash Not tainted 5.19.0-rc2 #102
    [   34.994059] Hardware name: linux,dummy-virt (DT)
    [   34.994452] Call trace:
    [   34.994641]  dump_backtrace.part.0+0xcc/0xe0
    [   34.994932]  show_stack+0x18/0x6c
    [   34.995094]  dump_stack_lvl+0x68/0x84
    [   34.995276]  dump_stack+0x18/0x34
    [   34.995484]  panic+0x16c/0x354
    [   34.995673]  __hyp_pgtable_total_pages+0x0/0x60
    [   34.995933]  scan_block+0x74/0x12c
    [   34.996129]  scan_gray_list+0xd8/0x19c
    [   34.996332]  kmemleak_scan+0x2c8/0x580
    [   34.996535]  kmemleak_write+0x340/0x4a0
    [   34.996744]  full_proxy_write+0x60/0xbc
    [   34.996967]  vfs_write+0xc4/0x2b0
    [   34.997136]  ksys_write+0x68/0xf4
    [   34.997311]  __arm64_sys_write+0x20/0x2c
    [   34.997532]  invoke_syscall+0x48/0x114
    [   34.997779]  el0_svc_common.constprop.0+0x44/0xec
    [   34.998029]  do_el0_svc+0x2c/0xc0
    [   34.998205]  el0_svc+0x2c/0x84
    [   34.998421]  el0t_64_sync_handler+0xf4/0x100
    [   34.998653]  el0t_64_sync+0x18c/0x190
    [   34.999252] SMP: stopping secondary CPUs
    [   35.000034] Kernel Offset: disabled
    [   35.000261] CPU features: 0x800,00007831,00001086
    [   35.000642] Memory Limit: none
    [   35.001329] ---[ end Kernel panic - not syncing: HYP panic:
    [   35.001329] PS:600003c9 PC:0000f418011a3750 ESR:00000000f2000800
    [   35.001329] FAR:ffff000439200000 HPFAR:0000000004792000 PAR:0000000000000000
    [   35.001329] VCPU:0000000000000000 ]---
    
    Fix this by explicitly excluding the hypervisor's memory pool from
    kmemleak like we already do for the hyp BSS.
    
    Cc: Mike Rapoport <rppt@kernel.org>
    Fixes: a7259df76702 ("memblock: make memblock_find_in_range method private")
    Signed-off-by: Quentin Perret <qperret@google.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20220616161135.3997786-1-qperret@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d7fe6be43cfaaa10a9cc48a5baf202c387caeefd
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
Date:   Fri Jun 10 11:40:37 2022 +0300

    phy: aquantia: Fix AN when higher speeds than 1G are not advertised
    
    [ Upstream commit 9b7fd1670a94a57d974795acebde843a5c1a354e ]
    
    Even when the eth port is resticted to work with speeds not higher than 1G,
    and so the eth driver is requesting the phy (via phylink) to advertise up
    to 1000BASET support, the aquantia phy device is still advertising for 2.5G
    and 5G speeds.
    Clear these advertising defaults when requested.
    
    Cc: Ondrej Spacek <ondrej.spacek@nxp.com>
    Fixes: 09c4c57f7bc41 ("net: phy: aquantia: add support for auto-negotiation configuration")
    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://lore.kernel.org/r/20220610084037.7625-1-claudiu.manoil@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e74f5ceea52fb76fe77ab5f22b8e667a93518aa
Author: Saurabh Sengar <ssengar@linux.microsoft.com>
Date:   Tue Jun 14 00:05:55 2022 -0700

    scsi: storvsc: Correct reporting of Hyper-V I/O size limits
    
    [ Upstream commit 1d3e0980782fbafaf93285779fd3905e4f866802 ]
    
    Current code is based on the idea that the max number of SGL entries
    also determines the max size of an I/O request.  While this idea was
    true in older versions of the storvsc driver when SGL entry length
    was limited to 4 Kbytes, commit 3d9c3dcc58e9 ("scsi: storvsc: Enable
    scatterlist entry lengths > 4Kbytes") removed that limitation. It's
    now theoretically possible for the block layer to send requests that
    exceed the maximum size supported by Hyper-V. This problem doesn't
    currently happen in practice because the block layer defaults to a
    512 Kbyte maximum, while Hyper-V in Azure supports 2 Mbyte I/O sizes.
    But some future configuration of Hyper-V could have a smaller max I/O
    size, and the block layer could exceed that max.
    
    Fix this by correctly setting max_sectors as well as sg_tablesize to
    reflect the maximum I/O size that Hyper-V reports. While allowing
    I/O sizes larger than the block layer default of 512 Kbytes doesn’t
    provide any noticeable performance benefit in the tests we ran, it's
    still appropriate to report the correct underlying Hyper-V capabilities
    to the Linux block layer.
    
    Also tweak the virt_boundary_mask to reflect that the required
    alignment derives from Hyper-V communication using a 4 Kbyte page size,
    and not on the guest page size, which might be bigger (eg. ARM64).
    
    Link: https://lore.kernel.org/r/1655190355-28722-1-git-send-email-ssengar@linux.microsoft.com
    Fixes: 3d9c3dcc58e9 ("scsi: storvsc: Enable scatter list entry lengths > 4Kbytes")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b28e4e3fd34c97ef282ad77f9b398d01a82bc6b3
Author: Jakub Sitnicki <jakub@cloudflare.com>
Date:   Thu Jun 16 18:20:36 2022 +0200

    bpf, x86: Fix tail call count offset calculation on bpf2bpf call
    
    [ Upstream commit ff672c67ee7635ca1e28fb13729e8ef0d1f08ce5 ]
    
    On x86-64 the tail call count is passed from one BPF function to another
    through %rax. Additionally, on function entry, the tail call count value
    is stored on stack right after the BPF program stack, due to register
    shortage.
    
    The stored count is later loaded from stack either when performing a tail
    call - to check if we have not reached the tail call limit - or before
    calling another BPF function call in order to pass it via %rax.
    
    In the latter case, we miscalculate the offset at which the tail call count
    was stored on function entry. The JIT does not take into account that the
    allocated BPF program stack is always a multiple of 8 on x86, while the
    actual stack depth does not have to be.
    
    This leads to a load from an offset that belongs to the BPF stack, as shown
    in the example below:
    
    SEC("tc")
    int entry(struct __sk_buff *skb)
    {
            /* Have data on stack which size is not a multiple of 8 */
            volatile char arr[1] = {};
            return subprog_tail(skb);
    }
    
    int entry(struct __sk_buff * skb):
       0: (b4) w2 = 0
       1: (73) *(u8 *)(r10 -1) = r2
       2: (85) call pc+1#bpf_prog_ce2f79bb5f3e06dd_F
       3: (95) exit
    
    int entry(struct __sk_buff * skb):
       0xffffffffa0201788:  nop    DWORD PTR [rax+rax*1+0x0]
       0xffffffffa020178d:  xor    eax,eax
       0xffffffffa020178f:  push   rbp
       0xffffffffa0201790:  mov    rbp,rsp
       0xffffffffa0201793:  sub    rsp,0x8
       0xffffffffa020179a:  push   rax
       0xffffffffa020179b:  xor    esi,esi
       0xffffffffa020179d:  mov    BYTE PTR [rbp-0x1],sil
       0xffffffffa02017a1:  mov    rax,QWORD PTR [rbp-0x9]  !!! tail call count
       0xffffffffa02017a8:  call   0xffffffffa02017d8       !!! is at rbp-0x10
       0xffffffffa02017ad:  leave
       0xffffffffa02017ae:  ret
    
    Fix it by rounding up the BPF stack depth to a multiple of 8, when
    calculating the tail call count offset on stack.
    
    Fixes: ebf7d1f508a7 ("bpf, x64: rework pro/epilogue and tailcall handling in JIT")
    Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20220616162037.535469-2-jakub@cloudflare.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0eef1dcb97744dc7db95b06e90b64be5b651fbf1
Author: Samuel Holland <samuel@sholland.org>
Date:   Wed Jun 15 00:42:53 2022 -0500

    drm/sun4i: Fix crash during suspend after component bind failure
    
    [ Upstream commit 1342b5b23da9559a1578978eaff7f797d8a87d91 ]
    
    If the component driver fails to bind, or is unbound, the driver data
    for the top-level platform device points to a freed drm_device. If the
    system is then suspended, the driver passes this dangling pointer to
    drm_mode_config_helper_suspend(), which crashes.
    
    Fix this by only setting the driver data while the platform driver holds
    a reference to the drm_device.
    
    Fixes: 624b4b48d9d8 ("drm: sun4i: Add support for suspending the display driver")
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://lore.kernel.org/r/20220615054254.16352-1-samuel@sholland.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b03607437ea81b850599f705096b05b85e7a4a71
Author: Jon Maxwell <jmaxwell37@gmail.com>
Date:   Wed Jun 15 11:15:40 2022 +1000

    bpf: Fix request_sock leak in sk lookup helpers
    
    [ Upstream commit 3046a827316c0e55fc563b4fb78c93b9ca5c7c37 ]
    
    A customer reported a request_socket leak in a Calico cloud environment. We
    found that a BPF program was doing a socket lookup with takes a refcnt on
    the socket and that it was finding the request_socket but returning the parent
    LISTEN socket via sk_to_full_sk() without decrementing the child request socket
    1st, resulting in request_sock slab object leak. This patch retains the
    existing behaviour of returning full socks to the caller but it also decrements
    the child request_socket if one is present before doing so to prevent the leak.
    
    Thanks to Curtis Taylor for all the help in diagnosing and testing this. And
    thanks to Antoine Tenart for the reproducer and patch input.
    
    v2 of this patch contains, refactor as per Daniel Borkmann's suggestions to
    validate RCU flags on the listen socket so that it balances with bpf_sk_release()
    and update comments as per Martin KaFai Lau's suggestion. One small change to
    Daniels suggestion, put "sk = sk2" under "if (sk2 != sk)" to avoid an extra
    instruction.
    
    Fixes: f7355a6c0497 ("bpf: Check sk_fullsock() before returning from bpf_sk_lookup()")
    Fixes: edbf8c01de5a ("bpf: add skc_lookup_tcp helper")
    Co-developed-by: Antoine Tenart <atenart@kernel.org>
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Signed-off-by: Jon Maxwell <jmaxwell37@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Curtis Taylor <cutaylor-pub@yahoo.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Link: https://lore.kernel.org/bpf/56d6f898-bde0-bb25-3427-12a330b29fb8@iogearbox.net
    Link: https://lore.kernel.org/bpf/20220615011540.813025-1-jmaxwell37@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7154e4df56d45cf9025aa03cb34f52603ab441e7
Author: Jonathan Marek <jonathan@marek.ca>
Date:   Mon Jun 13 18:10:19 2022 -0400

    drm/msm: use for_each_sgtable_sg to iterate over scatterlist
    
    [ Upstream commit 62b5e322fb6cc5a5a91fdeba0e4e57e75d9f4387 ]
    
    The dma_map_sgtable() call (used to invalidate cache) overwrites sgt->nents
    with 1, so msm_iommu_pagetable_map maps only the first physical segment.
    
    To fix this problem use for_each_sgtable_sg(), which uses orig_nents.
    
    Fixes: b145c6e65eb0 ("drm/msm: Add support to create a local pagetable")
    Signed-off-by: Jonathan Marek <jonathan@marek.ca>
    Link: https://lore.kernel.org/r/20220613221019.11399-1-jonathan@marek.ca
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64e6ba7f2d2f022469be6c2a1c179851b94842dc
Author: Ciara Loftus <ciara.loftus@intel.com>
Date:   Tue Jun 14 07:07:46 2022 +0000

    xsk: Fix generic transmit when completion queue reservation fails
    
    [ Upstream commit a6e944f25cdbe6b82275402b8bc9a55ad7aac10b ]
    
    Two points of potential failure in the generic transmit function are:
    
      1. completion queue (cq) reservation failure.
      2. skb allocation failure
    
    Originally the cq reservation was performed first, followed by the skb
    allocation. Commit 675716400da6 ("xdp: fix possible cq entry leak")
    reversed the order because at the time there was no mechanism available
    to undo the cq reservation which could have led to possible cq entry leaks
    in the event of skb allocation failure. However if the skb allocation is
    performed first and the cq reservation then fails, the xsk skb destructor
    is called which blindly adds the skb address to the already full cq leading
    to undefined behavior.
    
    This commit restores the original order (cq reservation followed by skb
    allocation) and uses the xskq_prod_cancel helper to undo the cq reserve
    in event of skb allocation failure.
    
    Fixes: 675716400da6 ("xdp: fix possible cq entry leak")
    Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Link: https://lore.kernel.org/bpf/20220614070746.8871-1-ciara.loftus@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 54abcc525269f5041c1b2851f0be138503d8b43b
Author: Sergey Gorenko <sergeygo@nvidia.com>
Date:   Mon Jun 13 15:38:54 2022 +0300

    scsi: iscsi: Exclude zero from the endpoint ID range
    
    [ Upstream commit f6eed15f3ea76596ccc689331e1cc850b999133b ]
    
    The kernel returns an endpoint ID as r.ep_connect_ret.handle in the
    iscsi_uevent. The iscsid validates a received endpoint ID and treats zero
    as an error. The commit referenced in the fixes line changed the endpoint
    ID range, and zero is always assigned to the first endpoint ID.  So, the
    first attempt to create a new iSER connection always fails.
    
    Link: https://lore.kernel.org/r/20220613123854.55073-1-sergeygo@nvidia.com
    Fixes: 3c6ae371b8a1 ("scsi: iscsi: Release endpoint ID when its freed")
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Reviewed-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Sergey Gorenko <sergeygo@nvidia.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a7a5261705fceded5592316ac92b4f964296c74
Author: Rob Clark <robdclark@chromium.org>
Date:   Wed Jun 8 09:13:34 2022 -0700

    drm/msm: Switch ordering of runpm put vs devfreq_idle
    
    [ Upstream commit 49e477610087a02c3604061b8f3ee3a25a493987 ]
    
    In msm_devfreq_suspend() we cancel idle_work synchronously so that it
    doesn't run after we power of the hw or in the resume path.  But this
    means that we want to ensure that idle_work is not scheduled *after* we
    no longer hold a runpm ref.  So switch the ordering of pm_runtime_put()
    vs msm_devfreq_idle().
    
    v2. Only move the runpm _put_autosuspend, and not the _mark_last_busy()
    
    Fixes: 9bc95570175a ("drm/msm: Devfreq tuning")
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Link: https://lore.kernel.org/r/20210927152928.831245-1-robdclark@gmail.com
    Reviewed-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20220608161334.2140611-1-robdclark@gmail.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d5fe94333a907a3422b4ddf8501fa1d2abdc26c
Author: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Date:   Wed Jun 8 10:13:02 2022 +0900

    scsi: scsi_debug: Fix zone transition to full condition
    
    [ Upstream commit 566d3c57eb526f32951af15866086e236ce1fc8a ]
    
    When a write command to a sequential write required or sequential write
    preferred zone result in the zone write pointer reaching the end of the
    zone, the zone condition must be set to full AND the number of implicitly
    or explicitly open zones updated to have a correct accounting for zone
    resources. However, the function zbc_inc_wp() only sets the zone condition
    to full without updating the open zone counters, resulting in a zone state
    machine breakage.
    
    Introduce the helper function zbc_set_zone_full() and use it in
    zbc_inc_wp() to correctly transition zones to the full condition.
    
    Link: https://lore.kernel.org/r/20220608011302.92061-1-damien.lemoal@opensource.wdc.com
    Fixes: f0d1cf9378bd ("scsi: scsi_debug: Add ZBC zone commands")
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d0906b0fffc9f19bc42708ca3e84e2089088386c
Author: Florian Westphal <fw@strlen.de>
Date:   Wed May 18 20:15:31 2022 +0200

    netfilter: use get_random_u32 instead of prandom
    
    [ Upstream commit b1fd94e704571f98b21027340eecf821b2bdffba ]
    
    bh might occur while updating per-cpu rnd_state from user context,
    ie. local_out path.
    
    BUG: using smp_processor_id() in preemptible [00000000] code: nginx/2725
    caller is nft_ng_random_eval+0x24/0x54 [nft_numgen]
    Call Trace:
     check_preemption_disabled+0xde/0xe0
     nft_ng_random_eval+0x24/0x54 [nft_numgen]
    
    Use the random driver instead, this also avoids need for local prandom
    state. Moreover, prandom now uses the random driver since d4150779e60f
    ("random32: use real rng for non-deterministic randomness").
    
    Based on earlier patch from Pablo Neira.
    
    Fixes: 6b2faee0ca91 ("netfilter: nft_meta: place prandom handling in a helper")
    Fixes: 978d8f9055c3 ("netfilter: nft_numgen: add map lookups for numgen random operations")
    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>

commit f7fa3263079c55e2bbdcd5ff763c19b665e329ed
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Mon Jun 6 23:13:05 2022 +0200

    drm/msm: Fix double pm_runtime_disable() call
    
    [ Upstream commit ce0db505bc0c51ef5e9ba446c660de7e26f78f29 ]
    
    Following commit 17e822f7591f ("drm/msm: fix unbalanced
    pm_runtime_enable in adreno_gpu_{init, cleanup}"), any call to
    adreno_unbind() will disable runtime PM twice, as indicated by the call
    trees below:
    
      adreno_unbind()
       -> pm_runtime_force_suspend()
       -> pm_runtime_disable()
    
      adreno_unbind()
       -> gpu->funcs->destroy() [= aNxx_destroy()]
       -> adreno_gpu_cleanup()
       -> pm_runtime_disable()
    
    Note that pm_runtime_force_suspend() is called right before
    gpu->funcs->destroy() and both functions are called unconditionally.
    
    With recent addition of the eDP AUX bus code, this problem manifests
    itself when the eDP panel cannot be found yet and probing is deferred.
    On the first probe attempt, we disable runtime PM twice as described
    above. This then causes any later probe attempt to fail with
    
      [drm:adreno_load_gpu [msm]] *ERROR* Couldn't power up the GPU: -13
    
    preventing the driver from loading.
    
    As there seem to be scenarios where the aNxx_destroy() functions are not
    called from adreno_unbind(), simply removing pm_runtime_disable() from
    inside adreno_unbind() does not seem to be the proper fix. This is what
    commit 17e822f7591f ("drm/msm: fix unbalanced pm_runtime_enable in
    adreno_gpu_{init, cleanup}") intended to fix. Therefore, instead check
    whether runtime PM is still enabled, and only disable it in that case.
    
    Fixes: 17e822f7591f ("drm/msm: fix unbalanced pm_runtime_enable in adreno_gpu_{init, cleanup}")
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Tested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Rob Clark <robdclark@gmail.com>
    Link: https://lore.kernel.org/r/20220606211305.189585-1-luzmaximilian@gmail.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c6f6c966860997e5bbeae7c99cd8985a9717e56b
Author: Rob Clark <robdclark@chromium.org>
Date:   Tue May 31 13:08:56 2022 -0700

    drm/msm: Ensure mmap offset is initialized
    
    [ Upstream commit 036d20726c30267724416e966c9f92db07de8081 ]
    
    If a GEM object is allocated, and then exported as a dma-buf fd which is
    mmap'd before or without the GEM buffer being directly mmap'd, the
    vma_node could be unitialized.  This leads to a situation where the CPU
    mapping is not correctly torn down in drm_vma_node_unmap().
    
    Fixes: e5516553999f ("drm: call drm_gem_object_funcs.mmap with fake offset")
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20220531200857.136547-1-robdclark@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45dc151ca0b9a03a408e77377840f42db004fbf9
Author: Macpaul Lin <macpaul.lin@mediatek.com>
Date:   Thu Jun 23 16:56:44 2022 +0800

    USB: serial: option: add Quectel RM500K module support
    
    commit 15b694e96c31807d8515aacfa687a1e8a4fbbadc upstream.
    
    Add usb product id of the Quectel RM500K module.
    
    RM500K provides 2 mandatory interfaces to Linux host after enumeration.
     - /dev/ttyUSB5: this is a serial interface for control path. User needs
       to write AT commands to this device node to query status, set APN,
       set PIN code, and enable/disable the data connection to 5G network.
     - ethX: this is the data path provided as a RNDIS devices. After the
       data connection has been established, Linux host can access 5G data
       network via this interface.
    
    "RNDIS": RNDIS + ADB + AT (/dev/ttyUSB5) + MODEM COMs
    
    usb-devices output for 0x7001:
    T:  Bus=05 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=7001 Rev=00.01
    S:  Manufacturer=MediaTek Inc.
    S:  Product=USB DATA CARD
    S:  SerialNumber=869206050009672
    C:  #Ifs=10 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=ff Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Co-developed-by: Ballon Shi <ballon.shi@quectel.com>
    Signed-off-by: Ballon Shi <ballon.shi@quectel.com>
    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5eb7d6baed5d725128a88f75d3ff9806418eb20
Author: Yonglin Tan <yonglin.tan@outlook.com>
Date:   Tue Jun 21 20:37:53 2022 +0800

    USB: serial: option: add Quectel EM05-G modem
    
    commit 33b29dbb39bcbd0a96e440646396bbf670b914fa upstream.
    
    The EM05-G modem has 2 USB configurations that are configurable via the AT
    command AT+QCFG="usbnet",[ 0 | 2 ] which make the modem enumerate with
    the following interfaces, respectively:
    
    "RMNET" : AT + DIAG + NMEA + Modem + QMI
    "MBIM"  : MBIM + AT + DIAG + NMEA + Modem
    
    The detailed description of the USB configuration for each mode as follows:
    
    RMNET Mode
    --------------
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 21 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=030a Rev= 3.18
    S:  Manufacturer=Quectel
    S:  Product=Quectel EM05-G
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    MBIM Mode
    --------------
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 16 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=030a Rev= 3.18
    S:  Manufacturer=Quectel
    S:  Product=Quectel EM05-G
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Yonglin Tan <yonglin.tan@outlook.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b919ece13b6b9db994ad4a747df64ee1f0ae3674
Author: Carlo Lobrano <c.lobrano@gmail.com>
Date:   Tue Jun 14 09:56:23 2022 +0200

    USB: serial: option: add Telit LE910Cx 0x1250 composition
    
    commit 342fc0c3b345525da21112bd0478a0dc741598ea upstream.
    
    Add support for the following Telit LE910Cx composition:
    
    0x1250: rmnet, tty, tty, tty, tty
    
    Reviewed-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Carlo Lobrano <c.lobrano@gmail.com>
    Link: https://lore.kernel.org/r/20220614075623.2392607-1-c.lobrano@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5b0f42edda25516d53f258b029cd8029115efca
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jun 21 10:58:55 2022 +0200

    USB: serial: pl2303: add support for more HXN (G) types
    
    commit ae60aac59a9ad8ab64a4b07de509a534a75b6bac upstream.
    
    Add support for further HXN (G) type devices (GT variant, GL variant, GS
    variant and GR) and document the bcdDevice mapping.
    
    Note that the TA and TB types use the same bcdDevice as some GT and GE
    variants, respectively, but that the HX status request can be used to
    determine which is which.
    
    Also note that we currently do not distinguish between the various HXN
    (G) types in the driver but that this may change eventually (e.g. when
    adding GPIO support).
    
    Reported-by: Charles Yeh <charlesyeh522@gmail.com>
    Link: https://lore.kernel.org/r/YrF77b9DdeumUAee@hovoldconsulting.com
    Cc: stable@vger.kernel.org      # 5.13
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0895a2235bae6671077c2de94268cccc346005d6
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Jun 13 23:14:39 2022 +0300

    drm/i915: Implement w/a 22010492432 for adl-s
    
    commit 13bd259b64bb58ae130923ada42ebc19bf3f2fa2 upstream.
    
    adl-s needs the combo PLL DCO fraction w/a as well.
    Gets us slightly more accurate clock out of the PLL.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220613201439.23341-1-ville.syrjala@linux.intel.com
    Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
    (cherry picked from commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bae4d6a2dd9ecc537e864814629bbae43c073dce
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Sat May 28 00:55:39 2022 +0900

    tracing/kprobes: Check whether get_kretprobe() returns NULL in kretprobe_dispatcher()
    
    commit cc72b72073ac982a954d3b43519ca1c28f03c27c upstream.
    
    There is a small chance that get_kretprobe(ri) returns NULL in
    kretprobe_dispatcher() when another CPU unregisters the kretprobe
    right after __kretprobe_trampoline_handler().
    
    To avoid this issue, kretprobe_dispatcher() checks the get_kretprobe()
    return value again. And if it is NULL, it returns soon because that
    kretprobe is under unregistering process.
    
    This issue has been introduced when the kretprobe is decoupled
    from the struct kretprobe_instance by commit d741bf41d7c7
    ("kprobes: Remove kretprobe hash"). Before that commit, the
    struct kretprob_instance::rp directly points the kretprobe
    and it is never be NULL.
    
    Link: https://lkml.kernel.org/r/165366693881.797669.16926184644089588731.stgit@devnote2
    
    Reported-by: Yonghong Song <yhs@fb.com>
    Fixes: d741bf41d7c7 ("kprobes: Remove kretprobe hash")
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: bpf <bpf@vger.kernel.org>
    Cc: Kernel Team <kernel-team@fb.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3f51b28a8bcbb4ca92e2cec578ce4523f471ab4
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Jun 23 14:53:25 2022 -0400

    dm mirror log: clear log bits up to BITS_PER_LONG boundary
    
    commit 90736eb3232d208ee048493f371075e4272e0944 upstream.
    
    Commit 85e123c27d5c ("dm mirror log: round up region bitmap size to
    BITS_PER_LONG") introduced a regression on 64-bit architectures in the
    lvm testsuite tests: lvcreate-mirror, mirror-names and vgsplit-operation.
    
    If the device is shrunk, we need to clear log bits beyond the end of the
    device. The code clears bits up to a 32-bit boundary and then calculates
    lc->sync_count by summing set bits up to a 64-bit boundary (the commit
    changed that; previously, this boundary was 32-bit too). So, it was using
    some non-zeroed bits in the calculation and this caused misbehavior.
    
    Fix this regression by clearing bits up to BITS_PER_LONG boundary.
    
    Fixes: 85e123c27d5c ("dm mirror log: round up region bitmap size to BITS_PER_LONG")
    Cc: stable@vger.kernel.org
    Reported-by: Benjamin Marzinski <bmarzins@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac0a5f701f4d5549e494bc36276aebb7dc480dab
Author: Nikos Tsironis <ntsironis@arrikto.com>
Date:   Tue Jun 21 15:24:03 2022 +0300

    dm era: commit metadata in postsuspend after worker stops
    
    commit 9ae6e8b1c9bbf6874163d1243e393137313762b7 upstream.
    
    During postsuspend dm-era does the following:
    
    1. Archives the current era
    2. Commits the metadata, as part of the RPC call for archiving the
       current era
    3. Stops the worker
    
    Until the worker stops, it might write to the metadata again. Moreover,
    these writes are not flushed to disk immediately, but are cached by the
    dm-bufio client, which writes them back asynchronously.
    
    As a result, the committed metadata of a suspended dm-era device might
    not be consistent with the in-core metadata.
    
    In some cases, this can result in the corruption of the on-disk
    metadata. Suppose the following sequence of events:
    
    1. Load a new table, e.g. a snapshot-origin table, to a device with a
       dm-era table
    2. Suspend the device
    3. dm-era commits its metadata, but the worker does a few more metadata
       writes until it stops, as part of digesting an archived writeset
    4. These writes are cached by the dm-bufio client
    5. Load the dm-era table to another device.
    6. The new instance of the dm-era target loads the committed, on-disk
       metadata, which don't include the extra writes done by the worker
       after the metadata commit.
    7. Resume the new device
    8. The new dm-era target instance starts using the metadata
    9. Resume the original device
    10. The destructor of the old dm-era target instance is called and
        destroys the dm-bufio client, which results in flushing the cached
        writes to disk
    11. These writes might overwrite the writes done by the new dm-era
        instance, hence corrupting its metadata.
    
    Fix this by committing the metadata after the worker stops running.
    
    stop_worker uses flush_workqueue to flush the current work. However, the
    work item may re-queue itself and flush_workqueue doesn't wait for
    re-queued works to finish.
    
    This could result in the worker changing the metadata after they have
    been committed, or writing to the metadata concurrently with the commit
    in the postsuspend thread.
    
    Use drain_workqueue instead, which waits until the work and all
    re-queued works finish.
    
    Fixes: eec40579d8487 ("dm: add era target")
    Cc: stable@vger.kernel.org # v3.15+
    Signed-off-by: Nikos Tsironis <ntsironis@arrikto.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c477de4c7d4374b7a2bed7b4b4792126dbd543c8
Author: Edward Wu <edwardwu@realtek.com>
Date:   Fri Jun 17 11:32:20 2022 +0800

    ata: libata: add qc->flags in ata_qc_complete_template tracepoint
    
    commit 540a92bfe6dab7310b9df2e488ba247d784d0163 upstream.
    
    Add flags value to check the result of ata completion
    
    Fixes: 255c03d15a29 ("libata: Add tracepoints")
    Cc: stable@vger.kernel.org
    Signed-off-by: Edward Wu <edwardwu@realtek.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0af674e7a764563496480c1e30fadf0048325978
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Tue Jun 14 10:31:38 2022 +0200

    mtd: rawnand: gpmi: Fix setting busy timeout setting
    
    commit 06781a5026350cde699d2d10c9914a25c1524f45 upstream.
    
    The DEVICE_BUSY_TIMEOUT value is described in the Reference Manual as:
    
    | Timeout waiting for NAND Ready/Busy or ATA IRQ. Used in WAIT_FOR_READY
    | mode. This value is the number of GPMI_CLK cycles multiplied by 4096.
    
    So instead of multiplying the value in cycles with 4096, we have to
    divide it by that value. Use DIV_ROUND_UP to make sure we are on the
    safe side, especially when the calculated value in cycles is smaller
    than 4096 as typically the case.
    
    This bug likely never triggered because any timeout != 0 usually will
    do. In my case the busy timeout in cycles was originally calculated as
    2408, which multiplied with 4096 is 0x968000. The lower 16 bits were
    taken for the 16 bit wide register field, so the register value was
    0x8000. With 2970bf5a32f0 ("mtd: rawnand: gpmi: fix controller timings
    setting") however the value in cycles became 2384, which multiplied
    with 4096 is 0x950000. The lower 16 bit are 0x0 now resulting in an
    intermediate timeout when reading from NAND.
    
    Fixes: b1206122069aa ("mtd: rawnand: gpmi: use core timings instead of an empirical derivation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20220614083138.3455683-1-s.hauer@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f6f66b4ef2701079716859ec272c7e5a8de3d4f
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Jun 24 14:51:39 2022 +0200

    MAINTAINERS: Add new IOMMU development mailing list
    
    commit c242507c1b895646b4a25060df13b6214805759f upstream.
    
    The IOMMU mailing list will move from lists.linux-foundation.org to
    lists.linux.dev. The hard switch of the archive will happen on July
    5th, but add the new list now already so that people start using the
    list when sending patches. After July 5th the old list will disappear.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Link: https://lore.kernel.org/r/20220624125139.412-1-joro@8bytes.org
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87a54feba68f5e47925c8e49100db9b2a8add761
Author: Demi Marie Obenour <demi@invisiblethingslab.com>
Date:   Tue Jun 21 22:27:26 2022 -0400

    xen/gntdev: Avoid blocking in unmap_grant_pages()
    
    commit dbe97cff7dd9f0f75c524afdd55ad46be3d15295 upstream.
    
    unmap_grant_pages() currently waits for the pages to no longer be used.
    In https://github.com/QubesOS/qubes-issues/issues/7481, this lead to a
    deadlock against i915: i915 was waiting for gntdev's MMU notifier to
    finish, while gntdev was waiting for i915 to free its pages.  I also
    believe this is responsible for various deadlocks I have experienced in
    the past.
    
    Avoid these problems by making unmap_grant_pages async.  This requires
    making it return void, as any errors will not be available when the
    function returns.  Fortunately, the only use of the return value is a
    WARN_ON(), which can be replaced by a WARN_ON when the error is
    detected.  Additionally, a failed call will not prevent further calls
    from being made, but this is harmless.
    
    Because unmap_grant_pages is now async, the grant handle will be sent to
    INVALID_GRANT_HANDLE too late to prevent multiple unmaps of the same
    handle.  Instead, a separate bool array is allocated for this purpose.
    This wastes memory, but stuffing this information in padding bytes is
    too fragile.  Furthermore, it is necessary to grab a reference to the
    map before making the asynchronous call, and release the reference when
    the call returns.
    
    It is also necessary to guard against reentrancy in gntdev_map_put(),
    and to handle the case where userspace tries to map a mapping whose
    contents have not all been freed yet.
    
    Fixes: 745282256c75 ("xen/gntdev: safely unmap grants in case they are still in use")
    Cc: stable@vger.kernel.org
    Signed-off-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20220622022726.2538-1-demi@invisiblethingslab.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe9ba4f29320c426ec1d3f2c171ef4078a6cd1a1
Author: Mengqi Zhang <mengqi.zhang@mediatek.com>
Date:   Thu Jun 9 19:22:39 2022 +0800

    mmc: mediatek: wait dma stop bit reset to 0
    
    commit 89bcd9a64b849380ef57e3032b307574e48db524 upstream.
    
    MediaTek IP requires that after dma stop, it need to wait this dma stop
    bit auto-reset to 0. When bus is in high loading state, it will take a
    while for the dma stop complete. If there is no waiting operation here,
    when program runs to clear fifo and reset, bus will hang.
    
    In addition, there should be no return in msdc_data_xfer_next() if
    there is data need be transferred, because no matter what error occurs
    here, it should continue to excute to the following mmc_request_done.
    Otherwise the core layer may wait complete forever.
    
    Signed-off-by: Mengqi Zhang <mengqi.zhang@mediatek.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220609112239.18911-1-mengqi.zhang@mediatek.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7df8c497214b32b5de70215ab7897e7844477aa5
Author: Chevron Li <chevron.li@bayhubtech.com>
Date:   Thu Jun 2 06:25:43 2022 -0700

    mmc: sdhci-pci-o2micro: Fix card detect by dealing with debouncing
    
    commit e591fcf6b4e39335c9b128b17738fcd2fdd278ae upstream.
    
    The result from ->get_cd() may be incorrect as the card detect debouncing
    isn't managed correctly. Let's fix it.
    
    Signed-off-by: Chevron Li<chevron.li@bayhubtech.com>
    Fixes: 7d44061704dd ("mmc: sdhci-pci-o2micro: Fix O2 Host data read/write DLL Lock phase shift issue")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220602132543.596-1-chevron.li@bayhubtech.com
    [Ulf: Updated the commit message]
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 161ec2a0807ddd58bc0f24f3e1e7e3d4fef5297f
Author: Tyrel Datwyler <tyreld@linux.ibm.com>
Date:   Thu Jun 16 12:11:26 2022 -0700

    scsi: ibmvfc: Allocate/free queue resource only during probe/remove
    
    commit 72ea7fe0db73d65c7d977208842d8ade9b823de9 upstream.
    
    Currently, the sub-queues and event pool resources are allocated/freed for
    every CRQ connection event such as reset and LPM. This exposes the driver
    to a couple issues. First the inefficiency of freeing and reallocating
    memory that can simply be resued after being sanitized. Further, a system
    under memory pressue runs the risk of allocation failures that could result
    in a crippled driver. Finally, there is a race window where command
    submission/compeletion can try to pull/return elements from/to an event
    pool that is being deleted or already has been deleted due to the lack of
    host state around freeing/allocating resources. The following is an example
    of list corruption following a live partition migration (LPM):
    
    Oops: Exception in kernel mode, sig: 5 [#1]
    LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
    Modules linked in: vfat fat isofs cdrom ext4 mbcache jbd2 nft_counter nft_compat nf_tables nfnetlink rpadlpar_io rpaphp xsk_diag nfsv3 nfs_acl nfs lockd grace fscache netfs rfkill bonding tls sunrpc pseries_rng drm drm_panel_orientation_quirks xfs libcrc32c dm_service_time sd_mod t10_pi sg ibmvfc scsi_transport_fc ibmveth vmx_crypto dm_multipath dm_mirror dm_region_hash dm_log dm_mod ipmi_devintf ipmi_msghandler fuse
    CPU: 0 PID: 2108 Comm: ibmvfc_0 Kdump: loaded Not tainted 5.14.0-70.9.1.el9_0.ppc64le #1
    NIP: c0000000007c4bb0 LR: c0000000007c4bac CTR: 00000000005b9a10
    REGS: c00000025c10b760 TRAP: 0700  Not tainted (5.14.0-70.9.1.el9_0.ppc64le)
    MSR: 800000000282b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE> CR: 2800028f XER: 0000000f
    CFAR: c0000000001f55bc IRQMASK: 0
            GPR00: c0000000007c4bac c00000025c10ba00 c000000002a47c00 000000000000004e
            GPR04: c0000031e3006f88 c0000031e308bd00 c00000025c10b768 0000000000000027
            GPR08: 0000000000000000 c0000031e3009dc0 00000031e0eb0000 0000000000000000
            GPR12: c0000031e2ffffa8 c000000002dd0000 c000000000187108 c00000020fcee2c0
            GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
            GPR20: 0000000000000000 0000000000000000 0000000000000000 c008000002f81300
            GPR24: 5deadbeef0000100 5deadbeef0000122 c000000263ba6910 c00000024cc88000
            GPR28: 000000000000003c c0000002430a0000 c0000002430ac300 000000000000c300
    NIP [c0000000007c4bb0] __list_del_entry_valid+0x90/0x100
    LR [c0000000007c4bac] __list_del_entry_valid+0x8c/0x100
    Call Trace:
    [c00000025c10ba00] [c0000000007c4bac] __list_del_entry_valid+0x8c/0x100 (unreliable)
    [c00000025c10ba60] [c008000002f42284] ibmvfc_free_queue+0xec/0x210 [ibmvfc]
    [c00000025c10bb10] [c008000002f4246c] ibmvfc_deregister_scsi_channel+0xc4/0x160 [ibmvfc]
    [c00000025c10bba0] [c008000002f42580] ibmvfc_release_sub_crqs+0x78/0x130 [ibmvfc]
    [c00000025c10bc20] [c008000002f4f6cc] ibmvfc_do_work+0x5c4/0xc70 [ibmvfc]
    [c00000025c10bce0] [c008000002f4fdec] ibmvfc_work+0x74/0x1e8 [ibmvfc]
    [c00000025c10bda0] [c0000000001872b8] kthread+0x1b8/0x1c0
    [c00000025c10be10] [c00000000000cd64] ret_from_kernel_thread+0x5c/0x64
    Instruction dump:
    40820034 38600001 38210060 4e800020 7c0802a6 7c641b78 3c62fe7a 7d254b78
    3863b590 f8010070 4ba309cd 60000000 <0fe00000> 7c0802a6 3c62fe7a 3863b640
    ---[ end trace 11a2b65a92f8b66c ]---
    ibmvfc 30000003: Send warning. Receive queue closed, will retry.
    
    Add registration/deregistration helpers that are called instead during
    connection resets to sanitize and reconfigure the queues.
    
    Link: https://lore.kernel.org/r/20220616191126.1281259-3-tyreld@linux.ibm.com
    Fixes: 3034ebe26389 ("scsi: ibmvfc: Add alloc/dealloc routines for SCSI Sub-CRQ Channels")
    Cc: stable@vger.kernel.org
    Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8540f66196ca35b7b5e902932571c18b9fde0cd1
Author: Tyrel Datwyler <tyreld@linux.ibm.com>
Date:   Thu Jun 16 12:11:25 2022 -0700

    scsi: ibmvfc: Store vhost pointer during subcrq allocation
    
    commit aeaadcde1a60138bceb65de3cdaeec78170b4459 upstream.
    
    Currently the back pointer from a queue to the vhost adapter isn't set
    until after subcrq interrupt registration. The value is available when a
    queue is first allocated and can/should be also set for primary and async
    queues as well as subcrqs.
    
    This fixes a crash observed during kexec/kdump on Power 9 with legacy XICS
    interrupt controller where a pending subcrq interrupt from the previous
    kernel can be replayed immediately upon IRQ registration resulting in
    dereference of a garbage backpointer in ibmvfc_interrupt_scsi().
    
    Kernel attempted to read user page (58) - exploit attempt? (uid: 0)
    BUG: Kernel NULL pointer dereference on read at 0x00000058
    Faulting instruction address: 0xc008000003216a08
    Oops: Kernel access of bad area, sig: 11 [#1]
    ...
    NIP [c008000003216a08] ibmvfc_interrupt_scsi+0x40/0xb0 [ibmvfc]
    LR [c0000000082079e8] __handle_irq_event_percpu+0x98/0x270
    Call Trace:
    [c000000047fa3d80] [c0000000123e6180] 0xc0000000123e6180 (unreliable)
    [c000000047fa3df0] [c0000000082079e8] __handle_irq_event_percpu+0x98/0x270
    [c000000047fa3ea0] [c000000008207d18] handle_irq_event+0x98/0x188
    [c000000047fa3ef0] [c00000000820f564] handle_fasteoi_irq+0xc4/0x310
    [c000000047fa3f40] [c000000008205c60] generic_handle_irq+0x50/0x80
    [c000000047fa3f60] [c000000008015c40] __do_irq+0x70/0x1a0
    [c000000047fa3f90] [c000000008016d7c] __do_IRQ+0x9c/0x130
    [c000000014622f60] [0000000020000000] 0x20000000
    [c000000014622ff0] [c000000008016e50] do_IRQ+0x40/0xa0
    [c000000014623020] [c000000008017044] replay_soft_interrupts+0x194/0x2f0
    [c000000014623210] [c0000000080172a8] arch_local_irq_restore+0x108/0x170
    [c000000014623240] [c000000008eb1008] _raw_spin_unlock_irqrestore+0x58/0xb0
    [c000000014623270] [c00000000820b12c] __setup_irq+0x49c/0x9f0
    [c000000014623310] [c00000000820b7c0] request_threaded_irq+0x140/0x230
    [c000000014623380] [c008000003212a50] ibmvfc_register_scsi_channel+0x1e8/0x2f0 [ibmvfc]
    [c000000014623450] [c008000003213d1c] ibmvfc_init_sub_crqs+0xc4/0x1f0 [ibmvfc]
    [c0000000146234d0] [c0080000032145a8] ibmvfc_reset_crq+0x150/0x210 [ibmvfc]
    [c000000014623550] [c0080000032147c8] ibmvfc_init_crq+0x160/0x280 [ibmvfc]
    [c0000000146235f0] [c00800000321a9cc] ibmvfc_probe+0x2a4/0x530 [ibmvfc]
    
    Link: https://lore.kernel.org/r/20220616191126.1281259-2-tyreld@linux.ibm.com
    Fixes: 3034ebe26389 ("scsi: ibmvfc: Add alloc/dealloc routines for SCSI Sub-CRQ Channels")
    Cc: stable@vger.kernel.org
    Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a19c1cee0de6eea55f8ff4daad14ab33bff6fb3
Author: David Sterba <dsterba@suse.com>
Date:   Thu Jun 2 23:57:17 2022 +0200

    btrfs: add error messages to all unrecognized mount options
    
    commit e3a4167c880cf889f66887a152799df4d609dd21 upstream.
    
    Almost none of the errors stemming from a valid mount option but wrong
    value prints a descriptive message which would help to identify why
    mount failed. Like in the linked report:
    
      $ uname -r
      v4.19
      $ mount -o compress=zstd /dev/sdb /mnt
      mount: /mnt: wrong fs type, bad option, bad superblock on
      /dev/sdb, missing codepage or helper program, or other error.
      $ dmesg
      ...
      BTRFS error (device sdb): open_ctree failed
    
    Errors caused by memory allocation failures are left out as it's not a
    user error so reporting that would be confusing.
    
    Link: https://lore.kernel.org/linux-btrfs/9c3fec36-fc61-3a33-4977-a7e207c3fa4e@gmx.de/
    CC: stable@vger.kernel.org # 4.9+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82e3769c0257360319ea1cb3c6fdaaed7a8b70e3
Author: Qu Wenruo <wqu@suse.com>
Date:   Wed May 18 13:03:09 2022 +0800

    btrfs: prevent remounting to v1 space cache for subpage mount
    
    commit 0591f04036218d572d54349ea8c7914ad9c82b2b upstream.
    
    Upstream commit 9f73f1aef98b ("btrfs: force v2 space cache usage for
    subpage mount") forces subpage mount to use v2 cache, to avoid
    deprecated v1 cache which doesn't support subpage properly.
    
    But there is a loophole that user can still remount to v1 cache.
    
    The existing check will only give users a warning, but does not really
    prevent to do the remount.
    
    Although remounting to v1 will not cause any problems since the v1 cache
    will always be marked invalid when mounted with a different page size,
    it's still better to prevent v1 cache at all for subpage mounts.
    
    Fixes: 9f73f1aef98b ("btrfs: force v2 space cache usage for subpage mount")
    CC: stable@vger.kernel.org # 5.15+
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 341d33128a940c6634175dcb6ca92dc454cfa7d2
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed May 18 10:41:48 2022 +0100

    btrfs: fix hang during unmount when block group reclaim task is running
    
    commit 31e70e527806c546a72262f2fc3d982ee23c42d3 upstream.
    
    When we start an unmount, at close_ctree(), if we have the reclaim task
    running and in the middle of a data block group relocation, we can trigger
    a deadlock when stopping an async reclaim task, producing a trace like the
    following:
    
    [629724.498185] task:kworker/u16:7   state:D stack:    0 pid:681170 ppid:     2 flags:0x00004000
    [629724.499760] Workqueue: events_unbound btrfs_async_reclaim_metadata_space [btrfs]
    [629724.501267] Call Trace:
    [629724.501759]  <TASK>
    [629724.502174]  __schedule+0x3cb/0xed0
    [629724.502842]  schedule+0x4e/0xb0
    [629724.503447]  btrfs_wait_on_delayed_iputs+0x7c/0xc0 [btrfs]
    [629724.504534]  ? prepare_to_wait_exclusive+0xc0/0xc0
    [629724.505442]  flush_space+0x423/0x630 [btrfs]
    [629724.506296]  ? rcu_read_unlock_trace_special+0x20/0x50
    [629724.507259]  ? lock_release+0x220/0x4a0
    [629724.507932]  ? btrfs_get_alloc_profile+0xb3/0x290 [btrfs]
    [629724.508940]  ? do_raw_spin_unlock+0x4b/0xa0
    [629724.509688]  btrfs_async_reclaim_metadata_space+0x139/0x320 [btrfs]
    [629724.510922]  process_one_work+0x252/0x5a0
    [629724.511694]  ? process_one_work+0x5a0/0x5a0
    [629724.512508]  worker_thread+0x52/0x3b0
    [629724.513220]  ? process_one_work+0x5a0/0x5a0
    [629724.514021]  kthread+0xf2/0x120
    [629724.514627]  ? kthread_complete_and_exit+0x20/0x20
    [629724.515526]  ret_from_fork+0x22/0x30
    [629724.516236]  </TASK>
    [629724.516694] task:umount          state:D stack:    0 pid:719055 ppid:695412 flags:0x00004000
    [629724.518269] Call Trace:
    [629724.518746]  <TASK>
    [629724.519160]  __schedule+0x3cb/0xed0
    [629724.519835]  schedule+0x4e/0xb0
    [629724.520467]  schedule_timeout+0xed/0x130
    [629724.521221]  ? lock_release+0x220/0x4a0
    [629724.521946]  ? lock_acquired+0x19c/0x420
    [629724.522662]  ? trace_hardirqs_on+0x1b/0xe0
    [629724.523411]  __wait_for_common+0xaf/0x1f0
    [629724.524189]  ? usleep_range_state+0xb0/0xb0
    [629724.524997]  __flush_work+0x26d/0x530
    [629724.525698]  ? flush_workqueue_prep_pwqs+0x140/0x140
    [629724.526580]  ? lock_acquire+0x1a0/0x310
    [629724.527324]  __cancel_work_timer+0x137/0x1c0
    [629724.528190]  close_ctree+0xfd/0x531 [btrfs]
    [629724.529000]  ? evict_inodes+0x166/0x1c0
    [629724.529510]  generic_shutdown_super+0x74/0x120
    [629724.530103]  kill_anon_super+0x14/0x30
    [629724.530611]  btrfs_kill_super+0x12/0x20 [btrfs]
    [629724.531246]  deactivate_locked_super+0x31/0xa0
    [629724.531817]  cleanup_mnt+0x147/0x1c0
    [629724.532319]  task_work_run+0x5c/0xa0
    [629724.532984]  exit_to_user_mode_prepare+0x1a6/0x1b0
    [629724.533598]  syscall_exit_to_user_mode+0x16/0x40
    [629724.534200]  do_syscall_64+0x48/0x90
    [629724.534667]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [629724.535318] RIP: 0033:0x7fa2b90437a7
    [629724.535804] RSP: 002b:00007ffe0b7e4458 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
    [629724.536912] RAX: 0000000000000000 RBX: 00007fa2b9182264 RCX: 00007fa2b90437a7
    [629724.538156] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000555d6cf20dd0
    [629724.539053] RBP: 0000555d6cf20ba0 R08: 0000000000000000 R09: 00007ffe0b7e3200
    [629724.539956] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    [629724.540883] R13: 0000555d6cf20dd0 R14: 0000555d6cf20cb0 R15: 0000000000000000
    [629724.541796]  </TASK>
    
    This happens because:
    
    1) Before entering close_ctree() we have the async block group reclaim
       task running and relocating a data block group;
    
    2) There's an async metadata (or data) space reclaim task running;
    
    3) We enter close_ctree() and park the cleaner kthread;
    
    4) The async space reclaim task is at flush_space() and runs all the
       existing delayed iputs;
    
    5) Before the async space reclaim task calls
       btrfs_wait_on_delayed_iputs(), the block group reclaim task which is
       doing the data block group relocation, creates a delayed iput at
       replace_file_extents() (called when COWing leaves that have file extent
       items pointing to relocated data extents, during the merging phase
       of relocation roots);
    
    6) The async reclaim space reclaim task blocks at
       btrfs_wait_on_delayed_iputs(), since we have a new delayed iput;
    
    7) The task at close_ctree() then calls cancel_work_sync() to stop the
       async space reclaim task, but it blocks since that task is waiting for
       the delayed iput to be run;
    
    8) The delayed iput is never run because the cleaner kthread is parked,
       and no one else runs delayed iputs, resulting in a hang.
    
    So fix this by stopping the async block group reclaim task before we
    park the cleaner kthread.
    
    Fixes: 18bb8bbf13c183 ("btrfs: zoned: automatically reclaim zones")
    CC: stable@vger.kernel.org # 5.15+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0126bcaee81dabc1926012126aa74caa03a4c6e
Author: Dominique Martinet <asmadeus@codewreck.org>
Date:   Sun Jun 12 17:14:55 2022 +0900

    9p: fix fid refcount leak in v9fs_vfs_get_link
    
    commit e5690f263208c5abce7451370b7786eb25b405eb upstream.
    
    we check for protocol version later than required, after a fid has
    been obtained. Just move the version check earlier.
    
    Link: https://lkml.kernel.org/r/20220612085330.1451496-3-asmadeus@codewreck.org
    Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct")
    Cc: stable@vger.kernel.org
    Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22832ac3eb5be3f7168816a76b64c1284e12eb3c
Author: Dominique Martinet <asmadeus@codewreck.org>
Date:   Sun Jun 12 16:00:05 2022 +0900

    9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl
    
    commit beca774fc51a9ba8abbc869cf0c3d965ff17cd24 upstream.
    
    We need to release directory fid if we fail halfway through open
    
    This fixes fid leaking with xfstests generic 531
    
    Link: https://lkml.kernel.org/r/20220612085330.1451496-2-asmadeus@codewreck.org
    Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct")
    Cc: stable@vger.kernel.org
    Reported-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10629c04b3a8315f32f78331aad15d04f1d93db0
Author: Tyler Hicks <tyhicks@linux.microsoft.com>
Date:   Thu May 26 18:59:59 2022 -0500

    9p: Fix refcounting during full path walks for fid lookups
    
    commit 2a3dcbccd64ba35c045fac92272ff981c4cbef44 upstream.
    
    Decrement the refcount of the parent dentry's fid after walking
    each path component during a full path walk for a lookup. Failure to do
    so can lead to fids that are not clunked until the filesystem is
    unmounted, as indicated by this warning:
    
     9pnet: found fid 3 not clunked
    
    The improper refcounting after walking resulted in open(2) returning
    -EIO on any directories underneath the mount point when using the virtio
    transport. When using the fd transport, there's no apparent issue until
    the filesytem is unmounted and the warning above is emitted to the logs.
    
    In some cases, the user may not yet be attached to the filesystem and a
    new root fid, associated with the user, is created and attached to the
    root dentry before the full path walk is performed. Increment the new
    root fid's refcount to two in that situation so that it can be safely
    decremented to one after it is used for the walk operation. The new fid
    will still be attached to the root dentry when
    v9fs_fid_lookup_with_uid() returns so a final refcount of one is
    correct/expected.
    
    Link: https://lkml.kernel.org/r/20220527000003.355812-2-tyhicks@linux.microsoft.com
    Link: https://lkml.kernel.org/r/20220612085330.1451496-4-asmadeus@codewreck.org
    Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    [Dominique: fix clunking fid multiple times discussed in second link]
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbf585269510e38ec57a8bf38cea4ec2fd0cc1b5
Author: Rosemarie O'Riorden <roriorden@redhat.com>
Date:   Tue Jun 21 16:48:45 2022 -0400

    net: openvswitch: fix parsing of nw_proto for IPv6 fragments
    
    commit 12378a5a75e33f34f8586706eb61cca9e6d4690c upstream.
    
    When a packet enters the OVS datapath and does not match any existing
    flows installed in the kernel flow cache, the packet will be sent to
    userspace to be parsed, and a new flow will be created. The kernel and
    OVS rely on each other to parse packet fields in the same way so that
    packets will be handled properly.
    
    As per the design document linked below, OVS expects all later IPv6
    fragments to have nw_proto=44 in the flow key, so they can be correctly
    matched on OpenFlow rules. OpenFlow controllers create pipelines based
    on this design.
    
    This behavior was changed by the commit in the Fixes tag so that
    nw_proto equals the next_header field of the last extension header.
    However, there is no counterpart for this change in OVS userspace,
    meaning that this field is parsed differently between OVS and the
    kernel. This is a problem because OVS creates actions based on what is
    parsed in userspace, but the kernel-provided flow key is used as a match
    criteria, as described in Documentation/networking/openvswitch.rst. This
    leads to issues such as packets incorrectly matching on a flow and thus
    the wrong list of actions being applied to the packet. Such changes in
    packet parsing cannot be implemented without breaking the userspace.
    
    The offending commit is partially reverted to restore the expected
    behavior.
    
    The change technically made sense and there is a good reason that it was
    implemented, but it does not comply with the original design of OVS.
    If in the future someone wants to implement such a change, then it must
    be user-configurable and disabled by default to preserve backwards
    compatibility with existing OVS versions.
    
    Cc: stable@vger.kernel.org
    Fixes: fa642f08839b ("openvswitch: Derive IP protocol number for IPv6 later frags")
    Link: https://docs.openvswitch.org/en/latest/topics/design/#fragments
    Signed-off-by: Rosemarie O'Riorden <roriorden@redhat.com>
    Acked-by: Eelco Chaudron <echaudro@redhat.com>
    Link: https://lore.kernel.org/r/20220621204845.9721-1-roriorden@redhat.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56c6f1fcd594b66a8f61e55e8df7b7197062ef4e
Author: Tim Crawford <tcrawford@system76.com>
Date:   Wed Jun 22 09:00:17 2022 -0600

    ALSA: hda/realtek: Add quirk for Clevo NS50PU
    
    commit 627ce0d68eb4b53e995b08089fa9da1e513ec5ba upstream.
    
    Fixes headset detection on Clevo NS50PU.
    
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220622150017.9897-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48e3b93cda56da9af65efb065aa6888132986a36
Author: Tim Crawford <tcrawford@system76.com>
Date:   Fri Jun 17 07:30:28 2022 -0600

    ALSA: hda/realtek: Add quirk for Clevo PD70PNT
    
    commit d49951219b0249d3eff49e4f02e0de82357bc8a0 upstream.
    
    Fixes speaker output and headset detection on Clevo PD70PNT.
    
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220617133028.50568-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dffaf580c3c2dfef716ec72bcaba2c440c14c922
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jun 14 07:48:31 2022 +0200

    ALSA: hda/realtek: Apply fixup for Lenovo Yoga Duet 7 properly
    
    commit 56ec3e755bd1041d35bdec020a99b327697ee470 upstream.
    
    It turned out that Lenovo shipped two completely different products
    with the very same PCI SSID, where both require different quirks;
    namely, Lenovo C940 has already the fixup for its speaker
    (ALC298_FIXUP_LENOVO_SPK_VOLUME) with the PCI SSID 17aa:3818, while
    Yoga Duet 7 has also the very same PCI SSID but requires a different
    quirk, ALC287_FIXUP_YOGA7_14TIL_SPEAKERS.
    
    Fortunately, both are with different codecs (C940 with ALC298 and Duet
    7 with ALC287), hence we can apply different fixes by checking the
    codec ID.  This patch implements that special fixup function.
    
    For easier handling, the internal function for applying a specific
    fixup entry is exported as __snd_hda_apply_fixup(), so that it can be
    called from the codec driver.  The rest is simply calling it with a
    different fixup ID depending on the codec ID.
    
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Tested-by: nikitashvets@flyium.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/5ca147d1-3a2d-60c6-c491-8aa844183222@redhat.com
    Link: https://lore.kernel.org/r/20220614054831.14648-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c478ceb4342b865180661ade7723c02849d96769
Author: Kailang Yang <kailang@realtek.com>
Date:   Mon Jun 13 14:57:19 2022 +0800

    ALSA: hda/realtek - ALC897 headset MIC no sound
    
    commit fe6900bd8156467365bd5b976df64928fdebfeb0 upstream.
    
    There is not have Headset Mic verb table in BIOS default.
    So, it will have recording issue from headset MIC.
    Add the verb table value without jack detect. It will turn on Headset Mic.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/719133a27d8844a890002cb817001dfa@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82e29e99f2ab14f769fb352d5ef66730d7d5a0ec
Author: Soham Sen <contact@sohamsen.me>
Date:   Thu Jun 9 23:49:20 2022 +0530

    ALSA: hda/realtek: Add mute LED quirk for HP Omen laptop
    
    commit b2e6b3d9bbb0a59ba7c710cc06e44cc548301f5f upstream.
    
    The HP Omen 15 laptop needs a quirk to toggle the mute LED. It already is implemented for a different variant of the HP Omen laptop so a fixup entry is needed for this variant.
    
    Signed-off-by: Soham Sen <contact@sohamsen.me>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220609181919.45535-1-contact@sohamsen.me
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d12a5d1b5053548fdfdcb8e9b45b03a68408bb86
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 20 12:40:07 2022 +0200

    ALSA: hda/conexant: Fix missing beep setup
    
    commit 5faa0bc69102f3a4c605581564c367be5eb94dfa upstream.
    
    Currently the Conexant codec driver sets up the beep NID after calling
    snd_hda_gen_parse_auto_config().  It turned out that this results in
    the insufficient setup for the beep control, as the generic parser
    handles the fake path in snd_hda_gen_parse_auto_config() only if the
    beep_nid is set up beforehand.
    
    For dealing with the beep widget properly, call cx_auto_parse_beep()
    before snd_hda_gen_parse_auto_config() call.
    
    Fixes: 51e19ca5f755 ("ALSA: hda/conexant - Clean up beep code")
    Cc: <stable@vger.kernel.org>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216152
    Link: https://lore.kernel.org/r/20220620104008.1994-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 535abf6207ef6d3d83367a97f9e0e52f94e40653
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 20 12:40:08 2022 +0200

    ALSA: hda/via: Fix missing beep setup
    
    commit c7807b27d510e5aa53c8a120cfc02c33c24ebb5f upstream.
    
    Like the previous fix for Conexant codec, the beep_nid has to be set
    up before calling snd_hda_gen_parse_auto_config(); otherwise it'd miss
    the path setup.
    
    Fix the call order for addressing the missing beep setup.
    
    Fixes: 0e8f9862493a ("ALSA: hda/via - Simplify control management")
    Cc: <stable@vger.kernel.org>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216152
    Link: https://lore.kernel.org/r/20220620104008.1994-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb4c99d089c0bffbbcd943688a1480972e70c36f
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Thu Jun 16 15:00:51 2022 +0200

    random: quiet urandom warning ratelimit suppression message
    
    commit c01d4d0a82b71857be7449380338bc53dde2da92 upstream.
    
    random.c ratelimits how much it warns about uninitialized urandom reads
    using __ratelimit(). When the RNG is finally initialized, it prints the
    number of missed messages due to ratelimiting.
    
    It has been this way since that functionality was introduced back in
    2018. Recently, cc1e127bfa95 ("random: remove ratelimiting for in-kernel
    unseeded randomness") put a bit more stress on the urandom ratelimiting,
    which teased out a bug in the implementation.
    
    Specifically, when under pressure, __ratelimit() will print its own
    message and reset the count back to 0, making the final message at the
    end less useful. Secondly, it does so as a pr_warn(), which apparently
    is undesirable for people's CI.
    
    Fortunately, __ratelimit() has the RATELIMIT_MSG_ON_RELEASE flag exactly
    for this purpose, so we set the flag.
    
    Fixes: 4e00b339e264 ("random: rate limit unseeded randomness warnings")
    Cc: stable@vger.kernel.org
    Reported-by: Jon Hunter <jonathanh@nvidia.com>
    Reported-by: Ron Economos <re@w6rz.net>
    Tested-by: Ron Economos <re@w6rz.net>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a42647f70373de25437cbab59fc2110ec105634
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Thu Jun 16 02:03:12 2022 +0200

    random: schedule mix_interrupt_randomness() less often
    
    commit 534d2eaf1970274150596fdd2bf552721e65d6b2 upstream.
    
    It used to be that mix_interrupt_randomness() would credit 1 bit each
    time it ran, and so add_interrupt_randomness() would schedule mix() to
    run every 64 interrupts, a fairly arbitrary number, but nonetheless
    considered to be a decent enough conservative estimate.
    
    Since e3e33fc2ea7f ("random: do not use input pool from hard IRQs"),
    mix() is now able to credit multiple bits, depending on the number of
    calls to add(). This was done for reasons separate from this commit, but
    it has the nice side effect of enabling this patch to schedule mix()
    less often.
    
    Currently the rules are:
    a) Credit 1 bit for every 64 calls to add().
    b) Schedule mix() once a second that add() is called.
    c) Schedule mix() once every 64 calls to add().
    
    Rules (a) and (c) no longer need to be coupled. It's still important to
    have _some_ value in (c), so that we don't "over-saturate" the fast
    pool, but the once per second we get from rule (b) is a plenty enough
    baseline. So, by increasing the 64 in rule (c) to something larger, we
    avoid calling queue_work_on() as frequently during irq storms.
    
    This commit changes that 64 in rule (c) to be 1024, which means we
    schedule mix() 16 times less often. And it does *not* need to change the
    64 in rule (a).
    
    Fixes: 58340f8e952b ("random: defer fast pool mixing to worker")
    Cc: stable@vger.kernel.org
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>