commit 7c6679265082335bca08b954208b385143c0d4de
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jul 2 16:27:40 2022 +0200

    Linux 4.19.250
    
    Link: https://lore.kernel.org/r/20220630133233.910803744@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 401db6e9a904a2efd855d61d92964700ee9509ed
Author: Liu Shixin <liushixin2@huawei.com>
Date:   Thu Jun 30 19:33:31 2022 +0800

    swiotlb: skip swiotlb_bounce when orig_addr is zero
    
    After patch ddbd89deb7d3 ("swiotlb: fix info leak with DMA_FROM_DEVICE"),
    swiotlb_bounce will be called in swiotlb_tbl_map_single unconditionally.
    This requires that the physical address must be valid, which is not always
    true on stable-4.19 or earlier version.
    On stable-4.19, swiotlb_alloc_buffer will call swiotlb_tbl_map_single with
    orig_addr equal to zero, which cause such a panic:
    
    Unable to handle kernel paging request at virtual address ffffb77a40000000
    ...
    pc : __memcpy+0x100/0x180
    lr : swiotlb_bounce+0x74/0x88
    ...
    Call trace:
     __memcpy+0x100/0x180
     swiotlb_tbl_map_single+0x2c8/0x338
     swiotlb_alloc+0xb4/0x198
     __dma_alloc+0x84/0x1d8
     ...
    
    On stable-4.9 and stable-4.14, swiotlb_alloc_coherent wille call map_single
    with orig_addr equal to zero, which can cause same panic.
    
    Fix this by skipping swiotlb_bounce when orig_addr is zero.
    
    Fixes: ddbd89deb7d3 ("swiotlb: fix info leak with DMA_FROM_DEVICE")
    Signed-off-by: Liu Shixin <liushixin2@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7074b39d83f5d71fa4f0521b28bd4fb3a22152c1
Author: Diederik de Haas <didi.debian@cknow.org>
Date:   Thu Jun 30 00:49:38 2022 +0200

    net/sched: move NULL ptr check to qdisc_put() too
    
    In commit 92833e8b5db6c209e9311ac8c6a44d3bf1856659 titled
    "net: sched: rename qdisc_destroy() to qdisc_put()" part of the
    functionality of qdisc_destroy() was moved into a (for linux-4.19.y)
    new function qdisk_put(), and the previous calls to qdisc_destroy()
    were changed to qdisk_put().
    This made it similar to f.e. 5.10.y and current master.
    
    There was one part of qdisc_destroy() not moved over to qdisc_put() and
    that was the check for a NULL pointer, causing oopses.
    (See upstream commit: 6efb971ba8edfbd80b666f29de12882852f095ae)
    This patch fixes that.
    
    Fixes: 92833e8b5db6c209e9311ac8c6a44d3bf1856659
    Reported-by: Thorsten Glaser <tg@mirbsd.de>
    Link: https://bugs.debian.org/1013299
    Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1223b2b2f1b785c33f3daa32699a237069bd6fd0
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Tue Jun 28 20:20:13 2022 +0300

    net: mscc: ocelot: allow unregistered IP multicast flooding
    
    Flooding of unregistered IP multicast has been broken (both to other
    switch ports and to the CPU) since the ocelot driver introduction, and
    up until commit 4cf35a2b627a ("net: mscc: ocelot: fix broken IP
    multicast flooding"), a bug fix for commit 421741ea5672 ("net: mscc:
    ocelot: offload bridge port flags to device") from v5.12.
    
    The driver used to set PGID_MCIPV4 and PGID_MCIPV6 to the empty port
    mask (0), which made unregistered IPv4/IPv6 multicast go nowhere, and
    without ever modifying that port mask at runtime.
    
    The expectation is that such packets are treated as broadcast, and
    flooded according to the forwarding domain (to the CPU if the port is
    standalone, or to the CPU and other bridged ports, if under a bridge).
    
    Since the aforementioned commit, the limitation has been lifted by
    responding to SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS events emitted by the
    bridge. As for host flooding, DSA synthesizes another call to
    ocelot_port_bridge_flags() on the NPI port which ensures that the CPU
    gets the unregistered multicast traffic it might need, for example for
    smcroute to work between standalone ports.
    
    But between v4.18 and v5.12, IP multicast flooding has remained unfixed.
    
    Delete the inexplicable premature optimization of clearing PGID_MCIPV4
    and PGID_MCIPV6 as part of the init sequence, and allow unregistered IP
    multicast to be flooded freely according to the forwarding domain
    established by PGID_SRC, by explicitly programming PGID_MCIPV4 and
    PGID_MCIPV6 towards all physical ports plus the CPU port module.
    
    Fixes: a556c76adc05 ("net: mscc: Add initial Ocelot switch support")
    Cc: stable@kernel.org
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24f3fca3f380660d644736108bdc858600868019
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Thu May 19 14:42:37 2022 +0530

    kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
    
    commit 3e35142ef99fe6b4fe5d834ad43ee13cca10a2dc upstream.
    
    Since commit d1bcae833b32f1 ("ELF: Don't generate unused section
    symbols") [1], binutils (v2.36+) started dropping section symbols that
    it thought were unused.  This isn't an issue in general, but with
    kexec_file.c, gcc is placing kexec_arch_apply_relocations[_add] into a
    separate .text.unlikely section and the section symbol ".text.unlikely"
    is being dropped. Due to this, recordmcount is unable to find a non-weak
    symbol in .text.unlikely to generate a relocation record against.
    
    Address this by dropping the weak attribute from these functions.
    Instead, follow the existing pattern of having architectures #define the
    name of the function they want to override in their headers.
    
    [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=d1bcae833b32f1
    
    [akpm@linux-foundation.org: arch/s390/include/asm/kexec.h needs linux/module.h]
    Link: https://lkml.kernel.org/r/20220519091237.676736-1-naveen.n.rao@linux.vnet.ibm.com
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ad860151808ef65586ded23a9497b85edd745ca
Author: Hsin-Yi Wang <hsinyi@chromium.org>
Date:   Tue Aug 27 18:33:53 2019 +0800

    fdt: Update CRC check for rng-seed
    
    commit dd753d961c4844a39f947be115b3d81e10376ee5 upstream.
    
    Commit 428826f5358c ("fdt: add support for rng-seed") moves of_fdt_crc32
    from early_init_dt_verify() to early_init_dt_scan() since
    early_init_dt_scan_chosen() may modify fdt to erase rng-seed.
    
    However, arm and some other arch won't call early_init_dt_scan(), they
    call early_init_dt_verify() then early_init_dt_scan_nodes().
    
    Restore of_fdt_crc32 to early_init_dt_verify() then update it in
    early_init_dt_scan_chosen() if fdt if updated.
    
    Fixes: 428826f5358c ("fdt: add support for rng-seed")
    Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29a9935a90dd32b89d04e249e0a948cb4949e7af
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Mon Jun 6 13:59:20 2022 +0900

    xen: unexport __init-annotated xen_xlate_map_ballooned_pages()
    
    commit dbac14a5a05ff8e1ce7c0da0e1f520ce39ec62ea upstream.
    
    EXPORT_SYMBOL and __init is a bad combination because the .init.text
    section is freed up after the initialization. Hence, modules cannot
    use symbols annotated __init. The access to a freed symbol may end up
    with kernel panic.
    
    modpost used to detect it, but it has been broken for a decade.
    
    Recently, I fixed modpost so it started to warn it again, then this
    showed up in linux-next builds.
    
    There are two ways to fix it:
    
      - Remove __init
      - Remove EXPORT_SYMBOL
    
    I chose the latter for this case because none of the in-tree call-sites
    (arch/arm/xen/enlighten.c, arch/x86/xen/grant-table.c) is compiled as
    modular.
    
    Fixes: 243848fc018c ("xen/grant-table: Move xlated_setup_gnttab_pages to common place")
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>
    Link: https://lore.kernel.org/r/20220606045920.4161881-1-masahiroy@kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56acf421b6d7db1c5ae3b6fb6ea040a8e89eee95
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Feb 2 13:13:23 2021 +0100

    drm: remove drm_fb_helper_modinit
    
    commit bf22c9ec39da90ce866d5f625d616f28bc733dc1 upstream.
    
    drm_fb_helper_modinit has a lot of boilerplate for what is not very
    simple functionality.  Just open code it in the only caller using
    IS_ENABLED and IS_MODULE, and skip the find_module check as a
    request_module is harmless if the module is already loaded (and not
    other caller has this find_module check either).
    
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5aa010538caf3c69b0dcc560282990d7afd5460e
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 7184b780583147eec2368ee8c95703e7fe248fba
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 9a13d7ef2eac47a66cd7bb023c55421d792545f8
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 68d4303bf59662b64bd555e2aa0518282d20aa4f
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 71e12e5b02674459a24f16e965255d63b31fe049
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 4f5877bdf7b593e988f1924f4c3df6523f80b39c
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 7571bcecf01b69f0d3ec60ca41ce5d4c75411a4a
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 844a364c0b6aabf6838709d3b1fbeb36809c3a46
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 7e53f5da9e255db3e96ceb073f191cdfe1a7d7c4
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 26b64089cc3d6caa8525ac5bb5a3e5acb41af2c0
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 34abba42c313ebc446afc384a4639701d857481c
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 f1eaf4ba5372ad111f687a80c67e270708e14c23
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 0715d0e60052662c3f225342062f174dd721d1c7
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 47f75a0b067c46415b2c523e5e9111d0f8022d33
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 31ff3309b47d98313c61b8301bf595820cc3cc33
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 ac9a8a683cb928a38ef2e7f93c7396aef73fdfeb
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 123c40524ec08a07cbff861f9efdac4ee2e919af
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 714b605ebf96934c4206179a3683fe48366dad5a
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 35d2393e37eb1c6381c4017156362de485f2af19
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 a4ec071c27b7d5570048a8adac45eae9e3cf9ac4
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 0fa88d1bde1fcee48cdc16da55c4242976d05377
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 a7134c07a320e1e47c86dda36159688b9942d6db
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 8047734ed1673a406cf792597ccab94eb4e551ad
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 9222672fa6370f0ec3d899662cb8680e9282fc4c
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 1bb80b8656df8d5ab820cfa75aaeb1730ec6ef6a
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 65c24caf1b9f5b08397c6e805ec24ebc390c6e4d
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 5959a26d119d9cfc4a0d8018a2ca237b51adb60d
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 c40abb095d800de73b6d096ed5ce10dc8e0ed249
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 fb401f37f6eadf24956d93687e5758c163c0d12b
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 9988941715ce0d3685505c8e0baaa2870337ea99
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 508abc463836251de033bc2310b65412d2540170
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 cde3f83ead7789f89bff752356cf4f4b1ddfa248
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 a4a9fca57009cd09b6885edc41bed52a06d10b49
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 421ceb7d14c95d2ca45fd23fd71ed721323226ad
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 36fe326af1e6ea0e5d042de922c657fd7c3b3432
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 0d3124ec378037711f71e9ebb70c0ab98e420eb3
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 90a70a585a174f494737f5314038ce192ceae2fc
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 9e153f40a9ef9f47d72b85bd142f2d7da019dd4d
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 e9f039eb4cb3fc0dfc238c46cc83f90c0c41b113
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 e53c6399e5abbb945d80203eaa95299e94a943a6
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 5350eba69f4dc1f903e6fe375f52972d006f356e
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>

commit b15d5731b708a2190fec836990b8aefbbf36b07a
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Tue Jan 5 13:02:35 2021 +0100

    vt: drop old FONT ioctls
    
    commit ff2047fb755d4415ec3c70ac799889371151796d upstream.
    
    Drop support for these ioctls:
    * PIO_FONT, PIO_FONTX
    * GIO_FONT, GIO_FONTX
    * PIO_FONTRESET
    
    As was demonstrated by commit 90bfdeef83f1 (tty: make FONTX ioctl use
    the tty pointer they were actually passed), these ioctls are not used
    from userspace, as:
    1) they used to be broken (set up font on current console, not the open
       one) and racy (before the commit above)
    2) KDFONTOP ioctl is used for years instead
    
    Note that PIO_FONTRESET is defunct on most systems as VGA_CONSOLE is set
    on them for ages. That turns on BROKEN_GRAPHICS_PROGRAMS which makes
    PIO_FONTRESET just return an error.
    
    We are removing KD_FONT_FLAG_OLD here as it was used only by these
    removed ioctls. kd.h header exists both in kernel and uapi headers, so
    we can remove the kernel one completely. Everyone includeing kd.h will
    now automatically get the uapi one.
    
    There are now unused definitions of the ioctl numbers and "struct
    consolefontdesc" in kd.h, but as it is a uapi header, I am not touching
    these.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20210105120239.28031-8-jslaby@suse.cz
    Cc: guodaxing <guodaxing@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>