commit f1101295c145e9710b1b37e9b0a13ef9af9af0c9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Sep 15 11:32:07 2022 +0200

    Linux 5.10.143
    
    Link: https://lore.kernel.org/r/20220913140350.291927556@linuxfoundation.org
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71d3adbb2890f62c300a416244c9352ca3900dd4
Author: Ionela Voinescu <ionela.voinescu@arm.com>
Date:   Fri Aug 19 11:30:50 2022 +0100

    arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly
    
    commit e89d120c4b720e232cc6a94f0fcbd59c15d41489 upstream.
    
    The AMU counter AMEVCNTR01 (constant counter) should increment at the same
    rate as the system counter. On affected Cortex-A510 cores, AMEVCNTR01
    increments incorrectly giving a significantly higher output value. This
    results in inaccurate task scheduler utilization tracking and incorrect
    feedback on CPU frequency.
    
    Work around this problem by returning 0 when reading the affected counter
    in key locations that results in disabling all users of this counter from
    using it either for frequency invariance or as FFH reference counter. This
    effect is the same to firmware disabling affected counters.
    
    Details on how the two features are affected by this erratum:
    
     - AMU counters will not be used for frequency invariance for affected
       CPUs and CPUs in the same cpufreq policy. AMUs can still be used for
       frequency invariance for unaffected CPUs in the system. Although
       unlikely, if no alternative method can be found to support frequency
       invariance for affected CPUs (cpufreq based or solution based on
       platform counters) frequency invariance will be disabled. Please check
       the chapter on frequency invariance at
       Documentation/scheduler/sched-capacity.rst for details of its effect.
    
     - Given that FFH can be used to fetch either the core or constant counter
       values, restrictions are lifted regarding any of these counters
       returning a valid (!0) value. Therefore FFH is considered supported
       if there is a least one CPU that support AMUs, independent of any
       counters being disabled or affected by this erratum. Clarifying
       comments are now added to the cpc_ffh_supported(), cpu_read_constcnt()
       and cpu_read_corecnt() functions.
    
    The above is achieved through adding a new erratum: ARM64_ERRATUM_2457168.
    
    Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Link: https://lore.kernel.org/r/20220819103050.24211-1-ionela.voinescu@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 202341395ce3af1eb08469ae53bc1d591cb7f1bb
Author: Eliav Farber <farbere@amazon.com>
Date:   Thu Sep 8 15:24:34 2022 +0000

    hwmon: (mr75203) enable polling for all VM channels
    
    [ Upstream commit e43212e0f55dc2d6b15d6c174cc0a64b25fab5e7 ]
    
    Configure ip-polling register to enable polling for all voltage monitor
    channels.
    This enables reading the voltage values for all inputs other than just
    input 0.
    
    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber <farbere@amazon.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220908152449.35457-7-farbere@amazon.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c9da73ae78cbed0ff3da955dc2cc637d8b72b63b
Author: Eliav Farber <farbere@amazon.com>
Date:   Thu Sep 8 15:24:33 2022 +0000

    hwmon: (mr75203) fix multi-channel voltage reading
    
    [ Upstream commit 91a9e063cdcfca8fe642b078d6fae4ce49187975 ]
    
    Fix voltage allocation and reading to support all channels in all VMs.
    Prior to this change allocation and reading were done only for the first
    channel in each VM.
    This change counts the total number of channels for allocation, and takes
    into account the channel offset when reading the sample data register.
    
    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber <farbere@amazon.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220908152449.35457-6-farbere@amazon.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 19841592aea64b0c44cea9eea37a65e0b0bfc03e
Author: Eliav Farber <farbere@amazon.com>
Date:   Thu Sep 8 15:24:32 2022 +0000

    hwmon: (mr75203) fix voltage equation for negative source input
    
    [ Upstream commit 227a3a2fc31d8e4bb9c88d4804e19530af245b1b ]
    
    According to Moortec Embedded Voltage Monitor (MEVM) series 3 data
    sheet, the minimum input signal is -100mv and maximum input signal
    is +1000mv.
    
    The equation used to convert the digital word to voltage uses mixed
    types (*val signed and n unsigned), and on 64 bit machines also has
    different size, since sizeof(u32) = 4 and sizeof(long) = 8.
    
    So when measuring a negative input, n will be small enough, such that
    PVT_N_CONST * n < PVT_R_CONST, and the result of
    (PVT_N_CONST * n - PVT_R_CONST) will overflow to a very big positive
    32 bit number. Then when storing the result in *val it will be the same
    value just in 64 bit (instead of it representing a negative number which
    will what happen when sizeof(long) = 4).
    
    When -1023 <= (PVT_N_CONST * n - PVT_R_CONST) <= -1
    dividing the number by 1024 should result of in 0, but because ">> 10"
    is used, and the sign bit is used to fill the vacated bit positions, it
    results in -1 (0xf...fffff) which is wrong.
    
    This change fixes the sign problem and supports negative values by
    casting n to long and replacing the shift right with div operation.
    
    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber <farbere@amazon.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220908152449.35457-5-farbere@amazon.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e8dc8fc53a8bc428a009438ff0608cf0ac079d1
Author: Eliav Farber <farbere@amazon.com>
Date:   Thu Sep 8 15:24:31 2022 +0000

    hwmon: (mr75203) update pvt->v_num and vm_num to the actual number of used sensors
    
    [ Upstream commit bb9195bd6664d94d71647631593e09f705ff5edd ]
    
    This issue is relevant when "intel,vm-map" is set in device-tree, and
    defines a lower number of VMs than actually supported.
    
    This change is needed for all places that use pvt->v_num or vm_num
    later on in the code.
    
    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber <farbere@amazon.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220908152449.35457-4-farbere@amazon.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13521c94b9b1a6d37ecb8a0c19879f871093c5f5
Author: Eliav Farber <farbere@amazon.com>
Date:   Thu Sep 8 15:24:30 2022 +0000

    hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined
    
    [ Upstream commit 81114fc3d27bf5b06b2137d2fd2b63da656a8b90 ]
    
    Bug - in case "intel,vm-map" is missing in device-tree ,'num' is set
    to 0, and no voltage channel infos are allocated.
    
    The reason num is set to 0 when "intel,vm-map" is missing is to set the
    entire pvt->vm_idx[] with incremental channel numbers, but it didn't
    take into consideration that same num is used later in devm_kcalloc().
    
    If "intel,vm-map" does exist there is no need to set the unspecified
    channels with incremental numbers, because the unspecified channels
    can't be accessed in pvt_read_in() which is the only other place besides
    the probe functions that uses pvt->vm_idx[].
    
    This change fixes the bug by moving the incremental channel numbers
    setting to be done only if "intel,vm-map" property is defined (starting
    loop from 0), and removing 'num = 0'.
    
    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber <farbere@amazon.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220908152449.35457-3-farbere@amazon.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e17967c7ea2c6b167d370a759b16cab54583ac1
Author: John Sperbeck <jsperbeck@google.com>
Date:   Mon Aug 1 19:22:29 2022 +0000

    iommu/amd: use full 64-bit value in build_completion_wait()
    
    [ Upstream commit 94a568ce32038d8ff9257004bb4632e60eb43a49 ]
    
    We started using a 64 bit completion value.  Unfortunately, we only
    stored the low 32-bits, so a very large completion value would never
    be matched in iommu_completion_wait().
    
    Fixes: c69d89aff393 ("iommu/amd: Use 4K page for completion wait write-back semaphore")
    Signed-off-by: John Sperbeck <jsperbeck@google.com>
    Link: https://lore.kernel.org/r/20220801192229.3358786-1-jsperbeck@google.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a2742552372585e3c865ce6837624f320985ef6
Author: Chao Gao <chao.gao@intel.com>
Date:   Fri Aug 19 16:45:37 2022 +0800

    swiotlb: avoid potential left shift overflow
    
    [ Upstream commit 3f0461613ebcdc8c4073e235053d06d5aa58750f ]
    
    The second operand passed to slot_addr() is declared as int or unsigned int
    in all call sites. The left-shift to get the offset of a slot can overflow
    if swiotlb size is larger than 4G.
    
    Convert the macro to an inline function and declare the second argument as
    phys_addr_t to avoid the potential overflow.
    
    Fixes: 26a7e094783d ("swiotlb: refactor swiotlb_tbl_map_single")
    Signed-off-by: Chao Gao <chao.gao@intel.com>
    Reviewed-by: Dongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 586f8c8330b72b316cb9a83695ef1f1e62ac6fec
Author: Yang Ling <gnaygnil@gmail.com>
Date:   Tue Aug 23 19:17:25 2022 +0800

    MIPS: loongson32: ls1c: Fix hang during startup
    
    [ Upstream commit 35508d2424097f9b6a1a17aac94f702767035616 ]
    
    The RTCCTRL reg of LS1C is obselete.
    Writing this reg will cause system hang.
    
    Fixes: 60219c563c9b6 ("MIPS: Add RTC support for Loongson1C board")
    Signed-off-by: Yang Ling <gnaygnil@gmail.com>
    Tested-by: Keguang Zhang <keguang.zhang@gmail.com>
    Acked-by: Keguang Zhang <keguang.zhang@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a9453be390b6238645b6d372a6bab756899b7675
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Tue Aug 9 18:08:09 2022 -0700

    ASoC: mchp-spdiftx: Fix clang -Wbitfield-constant-conversion
    
    commit 5c5c2baad2b55cc0a4b190266889959642298f79 upstream.
    
    A recent change in clang strengthened its -Wbitfield-constant-conversion
    to warn when 1 is assigned to a 1-bit signed integer bitfield, as it can
    only be 0 or -1, not 1:
    
      sound/soc/atmel/mchp-spdiftx.c:505:20: error: implicit truncation from 'int' to bit-field changes value from 1 to -1 [-Werror,-Wbitfield-constant-conversion]
              dev->gclk_enabled = 1;
                                ^ ~
      1 error generated.
    
    The actual value of the field is never checked, just that it is not
    zero, so there is not a real bug here. However, it is simple enough to
    silence the warning by making the bitfield unsigned, which matches the
    mchp-spdifrx driver.
    
    Fixes: 06ca24e98e6b ("ASoC: mchp-spdiftx: add driver for S/PDIF TX Controller")
    Link: https://github.com/ClangBuiltLinux/linux/issues/1686
    Link: https://github.com/llvm/llvm-project/commit/82afc9b169a67e8b8a1862fb9c41a2cd974d6691
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Link: https://lore.kernel.org/r/20220810010809.2024482-1-nathan@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dacdc1d47eda4b0f511b5e5f1a554bc21a0af62
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Wed Jul 27 12:08:14 2022 +0300

    ASoC: mchp-spdiftx: remove references to mchp_i2s_caps
    
    commit 403fcb5118a0f4091001a537e76923031fb45eaf upstream.
    
    Remove references to struct mchp_i2s_caps as they are not used.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220727090814.2446111-3-claudiu.beznea@microchip.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ead78fbe6b523e6232ad286e3c13d2a410de22a
Author: Toke Høiland-Jørgensen <toke@toke.dk>
Date:   Mon Sep 5 21:21:36 2022 +0200

    sch_sfb: Also store skb len before calling child enqueue
    
    [ Upstream commit 2f09707d0c972120bf794cfe0f0c67e2c2ddb252 ]
    
    Cong Wang noticed that the previous fix for sch_sfb accessing the queued
    skb after enqueueing it to a child qdisc was incomplete: the SFB enqueue
    function was also calling qdisc_qstats_backlog_inc() after enqueue, which
    reads the pkt len from the skb cb field. Fix this by also storing the skb
    len, and using the stored value to increment the backlog after enqueueing.
    
    Fixes: 9efd23297cca ("sch_sfb: Don't assume the skb is still around after enqueueing to child")
    Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Acked-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/r/20220905192137.965549-1-toke@toke.dk
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d47475d4e5027a8701a2f4463f991a3cfc1a186a
Author: Neal Cardwell <ncardwell@google.com>
Date:   Sat Sep 3 08:10:23 2022 -0400

    tcp: fix early ETIMEDOUT after spurious non-SACK RTO
    
    [ Upstream commit 686dc2db2a0fdc1d34b424ec2c0a735becd8d62b ]
    
    Fix a bug reported and analyzed by Nagaraj Arankal, where the handling
    of a spurious non-SACK RTO could cause a connection to fail to clear
    retrans_stamp, causing a later RTO to very prematurely time out the
    connection with ETIMEDOUT.
    
    Here is the buggy scenario, expanding upon Nagaraj Arankal's excellent
    report:
    
    (*1) Send one data packet on a non-SACK connection
    
    (*2) Because no ACK packet is received, the packet is retransmitted
         and we enter CA_Loss; but this retransmission is spurious.
    
    (*3) The ACK for the original data is received. The transmitted packet
         is acknowledged.  The TCP timestamp is before the retrans_stamp,
         so tcp_may_undo() returns true, and tcp_try_undo_loss() returns
         true without changing state to Open (because tcp_is_sack() is
         false), and tcp_process_loss() returns without calling
         tcp_try_undo_recovery().  Normally after undoing a CA_Loss
         episode, tcp_fastretrans_alert() would see that the connection
         has returned to CA_Open and fall through and call
         tcp_try_to_open(), which would set retrans_stamp to 0.  However,
         for non-SACK connections we hold the connection in CA_Loss, so do
         not fall through to call tcp_try_to_open() and do not set
         retrans_stamp to 0. So retrans_stamp is (erroneously) still
         non-zero.
    
         At this point the first "retransmission event" has passed and
         been recovered from. Any future retransmission is a completely
         new "event". However, retrans_stamp is erroneously still
         set. (And we are still in CA_Loss, which is correct.)
    
    (*4) After 16 minutes (to correspond with tcp_retries2=15), a new data
         packet is sent. Note: No data is transmitted between (*3) and
         (*4) and we disabled keep alives.
    
         The socket's timeout SHOULD be calculated from this point in
         time, but instead it's calculated from the prior "event" 16
         minutes ago (step (*2)).
    
    (*5) Because no ACK packet is received, the packet is retransmitted.
    
    (*6) At the time of the 2nd retransmission, the socket returns
         ETIMEDOUT, prematurely, because retrans_stamp is (erroneously)
         too far in the past (set at the time of (*2)).
    
    This commit fixes this bug by ensuring that we reuse in
    tcp_try_undo_loss() the same careful logic for non-SACK connections
    that we have in tcp_try_undo_recovery(). To avoid duplicating logic,
    we factor out that logic into a new
    tcp_is_non_sack_preventing_reopen() helper and call that helper from
    both undo functions.
    
    Fixes: da34ac7626b5 ("tcp: only undo on partial ACKs in CA_Loss")
    Reported-by: Nagaraj Arankal <nagaraj.p.arankal@hpe.com>
    Link: https://lore.kernel.org/all/SJ0PR84MB1847BE6C24D274C46A1B9B0EB27A9@SJ0PR84MB1847.NAMPRD84.PROD.OUTLOOK.COM/
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20220903121023.866900-1-ncardwell.kernel@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a2a344844625f3b6ffc704098c4eea5f926711b
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Mon Sep 5 18:07:06 2022 +0300

    nvme-tcp: fix regression that causes sporadic requests to time out
    
    [ Upstream commit 3770a42bb8ceb856877699257a43c0585a5d2996 ]
    
    When we queue requests, we strive to batch as much as possible and also
    signal the network stack that more data is about to be sent over a socket
    with MSG_SENDPAGE_NOTLAST. This flag looks at the pending requests queued
    as well as queue->more_requests that is derived from the block layer
    last-in-batch indication.
    
    We set more_request=true when we flush the request directly from
    .queue_rq submission context (in nvme_tcp_send_all), however this is
    wrongly assuming that no other requests may be queued during the
    execution of nvme_tcp_send_all.
    
    Due to this, a race condition may happen where:
    
     1. request X is queued as !last-in-batch
     2. request X submission context calls nvme_tcp_send_all directly
     3. nvme_tcp_send_all is preempted and schedules to a different cpu
     4. request Y is queued as last-in-batch
     5. nvme_tcp_send_all context sends request X+Y, however signals for
        both MSG_SENDPAGE_NOTLAST because queue->more_requests=true.
    
    ==> none of the requests is pushed down to the wire as the network
    stack is waiting for more data, both requests timeout.
    
    To fix this, we eliminate queue->more_requests and only rely on
    the queue req_list and send_list to be not-empty.
    
    Fixes: 122e5b9f3d37 ("nvme-tcp: optimize network stack with setting msg flags according to batch size")
    Reported-by: Jonathan Nicklin <jnicklin@blockbridge.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Tested-by: Jonathan Nicklin <jnicklin@blockbridge.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5914fa32ef1b7766fea933f9eed94ac5c00aa7ff
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Mon Sep 5 13:54:17 2022 +0300

    nvme-tcp: fix UAF when detecting digest errors
    
    [ Upstream commit 160f3549a907a50e51a8518678ba2dcf2541abea ]
    
    We should also bail from the io_work loop when we set rd_enabled to true,
    so we don't attempt to read data from the socket when the TCP stream is
    already out-of-sync or corrupted.
    
    Fixes: 3f2304f8c6d6 ("nvme-tcp: add NVMe over TCP host driver")
    Reported-by: Daniel Wagner <dwagner@suse.de>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Daniel Wagner <dwagner@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a00b1b10e0a60474c2a60ef84f4d4736f7051535
Author: Chris Mi <cmi@nvidia.com>
Date:   Mon Aug 29 12:02:28 2022 +0300

    RDMA/mlx5: Set local port to one when accessing counters
    
    [ Upstream commit 74b30b3ad5cec95d2647e796d10137438a098bc1 ]
    
    When accessing Ports Performance Counters Register (PPCNT),
    local port must be one if it is Function-Per-Port HCA that
    HCA_CAP.num_ports is 1.
    
    The offending patch can change the local port to other values
    when accessing PPCNT after enabling switchdev mode. The following
    syndrome will be printed:
    
     # cat /sys/class/infiniband/rdmap4s0f0/ports/2/counters/*
     # dmesg
     mlx5_core 0000:04:00.0: mlx5_cmd_check:756:(pid 12450): ACCESS_REG(0x805) op_mod(0x1) failed, status bad parameter(0x3), syndrome (0x1e5585)
    
    Fix it by setting local port to one for Function-Per-Port HCA.
    
    Fixes: 210b1f78076f ("IB/mlx5: When not in dual port RoCE mode, use provided port as native")
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Signed-off-by: Chris Mi <cmi@nvidia.com>
    Link: https://lore.kernel.org/r/6c5086c295c76211169e58dbd610fb0402360bab.1661763459.git.leonro@nvidia.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8de6cb5755eae7b793d8c00c8696c8667d44a7f
Author: Yishai Hadas <yishaih@nvidia.com>
Date:   Wed Aug 24 09:10:36 2022 +0300

    IB/core: Fix a nested dead lock as part of ODP flow
    
    [ Upstream commit 85eaeb5058f0f04dffb124c97c86b4f18db0b833 ]
    
    Fix a nested dead lock as part of ODP flow by using mmput_async().
    
    From the below call trace [1] can see that calling mmput() once we have
    the umem_odp->umem_mutex locked as required by
    ib_umem_odp_map_dma_and_lock() might trigger in the same task the
    exit_mmap()->__mmu_notifier_release()->mlx5_ib_invalidate_range() which
    may dead lock when trying to lock the same mutex.
    
    Moving to use mmput_async() will solve the problem as the above
    exit_mmap() flow will be called in other task and will be executed once
    the lock will be available.
    
    [1]
    [64843.077665] task:kworker/u133:2  state:D stack:    0 pid:80906 ppid:
    2 flags:0x00004000
    [64843.077672] Workqueue: mlx5_ib_page_fault mlx5_ib_eqe_pf_action [mlx5_ib]
    [64843.077719] Call Trace:
    [64843.077722]  <TASK>
    [64843.077724]  __schedule+0x23d/0x590
    [64843.077729]  schedule+0x4e/0xb0
    [64843.077735]  schedule_preempt_disabled+0xe/0x10
    [64843.077740]  __mutex_lock.constprop.0+0x263/0x490
    [64843.077747]  __mutex_lock_slowpath+0x13/0x20
    [64843.077752]  mutex_lock+0x34/0x40
    [64843.077758]  mlx5_ib_invalidate_range+0x48/0x270 [mlx5_ib]
    [64843.077808]  __mmu_notifier_release+0x1a4/0x200
    [64843.077816]  exit_mmap+0x1bc/0x200
    [64843.077822]  ? walk_page_range+0x9c/0x120
    [64843.077828]  ? __cond_resched+0x1a/0x50
    [64843.077833]  ? mutex_lock+0x13/0x40
    [64843.077839]  ? uprobe_clear_state+0xac/0x120
    [64843.077860]  mmput+0x5f/0x140
    [64843.077867]  ib_umem_odp_map_dma_and_lock+0x21b/0x580 [ib_core]
    [64843.077931]  pagefault_real_mr+0x9a/0x140 [mlx5_ib]
    [64843.077962]  pagefault_mr+0xb4/0x550 [mlx5_ib]
    [64843.077992]  pagefault_single_data_segment.constprop.0+0x2ac/0x560
    [mlx5_ib]
    [64843.078022]  mlx5_ib_eqe_pf_action+0x528/0x780 [mlx5_ib]
    [64843.078051]  process_one_work+0x22b/0x3d0
    [64843.078059]  worker_thread+0x53/0x410
    [64843.078065]  ? process_one_work+0x3d0/0x3d0
    [64843.078073]  kthread+0x12a/0x150
    [64843.078079]  ? set_kthread_struct+0x50/0x50
    [64843.078085]  ret_from_fork+0x22/0x30
    [64843.078093]  </TASK>
    
    Fixes: 36f30e486dce ("IB/core: Improve ODP to use hmm_range_fault()")
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
    Link: https://lore.kernel.org/r/74d93541ea533ef7daec6f126deb1072500aeb16.1661251841.git.leonro@nvidia.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 076f2479fc5a15c4a970ca3b5e57d42ba09a31fa
Author: David Lebrun <dlebrun@google.com>
Date:   Fri Sep 2 10:45:06 2022 +0100

    ipv6: sr: fix out-of-bounds read when setting HMAC data.
    
    [ Upstream commit 84a53580c5d2138c7361c7c3eea5b31827e63b35 ]
    
    The SRv6 layer allows defining HMAC data that can later be used to sign IPv6
    Segment Routing Headers. This configuration is realised via netlink through
    four attributes: SEG6_ATTR_HMACKEYID, SEG6_ATTR_SECRET, SEG6_ATTR_SECRETLEN and
    SEG6_ATTR_ALGID. Because the SECRETLEN attribute is decoupled from the actual
    length of the SECRET attribute, it is possible to provide invalid combinations
    (e.g., secret = "", secretlen = 64). This case is not checked in the code and
    with an appropriately crafted netlink message, an out-of-bounds read of up
    to 64 bytes (max secret length) can occur past the skb end pointer and into
    skb_shared_info:
    
    Breakpoint 1, seg6_genl_sethmac (skb=<optimized out>, info=<optimized out>) at net/ipv6/seg6.c:208
    208             memcpy(hinfo->secret, secret, slen);
    (gdb) bt
     #0  seg6_genl_sethmac (skb=<optimized out>, info=<optimized out>) at net/ipv6/seg6.c:208
     #1  0xffffffff81e012e9 in genl_family_rcv_msg_doit (skb=skb@entry=0xffff88800b1f9f00, nlh=nlh@entry=0xffff88800b1b7600,
        extack=extack@entry=0xffffc90000ba7af0, ops=ops@entry=0xffffc90000ba7a80, hdrlen=4, net=0xffffffff84237580 <init_net>, family=<optimized out>,
        family=<optimized out>) at net/netlink/genetlink.c:731
     #2  0xffffffff81e01435 in genl_family_rcv_msg (extack=0xffffc90000ba7af0, nlh=0xffff88800b1b7600, skb=0xffff88800b1f9f00,
        family=0xffffffff82fef6c0 <seg6_genl_family>) at net/netlink/genetlink.c:775
     #3  genl_rcv_msg (skb=0xffff88800b1f9f00, nlh=0xffff88800b1b7600, extack=0xffffc90000ba7af0) at net/netlink/genetlink.c:792
     #4  0xffffffff81dfffc3 in netlink_rcv_skb (skb=skb@entry=0xffff88800b1f9f00, cb=cb@entry=0xffffffff81e01350 <genl_rcv_msg>)
        at net/netlink/af_netlink.c:2501
     #5  0xffffffff81e00919 in genl_rcv (skb=0xffff88800b1f9f00) at net/netlink/genetlink.c:803
     #6  0xffffffff81dff6ae in netlink_unicast_kernel (ssk=0xffff888010eec800, skb=0xffff88800b1f9f00, sk=0xffff888004aed000)
        at net/netlink/af_netlink.c:1319
     #7  netlink_unicast (ssk=ssk@entry=0xffff888010eec800, skb=skb@entry=0xffff88800b1f9f00, portid=portid@entry=0, nonblock=<optimized out>)
        at net/netlink/af_netlink.c:1345
     #8  0xffffffff81dff9a4 in netlink_sendmsg (sock=<optimized out>, msg=0xffffc90000ba7e48, len=<optimized out>) at net/netlink/af_netlink.c:1921
    ...
    (gdb) p/x ((struct sk_buff *)0xffff88800b1f9f00)->head + ((struct sk_buff *)0xffff88800b1f9f00)->end
    $1 = 0xffff88800b1b76c0
    (gdb) p/x secret
    $2 = 0xffff88800b1b76c0
    (gdb) p slen
    $3 = 64 '@'
    
    The OOB data can then be read back from userspace by dumping HMAC state. This
    commit fixes this by ensuring SECRETLEN cannot exceed the actual length of
    SECRET.
    
    Reported-by: Lucas Leong <wmliang.tw@gmail.com>
    Tested: verified that EINVAL is correctly returned when secretlen > len(secret)
    Fixes: 4f4853dc1c9c1 ("ipv6: sr: implement API to control SR HMAC structure")
    Signed-off-by: David Lebrun <dlebrun@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 047e66867eb6ffc4dcbf145b13f9943990f1ca88
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Fri Sep 2 23:59:18 2022 +0200

    RDMA/siw: Pass a pointer to virt_to_page()
    
    [ Upstream commit 0d1b756acf60da5004c1e20ca4462f0c257bf6e1 ]
    
    Functions that work on a pointer to virtual memory such as
    virt_to_pfn() and users of that function such as
    virt_to_page() are supposed to pass a pointer to virtual
    memory, ideally a (void *) or other pointer. However since
    many architectures implement virt_to_pfn() as a macro,
    this function becomes polymorphic and accepts both a
    (unsigned long) and a (void *).
    
    If we instead implement a proper virt_to_pfn(void *addr)
    function the following happens (occurred on arch/arm):
    
    drivers/infiniband/sw/siw/siw_qp_tx.c:32:23: warning: incompatible
      integer to pointer conversion passing 'dma_addr_t' (aka 'unsigned int')
      to parameter of type 'const void *' [-Wint-conversion]
    drivers/infiniband/sw/siw/siw_qp_tx.c:32:37: warning: passing argument
      1 of 'virt_to_pfn' makes pointer from integer without a cast
      [-Wint-conversion]
    drivers/infiniband/sw/siw/siw_qp_tx.c:538:36: warning: incompatible
      integer to pointer conversion passing 'unsigned long long'
      to parameter of type 'const void *' [-Wint-conversion]
    
    Fix this with an explicit cast. In one case where the SIW
    SGE uses an unaligned u64 we need a double cast modifying the
    virtual address (va) to a platform-specific uintptr_t before
    casting to a (void *).
    
    Fixes: b9be6f18cf9e ("rdma/siw: transmit path")
    Cc: linux-rdma@vger.kernel.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20220902215918.603761-1-linus.walleij@linaro.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f1e7977e1f21f5ccd634ef00575ba10d8efc8a0
Author: Paul Durrant <pdurrant@amazon.com>
Date:   Thu Sep 1 12:55:54 2022 +0100

    xen-netback: only remove 'hotplug-status' when the vif is actually destroyed
    
    [ Upstream commit c55f34b6aec2a8cb47eadaffea773e83bf85de91 ]
    
    Removing 'hotplug-status' in backend_disconnected() means that it will be
    removed even in the case that the frontend unilaterally disconnects (which
    it is free to do at any time). The consequence of this is that, when the
    frontend attempts to re-connect, the backend gets stuck in 'InitWait'
    rather than moving straight to 'Connected' (which it can do because the
    hotplug script has already run).
    Instead, the 'hotplug-status' mode should be removed in netback_remove()
    i.e. when the vif really is going away.
    
    Fixes: 0f4558ae9187 ("Revert "xen-netback: remove 'hotplug-status' once it has served its purpose"")
    Signed-off-by: Paul Durrant <pdurrant@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 342d77769a6cceb3df7720a1e18baa4339eee3fc
Author: Ivan Vecera <ivecera@redhat.com>
Date:   Tue Aug 16 18:22:30 2022 +0200

    i40e: Fix kernel crash during module removal
    
    [ Upstream commit fb8396aeda5872369a8ed6d2301e2c86e303c520 ]
    
    The driver incorrectly frees client instance and subsequent
    i40e module removal leads to kernel crash.
    
    Reproducer:
    1. Do ethtool offline test followed immediately by another one
    host# ethtool -t eth0 offline; ethtool -t eth0 offline
    2. Remove recursively irdma module that also removes i40e module
    host# modprobe -r irdma
    
    Result:
    [ 8675.035651] i40e 0000:3d:00.0 eno1: offline testing starting
    [ 8675.193774] i40e 0000:3d:00.0 eno1: testing finished
    [ 8675.201316] i40e 0000:3d:00.0 eno1: offline testing starting
    [ 8675.358921] i40e 0000:3d:00.0 eno1: testing finished
    [ 8675.496921] i40e 0000:3d:00.0: IRDMA hardware initialization FAILED init_state=2 status=-110
    [ 8686.188955] i40e 0000:3d:00.1: i40e_ptp_stop: removed PHC on eno2
    [ 8686.943890] i40e 0000:3d:00.1: Deleted LAN device PF1 bus=0x3d dev=0x00 func=0x01
    [ 8686.952669] i40e 0000:3d:00.0: i40e_ptp_stop: removed PHC on eno1
    [ 8687.761787] BUG: kernel NULL pointer dereference, address: 0000000000000030
    [ 8687.768755] #PF: supervisor read access in kernel mode
    [ 8687.773895] #PF: error_code(0x0000) - not-present page
    [ 8687.779034] PGD 0 P4D 0
    [ 8687.781575] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [ 8687.785935] CPU: 51 PID: 172891 Comm: rmmod Kdump: loaded Tainted: G        W I        5.19.0+ #2
    [ 8687.794800] Hardware name: Intel Corporation S2600WFD/S2600WFD, BIOS SE5C620.86B.0X.02.0001.051420190324 05/14/2019
    [ 8687.805222] RIP: 0010:i40e_lan_del_device+0x13/0xb0 [i40e]
    [ 8687.810719] Code: d4 84 c0 0f 84 b8 25 01 00 e9 9c 25 01 00 41 bc f4 ff ff ff eb 91 90 0f 1f 44 00 00 41 54 55 53 48 8b 87 58 08 00 00 48 89 fb <48> 8b 68 30 48 89 ef e8 21 8a 0f d5 48 89 ef e8 a9 78 0f d5 48 8b
    [ 8687.829462] RSP: 0018:ffffa604072efce0 EFLAGS: 00010202
    [ 8687.834689] RAX: 0000000000000000 RBX: ffff8f43833b2000 RCX: 0000000000000000
    [ 8687.841821] RDX: 0000000000000000 RSI: ffff8f4b0545b298 RDI: ffff8f43833b2000
    [ 8687.848955] RBP: ffff8f43833b2000 R08: 0000000000000001 R09: 0000000000000000
    [ 8687.856086] R10: 0000000000000000 R11: 000ffffffffff000 R12: ffff8f43833b2ef0
    [ 8687.863218] R13: ffff8f43833b2ef0 R14: ffff915103966000 R15: ffff8f43833b2008
    [ 8687.870342] FS:  00007f79501c3740(0000) GS:ffff8f4adffc0000(0000) knlGS:0000000000000000
    [ 8687.878427] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 8687.884174] CR2: 0000000000000030 CR3: 000000014276e004 CR4: 00000000007706e0
    [ 8687.891306] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 8687.898441] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 8687.905572] PKRU: 55555554
    [ 8687.908286] Call Trace:
    [ 8687.910737]  <TASK>
    [ 8687.912843]  i40e_remove+0x2c0/0x330 [i40e]
    [ 8687.917040]  pci_device_remove+0x33/0xa0
    [ 8687.920962]  device_release_driver_internal+0x1aa/0x230
    [ 8687.926188]  driver_detach+0x44/0x90
    [ 8687.929770]  bus_remove_driver+0x55/0xe0
    [ 8687.933693]  pci_unregister_driver+0x2a/0xb0
    [ 8687.937967]  i40e_exit_module+0xc/0xf48 [i40e]
    
    Two offline tests cause IRDMA driver failure (ETIMEDOUT) and this
    failure is indicated back to i40e_client_subtask() that calls
    i40e_client_del_instance() to free client instance referenced
    by pf->cinst and sets this pointer to NULL. During the module
    removal i40e_remove() calls i40e_lan_del_device() that dereferences
    pf->cinst that is NULL -> crash.
    Do not remove client instance when client open callbacks fails and
    just clear __I40E_CLIENT_INSTANCE_OPENED bit. The driver also needs
    to take care about this situation (when netdev is up and client
    is NOT opened) in i40e_notify_client_of_netdev_close() and
    calls client close callback only when __I40E_CLIENT_INSTANCE_OPENED
    is set.
    
    Fixes: 0ef2d5afb12d ("i40e: KISS the client interface")
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Tested-by: Helena Anna Dubel <helena.anna.dubel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d11d06e50bb88dc2464d75a015c8448eaa5e460
Author: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Date:   Wed Aug 17 10:53:20 2022 +0200

    ice: use bitmap_free instead of devm_kfree
    
    [ Upstream commit 59ac325557b6c14f1f793b90d3946bc145ffa085 ]
    
    pf->avail_txqs was allocated using bitmap_zalloc, bitmap_free should be
    used to free this memory.
    
    Fixes: 78b5713ac1241 ("ice: Alloc queue management bitmaps and arrays dynamically")
    Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.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 22922da7373c38c91dd36de993589b81a4129178
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Aug 31 17:47:56 2022 +0300

    tipc: fix shift wrapping bug in map_get()
    
    [ Upstream commit e2b224abd9bf45dcb55750479fc35970725a430b ]
    
    There is a shift wrapping bug in this code so anything thing above
    31 will return false.
    
    Fixes: 35c55c9877f8 ("tipc: add neighbor monitoring framework")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ee85ac1b29dbd2ebd2d8e5ac1dd5793235d516b
Author: Toke Høiland-Jørgensen <toke@toke.dk>
Date:   Wed Aug 31 23:52:18 2022 +0200

    sch_sfb: Don't assume the skb is still around after enqueueing to child
    
    [ Upstream commit 9efd23297cca530bb35e1848665805d3fcdd7889 ]
    
    The sch_sfb enqueue() routine assumes the skb is still alive after it has
    been enqueued into a child qdisc, using the data in the skb cb field in the
    increment_qlen() routine after enqueue. However, the skb may in fact have
    been freed, causing a use-after-free in this case. In particular, this
    happens if sch_cake is used as a child of sfb, and the GSO splitting mode
    of CAKE is enabled (in which case the skb will be split into segments and
    the original skb freed).
    
    Fix this by copying the sfb cb data to the stack before enqueueing the skb,
    and using this stack copy in increment_qlen() instead of the skb pointer
    itself.
    
    Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-18231
    Fixes: e13e02a3c68d ("net_sched: SFB flow scheduler")
    Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 63677a09238a0891521132f59d14668e3722e73f
Author: David Howells <dhowells@redhat.com>
Date:   Wed Aug 31 13:16:42 2022 +0100

    afs: Use the operation issue time instead of the reply time for callbacks
    
    [ Upstream commit 7903192c4b4a82d792cb0dc5e2779a2efe60d45b ]
    
    rxrpc and kafs between them try to use the receive timestamp on the first
    data packet (ie. the one with sequence number 1) as a base from which to
    calculate the time at which callback promise and lock expiration occurs.
    
    However, we don't know how long it took for the server to send us the reply
    from it having completed the basic part of the operation - it might then,
    for instance, have to send a bunch of a callback breaks, depending on the
    particular operation.
    
    Fix this by using the time at which the operation is issued on the client
    as a base instead.  That should never be longer than the server's idea of
    the expiry time.
    
    Fixes: 781070551c26 ("afs: Fix calculation of callback expiry time")
    Fixes: 2070a3e44962 ("rxrpc: Allow the reply time to be obtained on a client call")
    Suggested-by: Jeffrey E Altman <jaltman@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fbbd5d05ea63cabff8c521e645dfcc8f4f7f78be
Author: David Howells <dhowells@redhat.com>
Date:   Wed Aug 24 22:39:28 2022 +0100

    rxrpc: Fix an insufficiently large sglist in rxkad_verify_packet_2()
    
    [ Upstream commit 0d40f728e28393a8817d1fcae923dfa3409e488c ]
    
    rxkad_verify_packet_2() has a small stack-allocated sglist of 4 elements,
    but if that isn't sufficient for the number of fragments in the socket
    buffer, we try to allocate an sglist large enough to hold all the
    fragments.
    
    However, for large packets with a lot of fragments, this isn't sufficient
    and we need at least one additional fragment.
    
    The problem manifests as skb_to_sgvec() returning -EMSGSIZE and this then
    getting returned by userspace.  Most of the time, this isn't a problem as
    rxrpc sets a limit of 5692, big enough for 4 jumbo subpackets to be glued
    together; occasionally, however, the server will ignore the reported limit
    and give a packet that's a lot bigger - say 19852 bytes with ->nr_frags
    being 7.  skb_to_sgvec() then tries to return a "zeroth" fragment that
    seems to occur before the fragments counted by ->nr_frags and we hit the
    end of the sglist too early.
    
    Note that __skb_to_sgvec() also has an skb_walk_frags() loop that is
    recursive up to 24 deep.  I'm not sure if I need to take account of that
    too - or if there's an easy way of counting those frags too.
    
    Fix this by counting an extra frag and allocating a larger sglist based on
    that.
    
    Fixes: d0d5c0cd1e71 ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
    Reported-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ccbb74801bbcba94697743adbc917352aef2a9d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 31 14:59:01 2022 +0200

    ALSA: usb-audio: Register card again for iface over delayed_register option
    
    [ Upstream commit 2027f114686e0f3f1f39971964dfc618637c88c2 ]
    
    When the delayed registration is specified via either delayed_register
    option or the quirk, we delay the invocation of snd_card_register()
    until the given interface.  But if a wrong value has been set there
    and there are more interfaces over the given interface number,
    snd_card_register() call would be missing for those interfaces.
    
    This patch catches up those missing calls by fixing the comparison of
    the interface number.  Now the call is skipped only if the processed
    interface is less than the given interface, instead of the exact
    match.
    
    Fixes: b70038ef4fea ("ALSA: usb-audio: Add delayed_register option")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216082
    Link: https://lore.kernel.org/r/20220831125901.4660-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d29a63585b3344137ceeaf19f5a3bfd222f7c9e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 31 14:59:00 2022 +0200

    ALSA: usb-audio: Inform the delayed registration more properly
    
    [ Upstream commit 7e1afce5866e02b45bf88c27dd7de1b9dfade1cc ]
    
    The info message that was added in the commit a4aad5636c72 ("ALSA:
    usb-audio: Inform devices that need delayed registration") is actually
    useful to know the need for the delayed registration.  However, it
    turned out that this doesn't catch the all cases; namely, this warned
    only when a PCM stream is attached onto the existing PCM instance, but
    it doesn't count for a newly created PCM instance.  This made
    confusion as if there were no further delayed registration.
    
    This patch moves the check to the code path for either adding a stream
    or creating a PCM instance.  Also, make it simpler by checking the
    card->registered flag instead of querying each snd_device state.
    
    Fixes: a4aad5636c72 ("ALSA: usb-audio: Inform devices that need delayed registration")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216082
    Link: https://lore.kernel.org/r/20220831125901.4660-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e12ce30fe593dd438c5b392290ad7316befc11ca
Author: David Leadbeater <dgl@dgl.cx>
Date:   Fri Aug 26 14:56:58 2022 +1000

    netfilter: nf_conntrack_irc: Fix forged IP logic
    
    [ Upstream commit 0efe125cfb99e6773a7434f3463f7c2fa28f3a43 ]
    
    Ensure the match happens in the right direction, previously the
    destination used was the server, not the NAT host, as the comment
    shows the code intended.
    
    Additionally nf_nat_irc uses port 0 as a signal and there's no valid way
    it can appear in a DCC message, so consider port 0 also forged.
    
    Fixes: 869f37d8e48f ("[NETFILTER]: nf_conntrack/nf_nat: add IRC helper port")
    Signed-off-by: David Leadbeater <dgl@dgl.cx>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 910891a2a44cdc49efcc4fe7459c1085ba00d0f4
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Aug 31 13:11:47 2022 +0200

    netfilter: nf_tables: clean up hook list when offload flags check fails
    
    [ Upstream commit 77972a36ecc4db7fc7c68f0e80714263c5f03f65 ]
    
    splice back the hook list so nft_chain_release_hook() has a chance to
    release the hooks.
    
    BUG: memory leak
    unreferenced object 0xffff88810180b100 (size 96):
      comm "syz-executor133", pid 3619, jiffies 4294945714 (age 12.690s)
      hex dump (first 32 bytes):
        28 64 23 02 81 88 ff ff 28 64 23 02 81 88 ff ff  (d#.....(d#.....
        90 a8 aa 83 ff ff ff ff 00 00 b5 0f 81 88 ff ff  ................
      backtrace:
        [<ffffffff83a8c59b>] kmalloc include/linux/slab.h:600 [inline]
        [<ffffffff83a8c59b>] nft_netdev_hook_alloc+0x3b/0xc0 net/netfilter/nf_tables_api.c:1901
        [<ffffffff83a9239a>] nft_chain_parse_netdev net/netfilter/nf_tables_api.c:1998 [inline]
        [<ffffffff83a9239a>] nft_chain_parse_hook+0x33a/0x530 net/netfilter/nf_tables_api.c:2073
        [<ffffffff83a9b14b>] nf_tables_addchain.constprop.0+0x10b/0x950 net/netfilter/nf_tables_api.c:2218
        [<ffffffff83a9c41b>] nf_tables_newchain+0xa8b/0xc60 net/netfilter/nf_tables_api.c:2593
        [<ffffffff83a3d6a6>] nfnetlink_rcv_batch+0xa46/0xd20 net/netfilter/nfnetlink.c:517
        [<ffffffff83a3db79>] nfnetlink_rcv_skb_batch net/netfilter/nfnetlink.c:638 [inline]
        [<ffffffff83a3db79>] nfnetlink_rcv+0x1f9/0x220 net/netfilter/nfnetlink.c:656
        [<ffffffff83a13b17>] netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
        [<ffffffff83a13b17>] netlink_unicast+0x397/0x4c0 net/netlink/af_netlink.c:1345
        [<ffffffff83a13fd6>] netlink_sendmsg+0x396/0x710 net/netlink/af_netlink.c:1921
        [<ffffffff83865ab6>] sock_sendmsg_nosec net/socket.c:714 [inline]
        [<ffffffff83865ab6>] sock_sendmsg+0x56/0x80 net/socket.c:734
        [<ffffffff8386601c>] ____sys_sendmsg+0x36c/0x390 net/socket.c:2482
        [<ffffffff8386a918>] ___sys_sendmsg+0xa8/0x110 net/socket.c:2536
        [<ffffffff8386aaa8>] __sys_sendmsg+0x88/0x100 net/socket.c:2565
        [<ffffffff845e5955>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
        [<ffffffff845e5955>] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
        [<ffffffff84800087>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Fixes: d54725cd11a5 ("netfilter: nf_tables: support for multiple devices per netdev hook")
    Reported-by: syzbot+5fcdbfab6d6744c57418@syzkaller.appspotmail.com
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 908180f633d04a58864a11554fd71fc5b9466585
Author: Harsh Modi <harshmodi@google.com>
Date:   Tue Aug 30 22:36:03 2022 -0700

    netfilter: br_netfilter: Drop dst references before setting.
    
    [ Upstream commit d047283a7034140ea5da759a494fd2274affdd46 ]
    
    The IPv6 path already drops dst in the daddr changed case, but the IPv4
    path does not. This change makes the two code paths consistent.
    
    Further, it is possible that there is already a metadata_dst allocated from
    ingress that might already be attached to skbuff->dst while following
    the bridge path. If it is not released before setting a new
    metadata_dst, it will be leaked. This is similar to what is done in
    bpf_set_tunnel_key() or ip6_route_input().
    
    It is important to note that the memory being leaked is not the dst
    being set in the bridge code, but rather memory allocated from some
    other code path that is not being freed correctly before the skb dst is
    overwritten.
    
    An example of the leakage fixed by this commit found using kmemleak:
    
    unreferenced object 0xffff888010112b00 (size 256):
      comm "softirq", pid 0, jiffies 4294762496 (age 32.012s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 80 16 f1 83 ff ff ff ff  ................
        e1 4e f6 82 ff ff ff ff 00 00 00 00 00 00 00 00  .N..............
      backtrace:
        [<00000000d79567ea>] metadata_dst_alloc+0x1b/0xe0
        [<00000000be113e13>] udp_tun_rx_dst+0x174/0x1f0
        [<00000000a36848f4>] geneve_udp_encap_recv+0x350/0x7b0
        [<00000000d4afb476>] udp_queue_rcv_one_skb+0x380/0x560
        [<00000000ac064aea>] udp_unicast_rcv_skb+0x75/0x90
        [<000000009a8ee8c5>] ip_protocol_deliver_rcu+0xd8/0x230
        [<00000000ef4980bb>] ip_local_deliver_finish+0x7a/0xa0
        [<00000000d7533c8c>] __netif_receive_skb_one_core+0x89/0xa0
        [<00000000a879497d>] process_backlog+0x93/0x190
        [<00000000e41ade9f>] __napi_poll+0x28/0x170
        [<00000000b4c0906b>] net_rx_action+0x14f/0x2a0
        [<00000000b20dd5d4>] __do_softirq+0xf4/0x305
        [<000000003a7d7e15>] __irq_exit_rcu+0xc3/0x140
        [<00000000968d39a2>] sysvec_apic_timer_interrupt+0x9e/0xc0
        [<000000009e920794>] asm_sysvec_apic_timer_interrupt+0x16/0x20
        [<000000008942add0>] native_safe_halt+0x13/0x20
    
    Florian Westphal says: "Original code was likely fine because nothing
    ever did set a skb->dst entry earlier than bridge in those days."
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Harsh Modi <harshmodi@google.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d29f2bdd1675cf6f0e180b9209fbff6f5b53514
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Fri Aug 26 11:39:26 2022 +0300

    ARM: dts: at91: sama5d2_icp: don't keep vdd_other enabled all the time
    
    [ Upstream commit 3d074b750d2b4c91962f10ea1df1c289ce0d3ce8 ]
    
    VDD_OTHER is not connected to any on board consumer thus it is not
    needed to keep it enabled all the time.
    
    Fixes: 68a95ef72cef ("ARM: dts: at91: sama5d2-icp: add SAMA5D2-ICP")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220826083927.3107272-9-claudiu.beznea@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0796953300f56c46e7b3af1443d51b470800de9c
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Fri Aug 26 11:39:25 2022 +0300

    ARM: dts: at91: sama5d27_wlsom1: don't keep ldo2 enabled all the time
    
    [ Upstream commit 617a0d9fe6867bf5b3b7272629cd780c27c877d9 ]
    
    ldo2 is not used by any consumer on sama5d27_wlsom1 board, thus
    don't keep it enabled all the time.
    
    Fixes: 5d4c3cfb63fe ("ARM: dts: at91: sama5d27_wlsom1: add SAMA5D27 wlsom1 and wlsom1-ek")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220826083927.3107272-8-claudiu.beznea@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 360dd120eb1105f7df0be2d67105b4ad310e82a0
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Fri Aug 26 11:39:23 2022 +0300

    ARM: dts: at91: sama5d2_icp: specify proper regulator output ranges
    
    [ Upstream commit 7737d93666eea282febf95e5fa3b3fde1f2549f3 ]
    
    Min and max output ranges of regulators need to satisfy board
    requirements not PMIC requirements. Thus adjust device tree to
    cope with this.
    
    Fixes: 68a95ef72cef ("ARM: dts: at91: sama5d2-icp: add SAMA5D2-ICP")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220826083927.3107272-6-claudiu.beznea@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bbef2694a06cd17c364dcbee30483b2e4a2ce90
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Fri Aug 26 11:39:22 2022 +0300

    ARM: dts: at91: sama5d27_wlsom1: specify proper regulator output ranges
    
    [ Upstream commit addf7efec23af2b67547800aa232d551945e7de2 ]
    
    Min and max output ranges of regulators need to satisfy board
    requirements not PMIC requirements. Thus adjust device tree to
    cope with this.
    
    Fixes: 5d4c3cfb63fe ("ARM: dts: at91: sama5d27_wlsom1: add SAMA5D27 wlsom1 and wlsom1-ek")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220826083927.3107272-5-claudiu.beznea@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e198c0857032ceac643f2c58a114cf1ded672b28
Author: Wenpeng Liang <liangwenpeng@huawei.com>
Date:   Mon Aug 29 18:50:19 2022 +0800

    RDMA/hns: Fix wrong fixed value of qp->rq.wqe_shift
    
    [ Upstream commit 0c8b5d6268d92d141bfd64d21c870d295a84dee1 ]
    
    The value of qp->rq.wqe_shift of HIP08 is always determined by the number
    of sge. So delete the wrong branch.
    
    Fixes: cfc85f3e4b7f ("RDMA/hns: Add profile support for hip08 driver")
    Fixes: 926a01dc000d ("RDMA/hns: Add QP operations support for hip08 SoC")
    Link: https://lore.kernel.org/r/20220829105021.1427804-3-liangwenpeng@huawei.com
    Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2e82e325a847c9d37aea33db5aac19215cce589
Author: Chengchang Tang <tangchengchang@huawei.com>
Date:   Mon Aug 29 18:50:18 2022 +0800

    RDMA/hns: Fix supported page size
    
    [ Upstream commit 55af9d498556f0860eb89ffa7677e8d73f6f643f ]
    
    The supported page size for hns is (4K, 128M), not (4K, 2G).
    
    Fixes: cfc85f3e4b7f ("RDMA/hns: Add profile support for hip08 driver")
    Link: https://lore.kernel.org/r/20220829105021.1427804-2-liangwenpeng@huawei.com
    Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
    Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6dc0251638a4a1a998506dbd4627f8317e907558
Author: Liang He <windhl@126.com>
Date:   Thu Jul 7 09:56:20 2022 +0800

    soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs
    
    [ Upstream commit 1085f5080647f0c9f357c270a537869191f7f2a1 ]
    
    In brcmstb_pm_probe(), there are two kinds of leak bugs:
    
    (1) we need to add of_node_put() when for_each__matching_node() breaks
    (2) we need to add iounmap() for each iomap in fail path
    
    Fixes: 0b741b8234c8 ("soc: bcm: brcmstb: Add support for S2/S3/S5 suspend states (ARM)")
    Signed-off-by: Liang He <windhl@126.com>
    Link: https://lore.kernel.org/r/20220707015620.306468-1-windhl@126.com
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9ea271c2e43af02c9d9c876519c078b09beeb5c
Author: Michael Guralnik <michaelgur@nvidia.com>
Date:   Tue Aug 23 13:51:50 2022 +0300

    RDMA/cma: Fix arguments order in net device validation
    
    [ Upstream commit 27cfde795a96aef1e859a5480489944b95421e46 ]
    
    Fix the order of source and destination addresses when resolving the
    route between server and client to validate use of correct net device.
    
    The reverse order we had so far didn't actually validate the net device
    as the server would try to resolve the route to itself, thus always
    getting the server's net device.
    
    The issue was discovered when running cm applications on a single host
    between 2 interfaces with same subnet and source based routing rules.
    When resolving the reverse route the source based route rules were
    ignored.
    
    Fixes: f887f2ac87c2 ("IB/cma: Validate routing of incoming requests")
    Link: https://lore.kernel.org/r/1c1ec2277a131d277ebcceec987fd338d35b775f.1661251872.git.leonro@nvidia.com
    Signed-off-by: Michael Guralnik <michaelgur@nvidia.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 465eecd2b3a40c488eca5f183add705cd827921e
Author: Jens Wiklander <jens.wiklander@linaro.org>
Date:   Mon Aug 22 07:43:35 2022 +0200

    tee: fix compiler warning in tee_shm_register()
    
    [ Upstream commit eccd7439709810127563e7e3e49b8b44c7b2791d ]
    
    Include <linux/uaccess.h> to avoid the warning:
       drivers/tee/tee_shm.c: In function 'tee_shm_register':
    >> drivers/tee/tee_shm.c:242:14: error: implicit declaration of function 'access_ok' [-Werror=implicit-function-declaration]
         242 |         if (!access_ok((void __user *)addr, length))
             |              ^~~~~~~~~
       cc1: some warnings being treated as errors
    
    Fixes: 573ae4f13f63 ("tee: add overflow check in register_shm_helper()")
    Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75c961d01199d8f6d88cb81809f6f5bcbdf19409
Author: Andrew Halaney <ahalaney@redhat.com>
Date:   Fri Aug 19 14:43:36 2022 -0500

    regulator: core: Clean up on enable failure
    
    [ Upstream commit c32f1ebfd26bece77141257864ed7b4720da1557 ]
    
    If regulator_enable() fails, enable_count is incremented still.
    A consumer, assuming no matching regulator_disable() is necessary on
    failure, will then get this error message upon regulator_put()
    since enable_count is non-zero:
    
        [    1.277418] WARNING: CPU: 3 PID: 1 at drivers/regulator/core.c:2304 _regulator_put.part.0+0x168/0x170
    
    The consumer could try to fix this in their driver by cleaning up on
    error from regulator_enable() (i.e. call regulator_disable()), but that
    results in the following since regulator_enable() failed and didn't
    increment user_count:
    
        [    1.258112] unbalanced disables for vreg_l17c
        [    1.262606] WARNING: CPU: 4 PID: 1 at drivers/regulator/core.c:2899 _regulator_disable+0xd4/0x190
    
    Fix this by decrementing enable_count upon failure to enable.
    
    With this in place, just the reason for failure to enable is printed
    as expected and developers can focus on the root cause of their issue
    instead of thinking their usage of the regulator consumer api is
    incorrect. For example, in my case:
    
        [    1.240426] vreg_l17c: invalid input voltage found
    
    Fixes: 5451781dadf8 ("regulator: core: Only count load for enabled consumers")
    Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Brian Masney <bmasney@redhat.com>
    Link: https://lore.kernel.org/r/20220819194336.382740-1-ahalaney@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb4bee3eca783107101f5f3f55bbb35f14e6be39
Author: Marco Felsch <m.felsch@pengutronix.de>
Date:   Tue Jul 26 15:05:21 2022 +0200

    ARM: dts: imx6qdl-kontron-samx6i: remove duplicated node
    
    [ Upstream commit 204f67d86f55dd4fa757ed04757d7273f71a169c ]
    
    The regulator node 'regulator-3p3v-s0' was dupplicated. Remove it to
    clean the DTS.
    
    Fixes: 2a51f9dae13d ("ARM: dts: imx6qdl-kontron-samx6i: Add iMX6-based Kontron SMARC-sAMX6i module")
    Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 015c2ec053f3a3f0f24c6cba165edb8a9506400d
Author: David Howells <dhowells@redhat.com>
Date:   Tue Aug 23 02:10:56 2022 -0500

    smb3: missing inode locks in punch hole
    
    [ Upstream commit ba0803050d610d5072666be727bca5e03e55b242 ]
    
    smb3 fallocate punch hole was not grabbing the inode or filemap_invalidate
    locks so could have race with pagemap reinstantiating the page.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98127f140bc4db0d19e6e32ed44ed09008a27df0
Author: Enzo Matsumiya <ematsumiya@suse.de>
Date:   Wed Aug 17 16:08:34 2022 -0300

    cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl()
    
    [ Upstream commit 400d0ad63b190895e29f43bc75b1260111d3fd34 ]
    
    SMB2_ioctl() is always called with is_fsctl = true, so doesn't make any
    sense to have it at all.
    
    Thus, always set SMB2_0_IOCTL_IS_FSCTL flag on the request.
    
    Also, as per MS-SMB2 3.3.5.15 "Receiving an SMB2 IOCTL Request", servers
    must fail the request if the request flags is zero anyway.
    
    Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
    Reviewed-by: Tom Talpey <tom@talpey.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dee1e2b18cf5426eed985512ccc6636ec69dbdd6
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Aug 15 13:27:38 2022 -1000

    cgroup: Fix threadgroup_rwsem <-> cpus_read_lock() deadlock
    
    [ Upstream commit 4f7e7236435ca0abe005c674ebd6892c6e83aeb3 ]
    
    Bringing up a CPU may involve creating and destroying tasks which requires
    read-locking threadgroup_rwsem, so threadgroup_rwsem nests inside
    cpus_read_lock(). However, cpuset's ->attach(), which may be called with
    thredagroup_rwsem write-locked, also wants to disable CPU hotplug and
    acquires cpus_read_lock(), leading to a deadlock.
    
    Fix it by guaranteeing that ->attach() is always called with CPU hotplug
    disabled and removing cpus_read_lock() call from cpuset_attach().
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reviewed-and-tested-by: Imran Khan <imran.f.khan@oracle.com>
    Reported-and-tested-by: Xuewen Yan <xuewen.yan@unisoc.com>
    Fixes: 05c7b7a92cc8 ("cgroup/cpuset: Fix a race between cpuset_attach() and cpu hotplug")
    Cc: stable@vger.kernel.org # v5.17+
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bfbacc2ef7b5b9261e795e361ee233e7d36efae6
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Jul 14 18:38:15 2022 -1000

    cgroup: Elide write-locking threadgroup_rwsem when updating csses on an empty subtree
    
    [ Upstream commit 671c11f0619e5ccb380bcf0f062f69ba95fc974a ]
    
    cgroup_update_dfl_csses() write-lock the threadgroup_rwsem as updating the
    csses can trigger process migrations. However, if the subtree doesn't
    contain any tasks, there aren't gonna be any cgroup migrations. This
    condition can be trivially detected by testing whether
    mgctx.preloaded_src_csets is empty. Elide write-locking threadgroup_rwsem if
    the subtree is empty.
    
    After this optimization, the usage pattern of creating a cgroup, enabling
    the necessary controllers, and then seeding it with CLONE_INTO_CGROUP and
    then removing the cgroup after it becomes empty doesn't need to write-lock
    threadgroup_rwsem at all.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Michal Koutný <mkoutny@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5620d3e0cf93d58d1a98a8f1e5fb8f140d07da8
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Aug 23 12:42:37 2022 +0800

    scsi: lpfc: Add missing destroy_workqueue() in error path
    
    commit da6d507f5ff328f346b3c50e19e19993027b8ffd upstream.
    
    Add the missing destroy_workqueue() before return from
    lpfc_sli4_driver_resource_setup() in the error path.
    
    Link: https://lore.kernel.org/r/20220823044237.285643-1-yangyingliang@huawei.com
    Fixes: 3cee98db2610 ("scsi: lpfc: Fix crash on driver unload in wq free")
    Reviewed-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea10a652ad2ae2cf3eced6f632a5c98f26727057
Author: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Date:   Tue Sep 6 19:19:08 2022 +0530

    scsi: mpt3sas: Fix use-after-free warning
    
    commit 991df3dd5144f2e6b1c38b8d20ed3d4d21e20b34 upstream.
    
    Fix the following use-after-free warning which is observed during
    controller reset:
    
    refcount_t: underflow; use-after-free.
    WARNING: CPU: 23 PID: 5399 at lib/refcount.c:28 refcount_warn_saturate+0xa6/0xf0
    
    Link: https://lore.kernel.org/r/20220906134908.1039-2-sreekanth.reddy@broadcom.com
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de572edecc2965b924a3f75b2f09017a3ea07ca9
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Sep 2 10:03:18 2022 +0300

    drm/i915: Implement WaEdpLinkRateDataReload
    
    commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 upstream.
    
    A lot of modern laptops use the Parade PS8461E MUX for eDP
    switching. The MUX can operate in jitter cleaning mode or
    redriver mode, the first one resulting in higher link
    quality. The jitter cleaning mode needs to know the link
    rate used and the MUX achieves this by snooping the
    LINK_BW_SET, LINK_RATE_SELECT and SUPPORTED_LINK_RATES
    DPCD accesses.
    
    When the MUX is powered down (seems this can happen whenever
    the display is turned off) it loses track of the snooped
    link rates so when we do the LINK_RATE_SELECT write it no
    longer knowns which link rate we're selecting, and thus it
    falls back to the lower quality redriver mode. This results
    in unstable high link rates (eg. usually 8.1Gbps link rate
    no longer works correctly).
    
    In order to avoid all that let's re-snoop SUPPORTED_LINK_RATES
    from the sink at the start of every link training.
    
    Unfortunately we don't have a way to detect the presence of
    the MUX. It looks like the set of laptops equipped with this
    MUX is fairly large and contains devices from multiple
    manufacturers. It may also still be growing with new models.
    So a quirk doesn't seem like a very easily maintainable
    option, thus we shall attempt to do this unconditionally on
    all machines that use LINK_RATE_SELECT. Hopefully this extra
    DPCD read doesn't cause issues for any unaffected machine.
    If that turns out to be the case we'll need to convert this
    into a quirk in the future.
    
    Cc: stable@vger.kernel.org
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/6205
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220902070319.15395-1-ville.syrjala@linux.intel.com
    Tested-by: Aaron Ma <aaron.ma@canonical.com>
    Tested-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit 25899c590cb5ba9b9f284c6ca8e7e9086793d641)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be01f1c988757b95f11f090a9f491365670a522b
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri Aug 12 14:03:17 2022 -0700

    nvmet: fix a use-after-free
    
    commit 6a02a61e81c231cc5c680c5dbf8665275147ac52 upstream.
    
    Fix the following use-after-free complaint triggered by blktests nvme/004:
    
    BUG: KASAN: user-memory-access in blk_mq_complete_request_remote+0xac/0x350
    Read of size 4 at addr 0000607bd1835943 by task kworker/13:1/460
    Workqueue: nvmet-wq nvme_loop_execute_work [nvme_loop]
    Call Trace:
     show_stack+0x52/0x58
     dump_stack_lvl+0x49/0x5e
     print_report.cold+0x36/0x1e2
     kasan_report+0xb9/0xf0
     __asan_load4+0x6b/0x80
     blk_mq_complete_request_remote+0xac/0x350
     nvme_loop_queue_response+0x1df/0x275 [nvme_loop]
     __nvmet_req_complete+0x132/0x4f0 [nvmet]
     nvmet_req_complete+0x15/0x40 [nvmet]
     nvmet_execute_io_connect+0x18a/0x1f0 [nvmet]
     nvme_loop_execute_work+0x20/0x30 [nvme_loop]
     process_one_work+0x56e/0xa70
     worker_thread+0x2d1/0x640
     kthread+0x183/0x1c0
     ret_from_fork+0x1f/0x30
    
    Cc: stable@vger.kernel.org
    Fixes: a07b4970f464 ("nvmet: add a generic NVMe target")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68f22c80c18186f3dba9b2b60bd05488987ae7ce
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Sep 2 16:59:15 2022 +0200

    debugfs: add debugfs_lookup_and_remove()
    
    commit dec9b2f1e0455a151a7293c367da22ab973f713e upstream.
    
    There is a very common pattern of using
    debugfs_remove(debufs_lookup(..)) which results in a dentry leak of the
    dentry that was looked up.  Instead of having to open-code the correct
    pattern of calling dput() on the dentry, create
    debugfs_lookup_and_remove() to handle this pattern automatically and
    properly without any memory leaks.
    
    Cc: stable <stable@kernel.org>
    Reported-by: Kuyo Chang <kuyo.chang@mediatek.com>
    Tested-by: Kuyo Chang <kuyo.chang@mediatek.com>
    Link: https://lore.kernel.org/r/YxIaQ8cSinDR881k@kroah.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab60010225cebf792c9927d20ffeefcf3d3d1c73
Author: Christian A. Ehrhardt <lk@c--e.de>
Date:   Wed Sep 7 22:09:17 2022 +0200

    kprobes: Prohibit probes in gate area
    
    commit 1efda38d6f9ba26ac88b359c6277f1172db03f1e upstream.
    
    The system call gate area counts as kernel text but trying
    to install a kprobe in this area fails with an Oops later on.
    To fix this explicitly disallow the gate area for kprobes.
    
    Found by syzkaller with the following reproducer:
    perf_event_open$cgroup(&(0x7f00000001c0)={0x6, 0x80, 0x0, 0x0, 0x0, 0x0, 0x80ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_config_ext={0x0, 0xffffffffff600000}}, 0xffffffffffffffff, 0x0, 0xffffffffffffffff, 0x0)
    
    Sample report:
    BUG: unable to handle page fault for address: fffffbfff3ac6000
    PGD 6dfcb067 P4D 6dfcb067 PUD 6df8f067 PMD 6de4d067 PTE 0
    Oops: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 0 PID: 21978 Comm: syz-executor.2 Not tainted 6.0.0-rc3-00363-g7726d4c3e60b-dirty #6
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    RIP: 0010:__insn_get_emulate_prefix arch/x86/lib/insn.c:91 [inline]
    RIP: 0010:insn_get_emulate_prefix arch/x86/lib/insn.c:106 [inline]
    RIP: 0010:insn_get_prefixes.part.0+0xa8/0x1110 arch/x86/lib/insn.c:134
    Code: 49 be 00 00 00 00 00 fc ff df 48 8b 40 60 48 89 44 24 08 e9 81 00 00 00 e8 e5 4b 39 ff 4c 89 fa 4c 89 f9 48 c1 ea 03 83 e1 07 <42> 0f b6 14 32 38 ca 7f 08 84 d2 0f 85 06 10 00 00 48 89 d8 48 89
    RSP: 0018:ffffc900088bf860 EFLAGS: 00010246
    RAX: 0000000000040000 RBX: ffffffff9b9bebc0 RCX: 0000000000000000
    RDX: 1ffffffff3ac6000 RSI: ffffc90002d82000 RDI: ffffc900088bf9e8
    RBP: ffffffff9d630001 R08: 0000000000000000 R09: ffffc900088bf9e8
    R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000001
    R13: ffffffff9d630000 R14: dffffc0000000000 R15: ffffffff9d630000
    FS:  00007f63eef63640(0000) GS:ffff88806d000000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: fffffbfff3ac6000 CR3: 0000000029d90005 CR4: 0000000000770ef0
    PKRU: 55555554
    Call Trace:
     <TASK>
     insn_get_prefixes arch/x86/lib/insn.c:131 [inline]
     insn_get_opcode arch/x86/lib/insn.c:272 [inline]
     insn_get_modrm+0x64a/0x7b0 arch/x86/lib/insn.c:343
     insn_get_sib+0x29a/0x330 arch/x86/lib/insn.c:421
     insn_get_displacement+0x350/0x6b0 arch/x86/lib/insn.c:464
     insn_get_immediate arch/x86/lib/insn.c:632 [inline]
     insn_get_length arch/x86/lib/insn.c:707 [inline]
     insn_decode+0x43a/0x490 arch/x86/lib/insn.c:747
     can_probe+0xfc/0x1d0 arch/x86/kernel/kprobes/core.c:282
     arch_prepare_kprobe+0x79/0x1c0 arch/x86/kernel/kprobes/core.c:739
     prepare_kprobe kernel/kprobes.c:1160 [inline]
     register_kprobe kernel/kprobes.c:1641 [inline]
     register_kprobe+0xb6e/0x1690 kernel/kprobes.c:1603
     __register_trace_kprobe kernel/trace/trace_kprobe.c:509 [inline]
     __register_trace_kprobe+0x26a/0x2d0 kernel/trace/trace_kprobe.c:477
     create_local_trace_kprobe+0x1f7/0x350 kernel/trace/trace_kprobe.c:1833
     perf_kprobe_init+0x18c/0x280 kernel/trace/trace_event_perf.c:271
     perf_kprobe_event_init+0xf8/0x1c0 kernel/events/core.c:9888
     perf_try_init_event+0x12d/0x570 kernel/events/core.c:11261
     perf_init_event kernel/events/core.c:11325 [inline]
     perf_event_alloc.part.0+0xf7f/0x36a0 kernel/events/core.c:11619
     perf_event_alloc kernel/events/core.c:12059 [inline]
     __do_sys_perf_event_open+0x4a8/0x2a00 kernel/events/core.c:12157
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7f63ef7efaed
    Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f63eef63028 EFLAGS: 00000246 ORIG_RAX: 000000000000012a
    RAX: ffffffffffffffda RBX: 00007f63ef90ff80 RCX: 00007f63ef7efaed
    RDX: 0000000000000000 RSI: ffffffffffffffff RDI: 00000000200001c0
    RBP: 00007f63ef86019c R08: 0000000000000000 R09: 0000000000000000
    R10: ffffffffffffffff R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000002 R14: 00007f63ef90ff80 R15: 00007f63eef43000
     </TASK>
    Modules linked in:
    CR2: fffffbfff3ac6000
    ---[ end trace 0000000000000000 ]---
    RIP: 0010:__insn_get_emulate_prefix arch/x86/lib/insn.c:91 [inline]
    RIP: 0010:insn_get_emulate_prefix arch/x86/lib/insn.c:106 [inline]
    RIP: 0010:insn_get_prefixes.part.0+0xa8/0x1110 arch/x86/lib/insn.c:134
    Code: 49 be 00 00 00 00 00 fc ff df 48 8b 40 60 48 89 44 24 08 e9 81 00 00 00 e8 e5 4b 39 ff 4c 89 fa 4c 89 f9 48 c1 ea 03 83 e1 07 <42> 0f b6 14 32 38 ca 7f 08 84 d2 0f 85 06 10 00 00 48 89 d8 48 89
    RSP: 0018:ffffc900088bf860 EFLAGS: 00010246
    RAX: 0000000000040000 RBX: ffffffff9b9bebc0 RCX: 0000000000000000
    RDX: 1ffffffff3ac6000 RSI: ffffc90002d82000 RDI: ffffc900088bf9e8
    RBP: ffffffff9d630001 R08: 0000000000000000 R09: ffffc900088bf9e8
    R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000001
    R13: ffffffff9d630000 R14: dffffc0000000000 R15: ffffffff9d630000
    FS:  00007f63eef63640(0000) GS:ffff88806d000000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: fffffbfff3ac6000 CR3: 0000000029d90005 CR4: 0000000000770ef0
    PKRU: 55555554
    ==================================================================
    
    Link: https://lkml.kernel.org/r/20220907200917.654103-1-lk@c--e.de
    
    cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
    cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    cc: "David S. Miller" <davem@davemloft.net>
    Cc: stable@vger.kernel.org
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Christian A. Ehrhardt <lk@c--e.de>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6123bec8480d23369e2ee0b2208611619f269faf
Author: Dongxiang Ke <kdx.glider@gmail.com>
Date:   Tue Sep 6 10:49:28 2022 +0800

    ALSA: usb-audio: Fix an out-of-bounds bug in __snd_usb_parse_audio_interface()
    
    commit e53f47f6c1a56d2af728909f1cb894da6b43d9bf upstream.
    
    There may be a bad USB audio device with a USB ID of (0x04fa, 0x4201) and
    the number of it's interfaces less than 4, an out-of-bounds read bug occurs
    when parsing the interface descriptor for this device.
    
    Fix this by checking the number of interfaces.
    
    Signed-off-by: Dongxiang Ke <kdx.glider@gmail.com>
    Link: https://lore.kernel.org/r/20220906024928.10951-1-kdx.glider@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab730d3c44918f5cb9b2abc1e463cd0b80bfaa94
Author: Pattara Teerapong <pteerapong@chromium.org>
Date:   Thu Sep 1 14:40:36 2022 +0000

    ALSA: aloop: Fix random zeros in capture data when using jiffies timer
    
    commit 3e48940abee88b8dbbeeaf8a07e7b2b6be1271b3 upstream.
    
    In loopback_jiffies_timer_pos_update(), we are getting jiffies twice.
    First time for playback, second time for capture. Jiffies can be updated
    between these two calls and if the capture jiffies is larger, extra zeros
    will be filled in the capture buffer.
    
    Change to get jiffies once and use it for both playback and capture.
    
    Signed-off-by: Pattara Teerapong <pteerapong@chromium.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220901144036.4049060-1-pteerapong@chromium.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39a90720f3abe96625d1224e7a7463410875de4c
Author: Tasos Sahanidis <tasos@tasossah.com>
Date:   Wed Sep 7 04:18:00 2022 +0300

    ALSA: emu10k1: Fix out of bounds access in snd_emu10k1_pcm_channel_alloc()
    
    commit d29f59051d3a07b81281b2df2b8c9dfe4716067f upstream.
    
    The voice allocator sometimes begins allocating from near the end of the
    array and then wraps around, however snd_emu10k1_pcm_channel_alloc()
    accesses the newly allocated voices as if it never wrapped around.
    
    This results in out of bounds access if the first voice has a high enough
    index so that first_voice + requested_voice_count > NUM_G (64).
    The more voices are requested, the more likely it is for this to occur.
    
    This was initially discovered using PipeWire, however it can be reproduced
    by calling aplay multiple times with 16 channels:
    aplay -r 48000 -D plughw:CARD=Live,DEV=3 -c 16 /dev/zero
    
    UBSAN: array-index-out-of-bounds in sound/pci/emu10k1/emupcm.c:127:40
    index 65 is out of range for type 'snd_emu10k1_voice [64]'
    CPU: 1 PID: 31977 Comm: aplay Tainted: G        W IOE      6.0.0-rc2-emu10k1+ #7
    Hardware name: ASUSTEK COMPUTER INC P5W DH Deluxe/P5W DH Deluxe, BIOS 3002    07/22/2010
    Call Trace:
    <TASK>
    dump_stack_lvl+0x49/0x63
    dump_stack+0x10/0x16
    ubsan_epilogue+0x9/0x3f
    __ubsan_handle_out_of_bounds.cold+0x44/0x49
    snd_emu10k1_playback_hw_params+0x3bc/0x420 [snd_emu10k1]
    snd_pcm_hw_params+0x29f/0x600 [snd_pcm]
    snd_pcm_common_ioctl+0x188/0x1410 [snd_pcm]
    ? exit_to_user_mode_prepare+0x35/0x170
    ? do_syscall_64+0x69/0x90
    ? syscall_exit_to_user_mode+0x26/0x50
    ? do_syscall_64+0x69/0x90
    ? exit_to_user_mode_prepare+0x35/0x170
    snd_pcm_ioctl+0x27/0x40 [snd_pcm]
    __x64_sys_ioctl+0x95/0xd0
    do_syscall_64+0x5c/0x90
    ? do_syscall_64+0x69/0x90
    ? do_syscall_64+0x69/0x90
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Signed-off-by: Tasos Sahanidis <tasos@tasossah.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/3707dcab-320a-62ff-63c0-73fc201ef756@tasossah.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfb27648eea5a5729b544198c1867887fe9420c6
Author: Qu Huang <jinsdb@126.com>
Date:   Tue Aug 23 14:44:06 2022 +0800

    drm/amdgpu: mmVM_L2_CNTL3 register not initialized correctly
    
    [ Upstream commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 ]
    
    The mmVM_L2_CNTL3 register is not assigned an initial value
    
    Signed-off-by: Qu Huang <jinsdb@126.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2078e326b64e9a5ccb67ccc9ebab9b70a2637613
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Fri Aug 19 16:57:52 2022 +0800

    fbdev: chipsfb: Add missing pci_disable_device() in chipsfb_pci_init()
    
    [ Upstream commit 07c55c9803dea748d17a054000cbf1913ce06399 ]
    
    Add missing pci_disable_device() in error path in chipsfb_pci_init().
    
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d040a629e7e7965c70e3ff16e1a8180470b8746
Author: lily <floridsleeves@gmail.com>
Date:   Mon Aug 22 22:44:11 2022 -0700

    net/core/skbuff: Check the return value of skb_copy_bits()
    
    [ Upstream commit c624c58e08b15105662b9ab9be23d14a6b945a49 ]
    
    skb_copy_bits() could fail, which requires a check on the return
    value.
    
    Signed-off-by: Li Zhong <floridsleeves@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43b9af72751a98cb9c074b170fc244714aeb59d5
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Mon Aug 8 09:46:40 2022 +0100

    arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned fw_level
    
    [ Upstream commit e75d18cecbb3805895d8ed64da4f78575ec96043 ]
    
    Though acpi_find_last_cache_level() always returned signed value and the
    document states it will return any errors caused by lack of a PPTT table,
    it never returned negative values before.
    
    Commit 0c80f9e165f8 ("ACPI: PPTT: Leave the table mapped for the runtime usage")
    however changed it by returning -ENOENT if no PPTT was found. The value
    returned from acpi_find_last_cache_level() is then assigned to unsigned
    fw_level.
    
    It will result in the number of cache leaves calculated incorrectly as
    a huge value which will then cause the following warning from __alloc_pages
    as the order would be great than MAX_ORDER because of incorrect and huge
    cache leaves value.
    
      |  WARNING: CPU: 0 PID: 1 at mm/page_alloc.c:5407 __alloc_pages+0x74/0x314
      |  Modules linked in:
      |  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.19.0-10393-g7c2a8d3ac4c0 #73
      |  pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      |  pc : __alloc_pages+0x74/0x314
      |  lr : alloc_pages+0xe8/0x318
      |  Call trace:
      |   __alloc_pages+0x74/0x314
      |   alloc_pages+0xe8/0x318
      |   kmalloc_order_trace+0x68/0x1dc
      |   __kmalloc+0x240/0x338
      |   detect_cache_attributes+0xe0/0x56c
      |   update_siblings_masks+0x38/0x284
      |   store_cpu_topology+0x78/0x84
      |   smp_prepare_cpus+0x48/0x134
      |   kernel_init_freeable+0xc4/0x14c
      |   kernel_init+0x2c/0x1b4
      |   ret_from_fork+0x10/0x20
    
    Fix the same by changing fw_level to be signed integer and return the
    error from init_cache_level() early in case of error.
    
    Reported-and-Tested-by: Bruno Goncalves <bgoncalv@redhat.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Link: https://lore.kernel.org/r/20220808084640.3165368-1-sudeep.holla@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96d206d0a14ea89bdd896f5d8ed2f29c4f0fee6e
Author: Helge Deller <deller@gmx.de>
Date:   Sun Aug 21 14:49:58 2022 +0200

    parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines
    
    [ Upstream commit 591d2108f3abc4db9f9073cae37cf3591fd250d6 ]
    
    If a 32-bit kernel was compiled for PA2.0 CPUs, it won't be able to run
    on machines with PA1.x CPUs. Add a check and bail out early if a PA1.x
    machine is detected.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 44739b5aae3a0a8be4c45635617c70d74e3a5687
Author: Li Qiong <liqiong@nfschina.com>
Date:   Fri Aug 19 12:15:10 2022 +0800

    parisc: ccio-dma: Handle kmalloc failure in ccio_init_resources()
    
    [ Upstream commit d46c742f827fa2326ab1f4faa1cccadb56912341 ]
    
    As the possible failure of the kmalloc(), it should be better
    to fix this error path, check and return '-ENOMEM' error code.
    
    Signed-off-by: Li Qiong <liqiong@nfschina.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 826b46fd5974113515abe9e4fc8178009a8ce18c
Author: Zhenneng Li <lizhenneng@kylinos.cn>
Date:   Thu Aug 11 15:25:40 2022 +0800

    drm/radeon: add a force flush to delay work when radeon
    
    [ Upstream commit f461950fdc374a3ada5a63c669d997de4600dffe ]
    
    Although radeon card fence and wait for gpu to finish processing current batch rings,
    there is still a corner case that radeon lockup work queue may not be fully flushed,
    and meanwhile the radeon_suspend_kms() function has called pci_set_power_state() to
    put device in D3hot state.
    Per PCI spec rev 4.0 on 5.3.1.4.1 D3hot State.
    > Configuration and Message requests are the only TLPs accepted by a Function in
    > the D3hot state. All other received Requests must be handled as Unsupported Requests,
    > and all received Completions may optionally be handled as Unexpected Completions.
    This issue will happen in following logs:
    Unable to handle kernel paging request at virtual address 00008800e0008010
    CPU 0 kworker/0:3(131): Oops 0
    pc = [<ffffffff811bea5c>]  ra = [<ffffffff81240844>]  ps = 0000 Tainted: G        W
    pc is at si_gpu_check_soft_reset+0x3c/0x240
    ra is at si_dma_is_lockup+0x34/0xd0
    v0 = 0000000000000000  t0 = fff08800e0008010  t1 = 0000000000010000
    t2 = 0000000000008010  t3 = fff00007e3c00000  t4 = fff00007e3c00258
    t5 = 000000000000ffff  t6 = 0000000000000001  t7 = fff00007ef078000
    s0 = fff00007e3c016e8  s1 = fff00007e3c00000  s2 = fff00007e3c00018
    s3 = fff00007e3c00000  s4 = fff00007fff59d80  s5 = 0000000000000000
    s6 = fff00007ef07bd98
    a0 = fff00007e3c00000  a1 = fff00007e3c016e8  a2 = 0000000000000008
    a3 = 0000000000000001  a4 = 8f5c28f5c28f5c29  a5 = ffffffff810f4338
    t8 = 0000000000000275  t9 = ffffffff809b66f8  t10 = ff6769c5d964b800
    t11= 000000000000b886  pv = ffffffff811bea20  at = 0000000000000000
    gp = ffffffff81d89690  sp = 00000000aa814126
    Disabling lock debugging due to kernel taint
    Trace:
    [<ffffffff81240844>] si_dma_is_lockup+0x34/0xd0
    [<ffffffff81119610>] radeon_fence_check_lockup+0xd0/0x290
    [<ffffffff80977010>] process_one_work+0x280/0x550
    [<ffffffff80977350>] worker_thread+0x70/0x7c0
    [<ffffffff80977410>] worker_thread+0x130/0x7c0
    [<ffffffff80982040>] kthread+0x200/0x210
    [<ffffffff809772e0>] worker_thread+0x0/0x7c0
    [<ffffffff80981f8c>] kthread+0x14c/0x210
    [<ffffffff80911658>] ret_from_kernel_thread+0x18/0x20
    [<ffffffff80981e40>] kthread+0x0/0x210
     Code: ad3e0008  43f0074a  ad7e0018  ad9e0020  8c3001e8  40230101
     <88210000> 4821ed21
    So force lockup work queue flush to fix this problem.
    
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Zhenneng Li <lizhenneng@kylinos.cn>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04102568671ee08d9de6a3e70db34cbd5eaa8228
Author: Candice Li <candice.li@amd.com>
Date:   Thu Aug 18 10:47:09 2022 +0800

    drm/amdgpu: Check num_gfx_rings for gfx v9_0 rb setup.
    
    [ Upstream commit c351938350ab9b5e978dede2c321da43de7eb70c ]
    
    No need to set up rb when no gfx rings.
    
    Signed-off-by: Candice Li <candice.li@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c19656cd951a822c0b0f23c91fde08cf313a52ed
Author: YiPeng Chai <YiPeng.Chai@amd.com>
Date:   Fri Aug 12 13:38:34 2022 +0800

    drm/amdgpu: Move psp_xgmi_terminate call from amdgpu_xgmi_remove_device to psp_hw_fini
    
    [ Upstream commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 ]
    
    V1:
    The amdgpu_xgmi_remove_device function will send unload command
    to psp through psp ring to terminate xgmi, but psp ring has been
    destroyed in psp_hw_fini.
    
    V2:
    1. Change the commit title.
    2. Restore amdgpu_xgmi_remove_device to its original calling location.
       Move psp_xgmi_terminate call from amdgpu_xgmi_remove_device to
       psp_hw_fini.
    
    Signed-off-by: YiPeng Chai <YiPeng.Chai@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67bf86ff81fe6e222e4f434251de4b45239444b4
Author: Jeffy Chen <jeffy.chen@rock-chips.com>
Date:   Fri Aug 19 15:28:34 2022 +0800

    drm/gem: Fix GEM handle release errors
    
    [ Upstream commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 ]
    
    Currently we are assuming a one to one mapping between dmabuf and
    GEM handle when releasing GEM handles.
    
    But that is not always true, since we would create extra handles for the
    GEM obj in cases like gem_open() and getfb{,2}().
    
    A similar issue was reported at:
    https://lore.kernel.org/all/20211105083308.392156-1-jay.xu@rock-chips.com/
    
    Another problem is that the imported dmabuf might not always have
    gem_obj->dma_buf set, which would cause leaks in
    drm_gem_remove_prime_handles().
    
    Let's fix these for now by using handle to find the exact map to remove.
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220819072834.17888-1-jeffy.chen@rock-chips.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a175aed83eb4bfcc9697e29c8c14c5379886e955
Author: Guixin Liu <kanie@linux.alibaba.com>
Date:   Tue Aug 2 15:18:49 2022 +0800

    scsi: megaraid_sas: Fix double kfree()
    
    [ Upstream commit 8c499e49240bd93628368c3588975cfb94169b8b ]
    
    When allocating log_to_span fails, kfree(instance->ctrl_context) is called
    twice. Remove redundant call.
    
    Link: https://lore.kernel.org/r/1659424729-46502-1-git-send-email-kanie@linux.alibaba.com
    Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 004e26ef056c5df46f42d15610473c6dc08920e2
Author: Tony Battersby <tonyb@cybernetics.com>
Date:   Thu Jul 7 15:08:01 2022 -0400

    scsi: qla2xxx: Disable ATIO interrupt coalesce for quad port ISP27XX
    
    [ Upstream commit 53661ded2460b414644532de6b99bd87f71987e9 ]
    
    This partially reverts commit d2b292c3f6fd ("scsi: qla2xxx: Enable ATIO
    interrupt handshake for ISP27XX")
    
    For some workloads where the host sends a batch of commands and then
    pauses, ATIO interrupt coalesce can cause some incoming ATIO entries to be
    ignored for extended periods of time, resulting in slow performance,
    timeouts, and aborted commands.
    
    Disable interrupt coalesce and re-enable the dedicated ATIO MSI-X
    interrupt.
    
    Link: https://lore.kernel.org/r/97dcf365-89ff-014d-a3e5-1404c6af511c@cybernetics.com
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Reviewed-by: Nilesh Javali <njavali@marvell.com>
    Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a14f1799ce373b435a2a6253747dedc23ea35abc
Author: Yee Lee <yee.lee@mediatek.com>
Date:   Tue Sep 6 15:03:06 2022 +0800

    Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()"
    
    This reverts commit 23c2d497de21f25898fbea70aeb292ab8acc8c94.
    
    Commit 23c2d497de21 ("mm: kmemleak: take a full lowmem check in
    kmemleak_*_phys()") brought false leak alarms on some archs like arm64
    that does not init pfn boundary in early booting. The final solution
    lands on linux-6.0: commit 0c24e061196c ("mm: kmemleak: add rbtree and
    store physical address for objects allocated with PA").
    
    Revert this commit before linux-6.0. The original issue of invalid PA
    can be mitigated by additional check in devicetree.
    
    The false alarm report is as following: Kmemleak output: (Qemu/arm64)
    unreferenced object 0xffff0000c0170a00 (size 128):
      comm "swapper/0", pid 1, jiffies 4294892404 (age 126.208s)
      hex dump (first 32 bytes):
     62 61 73 65 00 00 00 00 00 00 00 00 00 00 00 00  base............
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<(____ptrval____)>] __kmalloc_track_caller+0x1b0/0x2e4
        [<(____ptrval____)>] kstrdup_const+0x8c/0xc4
        [<(____ptrval____)>] kvasprintf_const+0xbc/0xec
        [<(____ptrval____)>] kobject_set_name_vargs+0x58/0xe4
        [<(____ptrval____)>] kobject_add+0x84/0x100
        [<(____ptrval____)>] __of_attach_node_sysfs+0x78/0xec
        [<(____ptrval____)>] of_core_init+0x68/0x104
        [<(____ptrval____)>] driver_init+0x28/0x48
        [<(____ptrval____)>] do_basic_setup+0x14/0x28
        [<(____ptrval____)>] kernel_init_freeable+0x110/0x178
        [<(____ptrval____)>] kernel_init+0x20/0x1a0
        [<(____ptrval____)>] ret_from_fork+0x10/0x20
    
    This pacth is also applicable to linux-5.17.y/linux-5.18.y/linux-5.19.y
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Yee Lee <yee.lee@mediatek.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13c8f561be38daa37bf57d850d00676e13c779bd
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Aug 31 09:46:12 2022 -0700

    fs: only do a memory barrier for the first set_buffer_uptodate()
    
    commit 2f79cdfe58c13949bbbb65ba5926abfe9561d0ec upstream.
    
    Commit d4252071b97d ("add barriers to buffer_uptodate and
    set_buffer_uptodate") added proper memory barriers to the buffer head
    BH_Uptodate bit, so that anybody who tests a buffer for being up-to-date
    will be guaranteed to actually see initialized state.
    
    However, that commit didn't _just_ add the memory barrier, it also ended
    up dropping the "was it already set" logic that the BUFFER_FNS() macro
    had.
    
    That's conceptually the right thing for a generic "this is a memory
    barrier" operation, but in the case of the buffer contents, we really
    only care about the memory barrier for the _first_ time we set the bit,
    in that the only memory ordering protection we need is to avoid anybody
    seeing uninitialized memory contents.
    
    Any other access ordering wouldn't be about the BH_Uptodate bit anyway,
    and would require some other proper lock (typically BH_Lock or the folio
    lock).  A reader that races with somebody invalidating the buffer head
    isn't an issue wrt the memory ordering, it's a serialization issue.
    
    Now, you'd think that the buffer head operations don't matter in this
    day and age (and I certainly thought so), but apparently some loads
    still end up being heavy users of buffer heads.  In particular, the
    kernel test robot reported that not having this bit access optimization
    in place caused a noticeable direct IO performance regression on ext4:
    
      fxmark.ssd_ext4_no_jnl_DWTL_54_directio.works/sec -26.5% regression
    
    although you presumably need a fast disk and a lot of cores to actually
    notice.
    
    Link: https://lore.kernel.org/all/Yw8L7HTZ%2FdE2%2Fo9C@xsang-OptiPlex-9020/
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Tested-by: Fengwei Yin <fengwei.yin@intel.com>
    Cc: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2946d2ae5ace3ad77f9d1710a1eeb279070b3caf
Author: Stanislaw Gruszka <stf_xl@wp.pl>
Date:   Mon Aug 15 09:37:37 2022 +0200

    wifi: iwlegacy: 4965: corrected fix for potential off-by-one overflow in il4965_rs_fill_link_cmd()
    
    commit 6d0ef7241553f3553a0a2764c69b07892705924c upstream.
    
    This reverts commit a8eb8e6f7159c7c20c0ddac428bde3d110890aa7 as
    it can cause invalid link quality command sent to the firmware
    and address the off-by-one issue by fixing condition of while loop.
    
    Cc: stable@vger.kernel.org
    Fixes: a8eb8e6f7159 ("wifi: iwlegacy: 4965: fix potential off-by-one overflow in il4965_rs_fill_link_cmd()")
    Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20220815073737.GA999388@wp.pl
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 918d9c4a4bdf5205f2fb3f64dddfb56c9a1d01d6
Author: Hyunwoo Kim <imv4bel@gmail.com>
Date:   Wed Sep 7 09:07:14 2022 -0700

    efi: capsule-loader: Fix use-after-free in efi_capsule_write
    
    commit 9cb636b5f6a8cc6d1b50809ec8f8d33ae0c84c95 upstream.
    
    A race condition may occur if the user calls close() on another thread
    during a write() operation on the device node of the efi capsule.
    
    This is a race condition that occurs between the efi_capsule_write() and
    efi_capsule_flush() functions of efi_capsule_fops, which ultimately
    results in UAF.
    
    So, the page freeing process is modified to be done in
    efi_capsule_release() instead of efi_capsule_flush().
    
    Cc: <stable@vger.kernel.org> # v4.9+
    Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
    Link: https://lore.kernel.org/all/20220907102920.GA88602@ubuntu/
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94f0f30b2d9dcc3ac920029b518bff99f5b66f79
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Mon Aug 22 19:20:33 2022 +0200

    efi: libstub: Disable struct randomization
    
    commit 1a3887924a7e6edd331be76da7bf4c1e8eab4b1e upstream.
    
    The EFI stub is a wrapper around the core kernel that makes it look like
    a EFI compatible PE/COFF application to the EFI firmware. EFI
    applications run on top of the EFI runtime, which is heavily based on
    so-called protocols, which are struct types consisting [mostly] of
    function pointer members that are instantiated and recorded in a
    protocol database.
    
    These structs look like the ideal randomization candidates to the
    randstruct plugin (as they only carry function pointers), but of course,
    these protocols are contracts between the firmware that exposes them,
    and the EFI applications (including our stubbed kernel) that invoke
    them. This means that struct randomization for EFI protocols is not a
    great idea, and given that the stub shares very little data with the
    core kernel that is represented as a randomizable struct, we're better
    off just disabling it completely here.
    
    Cc: <stable@vger.kernel.org> # v4.14+
    Reported-by: Daniel Marth <daniel.marth@inso.tuwien.ac.at>
    Tested-by: Daniel Marth <daniel.marth@inso.tuwien.ac.at>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb75efdec8dd0f01ac85c88feafa6e63b34a2521
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Tue Sep 6 21:22:12 2022 +0300

    tty: n_gsm: avoid call of sleeping functions from atomic context
    
    commit 902e02ea9385373ce4b142576eef41c642703955 upstream.
    
    Syzkaller reports the following problem:
    
    BUG: sleeping function called from invalid context at kernel/printk/printk.c:2347
    in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 1105, name: syz-executor423
    3 locks held by syz-executor423/1105:
     #0: ffff8881468b9098 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x22/0x90 drivers/tty/tty_ldisc.c:266
     #1: ffff8881468b9130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: tty_write_lock drivers/tty/tty_io.c:952 [inline]
     #1: ffff8881468b9130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: do_tty_write drivers/tty/tty_io.c:975 [inline]
     #1: ffff8881468b9130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: file_tty_write.constprop.0+0x2a8/0x8e0 drivers/tty/tty_io.c:1118
     #2: ffff88801b06c398 (&gsm->tx_lock){....}-{2:2}, at: gsmld_write+0x5e/0x150 drivers/tty/n_gsm.c:2717
    irq event stamp: 3482
    hardirqs last  enabled at (3481): [<ffffffff81d13343>] __get_reqs_available+0x143/0x2f0 fs/aio.c:946
    hardirqs last disabled at (3482): [<ffffffff87d39722>] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:108 [inline]
    hardirqs last disabled at (3482): [<ffffffff87d39722>] _raw_spin_lock_irqsave+0x52/0x60 kernel/locking/spinlock.c:159
    softirqs last  enabled at (3408): [<ffffffff87e01002>] asm_call_irq_on_stack+0x12/0x20
    softirqs last disabled at (3401): [<ffffffff87e01002>] asm_call_irq_on_stack+0x12/0x20
    Preemption disabled at:
    [<0000000000000000>] 0x0
    CPU: 2 PID: 1105 Comm: syz-executor423 Not tainted 5.10.137-syzkaller #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x107/0x167 lib/dump_stack.c:118
     ___might_sleep.cold+0x1e8/0x22e kernel/sched/core.c:7304
     console_lock+0x19/0x80 kernel/printk/printk.c:2347
     do_con_write+0x113/0x1de0 drivers/tty/vt/vt.c:2909
     con_write+0x22/0xc0 drivers/tty/vt/vt.c:3296
     gsmld_write+0xd0/0x150 drivers/tty/n_gsm.c:2720
     do_tty_write drivers/tty/tty_io.c:1028 [inline]
     file_tty_write.constprop.0+0x502/0x8e0 drivers/tty/tty_io.c:1118
     call_write_iter include/linux/fs.h:1903 [inline]
     aio_write+0x355/0x7b0 fs/aio.c:1580
     __io_submit_one fs/aio.c:1952 [inline]
     io_submit_one+0xf45/0x1a90 fs/aio.c:1999
     __do_sys_io_submit fs/aio.c:2058 [inline]
     __se_sys_io_submit fs/aio.c:2028 [inline]
     __x64_sys_io_submit+0x18c/0x2f0 fs/aio.c:2028
     do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x61/0xc6
    
    The problem happens in the following control flow:
    
    gsmld_write(...)
    spin_lock_irqsave(&gsm->tx_lock, flags) // taken a spinlock on TX data
     con_write(...)
      do_con_write(...)
       console_lock()
        might_sleep() // -> bug
    
    As far as console_lock() might sleep it should not be called with
    spinlock held.
    
    The patch replaces tx_lock spinlock with mutex in order to avoid the
    problem.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 32dd59f ("tty: n_gsm: fix race condition in gsmld_write()")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Link: https://lore.kernel.org/r/20220829131640.69254-3-pchelkin@ispras.ru
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb6cadd2a30fcfd5ec0b3b0207f32ea0630e64b5
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue Sep 6 21:22:11 2022 +0300

    tty: n_gsm: initialize more members at gsm_alloc_mux()
    
    commit 4bb1a53be85fcb1e24c14860e326a00cdd362c28 upstream.
    
    syzbot is reporting use of uninitialized spinlock at gsmld_write() [1], for
    commit 32dd59f ("tty: n_gsm: fix race condition in gsmld_write()")
    allows accessing gsm->tx_lock before gsm_activate_mux() initializes it.
    
    Since object initialization should be done right after allocation in order
    to avoid accessing uninitialized memory, move initialization of
    timer/work/waitqueue/spinlock from gsmld_open()/gsm_activate_mux() to
    gsm_alloc_mux().
    
    Link: https://syzkaller.appspot.com/bug?extid=cf155def4e717db68a12 [1]
    Fixes: 32dd59f ("tty: n_gsm: fix race condition in gsmld_write()")
    Reported-by: syzbot <syzbot+cf155def4e717db68a12@syzkaller.appspotmail.com>
    Tested-by: syzbot <syzbot+cf155def4e717db68a12@syzkaller.appspotmail.com>
    Cc: stable <stable@kernel.org>
    Acked-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Link: https://lore.kernel.org/r/2110618e-57f0-c1ce-b2ad-b6cacef3f60e@I-love.SAKURA.ne.jp
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 186cb020bd3ab1248b5651e11de0d1abc696c65a
Author: SeongJae Park <sj@kernel.org>
Date:   Wed Aug 31 16:58:24 2022 +0000

    xen-blkfront: Cache feature_persistent value before advertisement
    
    commit fe8f65b018effbf473f53af3538d0c1878b8b329 upstream.
    
    Xen blkfront advertises its support of the persistent grants feature
    when it first setting up and when resuming in 'talk_to_blkback()'.
    Then, blkback reads the advertised value when it connects with blkfront
    and decides if it will use the persistent grants feature or not, and
    advertises its decision to blkfront.  Blkfront reads the blkback's
    decision and it also makes the decision for the use of the feature.
    
    Commit 402c43ea6b34 ("xen-blkfront: Apply 'feature_persistent' parameter
    when connect"), however, made the blkfront's read of the parameter for
    disabling the advertisement, namely 'feature_persistent', to be done
    when it negotiate, not when advertise.  Therefore blkfront advertises
    without reading the parameter.  As the field for caching the parameter
    value is zero-initialized, it always advertises as the feature is
    disabled, so that the persistent grants feature becomes always disabled.
    
    This commit fixes the issue by making the blkfront does parmeter caching
    just before the advertisement.
    
    Fixes: 402c43ea6b34 ("xen-blkfront: Apply 'feature_persistent' parameter when connect")
    Cc: <stable@vger.kernel.org> # 5.10.x
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20220831165824.94815-4-sj@kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3d885507b52b28f54770a42d650251876d433a3
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Tue Dec 28 12:35:43 2021 -0500

    NFSD: Fix verifier returned in stable WRITEs
    
    commit f11ad7aa653130b71e2e89bed207f387718216d5 upstream.
    
    RFC 8881 explains the purpose of the write verifier this way:
    
    > The final portion of the result is the field writeverf. This field
    > is the write verifier and is a cookie that the client can use to
    > determine whether a server has changed instance state (e.g., server
    > restart) between a call to WRITE and a subsequent call to either
    > WRITE or COMMIT.
    
    But then it says:
    
    > This cookie MUST be unchanged during a single instance of the
    > NFSv4.1 server and MUST be unique between instances of the NFSv4.1
    > server. If the cookie changes, then the client MUST assume that
    > any data written with an UNSTABLE4 value for committed and an old
    > writeverf in the reply has been lost and will need to be
    > recovered.
    
    RFC 1813 has similar language for NFSv3. NFSv2 does not have a write
    verifier since it doesn't implement the COMMIT procedure.
    
    Since commit 19e0663ff9bc ("nfsd: Ensure sampling of the write
    verifier is atomic with the write"), the Linux NFS server has
    returned a boot-time-based verifier for UNSTABLE WRITEs, but a zero
    verifier for FILE_SYNC and DATA_SYNC WRITEs. FILE_SYNC and DATA_SYNC
    WRITEs are not followed up with a COMMIT, so there's no need for
    clients to compare verifiers for stable writes.
    
    However, by returning a different verifier for stable and unstable
    writes, the above commit puts the Linux NFS server a step farther
    out of compliance with the first MUST above. At least one NFS client
    (FreeBSD) noticed the difference, making this a potential
    regression.
    
    [Removed down_write to fix the conflict in the cherry-pick. The
    down_write functionality was no longer needed there. Upstream commit
    555dbf1a9aac6d3150c8b52fa35f768a692f4eeb titled nfsd: Replace use of
    rwsem with errseq_t removed those and replace it with new functionality
    that was more scalable. This commit is already backported onto 5.10 and
    so removing down_write ensures consistency with that change. Tested by
    compiling and booting successfully. - kochera]
    
    Reported-by: Rick Macklem <rmacklem@uoguelph.ca>
    Link: https://lore.kernel.org/linux-nfs/YQXPR0101MB096857EEACF04A6DF1FC6D9BDD749@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM/T/
    Fixes: 19e0663ff9bc ("nfsd: Ensure sampling of the write verifier is atomic with the write")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Michael Kochera <kochera@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>