commit d330ef1d295df26d38e7c6d8e74462ab8a396527
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 8 08:46:16 2023 +0100

    Linux 5.10.203
    
    Link: https://lore.kernel.org/r/20231205031530.557782248@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20231205043610.004070706@linuxfoundation.org
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20231205183249.651714114@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c957e2b5254fc0fd98216b2284b21956e94e1c9
Author: Saravana Kannan <saravanak@google.com>
Date:   Tue Oct 17 18:38:50 2023 -0700

    driver core: Release all resources during unbind before updating device links
    
    commit 2e84dc37920012b458e9458b19fc4ed33f81bc74 upstream.
    
    This commit fixes a bug in commit 9ed9895370ae ("driver core: Functional
    dependencies tracking support") where the device link status was
    incorrectly updated in the driver unbind path before all the device's
    resources were released.
    
    Fixes: 9ed9895370ae ("driver core: Functional dependencies tracking support")
    Cc: stable <stable@kernel.org>
    Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Closes: https://lore.kernel.org/all/20231014161721.f4iqyroddkcyoefo@pengutronix.de/
    Signed-off-by: Saravana Kannan <saravanak@google.com>
    Cc: Thierry Reding <thierry.reding@gmail.com>
    Cc: Yang Yingliang <yangyingliang@huawei.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Matti Vaittinen <mazziesaccount@gmail.com>
    Cc: James Clark <james.clark@arm.com>
    Acked-by: "Rafael J. Wysocki" <rafael@kernel.org>
    Tested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20231018013851.3303928-1-saravanak@google.com
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2325d3b6b10f17b99d99e66692d2092d66c3eec4
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sun Nov 26 19:36:46 2023 +0100

    r8169: fix deadlock on RTL8125 in jumbo mtu mode
    
    [ Upstream commit 59d395ed606d8df14615712b0cdcdadb2d962175 ]
    
    The original change results in a deadlock if jumbo mtu mode is used.
    Reason is that the phydev lock is held when rtl_reset_work() is called
    here, and rtl_jumbo_config() calls phy_start_aneg() which also tries
    to acquire the phydev lock. Fix this by calling rtl_reset_work()
    asynchronously.
    
    Fixes: 621735f59064 ("r8169: fix rare issue with broken rx after link-down on RTL8125")
    Reported-by: Ian Chen <free122448@hotmail.com>
    Tested-by: Ian Chen <free122448@hotmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/caf6a487-ef8c-4570-88f9-f47a659faf33@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b29e6055db1eae2ace70cbe75cbe36385754a958
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Tue Jan 10 23:03:18 2023 +0100

    r8169: disable ASPM in case of tx timeout
    
    [ Upstream commit 80c0576ef179311f624bc450fede30a89afe9792 ]
    
    There are still single reports of systems where ASPM incompatibilities
    cause tx timeouts. It's not clear whom to blame, so let's disable
    ASPM in case of a tx timeout.
    
    v2:
    - add one-time warning for informing the user
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Link: https://lore.kernel.org/r/92369a92-dc32-4529-0509-11459ba0e391@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 59d395ed606d ("r8169: fix deadlock on RTL8125 in jumbo mtu mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b76708eb9f1f2168c9d06bd9b921d0e1dbe2fae
Author: Wenchao Chen <wenchao.chen@unisoc.com>
Date:   Wed Nov 15 16:34:06 2023 +0800

    mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled
    
    [ Upstream commit 477865af60b2117ceaa1d558e03559108c15c78c ]
    
    With cat regulator_summary, we found that vqmmc was not shutting
    down after the card was pulled.
    
    cat /sys/kernel/debug/regulator/regulator_summary
    1.before fix
    1)Insert SD card
     vddsdio                1    1  0 unknown  3500mV 0mA  1200mV  3750mV
        71100000.mmc-vqmmc  1                         0mA  3500mV  3600mV
    
    2)Pull out the SD card
     vddsdio                1    1  0 unknown  3500mV 0mA  1200mV  3750mV
        71100000.mmc-vqmmc  1                         0mA  3500mV  3600mV
    
    2.after fix
    1)Insert SD cardt
     vddsdio                1    1  0 unknown  3500mV 0mA  1200mV  3750mV
        71100000.mmc-vqmmc  1                         0mA  3500mV  3600mV
    
    2)Pull out the SD card
     vddsdio                0    1  0 unknown  3500mV 0mA  1200mV  3750mV
        71100000.mmc-vqmmc  0                         0mA  3500mV  3600mV
    
    Fixes: fb8bd90f83c4 ("mmc: sdhci-sprd: Add Spreadtrum's initial host controller")
    Signed-off-by: Wenchao Chen <wenchao.chen@unisoc.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20231115083406.7368-1-wenchao.chen@unisoc.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b532bc9b73e603452edfb39bbc50b7d9cbbd939e
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sat Mar 11 23:39:55 2023 +0100

    mmc: core: add helpers mmc_regulator_enable/disable_vqmmc
    
    [ Upstream commit 8d91f3f8ae57e6292142ca89f322e90fa0d6ac02 ]
    
    There's a number of drivers (e.g. dw_mmc, meson-gx, mmci, sunxi) using
    the same mechanism and a private flag vqmmc_enabled to deal with
    enabling/disabling the vqmmc regulator.
    
    Move this to the core and create new helpers mmc_regulator_enable_vqmmc
    and mmc_regulator_disable_vqmmc.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Link: https://lore.kernel.org/r/71586432-360f-9b92-17f6-b05a8a971bc2@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Stable-dep-of: 477865af60b2 ("mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 376fabe3677a767e9aa0dd122cddf80340c2332d
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Nov 3 10:47:18 2023 +0200

    mmc: block: Retry commands in CQE error recovery
    
    [ Upstream commit 8155d1fa3a747baad5caff5f8303321d68ddd48c ]
    
    It is important that MMC_CMDQ_TASK_MGMT command to discard the queue is
    successful because otherwise a subsequent reset might fail to flush the
    cache first.  Retry it and the previous STOP command.
    
    Fixes: 72a5af554df8 ("mmc: core: Add support for handling CQE requests")
    Cc: stable@vger.kernel.org
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Link: https://lore.kernel.org/r/20231103084720.6886-5-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf62a283a779c03c3d97ca149b8368b37441b352
Author: Zheng Yongjun <zhengyongjun3@huawei.com>
Date:   Wed Dec 16 21:17:37 2020 +0800

    mmc: core: convert comma to semicolon
    
    [ Upstream commit 6b1dc6229aecbcb45e8901576684a8c09e25ad7b ]
    
    Replace a comma between expression statements by a semicolon.
    
    Signed-off-by: Zheng Yongjun <zhengyongjun3@huawei.com>
    Link: https://lore.kernel.org/r/20201216131737.14883-1-zhengyongjun3@huawei.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Stable-dep-of: 8155d1fa3a74 ("mmc: block: Retry commands in CQE error recovery")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb785011843ead83a9cb8dcd898371e7a177bed8
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Nov 3 10:47:20 2023 +0200

    mmc: cqhci: Fix task clearing in CQE error recovery
    
    [ Upstream commit 1de1b77982e1a1df9707cb11f9b1789e6b8919d4 ]
    
    If a task completion notification (TCN) is received when there is no
    outstanding task, the cqhci driver issues a "spurious TCN" warning. This
    was observed to happen right after CQE error recovery.
    
    When an error interrupt is received the driver runs recovery logic.
    It halts the controller, clears all pending tasks, and then re-enables
    it. On some platforms, like Intel Jasper Lake, a stale task completion
    event was observed, regardless of the CQHCI_CLEAR_ALL_TASKS bit being set.
    
    This results in either:
    a) Spurious TC completion event for an empty slot.
    b) Corrupted data being passed up the stack, as a result of premature
       completion for a newly added task.
    
    Rather than add a quirk for affected controllers, ensure tasks are cleared
    by toggling CQHCI_ENABLE, which would happen anyway if
    cqhci_clear_all_tasks() timed out. This is simpler and should be safe and
    effective for all controllers.
    
    Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled host")
    Cc: stable@vger.kernel.org
    Reported-by: Kornel Dulęba <korneld@chromium.org>
    Tested-by: Kornel Dulęba <korneld@chromium.org>
    Co-developed-by: Kornel Dulęba <korneld@chromium.org>
    Signed-off-by: Kornel Dulęba <korneld@chromium.org>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Link: https://lore.kernel.org/r/20231103084720.6886-7-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb9ca7cc273b27c0daf387f735d90d4ea52283ee
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Nov 3 10:47:19 2023 +0200

    mmc: cqhci: Warn of halt or task clear failure
    
    [ Upstream commit 35597bdb04ec27ef3b1cea007dc69f8ff5df75a5 ]
    
    A correctly operating controller should successfully halt and clear tasks.
    Failure may result in errors elsewhere, so promote messages from debug to
    warnings.
    
    Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled host")
    Cc: stable@vger.kernel.org
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Link: https://lore.kernel.org/r/20231103084720.6886-6-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e94ededefc423906faa99df72d90d9005f9d33c8
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Nov 3 10:47:16 2023 +0200

    mmc: cqhci: Increase recovery halt timeout
    
    [ Upstream commit b578d5d18e929aa7c007a98cce32657145dde219 ]
    
    Failing to halt complicates the recovery. Additionally, unless the card or
    controller are stuck, which is expected to be very rare, then the halt
    should succeed, so it is better to wait. Set a large timeout.
    
    Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled host")
    Cc: stable@vger.kernel.org
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Link: https://lore.kernel.org/r/20231103084720.6886-3-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2011f06e32ab9b230af332af927e400fc0958397
Author: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Date:   Wed Nov 22 14:41:13 2023 +0100

    cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily
    
    [ Upstream commit 2e4e0984c7d696cc74cf2fd7e7f62997f0e9ebe6 ]
    
    For a 900MHz i.MX6ULL CPU the 792MHz OPP is disabled. There is no
    convincing reason to disable this OPP. If a CPU can run at 900MHz,
    it should also be able to cope with 792MHz. Looking at the voltage
    level of 792MHz in [1] (page 24, table 10. "Operating Ranges") the
    current defined OPP is above the minimum. So the voltage level
    shouldn't be a problem. However in [2] (page 24, table 10.
    "Operating Ranges"), it is not mentioned that 792MHz OPP isn't
    allowed. Change it to only disable 792MHz OPP for i.MX6ULL types
    below 792 MHz.
    
    [1] https://www.nxp.com/docs/en/data-sheet/IMX6ULLIEC.pdf
    [2] https://www.nxp.com/docs/en/data-sheet/IMX6ULLCEC.pdf
    
    Fixes: 0aa9abd4c212 ("cpufreq: imx6q: check speed grades for i.MX6ULL")
    Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    Reviewed-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Fabio Estevam <festevam@denx.de>
    [ Viresh: Edited subject ]
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b35f36ff8f018aadc8d5b29e9d2d4561dfd81bb
Author: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Date:   Fri May 12 17:07:11 2023 +0200

    cpufreq: imx6q: don't warn for disabling a non-existing frequency
    
    [ Upstream commit 11a3b0ac33d95aa84be426e801f800997262a225 ]
    
    It is confusing if a warning is given for disabling a non-existent
    frequency of the operating performance points (OPP). In this case
    the function dev_pm_opp_disable() returns -ENODEV. Check the return
    value and avoid the output of a warning in this case. Avoid code
    duplication by using a separate function.
    
    Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    [ Viresh : Updated commit subject ]
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Stable-dep-of: 2e4e0984c7d6 ("cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 910566a789a2649c45fbb4364be0ebb6c6588beb
Author: Quinn Tran <qutran@marvell.com>
Date:   Mon Oct 30 12:19:12 2023 +0530

    scsi: qla2xxx: Fix system crash due to bad pointer access
    
    [ Upstream commit 19597cad64d608aa8ac2f8aef50a50187a565223 ]
    
    User experiences system crash when running AER error injection.  The
    perturbation causes the abort-all-I/O path to trigger. The driver assumes
    all I/O on this path is FCP only. If there is both NVMe & FCP traffic, a
    system crash happens. Add additional check to see if I/O is FCP or not
    before access.
    
    PID: 999019  TASK: ff35d769f24722c0  CPU: 53  COMMAND: "kworker/53:1"
     0 [ff3f78b964847b58] machine_kexec at ffffffffae86973d
     1 [ff3f78b964847ba8] __crash_kexec at ffffffffae9be29d
     2 [ff3f78b964847c70] crash_kexec at ffffffffae9bf528
     3 [ff3f78b964847c78] oops_end at ffffffffae8282ab
     4 [ff3f78b964847c98] exc_page_fault at ffffffffaf2da502
     5 [ff3f78b964847cc0] asm_exc_page_fault at ffffffffaf400b62
       [exception RIP: qla2x00_abort_srb+444]
       RIP: ffffffffc07b5f8c  RSP: ff3f78b964847d78  RFLAGS: 00010046
       RAX: 0000000000000282  RBX: ff35d74a0195a200  RCX: ff35d76886fd03a0
       RDX: 0000000000000001  RSI: ffffffffc07c5ec8  RDI: ff35d74a0195a200
       RBP: ff35d76913d22080   R8: ff35d7694d103200   R9: ff35d7694d103200
       R10: 0000000100000000  R11: ffffffffb05d6630  R12: 0000000000010000
       R13: ff3f78b964847df8  R14: ff35d768d8754000  R15: ff35d768877248e0
       ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
     6 [ff3f78b964847d70] qla2x00_abort_srb at ffffffffc07b5f84 [qla2xxx]
     7 [ff3f78b964847de0] __qla2x00_abort_all_cmds at ffffffffc07b6238 [qla2xxx]
     8 [ff3f78b964847e38] qla2x00_abort_all_cmds at ffffffffc07ba635 [qla2xxx]
     9 [ff3f78b964847e58] qla2x00_terminate_rport_io at ffffffffc08145eb [qla2xxx]
    10 [ff3f78b964847e70] fc_terminate_rport_io at ffffffffc045987e [scsi_transport_fc]
    11 [ff3f78b964847e88] process_one_work at ffffffffae914f15
    12 [ff3f78b964847ed0] worker_thread at ffffffffae9154c0
    13 [ff3f78b964847f10] kthread at ffffffffae91c456
    14 [ff3f78b964847f50] ret_from_fork at ffffffffae8036ef
    
    Cc: stable@vger.kernel.org
    Fixes: f45bca8c5052 ("scsi: qla2xxx: Fix double scsi_done for abort path")
    Signed-off-by: Quinn Tran <qutran@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20231030064912.37912-1-njavali@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 46a4bf13502ff3ef91623dea2a2a248d9e4c7ee2
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Mon Aug 9 16:03:41 2021 -0700

    scsi: qla2xxx: Use scsi_cmd_to_rq() instead of scsi_cmnd.request
    
    [ Upstream commit c7d6b2c2cd5656b05849afb0de3f422da1742d0f ]
    
    Prepare for removal of the request pointer by using scsi_cmd_to_rq()
    instead. This patch does not change any functionality.
    
    Link: https://lore.kernel.org/r/20210809230355.8186-39-bvanassche@acm.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 19597cad64d6 ("scsi: qla2xxx: Fix system crash due to bad pointer access")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b19fe82b4b92eee5205152b3624f3ef88710b672
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Mon Aug 9 16:03:04 2021 -0700

    scsi: core: Introduce the scsi_cmd_to_rq() function
    
    [ Upstream commit 51f3a478892873337c54068d1185bcd797000a52 ]
    
    The 'request' member of struct scsi_cmnd is superfluous. The struct request
    and struct scsi_cmnd data structures are adjacent and hence the request
    pointer can be derived easily from a scsi_cmnd pointer. Introduce a helper
    function that performs that conversion in a type-safe way. This patch is
    the first step towards removing the request member from struct
    scsi_cmnd. Making that change has the following advantages:
    
     - This is a performance optimization since adding an offset to a pointer
       takes less time than dereferencing a pointer.
    
     - struct scsi_cmnd becomes smaller.
    
    Link: https://lore.kernel.org/r/20210809230355.8186-2-bvanassche@acm.org
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 19597cad64d6 ("scsi: qla2xxx: Fix system crash due to bad pointer access")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c2b6f7e48e381f191f6d057277226b53512d2cbe
Author: Steve French <stfrench@microsoft.com>
Date:   Tue Nov 7 21:38:13 2023 -0600

    smb3: fix caching of ctime on setxattr
    
    [ Upstream commit 5923d6686a100c2b4cabd4c2ca9d5a12579c7614 ]
    
    Fixes xfstest generic/728 which had been failing due to incorrect
    ctime after setxattr and removexattr
    
    Update ctime on successful set of xattr
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9aa2857c6e6bac8ac96e3bf85113d89dfc06f02
Author: Jeff Layton <jlayton@kernel.org>
Date:   Wed Jul 5 14:58:10 2023 -0400

    fs: add ctime accessors infrastructure
    
    [ Upstream commit 9b6304c1d53745c300b86f202d0dcff395e2d2db ]
    
    struct timespec64 has unused bits in the tv_nsec field that can be used
    for other purposes. In future patches, we're going to change how the
    inode->i_ctime is accessed in certain inodes in order to make use of
    them. In order to do that safely though, we'll need to eradicate raw
    accesses of the inode->i_ctime field from the kernel.
    
    Add new accessor functions for the ctime that we use to replace them.
    
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Message-Id: <20230705185812.579118-2-jlayton@kernel.org>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Stable-dep-of: 5923d6686a10 ("smb3: fix caching of ctime on setxattr")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d4237a149e32e0243f44c3e368e59cbac0f0822
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Oct 17 15:40:01 2023 -0400

    drm/amdgpu: don't use ATRM for external devices
    
    [ Upstream commit 432e664e7c98c243fab4c3c95bd463bea3aeed28 ]
    
    The ATRM ACPI method is for fetching the dGPU vbios rom
    image on laptops and all-in-one systems.  It should not be
    used for external add in cards.  If the dGPU is thunderbolt
    connected, don't try ATRM.
    
    v2: pci_is_thunderbolt_attached only works for Intel.  Use
        pdev->external_facing instead.
    v3: dev_is_removable() seems to be what we want
    
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2925
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2df04d76c97dfc7ec0c00a949d13049e48790903
Author: Rajat Jain <rajatja@google.com>
Date:   Mon May 24 10:18:11 2021 -0700

    driver core: Move the "removable" attribute from USB to core
    
    [ Upstream commit 70f400d4d957c2453c8689552ff212bc59f88938 ]
    
    Move the "removable" attribute from USB to core in order to allow it to be
    supported by other subsystem / buses. Individual buses that want to support
    this attribute can populate the removable property of the device while
    enumerating it with the 3 possible values -
     - "unknown"
     - "fixed"
     - "removable"
    Leaving the field unchanged (i.e. "not supported") would mean that the
    attribute would not show up in sysfs for that device. The UAPI (location,
    symantics etc) for the attribute remains unchanged.
    
    Move the "removable" attribute from USB to the device core so it can be
    used by other subsystems / buses.
    
    By default, devices do not have a "removable" attribute in sysfs.
    
    If a subsystem or bus driver wants to support a "removable" attribute, it
    should call device_set_removable() before calling device_register() or
    device_add(), e.g.:
    
        device_set_removable(dev, DEVICE_REMOVABLE);
        device_register(dev);
    
    The possible values and the resulting sysfs attribute contents are:
    
        DEVICE_REMOVABLE_UNKNOWN  ->  "unknown"
        DEVICE_REMOVABLE          ->  "removable"
        DEVICE_FIXED              ->  "fixed"
    
    Convert the USB "removable" attribute to use this new device core
    functionality.  There should be no user-visible change in the location or
    semantics of attribute for USB devices.
    
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Rajat Jain <rajatja@google.com>
    Link: https://lore.kernel.org/r/20210524171812.18095-1-rajatja@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: 432e664e7c98 ("drm/amdgpu: don't use ATRM for external devices")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01fbfcd8105c3ccb5ba51699a3e79182d5705da0
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Thu Oct 5 14:15:58 2023 +0300

    ima: annotate iint mutex to avoid lockdep false positive warnings
    
    [ Upstream commit e044374a8a0a99e46f4e6d6751d3042b6d9cc12e ]
    
    It is not clear that IMA should be nested at all, but as long is it
    measures files both on overlayfs and on underlying fs, we need to
    annotate the iint mutex to avoid lockdep false positives related to
    IMA + overlayfs, same as overlayfs annotates the inode mutex.
    
    Reported-and-tested-by: syzbot+b42fe626038981fb7bfa@syzkaller.appspotmail.com
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a3322a35f740e189e55a697b4d6548fcf61f09c
Author: Helge Deller <deller@gmx.de>
Date:   Fri Oct 27 13:36:48 2023 +0200

    fbdev: stifb: Make the STI next font pointer a 32-bit signed offset
    
    [ Upstream commit 8a32aa17c1cd48df1ddaa78e45abcb8c7a2220d6 ]
    
    The pointer to the next STI font is actually a signed 32-bit
    offset. With this change the 64-bit kernel will correctly subract
    the (signed 32-bit) offset instead of adding a (unsigned 32-bit)
    offset. It has no effect on 32-bit kernels.
    
    This fixes the stifb driver with a 64-bit kernel on qemu.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15bc430fc176e918f859579aaeed0280d48e8ff5
Author: Siddharth Vadapalli <s-vadapalli@ti.com>
Date:   Fri Oct 20 17:32:48 2023 +0530

    misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support
    
    [ Upstream commit 8293703a492ae97c86af27c75b76e6239ec86483 ]
    
    Add DEVICE_ID for J721S2 and enable support for endpoints configured
    with this DEVICE_ID in the pci_endpoint_test driver.
    
    Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
    Cc: stable <stable@kernel.org>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Link: https://lore.kernel.org/r/20231020120248.3168406-1-s-vadapalli@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6128ad78771bb6c7c59a1ef66945726c1361ea6
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Wed Aug 11 18:03:36 2021 +0530

    misc: pci_endpoint_test: Add deviceID for AM64 and J7200
    
    [ Upstream commit 7c52009d94ab561e70cb72e007a6076f20451f85 ]
    
    Add device ID specific to AM64 and J7200 in pci_endpoint_test so that
    endpoints configured with those deviceIDs can use pci_endpoint_test
    driver.
    
    Link: https://lore.kernel.org/r/20210811123336.31357-6-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Stable-dep-of: 8293703a492a ("misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c922282d11b31f4d6baa65e20be75a0bbca14669
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Tue Oct 24 10:15:19 2023 +0200

    s390/cmma: fix detection of DAT pages
    
    [ Upstream commit 44d93045247661acbd50b1629e62f415f2747577 ]
    
    If the cmma no-dat feature is available the kernel page tables are walked
    to identify and mark all pages which are used for address translation (all
    region, segment, and page tables). In a subsequent loop all other pages are
    marked as "no-dat" pages with the ESSA instruction.
    
    This information is visible to the hypervisor, so that the hypervisor can
    optimize purging of guest TLB entries. The initial loop however is
    incorrect: only the first three of the four pages which belong to segment
    and region tables will be marked as being used for DAT. The last page is
    incorrectly marked as no-dat.
    
    This can result in incorrect guest TLB flushes.
    
    Fix this by simply marking all four pages.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03e07092c6ce8e9ae77141e42d65bf4b641fec8d
Author: Alexander Gordeev <agordeev@linux.ibm.com>
Date:   Mon Mar 29 18:32:55 2021 +0200

    s390/mm: fix phys vs virt confusion in mark_kernel_pXd() functions family
    
    [ Upstream commit 3784231b1e091857bd129fd9658a8b3cedbdcd58 ]
    
    Due to historical reasons mark_kernel_pXd() functions
    misuse the notion of physical vs virtual addresses
    difference.
    
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Stable-dep-of: 44d930452476 ("s390/cmma: fix detection of DAT pages")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb420e35571cb056df9bd86b00f7961b878ba7f7
Author: Mark Hasemeyer <markhas@chromium.org>
Date:   Fri Oct 20 14:59:53 2023 -0600

    ASoC: SOF: sof-pci-dev: Fix community key quirk detection
    
    [ Upstream commit 7dd692217b861a8292ff8ac2c9d4458538fd6b96 ]
    
    Some Chromebooks do not populate the product family DMI value resulting
    in firmware load failures.
    
    Add another quirk detection entry that looks for "Google" in the BIOS
    version. Theoretically, PRODUCT_FAMILY could be replaced with
    BIOS_VERSION, but it is left as a quirk to be conservative.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mark Hasemeyer <markhas@chromium.org>
    Acked-by: Curtis Malainey <cujomalainey@chromium.org>
    Link: https://lore.kernel.org/r/20231020145953.v1.1.Iaf5702dc3f8af0fd2f81a22ba2da1a5e15b3604c@changeid
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b37e1fbe6d305a2fedeb9471305218b5bfec5cc4
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Thu Apr 21 11:33:55 2022 -0500

    ASoC: SOF: sof-pci-dev: don't use the community key on APL Chromebooks
    
    [ Upstream commit d81e4ba5ef1c1033b6c720b22fc99feeb71e71a0 ]
    
    As suggested by MrChromebox, the SOF driver can be used with the SOF
    firmware binary signed with the production key. This patch adds an
    additional check for the ApolloLake SoC before modifying the default
    firmware path.
    
    Note that ApolloLake Chromebooks officially ship with the Skylake
    driver, so to use SOF the users have to explicitly opt-in with
    'options intel-dspcfg dsp_driver=3'. There is no plan to change the
    default selection.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Link: https://lore.kernel.org/r/20220421163358.319489-2-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 7dd692217b86 ("ASoC: SOF: sof-pci-dev: Fix community key quirk detection")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a79fcb743f77cf9cc22041e3788a09428dd2a8e
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Thu Apr 14 13:48:08 2022 -0500

    ASoC: SOF: sof-pci-dev: add parameter to override topology filename
    
    [ Upstream commit 772627acfeb0e670ede534b7d5502dae9668d3ee ]
    
    The existing 'tplg_path' module parameter can be used to load
    alternate firmware files, be it for development or to handle
    OEM-specific or board-specific releases. However the topology filename
    is either hard-coded in machine descriptors or modified by specific
    DMI-quirks.
    
    For additional flexibility, this patch adds the 'tplg_filename' module
    parameter to override topology names.
    
    To avoid any confusion between DMI- and parameter-override, a variable
    rename is added.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
    Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20220414184817.362215-7-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 7dd692217b86 ("ASoC: SOF: sof-pci-dev: Fix community key quirk detection")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4aeb3320d70ecea66df0e01203c7fd4375f23a80
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Fri Nov 19 17:13:27 2021 -0600

    ASoC: SOF: sof-pci-dev: use community key on all Up boards
    
    [ Upstream commit 405e52f412b85b581899f5e1b82d25a7c8959d89 ]
    
    There are already 3 versions of the Up boards with support for the SOF
    community key (ApolloLake, WhiskyLake, TigerLake). Rather than
    continue to add quirks for each version, let's add a wildcard.
    
    For WHL and TGL, the authentication supports both the SOF community
    key and the firmware signed with the Intel production key. Given two
    choices, the community key is the preferred option to allow developers
    to sign their own firmware. The firmware signed with production key
    can still be selected if needed with a kernel module
    option (snd-sof-pci.fw_path="intel/sof")
    
    Tested-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20211119231327.211946-1-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 7dd692217b86 ("ASoC: SOF: sof-pci-dev: Fix community key quirk detection")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6368a32d26a382570bedad9609a654cc3dcd815b
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Oct 18 16:33:22 2021 +0200

    ASoC: Intel: Move soc_intel_is_foo() helpers to a generic header
    
    [ Upstream commit cd45c9bf8b43cd387e167cf166ae5c517f56d658 ]
    
    The soc_intel_is_foo() helpers from
    sound/soc/intel/common/soc-intel-quirks.h are useful outside of the
    sound subsystem too.
    
    Move these to include/linux/platform_data/x86/soc.h, so that
    other code can use them too.
    
    Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Acked-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20211018143324.296961-2-hdegoede@redhat.com
    Stable-dep-of: 7dd692217b86 ("ASoC: SOF: sof-pci-dev: Fix community key quirk detection")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e52b19d92e1cc318bba7e1522bf9b86d99411c1
Author: Steve French <stfrench@microsoft.com>
Date:   Mon Oct 16 12:18:23 2023 -0500

    smb3: fix touch -h of symlink
    
    [ Upstream commit 475efd9808a3094944a56240b2711349e433fb66 ]
    
    For example:
          touch -h -t 02011200 testfile
    where testfile is a symlink would not change the timestamp, but
          touch -t 02011200 testfile
    does work to change the timestamp of the target
    
    Suggested-by: David Howells <dhowells@redhat.com>
    Reported-by: Micah Veilleux <micah.veilleux@iba-group.com>
    Closes: https://bugzilla.samba.org/show_bug.cgi?id=14476
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 889c84e2b200cacefa965515b3d60aff1ffb0869
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Nov 28 10:04:37 2023 +0200

    net: ravb: Start TX queues after HW initialization succeeded
    
    [ Upstream commit 6f32c086602050fc11157adeafaa1c1eb393f0af ]
    
    ravb_phy_start() may fail. If that happens, the TX queues will remain
    started. Thus, move the netif_tx_start_all_queues() after PHY is
    successfully initialized.
    
    Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d428cda38e86f9e3e4e420e044754b770edae45
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Nov 28 10:04:35 2023 +0200

    net: ravb: Use pm_runtime_resume_and_get()
    
    [ Upstream commit 88b74831faaee455c2af380382d979fc38e79270 ]
    
    pm_runtime_get_sync() may return an error. In case it returns with an error
    dev->power.usage_count needs to be decremented. pm_runtime_resume_and_get()
    takes care of this. Thus use it.
    
    Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f78d0f301395018162f3916a9ce57c41c8898891
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Nov 27 21:24:20 2023 +0900

    ravb: Fix races between ravb_tx_timeout_work() and net related ops
    
    [ Upstream commit 9870257a0a338cd8d6c1cddab74e703f490f6779 ]
    
    Fix races between ravb_tx_timeout_work() and functions of net_device_ops
    and ethtool_ops by using rtnl_trylock() and rtnl_unlock(). Note that
    since ravb_close() is under the rtnl lock and calls cancel_work_sync(),
    ravb_tx_timeout_work() should calls rtnl_trylock(). Otherwise, a deadlock
    may happen in ravb_tx_timeout_work() like below:
    
    CPU0                    CPU1
                            ravb_tx_timeout()
                            schedule_work()
    ...
    __dev_close_many()
    // Under rtnl lock
    ravb_close()
    cancel_work_sync()
    // Waiting
                            ravb_tx_timeout_work()
                            rtnl_lock()
                            // This is possible to cause a deadlock
    
    If rtnl_trylock() fails, rescheduling the work with sleep for 1 msec.
    
    Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Link: https://lore.kernel.org/r/20231127122420.3706751-1-yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a36e00e957a2f565e8e762a347cca9bbfaff5522
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sun Nov 26 23:01:02 2023 +0100

    r8169: prevent potential deadlock in rtl8169_close
    
    [ Upstream commit 91d3d149978ba7b238198dd80e4b823756aa7cfa ]
    
    ndo_stop() is RTNL-protected by net core, and the worker function takes
    RTNL as well. Therefore we will deadlock when trying to execute a
    pending work synchronously. To fix this execute any pending work
    asynchronously. This will do no harm because netif_running() is false
    in ndo_stop(), and therefore the work function is effectively a no-op.
    However we have to ensure that no task is running or pending after
    rtl_remove_one(), therefore add a call to cancel_work_sync().
    
    Fixes: abe5fc42f9ce ("r8169: use RTNL to protect critical sections")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/12395867-1d17-4cac-aa7d-c691938fcddf@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a909c119827b452fc62d366d3ffd19d5d0acb71
Author: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Date:   Thu May 19 09:47:28 2022 -0400

    Revert "workqueue: remove unused cancel_work()"
    
    [ Upstream commit 73b4b53276a1d6290cd4f47dbbc885b6e6e59ac6 ]
    
    This reverts commit 6417250d3f894e66a68ba1cd93676143f2376a6f.
    
    amdpgu need this function in order to prematurly stop pending
    reset works when another reset work already in progress.
    
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
    Reviewed-by: Lai Jiangshan<jiangshanlai@gmail.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 91d3d149978b ("r8169: prevent potential deadlock in rtl8169_close")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72ce3379cd5e6105657dcb23576e80ba5d276f35
Author: Geetha sowjanya <gakula@marvell.com>
Date:   Sat Nov 25 22:04:02 2023 +0530

    octeontx2-pf: Fix adding mbox work queue entry when num_vfs > 64
    
    [ Upstream commit 51597219e0cd5157401d4d0ccb5daa4d9961676f ]
    
    When more than 64 VFs are enabled for a PF then mbox communication
    between VF and PF is not working as mbox work queueing for few VFs
    are skipped due to wrong calculation of VF numbers.
    
    Fixes: d424b6c02415 ("octeontx2-pf: Enable SRIOV and added VF mbox handling")
    Signed-off-by: Geetha sowjanya <gakula@marvell.com>
    Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
    Link: https://lore.kernel.org/r/1700930042-5400-1-git-send-email-sbhatta@marvell.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef7af2105a259ec2f31471287ada376e3ee2f4f6
Author: Furong Xu <0x1207@gmail.com>
Date:   Sat Nov 25 14:01:26 2023 +0800

    net: stmmac: xgmac: Disable FPE MMC interrupts
    
    [ Upstream commit e54d628a2721bfbb002c19f6e8ca6746cec7640f ]
    
    Commit aeb18dd07692 ("net: stmmac: xgmac: Disable MMC interrupts
    by default") tries to disable MMC interrupts to avoid a storm of
    unhandled interrupts, but leaves the FPE(Frame Preemption) MMC
    interrupts enabled, FPE MMC interrupts can cause the same problem.
    Now we mask FPE TX and RX interrupts to disable all MMC interrupts.
    
    Fixes: aeb18dd07692 ("net: stmmac: xgmac: Disable MMC interrupts by default")
    Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
    Signed-off-by: Furong Xu <0x1207@gmail.com>
    Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Link: https://lore.kernel.org/r/20231125060126.2328690-1-0x1207@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f18bcace1294ac8ce7092d4b42ae9d0abaa1d9bc
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Nov 24 12:15:22 2023 -0500

    selftests/net: mptcp: fix uninitialized variable warnings
    
    [ Upstream commit 00a4f8fd9c750f20d8fd4535c71c9caa7ef5ff2f ]
    
    Same init_rng() in both tests. The function reads /dev/urandom to
    initialize srand(). In case of failure, it falls back onto the
    entropy in the uninitialized variable. Not sure if this is on purpose.
    But failure reading urandom should be rare, so just fail hard. While
    at it, convert to getrandom(). Which man 4 random suggests is simpler
    and more robust.
    
        mptcp_inq.c:525:6:
        mptcp_connect.c:1131:6:
    
        error: variable 'foo' is used uninitialized
        whenever 'if' condition is false
        [-Werror,-Wsometimes-uninitialized]
    
    Fixes: 048d19d444be ("mptcp: add basic kselftest for mptcp")
    Fixes: b51880568f20 ("selftests: mptcp: add inq test case")
    Cc: Florian Westphal <fw@strlen.de>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    
    ----
    
    When input is randomized because this is expected to meaningfully
    explore edge cases, should we also add
    1. logging the random seed to stdout and
    2. adding a command line argument to replay from a specific seed
    I can do this in net-next, if authors find it useful in this case.
    Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
    
    Link: https://lore.kernel.org/r/20231124171645.1011043-5-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb1644f9f005492a67be395a810aacda151ac6e4
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Nov 24 12:15:19 2023 -0500

    selftests/net: ipsec: fix constant out of range
    
    [ Upstream commit 088559815477c6f623a5db5993491ddd7facbec7 ]
    
    Fix a small compiler warning.
    
    nr_process must be a signed long: it is assigned a signed long by
    strtol() and is compared against LONG_MIN and LONG_MAX.
    
    ipsec.c:2280:65:
        error: result of comparison of constant -9223372036854775808
        with expression of type 'unsigned int' is always false
        [-Werror,-Wtautological-constant-out-of-range-compare]
    
      if ((errno == ERANGE && (nr_process == LONG_MAX || nr_process == LONG_MIN))
    
    Fixes: bc2652b7ae1e ("selftest/net/xfrm: Add test for ipsec tunnel")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
    Link: https://lore.kernel.org/r/20231124171645.1011043-2-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe7fd9c209e8c27c97d3173f81ed10042176fb01
Author: Ioana Ciornei <ioana.ciornei@nxp.com>
Date:   Fri Nov 24 12:28:04 2023 +0200

    dpaa2-eth: increase the needed headroom to account for alignment
    
    [ Upstream commit f422abe3f23d483cf01f386819f26fb3fe0dbb2b ]
    
    Increase the needed headroom to account for a 64 byte alignment
    restriction which, with this patch, we make mandatory on the Tx path.
    The case in which the amount of headroom needed is not available is
    already handled by the driver which instead sends a S/G frame with the
    first buffer only holding the SW and HW annotation areas.
    
    Without this patch, we can empirically see data corruption happening
    between Tx and Tx confirmation which sometimes leads to the SW
    annotation area being overwritten.
    
    Since this is an old IP where the hardware team cannot help to
    understand the underlying behavior, we make the Tx alignment mandatory
    for all frames to avoid the crash on Tx conf. Also, remove the comment
    that suggested that this is just an optimization.
    
    This patch also sets the needed_headroom net device field to the usual
    value that the driver would need on the Tx path:
            - 64 bytes for the software annotation area
            - 64 bytes to account for a 64 byte aligned buffer address
    
    Fixes: 6e2387e8f19e ("staging: fsl-dpaa2/eth: Add Freescale DPAA2 Ethernet driver")
    Closes: https://lore.kernel.org/netdev/aa784d0c-85eb-4e5d-968b-c8f74fa86be6@gin.de/
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 772fe1da9a8d4dcd8993abaecbde04789c52a4c2
Author: Zhengchao Shao <shaozhengchao@huawei.com>
Date:   Thu Nov 23 15:13:14 2023 +0800

    ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet
    
    [ Upstream commit e2b706c691905fe78468c361aaabc719d0a496f1 ]
    
    When I perform the following test operations:
    1.ip link add br0 type bridge
    2.brctl addif br0 eth0
    3.ip addr add 239.0.0.1/32 dev eth0
    4.ip addr add 239.0.0.1/32 dev br0
    5.ip addr add 224.0.0.1/32 dev br0
    6.while ((1))
        do
            ifconfig br0 up
            ifconfig br0 down
        done
    7.send IGMPv2 query packets to port eth0 continuously. For example,
    ./mausezahn ethX -c 0 "01 00 5e 00 00 01 00 72 19 88 aa 02 08 00 45 00 00
    1c 00 01 00 00 01 02 0e 7f c0 a8 0a b7 e0 00 00 01 11 64 ee 9b 00 00 00 00"
    
    The preceding tests may trigger the refcnt uaf issue of the mc list. The
    stack is as follows:
            refcount_t: addition on 0; use-after-free.
            WARNING: CPU: 21 PID: 144 at lib/refcount.c:25 refcount_warn_saturate (lib/refcount.c:25)
            CPU: 21 PID: 144 Comm: ksoftirqd/21 Kdump: loaded Not tainted 6.7.0-rc1-next-20231117-dirty #80
            Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
            RIP: 0010:refcount_warn_saturate (lib/refcount.c:25)
            RSP: 0018:ffffb68f00657910 EFLAGS: 00010286
            RAX: 0000000000000000 RBX: ffff8a00c3bf96c0 RCX: ffff8a07b6160908
            RDX: 00000000ffffffd8 RSI: 0000000000000027 RDI: ffff8a07b6160900
            RBP: ffff8a00cba36862 R08: 0000000000000000 R09: 00000000ffff7fff
            R10: ffffb68f006577c0 R11: ffffffffb0fdcdc8 R12: ffff8a00c3bf9680
            R13: ffff8a00c3bf96f0 R14: 0000000000000000 R15: ffff8a00d8766e00
            FS:  0000000000000000(0000) GS:ffff8a07b6140000(0000) knlGS:0000000000000000
            CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
            CR2: 000055f10b520b28 CR3: 000000039741a000 CR4: 00000000000006f0
            Call Trace:
            <TASK>
            igmp_heard_query (net/ipv4/igmp.c:1068)
            igmp_rcv (net/ipv4/igmp.c:1132)
            ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205)
            ip_local_deliver_finish (net/ipv4/ip_input.c:234)
            __netif_receive_skb_one_core (net/core/dev.c:5529)
            netif_receive_skb_internal (net/core/dev.c:5729)
            netif_receive_skb (net/core/dev.c:5788)
            br_handle_frame_finish (net/bridge/br_input.c:216)
            nf_hook_bridge_pre (net/bridge/br_input.c:294)
            __netif_receive_skb_core (net/core/dev.c:5423)
            __netif_receive_skb_list_core (net/core/dev.c:5606)
            __netif_receive_skb_list (net/core/dev.c:5674)
            netif_receive_skb_list_internal (net/core/dev.c:5764)
            napi_gro_receive (net/core/gro.c:609)
            e1000_clean_rx_irq (drivers/net/ethernet/intel/e1000/e1000_main.c:4467)
            e1000_clean (drivers/net/ethernet/intel/e1000/e1000_main.c:3805)
            __napi_poll (net/core/dev.c:6533)
            net_rx_action (net/core/dev.c:6735)
            __do_softirq (kernel/softirq.c:554)
            run_ksoftirqd (kernel/softirq.c:913)
            smpboot_thread_fn (kernel/smpboot.c:164)
            kthread (kernel/kthread.c:388)
            ret_from_fork (arch/x86/kernel/process.c:153)
            ret_from_fork_asm (arch/x86/entry/entry_64.S:250)
            </TASK>
    
    The root causes are as follows:
    Thread A                                        Thread B
    ...                                             netif_receive_skb
    br_dev_stop                                     ...
        br_multicast_leave_snoopers                 ...
            __ip_mc_dec_group                       ...
                __igmp_group_dropped                igmp_rcv
                    igmp_stop_timer                     igmp_heard_query         //ref = 1
                    ip_ma_put                               igmp_mod_timer
                        refcount_dec_and_test                   igmp_start_timer //ref = 0
                            ...                                     refcount_inc //ref increases from 0
    When the device receives an IGMPv2 Query message, it starts the timer
    immediately, regardless of whether the device is running. If the device is
    down and has left the multicast group, it will cause the mc list refcount
    uaf issue.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ef94ec8e52eaf7b9abc5b5f8f5b911751112223
Author: Niklas Neronin <niklas.neronin@linux.intel.com>
Date:   Wed Nov 15 14:13:25 2023 +0200

    usb: config: fix iteration issue in 'usb_get_bos_descriptor()'
    
    [ Upstream commit 974bba5c118f4c2baf00de0356e3e4f7928b4cbc ]
    
    The BOS descriptor defines a root descriptor and is the base descriptor for
    accessing a family of related descriptors.
    
    Function 'usb_get_bos_descriptor()' encounters an iteration issue when
    skipping the 'USB_DT_DEVICE_CAPABILITY' descriptor type. This results in
    the same descriptor being read repeatedly.
    
    To address this issue, a 'goto' statement is introduced to ensure that the
    pointer and the amount read is updated correctly. This ensures that the
    function iterates to the next descriptor instead of reading the same
    descriptor repeatedly.
    
    Cc: stable@vger.kernel.org
    Fixes: 3dd550a2d365 ("USB: usbcore: Fix slab-out-of-bounds bug during device reset")
    Signed-off-by: Niklas Neronin <niklas.neronin@linux.intel.com>
    Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20231115121325.471454-1-niklas.neronin@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 713530d3c8f13bbb3fda56159e7ed1236a8b4563
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Nov 2 14:13:19 2022 -0400

    USB: core: Change configuration warnings to notices
    
    [ Upstream commit 7a09c1269702db8eccb6f718da2b00173e1e0034 ]
    
    It has been pointed out that the kernel log messages warning about
    problems in USB configuration and related descriptors are vexing for
    users.  The warning log level has a fairly high priority, but the user
    can do nothing to fix the underlying errors in the device's firmware.
    
    To reduce the amount of useless information produced by tools that
    filter high-priority log messages, we can change these warnings to
    notices, i.e., change dev_warn() to dev_notice().  The same holds for
    a few messages that currently use dev_err(): Unless they indicate a
    failure that might make a device unusable (such as inability to
    transfer a config descriptor), change them to dev_notice() also.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216630
    Suggested-by: Artem S. Tashkinov <aros@gmx.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/Y2KzPx0h6z1jXCuN@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: 974bba5c118f ("usb: config: fix iteration issue in 'usb_get_bos_descriptor()'")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae6e41066e6e2e14907ba34ee610b04160ab59c5
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Sun Nov 19 08:23:41 2023 -0800

    hv_netvsc: fix race of netvsc and VF register_netdevice
    
    [ Upstream commit d30fb712e52964f2cf9a9c14cf67078394044837 ]
    
    The rtnl lock also needs to be held before rndis_filter_device_add()
    which advertises nvsp_2_vsc_capability / sriov bit, and triggers
    VF NIC offering and registering. If VF NIC finished register_netdev()
    earlier it may cause name based config failure.
    
    To fix this issue, move the call to rtnl_lock() before
    rndis_filter_device_add(), so VF will be registered later than netvsc
    / synthetic NIC, and gets a name numbered (ethX) after netvsc.
    
    Cc: stable@vger.kernel.org
    Fixes: e04e7a7bbd4b ("hv_netvsc: Fix a deadlock by getting rtnl lock earlier in netvsc_probe()")
    Reported-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4937fb36bbb8cf91d43a4db38be6dea5b7f275ff
Author: Max Nguyen <maxwell.nguyen@hp.com>
Date:   Sun Sep 17 22:21:53 2023 -0700

    Input: xpad - add HyperX Clutch Gladiate Support
    
    commit e28a0974d749e5105d77233c0a84d35c37da047e upstream.
    
    Add HyperX controller support to xpad_device and xpad_table.
    
    Suggested-by: Chris Toledanes <chris.toledanes@hp.com>
    Reviewed-by: Carl Ng <carl.ng@hp.com>
    Signed-off-by: Max Nguyen <maxwell.nguyen@hp.com>
    Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
    Link: https://lore.kernel.org/r/20230906231514.4291-1-hphyperxdev@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c4d5c8556eef372bd58391be4dd5d8bbde0b85a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Nov 21 13:38:33 2023 +0000

    btrfs: make error messages more clear when getting a chunk map
    
    commit 7d410d5efe04e42a6cd959bfe6d59d559fdf8b25 upstream.
    
    When getting a chunk map, at btrfs_get_chunk_map(), we do some sanity
    checks to verify we found a chunk map and that map found covers the
    logical address the caller passed in. However the messages aren't very
    clear in the sense that don't mention the issue is with a chunk map and
    one of them prints the 'length' argument as if it were the end offset of
    the requested range (while the in the string format we use %llu-%llu
    which suggests a range, and the second %llu-%llu is actually a range for
    the chunk map). So improve these two details in the error messages.
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74ff16c84433a135fd86281b8eb75c8f4b042a91
Author: Jann Horn <jannh@google.com>
Date:   Fri Nov 24 17:48:31 2023 +0100

    btrfs: send: ensure send_fd is writable
    
    commit 0ac1d13a55eb37d398b63e6ff6db4a09a2c9128c upstream.
    
    kernel_write() requires the caller to ensure that the file is writable.
    Let's do that directly after looking up the ->send_fd.
    
    We don't need a separate bailout path because the "out" path already
    does fput() if ->send_filp is non-NULL.
    
    This has no security impact for two reasons:
    
     - the ioctl requires CAP_SYS_ADMIN
     - __kernel_write() bails out on read-only files - but only since 5.8,
       see commit a01ac27be472 ("fs: check FMODE_WRITE in __kernel_write")
    
    Reported-and-tested-by: syzbot+12e098239d20385264d3@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=12e098239d20385264d3
    Fixes: 31db9f7c23fb ("Btrfs: introduce BTRFS_IOC_SEND for btrfs send/receive")
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: Jann Horn <jannh@google.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12a0ec5ed7cf61df1f1af85241b46647f4d76533
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Nov 21 13:38:32 2023 +0000

    btrfs: fix off-by-one when checking chunk map includes logical address
    
    commit 5fba5a571858ce2d787fdaf55814e42725bfa895 upstream.
    
    At btrfs_get_chunk_map() we get the extent map for the chunk that contains
    the given logical address stored in the 'logical' argument. Then we do
    sanity checks to verify the extent map contains the logical address. One
    of these checks verifies if the extent map covers a range with an end
    offset behind the target logical address - however this check has an
    off-by-one error since it will consider an extent map whose start offset
    plus its length matches the target logical address as inclusive, while
    the fact is that the last byte it covers is behind the target logical
    address (by 1).
    
    So fix this condition by using '<=' rather than '<' when comparing the
    extent map's "start + length" against the target logical address.
    
    CC: stable@vger.kernel.org # 4.14+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baaab02a8c0b28828e71f99bf00d40c0aae6a067
Author: Bragatheswaran Manickavel <bragathemanick0908@gmail.com>
Date:   Sat Nov 18 14:40:12 2023 +0530

    btrfs: ref-verify: fix memory leaks in btrfs_ref_tree_mod()
    
    commit f91192cd68591c6b037da345bc9fcd5e50540358 upstream.
    
    In btrfs_ref_tree_mod(), when !parent 're' was allocated through
    kmalloc(). In the following code, if an error occurs, the execution will
    be redirected to 'out' or 'out_unlock' and the function will be exited.
    However, on some of the paths, 're' are not deallocated and may lead to
    memory leaks.
    
    For example: lookup_block_entry() for 'be' returns NULL, the out label
    will be invoked. During that flow ref and 'ra' are freed but not 're',
    which can potentially lead to a memory leak.
    
    CC: stable@vger.kernel.org # 5.10+
    Reported-and-tested-by: syzbot+d66de4cbf532749df35f@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=d66de4cbf532749df35f
    Signed-off-by: Bragatheswaran Manickavel <bragathemanick0908@gmail.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d6c2238acf8043ec71cdede3542efd54e02798a
Author: Qu Wenruo <wqu@suse.com>
Date:   Thu Nov 2 07:54:50 2023 +1030

    btrfs: add dmesg output for first mount and last unmount of a filesystem
    
    commit 2db313205f8b96eea467691917138d646bb50aef upstream.
    
    There is a feature request to add dmesg output when unmounting a btrfs.
    There are several alternative methods to do the same thing, but with
    their own problems:
    
    - Use eBPF to watch btrfs_put_super()/open_ctree()
      Not end user friendly, they have to dip their head into the source
      code.
    
    - Watch for directory /sys/fs/<uuid>/
      This is way more simple, but still requires some simple device -> uuid
      lookups.  And a script needs to use inotify to watch /sys/fs/.
    
    Compared to all these, directly outputting the information into dmesg
    would be the most simple one, with both device and UUID included.
    
    And since we're here, also add the output when mounting a filesystem for
    the first time for parity. A more fine grained monitoring of subvolume
    mounts should be done by another layer, like audit.
    
    Now mounting a btrfs with all default mkfs options would look like this:
    
      [81.906566] BTRFS info (device dm-8): first mount of filesystem 633b5c16-afe3-4b79-b195-138fe145e4f2
      [81.907494] BTRFS info (device dm-8): using crc32c (crc32c-intel) checksum algorithm
      [81.908258] BTRFS info (device dm-8): using free space tree
      [81.912644] BTRFS info (device dm-8): auto enabling async discard
      [81.913277] BTRFS info (device dm-8): checking UUID tree
      [91.668256] BTRFS info (device dm-8): last unmount of filesystem 633b5c16-afe3-4b79-b195-138fe145e4f2
    
    CC: stable@vger.kernel.org # 5.4+
    Link: https://github.com/kdave/btrfs-progs/issues/689
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ update changelog ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bab9cec493b6c1cbb14f763206d3da978676d732
Author: Helge Deller <deller@gmx.de>
Date:   Thu Nov 23 20:28:27 2023 +0100

    parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes
    
    commit e5f3e299a2b1e9c3ece24a38adfc089aef307e8a upstream.
    
    Those return codes are only defined for the parisc architecture and
    are leftovers from when we wanted to be HP-UX compatible.
    
    They are not returned by any Linux kernel syscall but do trigger
    problems with the glibc strerrorname_np() and strerror() functions as
    reported in glibc issue #31080.
    
    There is no need to keep them, so simply remove them.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Reported-by: Bruno Haible <bruno@clisp.org>
    Closes: https://sourceware.org/bugzilla/show_bug.cgi?id=31080
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b53dc7c766aec1b53c3d6ab0c29c3a3235bd6275
Author: Timothy Pearson <tpearson@raptorengineering.com>
Date:   Sun Nov 19 09:18:02 2023 -0600

    powerpc: Don't clobber f0/vs0 during fp|altivec register save
    
    commit 5e1d824f9a283cbf90f25241b66d1f69adb3835b upstream.
    
    During floating point and vector save to thread data f0/vs0 are
    clobbered by the FPSCR/VSCR store routine. This has been obvserved to
    lead to userspace register corruption and application data corruption
    with io-uring.
    
    Fix it by restoring f0/vs0 after FPSCR/VSCR store has completed for
    all the FP, altivec, VMX register save paths.
    
    Tested under QEMU in kvm mode, running on a Talos II workstation with
    dual POWER9 DD2.2 CPUs.
    
    Additional detail (mpe):
    
    Typically save_fpu() is called from __giveup_fpu() which saves the FP
    regs and also *turns off FP* in the tasks MSR, meaning the kernel will
    reload the FP regs from the thread struct before letting the task use FP
    again. So in that case save_fpu() is free to clobber f0 because the FP
    regs no longer hold live values for the task.
    
    There is another case though, which is the path via:
      sys_clone()
        ...
        copy_process()
          dup_task_struct()
            arch_dup_task_struct()
              flush_all_to_thread()
                save_all()
    
    That path saves the FP regs but leaves them live. That's meant as an
    optimisation for a process that's using FP/VSX and then calls fork(),
    leaving the regs live means the parent process doesn't have to take a
    fault after the fork to get its FP regs back. The optimisation was added
    in commit 8792468da5e1 ("powerpc: Add the ability to save FPU without
    giving it up").
    
    That path does clobber f0, but f0 is volatile across function calls,
    and typically programs reach copy_process() from userspace via a syscall
    wrapper function. So in normal usage f0 being clobbered across a
    syscall doesn't cause visible data corruption.
    
    But there is now a new path, because io-uring can call copy_process()
    via create_io_thread() from the signal handling path. That's OK if the
    signal is handled as part of syscall return, but it's not OK if the
    signal is handled due to some other interrupt.
    
    That path is:
    
    interrupt_return_srr_user()
      interrupt_exit_user_prepare()
        interrupt_exit_user_prepare_main()
          do_notify_resume()
            get_signal()
              task_work_run()
                create_worker_cb()
                  create_io_worker()
                    copy_process()
                      dup_task_struct()
                        arch_dup_task_struct()
                          flush_all_to_thread()
                            save_all()
                              if (tsk->thread.regs->msr & MSR_FP)
                                save_fpu()
                                # f0 is clobbered and potentially live in userspace
    
    Note the above discussion applies equally to save_altivec().
    
    Fixes: 8792468da5e1 ("powerpc: Add the ability to save FPU without giving it up")
    Cc: stable@vger.kernel.org # v4.6+
    Closes: https://lore.kernel.org/all/480932026.45576726.1699374859845.JavaMail.zimbra@raptorengineeringinc.com/
    Closes: https://lore.kernel.org/linuxppc-dev/480221078.47953493.1700206777956.JavaMail.zimbra@raptorengineeringinc.com/
    Tested-by: Timothy Pearson <tpearson@raptorengineering.com>
    Tested-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Timothy Pearson <tpearson@raptorengineering.com>
    [mpe: Reword change log to describe exact path of corruption & other minor tweaks]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/1921539696.48534988.1700407082933.JavaMail.zimbra@raptorengineeringinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5cbbc2b2da99fb55a8bc5c2cc0d9ad5f3e8fa25
Author: Abdul Halim, Mohd Syazwan <mohd.syazwan.abdul.halim@intel.com>
Date:   Wed Nov 22 11:26:06 2023 +0800

    iommu/vt-d: Add MTL to quirk list to skip TE disabling
    
    commit 85b80fdffa867d75dfb9084a839e7949e29064e8 upstream.
    
    The VT-d spec requires (10.4.4 Global Command Register, TE field) that:
    
    Hardware implementations supporting DMA draining must drain any in-flight
    DMA read/write requests queued within the Root-Complex before switching
    address translation on or off and reflecting the status of the command
    through the TES field in the Global Status register.
    
    Unfortunately, some integrated graphic devices fail to do so after some
    kind of power state transition. As the result, the system might stuck in
    iommu_disable_translation(), waiting for the completion of TE transition.
    
    Add MTL to the quirk list for those devices and skips TE disabling if the
    qurik hits.
    
    Fixes: b1012ca8dc4f ("iommu/vt-d: Skip TE disabling on quirky gfx dedicated iommu")
    Cc: stable@vger.kernel.org
    Signed-off-by: Abdul Halim, Mohd Syazwan <mohd.syazwan.abdul.halim@intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20231116022324.30120-1-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f62ceb880a71612841dbcb2c729c92b9e9759be3
Author: Markus Weippert <markus@gekmihesg.de>
Date:   Fri Nov 24 16:14:37 2023 +0100

    bcache: revert replacing IS_ERR_OR_NULL with IS_ERR
    
    commit bb6cc253861bd5a7cf8439e2118659696df9619f upstream.
    
    Commit 028ddcac477b ("bcache: Remove unnecessary NULL point check in
    node allocations") replaced IS_ERR_OR_NULL by IS_ERR. This leads to a
    NULL pointer dereference.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000080
    Call Trace:
     ? __die_body.cold+0x1a/0x1f
     ? page_fault_oops+0xd2/0x2b0
     ? exc_page_fault+0x70/0x170
     ? asm_exc_page_fault+0x22/0x30
     ? btree_node_free+0xf/0x160 [bcache]
     ? up_write+0x32/0x60
     btree_gc_coalesce+0x2aa/0x890 [bcache]
     ? bch_extent_bad+0x70/0x170 [bcache]
     btree_gc_recurse+0x130/0x390 [bcache]
     ? btree_gc_mark_node+0x72/0x230 [bcache]
     bch_btree_gc+0x5da/0x600 [bcache]
     ? cpuusage_read+0x10/0x10
     ? bch_btree_gc+0x600/0x600 [bcache]
     bch_gc_thread+0x135/0x180 [bcache]
    
    The relevant code starts with:
    
        new_nodes[0] = NULL;
    
        for (i = 0; i < nodes; i++) {
            if (__bch_keylist_realloc(&keylist, bkey_u64s(&r[i].b->key)))
                goto out_nocoalesce;
        // ...
    out_nocoalesce:
        // ...
        for (i = 0; i < nodes; i++)
            if (!IS_ERR(new_nodes[i])) {  // IS_ERR_OR_NULL before
    028ddcac477b
                btree_node_free(new_nodes[i]);  // new_nodes[0] is NULL
                rw_unlock(true, new_nodes[i]);
            }
    
    This patch replaces IS_ERR() by IS_ERR_OR_NULL() to fix this.
    
    Fixes: 028ddcac477b ("bcache: Remove unnecessary NULL point check in node allocations")
    Link: https://lore.kernel.org/all/3DF4A87A-2AC1-4893-AE5F-E921478419A9@suse.de/
    Cc: stable@vger.kernel.org
    Cc: Zheng Wang <zyytlz.wz@163.com>
    Cc: Coly Li <colyli@suse.de>
    Signed-off-by: Markus Weippert <markus@gekmihesg.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18ac427906af4dbdca7c5e8a1abdf6edc2eaec2c
Author: Wu Bo <bo.wu@vivo.com>
Date:   Tue Nov 21 20:51:50 2023 -0700

    dm verity: don't perform FEC for failed readahead IO
    
    commit 0193e3966ceeeef69e235975918b287ab093082b upstream.
    
    We found an issue under Android OTA scenario that many BIOs have to do
    FEC where the data under dm-verity is 100% complete and no corruption.
    
    Android OTA has many dm-block layers, from upper to lower:
    dm-verity
    dm-snapshot
    dm-origin & dm-cow
    dm-linear
    ufs
    
    DM tables have to change 2 times during Android OTA merging process.
    When doing table change, the dm-snapshot will be suspended for a while.
    During this interval, many readahead IOs are submitted to dm_verity
    from filesystem. Then the kverity works are busy doing FEC process
    which cost too much time to finish dm-verity IO. This causes needless
    delay which feels like system is hung.
    
    After adding debugging it was found that each readahead IO needed
    around 10s to finish when this situation occurred. This is due to IO
    amplification:
    
    dm-snapshot suspend
    erofs_readahead     // 300+ io is submitted
            dm_submit_bio (dm_verity)
                    dm_submit_bio (dm_snapshot)
                    bio return EIO
                    bio got nothing, it's empty
            verity_end_io
            verity_verify_io
            forloop range(0, io->n_blocks)    // each io->nblocks ~= 20
                    verity_fec_decode
                    fec_decode_rsb
                    fec_read_bufs
                    forloop range(0, v->fec->rsn) // v->fec->rsn = 253
                            new_read
                            submit_bio (dm_snapshot)
                    end loop
            end loop
    dm-snapshot resume
    
    Readahead BIOs get nothing while dm-snapshot is suspended, so all of
    them will cause verity's FEC.
    Each readahead BIO needs to verify ~20 (io->nblocks) blocks.
    Each block needs to do FEC, and every block needs to do 253
    (v->fec->rsn) reads.
    So during the suspend interval(~200ms), 300 readahead BIOs trigger
    ~1518000 (300*20*253) IOs to dm-snapshot.
    
    As readahead IO is not required by userspace, and to fix this issue,
    it is best to pass readahead errors to upper layer to handle it.
    
    Cc: stable@vger.kernel.org
    Fixes: a739ff3f543a ("dm verity: add support for forward error correction")
    Signed-off-by: Wu Bo <bo.wu@vivo.com>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3c9f92738227ea3c89d306a3c9b094fdefe8768
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Nov 28 14:50:23 2023 +0100

    dm-verity: align struct dm_verity_fec_io properly
    
    commit 38bc1ab135db87577695816b190e7d6d8ec75879 upstream.
    
    dm_verity_fec_io is placed after the end of two hash digests. If the hash
    digest has unaligned length, struct dm_verity_fec_io could be unaligned.
    
    This commit fixes the placement of struct dm_verity_fec_io, so that it's
    aligned.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: a739ff3f543a ("dm verity: add support for forward error correction")
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5de40a7ffaa02e8727a4e46f9a15083628226f38
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Nov 29 15:38:40 2023 +0800

    ALSA: hda/realtek: Add supported ALC257 for ChromeOS
    
    commit cae2bdb579ecc9d4219c58a7d3fde1958118dc1d upstream.
    
    ChromeOS want to support ALC257.
    Add codec ID to some relation function.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/99a88a7dbdb045fd9d934abeb6cec15f@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf80c538061e482b0690542d97a3f2e96ab47f1b
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Oct 25 15:24:06 2023 +0800

    ALSA: hda/realtek: Headset Mic VREF to 100%
    
    commit baaacbff64d9f34b64f294431966d035aeadb81c upstream.
    
    This platform need to set Mic VREF to 100%.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/0916af40f08a4348a3298a9a59e6967e@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f338f738d7bd5f51e90fb3ba7c5ef14425bb7661
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 30 16:13:21 2023 +0100

    ALSA: hda: Disable power-save on KONTRON SinglePC
    
    commit a337c355719c42a6c5b67e985ad753590ed844fb upstream.
    
    It's been reported that the runtime PM on KONTRON SinglePC (PCI SSID
    1734:1232) caused a stall of playback after a bunch of invocations.
    (FWIW, this looks like an timing issue, and the stall happens rather
    on the controller side.)
    
    As a workaround, disable the default power-save on this platform.
    
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20231130151321.9813-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b02b66194d549e1e9c52d3172c0981e4dfe4f6e0
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Nov 3 10:47:15 2023 +0200

    mmc: block: Do not lose cache flush during CQE error recovery
    
    commit 174925d340aac55296318e43fd96c0e1d196e105 upstream.
    
    During CQE error recovery, error-free data commands get requeued if there
    is any data left to transfer, but non-data commands are completed even
    though they have not been processed.  Requeue them instead.
    
    Note the only non-data command is cache flush, which would have resulted in
    a cache flush being lost if it was queued at the time of CQE recovery.
    
    Fixes: 1e8e55b67030 ("mmc: block: Add CQE support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Link: https://lore.kernel.org/r/20231103084720.6886-2-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71c9fb31e18bd3f7f9da6169c8a78925b5a0c616
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Wed Nov 29 17:34:08 2023 +0800

    firewire: core: fix possible memory leak in create_units()
    
    commit 891e0eab32a57fca4d36c5162628eb0bcb1f0edf upstream.
    
    If device_register() fails, the refcount of device is not 0, the name
    allocated in dev_set_name() is leaked. To fix this by calling put_device(),
    so that it will be freed in callback function kobject_cleanup().
    
    unreferenced object 0xffff9d99035c7a90 (size 8):
      comm "systemd-udevd", pid 168, jiffies 4294672386 (age 152.089s)
      hex dump (first 8 bytes):
        66 77 30 2e 30 00 ff ff                          fw0.0...
      backtrace:
        [<00000000e1d62bac>] __kmem_cache_alloc_node+0x1e9/0x360
        [<00000000bbeaff31>] __kmalloc_node_track_caller+0x44/0x1a0
        [<00000000491f2fb4>] kvasprintf+0x67/0xd0
        [<000000005b960ddc>] kobject_set_name_vargs+0x1e/0x90
        [<00000000427ac591>] dev_set_name+0x4e/0x70
        [<000000003b4e447d>] create_units+0xc5/0x110
    
    fw_unit_release() will be called in the error path, move fw_device_get()
    before calling device_register() to keep balanced with fw_device_put() in
    fw_unit_release().
    
    Cc: stable@vger.kernel.org
    Fixes: 1fa5ae857bb1 ("driver core: get rid of struct device's bus_id string array")
    Fixes: a1f64819fe9f ("firewire: struct device - replace bus_id with dev_name(), dev_set_name()")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6bac7048f28503ee2f8ad4f8f574ce1f384b108
Author: Maria Yu <quic_aiquny@quicinc.com>
Date:   Wed Nov 15 18:28:24 2023 +0800

    pinctrl: avoid reload of p state in list iteration
    
    commit 4198a9b571065978632276264e01d71d68000ac5 upstream.
    
    When in the list_for_each_entry iteration, reload of p->state->settings
    with a local setting from old_state will turn the list iteration into an
    infinite loop.
    
    The typical symptom when the issue happens, will be a printk message like:
    
      "not freeing pin xx (xxx) as part of deactivating group xxx - it is
    already used for some other setting".
    
    This is a compiler-dependent problem, one instance occurred using Clang
    version 10.0 on the arm64 architecture with linux version 4.19.
    
    Fixes: 6e5e959dde0d ("pinctrl: API changes to support multiple states per device")
    Signed-off-by: Maria Yu <quic_aiquny@quicinc.com>
    Cc:  <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20231115102824.23727-1-quic_aiquny@quicinc.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fb79be6e9800abd6e07d6f7254ebb0317300dd7
Author: Keith Busch <kbusch@kernel.org>
Date:   Mon Nov 20 14:18:31 2023 -0800

    io_uring: fix off-by one bvec index
    
    commit d6fef34ee4d102be448146f24caf96d7b4a05401 upstream.
    
    If the offset equals the bv_len of the first registered bvec, then the
    request does not include any of that first bvec. Skip it so that drivers
    don't have to deal with a zero length bvec, which was observed to break
    NVMe's PRP list creation.
    
    Cc: stable@vger.kernel.org
    Fixes: bd11b3a391e3 ("io_uring: don't use iov_iter_advance() for fixed buffers")
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Link: https://lore.kernel.org/r/20231120221831.2646460-1-kbusch@meta.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5f85ea5bb6affeb97c36844fbaa5776cc9227ff
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Mon Nov 20 17:16:06 2023 +0100

    USB: dwc3: qcom: fix wakeup after probe deferral
    
    commit 41f5a0973259db9e4e3c9963d36505f80107d1a0 upstream.
    
    The Qualcomm glue driver is overriding the interrupt trigger types
    defined by firmware when requesting the wakeup interrupts during probe.
    
    This can lead to a failure to map the DP/DM wakeup interrupts after a
    probe deferral as the firmware defined trigger types do not match the
    type used for the initial mapping:
    
            irq: type mismatch, failed to map hwirq-14 for interrupt-controller@b220000!
            irq: type mismatch, failed to map hwirq-15 for interrupt-controller@b220000!
    
    Fix this by not overriding the firmware provided trigger types when
    requesting the wakeup interrupts.
    
    Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
    Cc: stable@vger.kernel.org      # 4.18
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
    Link: https://lore.kernel.org/r/20231120161607.7405-3-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ac96667ea325f042916fced84731d3fe7bf1280
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Fri Oct 27 11:28:20 2023 +0000

    usb: dwc3: set the dma max_seg_size
    
    commit 8bbae288a85abed6a1cf7d185d8b9dc2f5dcb12c upstream.
    
    Allow devices to have dma operations beyond 4K, and avoid warnings such
    as:
    
    DMA-API: dwc3 a600000.usb: mapping sg segment longer than device claims to support [len=86016] [max=65536]
    
    Cc: stable@vger.kernel.org
    Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
    Reported-by: Zubin Mithra <zsm@chromium.org>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20231026-dwc3-v2-1-1d4fd5c3e067@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2620c5977f49483b89b442a1e076d65588ab4a77
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Wed Oct 25 11:51:10 2023 +0200

    usb: dwc3: Fix default mode initialization
    
    commit 10d510abd096d620b9fda2dd3e0047c5efc4ad2b upstream.
    
    The default mode, configurable by DT, shall be set before usb role switch
    driver is registered. Otherwise there is a race between default mode
    and mode set by usb role switch driver.
    
    Fixes: 98ed256a4dbad ("usb: dwc3: Add support for role-switch-default-mode binding")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20231025095110.2405281-1-alexander.stein@ew.tq-group.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5325ed6eb7c630a2c7782cd74c6c35413fd3043
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Nov 15 15:45:07 2023 +0100

    USB: dwc2: write HCINT with INTMASK applied
    
    commit 0583bc776ca5b5a3f5752869fc31cf7322df2b35 upstream.
    
    dwc2_hc_n_intr() writes back INTMASK as read but evaluates it
    with intmask applied. In stress testing this causes spurious
    interrupts like this:
    
    [Mon Aug 14 10:51:07 2023] dwc2 3f980000.usb: dwc2_hc_chhltd_intr_dma: Channel 7 - ChHltd set, but reason is unknown
    [Mon Aug 14 10:51:07 2023] dwc2 3f980000.usb: hcint 0x00000002, intsts 0x04600001
    [Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: dwc2_hc_chhltd_intr_dma: Channel 0 - ChHltd set, but reason is unknown
    [Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: hcint 0x00000002, intsts 0x04600001
    [Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: dwc2_hc_chhltd_intr_dma: Channel 4 - ChHltd set, but reason is unknown
    [Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: hcint 0x00000002, intsts 0x04600001
    [Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: dwc2_update_urb_state_abn(): trimming xfer length
    
    Applying INTMASK prevents this. The issue exists in all versions of the
    driver.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Tested-by: Ivan Ivanov <ivan.ivanov@suse.com>
    Tested-by: Andrea della Porta <andrea.porta@suse.com>
    Link: https://lore.kernel.org/r/20231115144514.15248-1-oneukum@suse.com
    Cc: stable <stable@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d7a5e63dc3be3d9960e15460b0f45bf00ec78c3
Author: Lech Perczak <lech.perczak@gmail.com>
Date:   Sat Nov 18 00:19:17 2023 +0100

    USB: serial: option: don't claim interface 4 for ZTE MF290
    
    commit 8771127e25d6c20d458ad27cf32f7fcfc1755e05 upstream.
    
    Interface 4 is used by for QMI interface in stock firmware of MF28D, the
    router which uses MF290 modem. Free the interface up, to rebind it to
    qmi_wwan driver.
    The proper configuration is:
    
    Interface mapping is:
    0: QCDM, 1: (unknown), 2: AT (PCUI), 2: AT (Modem), 4: QMI
    
    T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  4 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=19d2 ProdID=0189 Rev= 0.00
    S:  Manufacturer=ZTE, Incorporated
    S:  Product=ZTE LTE Technologies MSM
    C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
    
    Cc: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1432dff5dd6a463c990fbf071f1d2495f765135
Author: Puliang Lu <puliang.lu@fibocom.com>
Date:   Thu Oct 26 20:35:06 2023 +0800

    USB: serial: option: fix FM101R-GL defines
    
    commit a1092619dd28ac0fcf23016160a2fdccd98ef935 upstream.
    
    Modify the definition of the two Fibocom FM101R-GL PID macros, which had
    their PIDs switched.
    
    The correct PIDs are:
    
    - VID:PID 413C:8213, FM101R-GL ESIM are laptop M.2 cards (with
      MBIM interfaces for Linux)
    
    - VID:PID 413C:8215, FM101R-GL are laptop M.2 cards (with
      MBIM interface for Linux)
    
    0x8213: mbim, tty
    0x8215: mbim, tty
    
    Signed-off-by: Puliang Lu <puliang.lu@fibocom.com>
    Fixes: 52480e1f1a25 ("USB: serial: option: add Fibocom to DELL custom modem FM101R-GL")
    Link: https://lore.kernel.org/lkml/TYZPR02MB508845BAD7936A62A105CE5D89DFA@TYZPR02MB5088.apcprd02.prod.outlook.com/
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14a6e089d6108e8781807707796c64d6f1fced89
Author: Victor Fragoso <victorffs@hotmail.com>
Date:   Tue Nov 21 21:05:56 2023 +0000

    USB: serial: option: add Fibocom L7xx modules
    
    commit e389fe8b68137344562fb6e4d53d8a89ef6212dd upstream.
    
    Add support for Fibocom L716-EU module series.
    
    L716-EU is a Fibocom module based on ZTE's V3E/V3T chipset.
    
    Device creates multiple interfaces when connected to PC as follows:
     - Network Interface: ECM or RNDIS (set by FW or AT Command)
     - ttyUSB0: AT port
     - ttyUSB1: Modem port
     - ttyUSB2: AT2 port
     - ttyUSB3: Trace port for log information
     - ADB: ADB port for debugging. ("Driver=usbfs" when ADB server enabled)
    
    Here are the outputs of lsusb and usb-devices:
    $ ls /dev/ttyUSB*
    /dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3
    
    usb-devices:
    L716-EU (ECM mode):
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 51 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0001 Rev= 1.00
    S:  Manufacturer=Fibocom,Incorporated
    S:  Product=Fibocom Mobile Boardband
    S:  SerialNumber=1234567890ABCDEF
    C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=87(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    L716-EU (RNDIS mode):
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 49 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0001 Rev= 1.00
    S:  Manufacturer=Fibocom,Incorporated
    S:  Product=Fibocom Mobile Boardband
    S:  SerialNumber=1234567890ABCDEF
    C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=ff Driver=rndis_host
    E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Victor Fragoso <victorffs@hotmail.com>
    Reviewed-by: Lars Melin <larsm17@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f49ad460a2c8dd9d6e1a36680004448251ff26a9
Author: Mingzhe Zou <mingzhe.zou@easystack.cn>
Date:   Mon Nov 20 13:24:59 2023 +0800

    bcache: fixup lock c->root error
    
    commit e34820f984512b433ee1fc291417e60c47d56727 upstream.
    
    We had a problem with io hung because it was waiting for c->root to
    release the lock.
    
    crash> cache_set.root -l cache_set.list ffffa03fde4c0050
      root = 0xffff802ef454c800
    crash> btree -o 0xffff802ef454c800 | grep rw_semaphore
      [ffff802ef454c858] struct rw_semaphore lock;
    crash> struct rw_semaphore ffff802ef454c858
    struct rw_semaphore {
      count = {
        counter = -4294967297
      },
      wait_list = {
        next = 0xffff00006786fc28,
        prev = 0xffff00005d0efac8
      },
      wait_lock = {
        raw_lock = {
          {
            val = {
              counter = 0
            },
            {
              locked = 0 '\000',
              pending = 0 '\000'
            },
            {
              locked_pending = 0,
              tail = 0
            }
          }
        }
      },
      osq = {
        tail = {
          counter = 0
        }
      },
      owner = 0xffffa03fdc586603
    }
    
    The "counter = -4294967297" means that lock count is -1 and a write lock
    is being attempted. Then, we found that there is a btree with a counter
    of 1 in btree_cache_freeable.
    
    crash> cache_set -l cache_set.list ffffa03fde4c0050 -o|grep btree_cache
      [ffffa03fde4c1140] struct list_head btree_cache;
      [ffffa03fde4c1150] struct list_head btree_cache_freeable;
      [ffffa03fde4c1160] struct list_head btree_cache_freed;
      [ffffa03fde4c1170] unsigned int btree_cache_used;
      [ffffa03fde4c1178] wait_queue_head_t btree_cache_wait;
      [ffffa03fde4c1190] struct task_struct *btree_cache_alloc_lock;
    crash> list -H ffffa03fde4c1140|wc -l
    973
    crash> list -H ffffa03fde4c1150|wc -l
    1123
    crash> cache_set.btree_cache_used -l cache_set.list ffffa03fde4c0050
      btree_cache_used = 2097
    crash> list -s btree -l btree.list -H ffffa03fde4c1140|grep -E -A2 "^  lock = {" > btree_cache.txt
    crash> list -s btree -l btree.list -H ffffa03fde4c1150|grep -E -A2 "^  lock = {" > btree_cache_freeable.txt
    [root@node-3 127.0.0.1-2023-08-04-16:40:28]# pwd
    /var/crash/127.0.0.1-2023-08-04-16:40:28
    [root@node-3 127.0.0.1-2023-08-04-16:40:28]# cat btree_cache.txt|grep counter|grep -v "counter = 0"
    [root@node-3 127.0.0.1-2023-08-04-16:40:28]# cat btree_cache_freeable.txt|grep counter|grep -v "counter = 0"
          counter = 1
    
    We found that this is a bug in bch_sectors_dirty_init() when locking c->root:
        (1). Thread X has locked c->root(A) write.
        (2). Thread Y failed to lock c->root(A), waiting for the lock(c->root A).
        (3). Thread X bch_btree_set_root() changes c->root from A to B.
        (4). Thread X releases the lock(c->root A).
        (5). Thread Y successfully locks c->root(A).
        (6). Thread Y releases the lock(c->root B).
    
            down_write locked ---(1)----------------------┐
                    |                                     |
                    |   down_read waiting ---(2)----┐     |
                    |           |               ┌-------------┐ ┌-------------┐
            bch_btree_set_root ===(3)========>> | c->root   A | | c->root   B |
                    |           |               └-------------┘ └-------------┘
                up_write ---(4)---------------------┘     |            |
                                |                         |            |
                        down_read locked ---(5)-----------┘            |
                                |                                      |
                            up_read ---(6)-----------------------------┘
    
    Since c->root may change, the correct steps to lock c->root should be
    the same as bch_root_usage(), compare after locking.
    
    static unsigned int bch_root_usage(struct cache_set *c)
    {
            unsigned int bytes = 0;
            struct bkey *k;
            struct btree *b;
            struct btree_iter iter;
    
            goto lock_root;
    
            do {
                    rw_unlock(false, b);
    lock_root:
                    b = c->root;
                    rw_lock(false, b, b->level);
            } while (b != c->root);
    
            for_each_key_filter(&b->keys, k, &iter, bch_ptr_bad)
                    bytes += bkey_bytes(k);
    
            rw_unlock(false, b);
    
            return (bytes * 100) / btree_bytes(c);
    }
    
    Fixes: b144e45fc576 ("bcache: make bch_sectors_dirty_init() to be multithreaded")
    Signed-off-by: Mingzhe Zou <mingzhe.zou@easystack.cn>
    Cc:  <stable@vger.kernel.org>
    Signed-off-by: Coly Li <colyli@suse.de>
    Link: https://lore.kernel.org/r/20231120052503.6122-7-colyli@suse.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be327b8f76c2af64885df07e084f9dcc0d024c7f
Author: Mingzhe Zou <mingzhe.zou@easystack.cn>
Date:   Mon Nov 20 13:24:58 2023 +0800

    bcache: fixup init dirty data errors
    
    commit 7cc47e64d3d69786a2711a4767e26b26ba63d7ed upstream.
    
    We found that after long run, the dirty_data of the bcache device
    will have errors. This error cannot be eliminated unless re-register.
    
    We also found that reattach after detach, this error can accumulate.
    
    In bch_sectors_dirty_init(), all inode <= d->id keys will be recounted
    again. This is wrong, we only need to count the keys of the current
    device.
    
    Fixes: b144e45fc576 ("bcache: make bch_sectors_dirty_init() to be multithreaded")
    Signed-off-by: Mingzhe Zou <mingzhe.zou@easystack.cn>
    Cc:  <stable@vger.kernel.org>
    Signed-off-by: Coly Li <colyli@suse.de>
    Link: https://lore.kernel.org/r/20231120052503.6122-6-colyli@suse.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ebf83df623a4be915dda22a14282c7cc3537efe
Author: Rand Deeb <rand.sec96@gmail.com>
Date:   Mon Nov 20 13:24:57 2023 +0800

    bcache: prevent potential division by zero error
    
    commit 2c7f497ac274a14330208b18f6f734000868ebf9 upstream.
    
    In SHOW(), the variable 'n' is of type 'size_t.' While there is a
    conditional check to verify that 'n' is not equal to zero before
    executing the 'do_div' macro, concerns arise regarding potential
    division by zero error in 64-bit environments.
    
    The concern arises when 'n' is 64 bits in size, greater than zero, and
    the lower 32 bits of it are zeros. In such cases, the conditional check
    passes because 'n' is non-zero, but the 'do_div' macro casts 'n' to
    'uint32_t,' effectively truncating it to its lower 32 bits.
    Consequently, the 'n' value becomes zero.
    
    To fix this potential division by zero error and ensure precise
    division handling, this commit replaces the 'do_div' macro with
    div64_u64(). div64_u64() is designed to work with 64-bit operands,
    guaranteeing that division is performed correctly.
    
    This change enhances the robustness of the code, ensuring that division
    operations yield accurate results in all scenarios, eliminating the
    possibility of division by zero, and improving compatibility across
    different 64-bit environments.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Rand Deeb <rand.sec96@gmail.com>
    Cc:  <stable@vger.kernel.org>
    Signed-off-by: Coly Li <colyli@suse.de>
    Link: https://lore.kernel.org/r/20231120052503.6122-5-colyli@suse.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e74c2e6fecb704d3b174672f255bccfc6aca7d1a
Author: Coly Li <colyli@suse.de>
Date:   Mon Nov 20 13:24:55 2023 +0800

    bcache: check return value from btree_node_alloc_replacement()
    
    commit 777967e7e9f6f5f3e153abffb562bffaf4430d26 upstream.
    
    In btree_gc_rewrite_node(), pointer 'n' is not checked after it returns
    from btree_gc_rewrite_node(). There is potential possibility that 'n' is
    a non NULL ERR_PTR(), referencing such error code is not permitted in
    following code. Therefore a return value checking is necessary after 'n'
    is back from btree_node_alloc_replacement().
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Cc:  <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20231120052503.6122-3-colyli@suse.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c73dd8f4b4768a4604807d76e3759d2268f3314d
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Nov 29 13:38:43 2023 -0500

    dm-delay: fix a race between delay_presuspend and delay_bio
    
    [ Upstream commit 6fc45b6ed921dc00dfb264dc08c7d67ee63d2656 ]
    
    In delay_presuspend, we set the atomic variable may_delay and then stop
    the timer and flush pending bios. The intention here is to prevent the
    delay target from re-arming the timer again.
    
    However, this test is racy. Suppose that one thread goes to delay_bio,
    sees that dc->may_delay is one and proceeds; now, another thread executes
    delay_presuspend, it sets dc->may_delay to zero, deletes the timer and
    flushes pending bios. Then, the first thread continues and adds the bio to
    delayed->list despite the fact that dc->may_delay is false.
    
    Fix this bug by changing may_delay's type from atomic_t to bool and
    only access it while holding the delayed_bios_lock mutex. Note that we
    don't have to grab the mutex in delay_resume because there are no bios
    in flight at this point.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a70b6da7c640e053caa20003ee9fe60390f15728
Author: Long Li <longli@microsoft.com>
Date:   Sun Nov 19 08:23:43 2023 -0800

    hv_netvsc: Mark VF as slave before exposing it to user-mode
    
    commit c807d6cd089d2f4951baa838081ec5ae3e2360f8 upstream.
    
    When a VF is being exposed form the kernel, it should be marked as "slave"
    before exposing to the user-mode. The VF is not usable without netvsc
    running as master. The user-mode should never see a VF without the "slave"
    flag.
    
    This commit moves the code of setting the slave flag to the time before
    VF is exposed to user-mode.
    
    Cc: stable@vger.kernel.org
    Fixes: 0c195567a8f6 ("netvsc: transparent VF management")
    Signed-off-by: Long Li <longli@microsoft.com>
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Acked-by: Stephen Hemminger <stephen@networkplumber.org>
    Acked-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff6c130e48a79c826cbc2427bd8b34a7592460cc
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Sun Nov 19 08:23:42 2023 -0800

    hv_netvsc: Fix race of register_netdevice_notifier and VF register
    
    commit 85520856466ed6bc3b1ccb013cddac70ceb437db upstream.
    
    If VF NIC is registered earlier, NETDEV_REGISTER event is replayed,
    but NETDEV_POST_INIT is not.
    
    Move register_netdevice_notifier() earlier, so the call back
    function is set before probing.
    
    Cc: stable@vger.kernel.org
    Fixes: e04e7a7bbd4b ("hv_netvsc: Fix a deadlock by getting rtnl lock earlier in netvsc_probe()")
    Reported-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Reviewed-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 518ef825016d416d29426dd98605ea08fee9dfb2
Author: Asuna Yang <spriteovo@gmail.com>
Date:   Wed Nov 22 22:18:03 2023 +0800

    USB: serial: option: add Luat Air72*U series products
    
    commit da90e45d5afc4da2de7cd3ea7943d0f1baa47cc2 upstream.
    
    Update the USB serial option driver support for Luat Air72*U series
    products.
    
    ID 1782:4e00 Spreadtrum Communications Inc. UNISOC-8910
    
    T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 13 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=1782 ProdID=4e00 Rev=00.00
    S: Manufacturer=UNISOC
    S: Product=UNISOC-8910
    C: #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=400mA
    I: If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=4096ms
    I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I: If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    If#= 2: AT
    If#= 3: PPP + AT
    If#= 4: Debug
    
    Co-developed-by: Yangyu Chen <cyy@cyyself.name>
    Signed-off-by: Yangyu Chen <cyy@cyyself.name>
    Signed-off-by: Asuna Yang <SpriteOvO@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c841de6247e94e07566d57163d3c0d8b29278f7a
Author: Jan Höppner <hoeppner@linux.ibm.com>
Date:   Wed Oct 25 15:24:37 2023 +0200

    s390/dasd: protect device queue against concurrent access
    
    commit db46cd1e0426f52999d50fa72cfa97fa39952885 upstream.
    
    In dasd_profile_start() the amount of requests on the device queue are
    counted. The access to the device queue is unprotected against
    concurrent access. With a lot of parallel I/O, especially with alias
    devices enabled, the device queue can change while dasd_profile_start()
    is accessing the queue. In the worst case this leads to a kernel panic
    due to incorrect pointer accesses.
    
    Fix this by taking the device lock before accessing the queue and
    counting the requests. Additionally the check for a valid profile data
    pointer can be done earlier to avoid unnecessary locking in a hot path.
    
    Cc:  <stable@vger.kernel.org>
    Fixes: 4fa52aa7a82f ("[S390] dasd: add enhanced DASD statistics interface")
    Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
    Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
    Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
    Link: https://lore.kernel.org/r/20231025132437.1223363-3-sth@linux.ibm.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89f9ba7ee7029e2ee6743b56141f6a75404ceaeb
Author: Mingzhe Zou <mingzhe.zou@easystack.cn>
Date:   Mon Nov 20 13:25:00 2023 +0800

    bcache: fixup multi-threaded bch_sectors_dirty_init() wake-up race
    
    commit 2faac25d7958c4761bb8cec54adb79f806783ad6 upstream.
    
    We get a kernel crash about "unable to handle kernel paging request":
    
    ```dmesg
    [368033.032005] BUG: unable to handle kernel paging request at ffffffffad9ae4b5
    [368033.032007] PGD fc3a0d067 P4D fc3a0d067 PUD fc3a0e063 PMD 8000000fc38000e1
    [368033.032012] Oops: 0003 [#1] SMP PTI
    [368033.032015] CPU: 23 PID: 55090 Comm: bch_dirtcnt[0] Kdump: loaded Tainted: G           OE    --------- -  - 4.18.0-147.5.1.es8_24.x86_64 #1
    [368033.032017] Hardware name: Tsinghua Tongfang THTF Chaoqiang Server/072T6D, BIOS 2.4.3 01/17/2017
    [368033.032027] RIP: 0010:native_queued_spin_lock_slowpath+0x183/0x1d0
    [368033.032029] Code: 8b 02 48 85 c0 74 f6 48 89 c1 eb d0 c1 e9 12 83 e0
    03 83 e9 01 48 c1 e0 05 48 63 c9 48 05 c0 3d 02 00 48 03 04 cd 60 68 93
    ad <48> 89 10 8b 42 08 85 c0 75 09 f3 90 8b 42 08 85 c0 74 f7 48 8b 02
    [368033.032031] RSP: 0018:ffffbb48852abe00 EFLAGS: 00010082
    [368033.032032] RAX: ffffffffad9ae4b5 RBX: 0000000000000246 RCX: 0000000000003bf3
    [368033.032033] RDX: ffff97b0ff8e3dc0 RSI: 0000000000600000 RDI: ffffbb4884743c68
    [368033.032034] RBP: 0000000000000001 R08: 0000000000000000 R09: 000007ffffffffff
    [368033.032035] R10: ffffbb486bb01000 R11: 0000000000000001 R12: ffffffffc068da70
    [368033.032036] R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000000
    [368033.032038] FS:  0000000000000000(0000) GS:ffff97b0ff8c0000(0000) knlGS:0000000000000000
    [368033.032039] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [368033.032040] CR2: ffffffffad9ae4b5 CR3: 0000000fc3a0a002 CR4: 00000000003626e0
    [368033.032042] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [368033.032043] bcache: bch_cached_dev_attach() Caching rbd479 as bcache462 on set 8cff3c36-4a76-4242-afaa-7630206bc70b
    [368033.032045] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [368033.032046] Call Trace:
    [368033.032054]  _raw_spin_lock_irqsave+0x32/0x40
    [368033.032061]  __wake_up_common_lock+0x63/0xc0
    [368033.032073]  ? bch_ptr_invalid+0x10/0x10 [bcache]
    [368033.033502]  bch_dirty_init_thread+0x14c/0x160 [bcache]
    [368033.033511]  ? read_dirty_submit+0x60/0x60 [bcache]
    [368033.033516]  kthread+0x112/0x130
    [368033.033520]  ? kthread_flush_work_fn+0x10/0x10
    [368033.034505]  ret_from_fork+0x35/0x40
    ```
    
    The crash occurred when call wake_up(&state->wait), and then we want
    to look at the value in the state. However, bch_sectors_dirty_init()
    is not found in the stack of any task. Since state is allocated on
    the stack, we guess that bch_sectors_dirty_init() has exited, causing
    bch_dirty_init_thread() to be unable to handle kernel paging request.
    
    In order to verify this idea, we added some printing information during
    wake_up(&state->wait). We find that "wake up" is printed twice, however
    we only expect the last thread to wake up once.
    
    ```dmesg
    [  994.641004] alcache: bch_dirty_init_thread() wake up
    [  994.641018] alcache: bch_dirty_init_thread() wake up
    [  994.641523] alcache: bch_sectors_dirty_init() init exit
    ```
    
    There is a race. If bch_sectors_dirty_init() exits after the first wake
    up, the second wake up will trigger this bug("unable to handle kernel
    paging request").
    
    Proceed as follows:
    
    bch_sectors_dirty_init
        kthread_run ==============> bch_dirty_init_thread(bch_dirtcnt[0])
                ...                         ...
        atomic_inc(&state.started)          ...
                ...                         ...
        atomic_read(&state.enough)          ...
                ...                 atomic_set(&state->enough, 1)
        kthread_run ======================================================> bch_dirty_init_thread(bch_dirtcnt[1])
                ...                 atomic_dec_and_test(&state->started)            ...
        atomic_inc(&state.started)          ...                                     ...
                ...                 wake_up(&state->wait)                           ...
        atomic_read(&state.enough)                                          atomic_dec_and_test(&state->started)
                ...                                                                 ...
        wait_event(state.wait, atomic_read(&state.started) == 0)                    ...
        return                                                                      ...
                                                                            wake_up(&state->wait)
    
    We believe it is very common to wake up twice if there is no dirty, but
    crash is an extremely low probability event. It's hard for us to reproduce
    this issue. We attached and detached continuously for a week, with a total
    of more than one million attaches and only one crash.
    
    Putting atomic_inc(&state.started) before kthread_run() can avoid waking
    up twice.
    
    Fixes: b144e45fc576 ("bcache: make bch_sectors_dirty_init() to be multithreaded")
    Signed-off-by: Mingzhe Zou <mingzhe.zou@easystack.cn>
    Cc:  <stable@vger.kernel.org>
    Signed-off-by: Coly Li <colyli@suse.de>
    Link: https://lore.kernel.org/r/20231120052503.6122-8-colyli@suse.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd7a0695906da952fca45d79222524ed6cd0eda9
Author: Coly Li <colyli@suse.de>
Date:   Mon Nov 20 13:25:01 2023 +0800

    bcache: replace a mistaken IS_ERR() by IS_ERR_OR_NULL() in btree_gc_coalesce()
    
    commit f72f4312d4388376fc8a1f6cf37cb21a0d41758b upstream.
    
    Commit 028ddcac477b ("bcache: Remove unnecessary NULL point check in
    node allocations") do the following change inside btree_gc_coalesce(),
    
    31 @@ -1340,7 +1340,7 @@ static int btree_gc_coalesce(
    32         memset(new_nodes, 0, sizeof(new_nodes));
    33         closure_init_stack(&cl);
    34
    35 -       while (nodes < GC_MERGE_NODES && !IS_ERR_OR_NULL(r[nodes].b))
    36 +       while (nodes < GC_MERGE_NODES && !IS_ERR(r[nodes].b))
    37                 keys += r[nodes++].keys;
    38
    39         blocks = btree_default_blocks(b->c) * 2 / 3;
    
    At line 35 the original r[nodes].b is not always allocatored from
    __bch_btree_node_alloc(), and possibly initialized as NULL pointer by
    caller of btree_gc_coalesce(). Therefore the change at line 36 is not
    correct.
    
    This patch replaces the mistaken IS_ERR() by IS_ERR_OR_NULL() to avoid
    potential issue.
    
    Fixes: 028ddcac477b ("bcache: Remove unnecessary NULL point check in node allocations")
    Cc:  <stable@vger.kernel.org> # 6.5+
    Cc: Zheng Wang <zyytlz.wz@163.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Link: https://lore.kernel.org/r/20231120052503.6122-9-colyli@suse.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be8af3b6c80dc32cc690dbe1fcfe5efbb7a98ed7
Author: Keith Busch <kbusch@kernel.org>
Date:   Mon Nov 6 18:12:30 2023 +0100

    swiotlb-xen: provide the "max_mapping_size" method
    
    commit bff2a2d453a1b683378b4508b86b84389f551a00 upstream.
    
    There's a bug that when using the XEN hypervisor with bios with large
    multi-page bio vectors on NVMe, the kernel deadlocks [1].
    
    The deadlocks are caused by inability to map a large bio vector -
    dma_map_sgtable always returns an error, this gets propagated to the block
    layer as BLK_STS_RESOURCE and the block layer retries the request
    indefinitely.
    
    XEN uses the swiotlb framework to map discontiguous pages into contiguous
    runs that are submitted to the PCIe device. The swiotlb framework has a
    limitation on the length of a mapping - this needs to be announced with
    the max_mapping_size method to make sure that the hardware drivers do not
    create larger mappings.
    
    Without max_mapping_size, the NVMe block driver would create large
    mappings that overrun the maximum mapping size.
    
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Link: https://lore.kernel.org/stable/ZTNH0qtmint%2FzLJZ@mail-itl/ [1]
    Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Suggested-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/151bef41-e817-aea9-675-a35fdac4ed@redhat.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c4b5cc9084313e77b437f287ea79eac63fa135d
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Nov 15 19:02:22 2023 +0100

    ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CVA
    
    commit bd911485294a6f0596e4592ed442438015cffc8a upstream.
    
    Like various other ASUS ExpertBook-s, the ASUS ExpertBook B1402CVA
    has an ACPI DSDT table that describes IRQ 1 as ActiveLow while
    the kernel overrides it to EdgeHigh.
    
    This prevents the keyboard from working. To fix this issue, add this laptop
    to the skip_override_table so that the kernel does not override IRQ 1.
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218114
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f312dc1eb2f35dc281b1ea1dcda6ec0b3868eb6
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Tue Sep 19 05:34:18 2023 +0000

    ASoC: simple-card: fixup asoc_simple_probe() error handling
    
    commit 41bae58df411f9accf01ea660730649b2fab1dab upstream.
    
    asoc_simple_probe() is used for both "DT probe" (A) and "platform probe"
    (B). It uses "goto err" when error case, but it is not needed for
    "platform probe" case (B). Thus it is using "return" directly there.
    
            static int asoc_simple_probe(...)
            {
     ^              if (...) {
     |                      ...
    (A)                     if (ret < 0)
     |                              goto err;
     v              } else {
     ^                      ...
     |                      if (ret < 0)
    (B)                             return -Exxx;
     v              }
    
                    ...
     ^              if (ret < 0)
    (C)                     goto err;
     v              ...
    
            err:
    (D)             simple_util_clean_reference(card);
    
                    return ret;
            }
    
    Both case are using (C) part, and it calls (D) when err case.
    But (D) will do nothing for (B) case.
    Because of these behavior, current code itself is not wrong,
    but is confusable, and more, static analyzing tool will warning on
    (B) part (should use goto err).
    
    To avoid static analyzing tool warning, this patch uses "goto err"
    on (B) part.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Link: https://lore.kernel.org/r/87o7hy7mlh.wl-kuninori.morimoto.gx@renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcc60c0a18704324ef88e249c3fce4d9021ef91e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Oct 14 21:34:40 2023 -0400

    nfsd: lock_rename() needs both directories to live on the same fs
    
    commit 1aee9158bc978f91701c5992e395efbc6da2de3c upstream.
    
    ... checking that after lock_rename() is too late.  Incidentally,
    NFSv2 had no nfserr_xdev...
    
    Fixes: aa387d6ce153 "nfsd: fix EXDEV checking in rename"
    Cc: stable@vger.kernel.org # v3.9+
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Acked-by: Chuck Lever <chuck.lever@oracle.com>
    Tested-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec75d1d0cd2c4b46e3ddf92f3ad94f0e4ca08cda
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Thu Aug 24 17:26:05 2023 +0800

    ext4: make sure allocate pending entry not fail
    
    [ Upstream commit 8e387c89e96b9543a339f84043cf9df15fed2632 ]
    
    __insert_pending() allocate memory in atomic context, so the allocation
    could fail, but we are not handling that failure now. It could lead
    ext4_es_remove_extent() to get wrong reserved clusters, and the global
    data blocks reservation count will be incorrect. The same to
    extents_status entry preallocation, preallocate pending entry out of the
    i_es_lock with __GFP_NOFAIL, make sure __insert_pending() and
    __revise_pending() always succeeds.
    
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20230824092619.1327976-3-yi.zhang@huaweicloud.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10341e77e49fab3e095ae548ceb39335741b8fe9
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Aug 15 15:08:08 2023 +0800

    ext4: fix slab-use-after-free in ext4_es_insert_extent()
    
    [ Upstream commit 768d612f79822d30a1e7d132a4d4b05337ce42ec ]
    
    Yikebaer reported an issue:
    ==================================================================
    BUG: KASAN: slab-use-after-free in ext4_es_insert_extent+0xc68/0xcb0
    fs/ext4/extents_status.c:894
    Read of size 4 at addr ffff888112ecc1a4 by task syz-executor/8438
    
    CPU: 1 PID: 8438 Comm: syz-executor Not tainted 6.5.0-rc5 #1
    Call Trace:
     [...]
     kasan_report+0xba/0xf0 mm/kasan/report.c:588
     ext4_es_insert_extent+0xc68/0xcb0 fs/ext4/extents_status.c:894
     ext4_map_blocks+0x92a/0x16f0 fs/ext4/inode.c:680
     ext4_alloc_file_blocks.isra.0+0x2df/0xb70 fs/ext4/extents.c:4462
     ext4_zero_range fs/ext4/extents.c:4622 [inline]
     ext4_fallocate+0x251c/0x3ce0 fs/ext4/extents.c:4721
     [...]
    
    Allocated by task 8438:
     [...]
     kmem_cache_zalloc include/linux/slab.h:693 [inline]
     __es_alloc_extent fs/ext4/extents_status.c:469 [inline]
     ext4_es_insert_extent+0x672/0xcb0 fs/ext4/extents_status.c:873
     ext4_map_blocks+0x92a/0x16f0 fs/ext4/inode.c:680
     ext4_alloc_file_blocks.isra.0+0x2df/0xb70 fs/ext4/extents.c:4462
     ext4_zero_range fs/ext4/extents.c:4622 [inline]
     ext4_fallocate+0x251c/0x3ce0 fs/ext4/extents.c:4721
     [...]
    
    Freed by task 8438:
     [...]
     kmem_cache_free+0xec/0x490 mm/slub.c:3823
     ext4_es_try_to_merge_right fs/ext4/extents_status.c:593 [inline]
     __es_insert_extent+0x9f4/0x1440 fs/ext4/extents_status.c:802
     ext4_es_insert_extent+0x2ca/0xcb0 fs/ext4/extents_status.c:882
     ext4_map_blocks+0x92a/0x16f0 fs/ext4/inode.c:680
     ext4_alloc_file_blocks.isra.0+0x2df/0xb70 fs/ext4/extents.c:4462
     ext4_zero_range fs/ext4/extents.c:4622 [inline]
     ext4_fallocate+0x251c/0x3ce0 fs/ext4/extents.c:4721
     [...]
    ==================================================================
    
    The flow of issue triggering is as follows:
    1. remove es
          raw es               es  removed  es1
    |-------------------| -> |----|.......|------|
    
    2. insert es
      es   insert   es1      merge with es  es1     merge with es and free es1
    |----|.......|------| -> |------------|------| -> |-------------------|
    
    es merges with newes, then merges with es1, frees es1, then determines
    if es1->es_len is 0 and triggers a UAF.
    
    The code flow is as follows:
    ext4_es_insert_extent
      es1 = __es_alloc_extent(true);
      es2 = __es_alloc_extent(true);
      __es_remove_extent(inode, lblk, end, NULL, es1)
        __es_insert_extent(inode, &newes, es1) ---> insert es1 to es tree
      __es_insert_extent(inode, &newes, es2)
        ext4_es_try_to_merge_right
          ext4_es_free_extent(inode, es1) --->  es1 is freed
      if (es1 && !es1->es_len)
        // Trigger UAF by determining if es1 is used.
    
    We determine whether es1 or es2 is used immediately after calling
    __es_remove_extent() or __es_insert_extent() to avoid triggering a
    UAF if es1 or es2 is freed.
    
    Reported-by: Yikebaer Aizezi <yikebaer61@gmail.com>
    Closes: https://lore.kernel.org/lkml/CALcu4raD4h9coiyEBL4Bm0zjDwxC2CyPiTwsP3zFuhot6y9Beg@mail.gmail.com
    Fixes: 2a69c450083d ("ext4: using nofail preallocation in ext4_es_insert_extent()")
    Cc: stable@kernel.org
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230815070808.3377171-1-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5527898c6a9f5c77ff9f5eebb2f50a57ccf1be1b
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:42 2023 +0800

    ext4: using nofail preallocation in ext4_es_insert_extent()
    
    [ Upstream commit 2a69c450083db164596c75c0f5b4d9c4c0e18eba ]
    
    Similar to in ext4_es_insert_delayed_block(), we use preallocations that
    do not fail to avoid inconsistencies, but we do not care about es that are
    not must be kept, and we return 0 even if such es memory allocation fails.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-9-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ae2be6e7cd714a691ec29b4202df4e46369a981
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:41 2023 +0800

    ext4: using nofail preallocation in ext4_es_insert_delayed_block()
    
    [ Upstream commit 4a2d98447b37bcb68a7f06a1078edcb4f7e6ce7e ]
    
    Similar to in ext4_es_remove_extent(), we use a no-fail preallocation
    to avoid inconsistencies, except that here we may have to preallocate
    two extent_status.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-8-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa6568033cfbef6cbe83fe383795ce01c98e769c
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:40 2023 +0800

    ext4: using nofail preallocation in ext4_es_remove_extent()
    
    [ Upstream commit e9fe2b882bd5b26b987c9ba110c2222796f72af5 ]
    
    If __es_remove_extent() returns an error it means that when splitting
    extent, allocating an extent that must be kept failed, where returning
    an error directly would cause the extent tree to be inconsistent. So we
    use GFP_NOFAIL to pre-allocate an extent_status and pass it to
    __es_remove_extent() to avoid this problem.
    
    In addition, since the allocated memory is outside the i_es_lock, the
    extent_status tree may change and the pre-allocated extent_status is
    no longer needed, so we release the pre-allocated extent_status when
    es->es_len is not initialized.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-7-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 608758ef8670f9f492fc40e197c55b4cfe06b470
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:39 2023 +0800

    ext4: use pre-allocated es in __es_remove_extent()
    
    [ Upstream commit bda3efaf774fb687c2b7a555aaec3006b14a8857 ]
    
    When splitting extent, if the second extent can not be dropped, we return
    -ENOMEM and use GFP_NOFAIL to preallocate an extent_status outside of
    i_es_lock and pass it to __es_remove_extent() to be used as the second
    extent. This ensures that __es_remove_extent() is executed successfully,
    thus ensuring consistency in the extent status tree. If the second extent
    is not undroppable, we simply drop it and return 0. Then retry is no longer
    necessary, remove it.
    
    Now, __es_remove_extent() will always remove what it should, maybe more.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-6-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fcb07d8ea36356628347542528209d3980c4ec97
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:38 2023 +0800

    ext4: use pre-allocated es in __es_insert_extent()
    
    [ Upstream commit 95f0b320339a977cf69872eac107122bf536775d ]
    
    Pass a extent_status pointer prealloc to __es_insert_extent(). If the
    pointer is non-null, it is used directly when a new extent_status is
    needed to avoid memory allocation failures.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-5-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cc7653887b0f315aad65858752b033de85d1dea
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:37 2023 +0800

    ext4: factor out __es_alloc_extent() and __es_free_extent()
    
    [ Upstream commit 73a2f033656be11298912201ad50615307b4477a ]
    
    Factor out __es_alloc_extent() and __es_free_extent(), which only allocate
    and free extent_status in these two helpers.
    
    The ext4_es_alloc_extent() function is split into __es_alloc_extent()
    and ext4_es_init_extent(). In __es_alloc_extent() we allocate memory using
    GFP_KERNEL | __GFP_NOFAIL | __GFP_ZERO if the memory allocation cannot
    fail, otherwise we use GFP_ATOMIC. and the ext4_es_init_extent() is used to
    initialize extent_status and update related variables after a successful
    allocation.
    
    This is to prepare for the use of pre-allocated extent_status later.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-4-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8234c1c690a3808ce1fecf55e65727b0c486b54f
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Apr 24 11:38:36 2023 +0800

    ext4: add a new helper to check if es must be kept
    
    [ Upstream commit 9649eb18c6288f514cacffdd699d5cd999c2f8f6 ]
    
    In the extent status tree, we have extents which we can just drop without
    issues and extents we must not drop - this depends on the extent's status
    - currently ext4_es_is_delayed() extents must stay, others may be dropped.
    
    A helper function is added to help determine if the current extent can
    be dropped, although only ext4_es_is_delayed() extents cannot be dropped
    currently.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230424033846.4732-3-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 8e387c89e96b ("ext4: make sure allocate pending entry not fail")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62526a55fee74731f93f36e5507e0900ef68921a
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Tue Oct 10 16:54:34 2023 +0800

    MIPS: KVM: Fix a build warning about variable set but not used
    
    [ Upstream commit 83767a67e7b6a0291cde5681ec7e3708f3f8f877 ]
    
    After commit 411740f5422a ("KVM: MIPS/MMU: Implement KVM_CAP_SYNC_MMU")
    old_pte is no longer used in kvm_mips_map_page(). So remove it to fix a
    build warning about variable set but not used:
    
       arch/mips/kvm/mmu.c: In function 'kvm_mips_map_page':
    >> arch/mips/kvm/mmu.c:701:29: warning: variable 'old_pte' set but not used [-Wunused-but-set-variable]
         701 |         pte_t *ptep, entry, old_pte;
             |                             ^~~~~~~
    
    Cc: stable@vger.kernel.org
    Fixes: 411740f5422a960 ("KVM: MIPS/MMU: Implement KVM_CAP_SYNC_MMU")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202310070530.aARZCSfh-lkp@intel.com/
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b2e8b30b0d726e75dd0d17ffe58c8009f69fe1b
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Mon Sep 4 15:57:37 2023 +0300

    media: ccs: Correctly initialise try compose rectangle
    
    [ Upstream commit 724ff68e968b19d786870d333f9952bdd6b119cb ]
    
    Initialise the try sink compose rectangle size to the sink compose
    rectangle for binner and scaler sub-devices. This was missed due to the
    faulty condition that lead to the compose rectangles to be initialised for
    the pixel array sub-device where it is not relevant.
    
    Fixes: ccfc97bdb5ae ("[media] smiapp: Add driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1301467cbe4c58ad94ed01318a7ce8beeddd32ec
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Nov 21 12:41:26 2023 +0100

    lockdep: Fix block chain corruption
    
    [ Upstream commit bca4104b00fec60be330cd32818dd5c70db3d469 ]
    
    Kent reported an occasional KASAN splat in lockdep. Mark then noted:
    
    > I suspect the dodgy access is to chain_block_buckets[-1], which hits the last 4
    > bytes of the redzone and gets (incorrectly/misleadingly) attributed to
    > nr_large_chain_blocks.
    
    That would mean @size == 0, at which point size_to_bucket() returns -1
    and the above happens.
    
    alloc_chain_hlocks() has 'size - req', for the first with the
    precondition 'size >= rq', which allows the 0.
    
    This code is trying to split a block, del_chain_block() takes what we
    need, and add_chain_block() puts back the remainder, except in the
    above case the remainder is 0 sized and things go sideways.
    
    Fixes: 810507fe6fd5 ("locking/lockdep: Reuse freed chain_hlocks entries")
    Reported-by: Kent Overstreet <kent.overstreet@linux.dev>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Kent Overstreet <kent.overstreet@linux.dev>
    Link: https://lkml.kernel.org/r/20231121114126.GH8262@noisy.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cbfa5aadd65073cc4bbe243f71e0f35deaebbb21
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Nov 17 18:36:50 2023 +0100

    USB: dwc3: qcom: fix ACPI platform device leak
    
    [ Upstream commit 9cf87666fc6e08572341fe08ecd909935998fbbd ]
    
    Make sure to free the "urs" platform device, which is created for some
    ACPI platforms, on probe errors and on driver unbind.
    
    Compile-tested only.
    
    Fixes: c25c210f590e ("usb: dwc3: qcom: add URS Host support for sdm845 ACPI boot")
    Cc: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Acked-by: Andrew Halaney <ahalaney@redhat.com>
    Acked-by: Shawn Guo <shawn.guo@linaro.org>
    Link: https://lore.kernel.org/r/20231117173650.21161-4-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68fe711312f1ae939ae3615df8aedc51dd72496a
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Nov 17 18:36:48 2023 +0100

    USB: dwc3: qcom: fix resource leaks on probe deferral
    
    [ Upstream commit 51392a1879ff06dc21b68aef4825f6ef68a7be42 ]
    
    The driver needs to deregister and free the newly allocated dwc3 core
    platform device on ACPI probe errors (e.g. probe deferral) and on driver
    unbind but instead it leaked those resources while erroneously dropping
    a reference to the parent platform device which is still in use.
    
    For OF probing the driver takes a reference to the dwc3 core platform
    device which has also always been leaked.
    
    Fix the broken ACPI tear down and make sure to drop the dwc3 core
    reference for both OF and ACPI.
    
    Fixes: 8fd95da2cfb5 ("usb: dwc3: qcom: Release the correct resources in dwc3_qcom_remove()")
    Fixes: 2bc02355f8ba ("usb: dwc3: qcom: Add support for booting with ACPI")
    Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
    Cc: stable@vger.kernel.org      # 4.18
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Lee Jones <lee@kernel.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Acked-by: Andrew Halaney <ahalaney@redhat.com>
    Link: https://lore.kernel.org/r/20231117173650.21161-2-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: 9cf87666fc6e ("USB: dwc3: qcom: fix ACPI platform device leak")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2be451e7a2f124899546c1bb5c6d509a927968c8
Author: Christoph Hellwig <hch@lst.de>
Date:   Fri Nov 17 08:13:36 2023 -0500

    nvmet: nul-terminate the NQNs passed in the connect command
    
    [ Upstream commit 1c22e0295a5eb571c27b53c7371f95699ef705ff ]
    
    The host and subsystem NQNs are passed in the connect command payload and
    interpreted as nul-terminated strings.  Ensure they actually are
    nul-terminated before using them.
    
    Fixes: a07b4970f464 "nvmet: add a generic NVMe target")
    Reported-by: Alon Zahavi <zahavi.alon@gmail.com>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 86a7f67d7605943d65af7315711cea7e5c1b50d8
Author: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Date:   Tue Mar 9 17:16:32 2021 -0800

    nvmet: remove unnecessary ctrl parameter
    
    [ Upstream commit de5878048e11f1ec44164ebb8994de132074367a ]
    
    The function nvmet_ctrl_find_get() accepts out pointer to nvmet_ctrl
    structure. This function returns the same error value from two places
    that is :- NVME_SC_CONNECT_INVALID_PARAM | NVME_SC_DNR.
    
    Move this to the caller so we can change the return type to nvmet_ctrl.
    
    Now that we can changed the return type, instead of taking out pointer
    to the nvmet_ctrl structure remove that function parameter and return
    the valid nvmet_ctrl pointer on success and NULL on failure.
    
    Also, add and rename the goto labels for more readability with comments.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Stable-dep-of: 1c22e0295a5e ("nvmet: nul-terminate the NQNs passed in the connect command")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d24a18cb51bfea3c5179e3966738de884dc2bde3
Author: David Howells <dhowells@redhat.com>
Date:   Wed Nov 1 22:03:28 2023 +0000

    afs: Fix file locking on R/O volumes to operate in local mode
    
    [ Upstream commit b590eb41be766c5a63acc7e8896a042f7a4e8293 ]
    
    AFS doesn't really do locking on R/O volumes as fileservers don't maintain
    state with each other and thus a lock on a R/O volume file on one
    fileserver will not be be visible to someone looking at the same file on
    another fileserver.
    
    Further, the server may return an error if you try it.
    
    Fix this by doing what other AFS clients do and handle filelocking on R/O
    volume files entirely within the client and don't touch the server.
    
    Fixes: 6c6c1d63c243 ("afs: Provide mount-time configurable byte-range file locking emulation")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e48c3175d0ba1c69facccee3dd6695b6451624d
Author: David Howells <dhowells@redhat.com>
Date:   Thu Oct 26 01:25:07 2023 +0100

    afs: Return ENOENT if no cell DNS record can be found
    
    [ Upstream commit 0167236e7d66c5e1e85d902a6abc2529b7544539 ]
    
    Make AFS return error ENOENT if no cell SRV or AFSDB DNS record (or
    cellservdb config file record) can be found rather than returning
    EDESTADDRREQ.
    
    Also add cell name lookup info to the cursor dump.
    
    Fixes: d5c32c89b208 ("afs: Fix cell DNS lookup")
    Reported-by: Markus Suvanto <markus.suvanto@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216637
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 497e9b0b21a633605eb7d311a42c7e2b60a00de7
Author: Samuel Holland <samuel.holland@sifive.com>
Date:   Tue Nov 21 16:42:17 2023 -0800

    net: axienet: Fix check for partial TX checksum
    
    [ Upstream commit fd0413bbf8b11f56e8aa842783b0deda0dfe2926 ]
    
    Due to a typo, the code checked the RX checksum feature in the TX path.
    
    Fixes: 8a3b7a252dca ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
    Link: https://lore.kernel.org/r/20231122004219.3504219-1-samuel.holland@sifive.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8fb804dabdda2ee921741d7e5019b493c1dd3652
Author: Raju Rangoju <Raju.Rangoju@amd.com>
Date:   Wed Nov 22 00:44:35 2023 +0530

    amd-xgbe: propagate the correct speed and duplex status
    
    [ Upstream commit 7a2323ac24a50311f64a3a9b54ed5bef5821ecae ]
    
    xgbe_get_link_ksettings() does not propagate correct speed and duplex
    information to ethtool during cable unplug. Due to which ethtool reports
    incorrect values for speed and duplex.
    
    Address this by propagating correct information.
    
    Fixes: 7c12aa08779c ("amd-xgbe: Move the PHY support into amd-xgbe")
    Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b7c9e8c038f531c6629fd58e000a8e5676725d35
Author: Raju Rangoju <Raju.Rangoju@amd.com>
Date:   Wed Nov 22 00:44:34 2023 +0530

    amd-xgbe: handle the corner-case during tx completion
    
    [ Upstream commit 7121205d5330c6a3cb3379348886d47c77b78d06 ]
    
    The existing implementation uses software logic to accumulate tx
    completions until the specified time (1ms) is met and then poll them.
    However, there exists a tiny gap which leads to a race between
    resetting and checking the tx_activate flag. Due to this the tx
    completions are not reported to upper layer and tx queue timeout
    kicks-in restarting the device.
    
    To address this, introduce a tx cleanup mechanism as part of the
    periodic maintenance process.
    
    Fixes: c5aa9e3b8156 ("amd-xgbe: Initial AMD 10GbE platform driver")
    Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a2e868ad07eb7fb8754ac3fc9bf556c1e7363ff2
Author: Raju Rangoju <Raju.Rangoju@amd.com>
Date:   Wed Nov 22 00:44:33 2023 +0530

    amd-xgbe: handle corner-case during sfp hotplug
    
    [ Upstream commit 676ec53844cbdf2f47e68a076cdff7f0ec6cbe3f ]
    
    Force the mode change for SFI in Fixed PHY configurations. Fixed PHY
    configurations needs PLL to be enabled while doing mode set. When the
    SFP module isn't connected during boot, driver assumes AN is ON and
    attempts auto-negotiation. However, if the connected SFP comes up in
    Fixed PHY configuration the link will not come up as PLL isn't enabled
    while the initial mode set command is issued. So, force the mode change
    for SFI in Fixed PHY configuration to fix link issues.
    
    Fixes: e57f7a3feaef ("amd-xgbe: Prepare for working with more than one type of phy")
    Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebc7fbd15a645fbe5b49b447d11adf79f67e8959
Author: Stefano Stabellini <sstabellini@kernel.org>
Date:   Wed Nov 22 15:07:41 2023 -0800

    arm/xen: fix xen_vcpu_info allocation alignment
    
    [ Upstream commit 7bf9a6b46549852a37e6d07e52c601c3c706b562 ]
    
    xen_vcpu_info is a percpu area than needs to be mapped by Xen.
    Currently, it could cross a page boundary resulting in Xen being unable
    to map it:
    
    [    0.567318] kernel BUG at arch/arm64/xen/../../arm/xen/enlighten.c:164!
    [    0.574002] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
    
    Fix the issue by using __alloc_percpu and requesting alignment for the
    memory allocation.
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    
    Link: https://lore.kernel.org/r/alpine.DEB.2.22.394.2311221501340.2053963@ubuntu-linux-20-04-desktop
    Fixes: 24d5373dda7c ("arm/xen: Use alloc_percpu rather than __alloc_percpu")
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ada292b5c504720a0acef8cae9acc62a694d19c
Author: D. Wythe <alibuda@linux.alibaba.com>
Date:   Wed Nov 22 10:37:05 2023 +0800

    net/smc: avoid data corruption caused by decline
    
    [ Upstream commit e6d71b437abc2f249e3b6a1ae1a7228e09c6e563 ]
    
    We found a data corruption issue during testing of SMC-R on Redis
    applications.
    
    The benchmark has a low probability of reporting a strange error as
    shown below.
    
    "Error: Protocol error, got "\xe2" as reply type byte"
    
    Finally, we found that the retrieved error data was as follows:
    
    0xE2 0xD4 0xC3 0xD9 0x04 0x00 0x2C 0x20 0xA6 0x56 0x00 0x16 0x3E 0x0C
    0xCB 0x04 0x02 0x01 0x00 0x00 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xE2
    
    It is quite obvious that this is a SMC DECLINE message, which means that
    the applications received SMC protocol message.
    We found that this was caused by the following situations:
    
    client                  server
            ¦  clc proposal
            ------------->
            ¦  clc accept
            <-------------
            ¦  clc confirm
            ------------->
    wait llc confirm
                            send llc confirm
            ¦failed llc confirm
            ¦   x------
    (after 2s)timeout
                            wait llc confirm rsp
    
    wait decline
    
    (after 1s) timeout
                            (after 2s) timeout
            ¦   decline
            -------------->
            ¦   decline
            <--------------
    
    As a result, a decline message was sent in the implementation, and this
    message was read from TCP by the already-fallback connection.
    
    This patch double the client timeout as 2x of the server value,
    With this simple change, the Decline messages should never cross or
    collide (during Confirm link timeout).
    
    This issue requires an immediate solution, since the protocol updates
    involve a more long-term solution.
    
    Fixes: 0fb0b02bd6fd ("net/smc: adapt SMC client code to use the LLC flow")
    Signed-off-by: D. Wythe <alibuda@linux.alibaba.com>
    Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
    Reviewed-by: Wenjia Zhang <wenjia@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ae55e3a3734864abed5bf7c39a756130aa0b00d
Author: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
Date:   Mon Nov 20 13:06:29 2023 +0100

    net: usb: ax88179_178a: fix failed operations during ax88179_reset
    
    [ Upstream commit 0739af07d1d947af27c877f797cb82ceee702515 ]
    
    Using generic ASIX Electronics Corp. AX88179 Gigabit Ethernet device,
    the following test cycle has been implemented:
        - power on
        - check logs
        - shutdown
        - after detecting the system shutdown, disconnect power
        - after approximately 60 seconds of sleep, power is restored
    Running some cycles, sometimes error logs like this appear:
        kernel: ax88179_178a 2-9:1.0 (unnamed net_device) (uninitialized): Failed to write reg index 0x0001: -19
        kernel: ax88179_178a 2-9:1.0 (unnamed net_device) (uninitialized): Failed to read reg index 0x0001: -19
        ...
    These failed operation are happening during ax88179_reset execution, so
    the initialization could not be correct.
    
    In order to avoid this, we need to increase the delay after reset and
    clock initial operations. By using these larger values, many cycles
    have been run and no failed operations appear.
    
    It would be better to check some status register to verify when the
    operation has finished, but I do not have found any available information
    (neither in the public datasheets nor in the manufacturer's driver). The
    only available information for the necessary delays is the maufacturer's
    driver (original values) but the proposed values are not enough for the
    tested devices.
    
    Fixes: e2ca90c276e1f ("ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to gigabit ethernet adapter driver")
    Reported-by: Herb Wei <weihao.bj@ieisystem.com>
    Tested-by: Herb Wei <weihao.bj@ieisystem.com>
    Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
    Link: https://lore.kernel.org/r/20231120120642.54334-1-jtornosm@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27914bff9602c4523358b47a31c54f86bbc254da
Author: Kunwu Chan <chentao@kylinos.cn>
Date:   Sun Nov 19 22:17:59 2023 +0800

    ipv4: Correct/silence an endian warning in __ip_do_redirect
    
    [ Upstream commit c0e2926266af3b5acf28df0a8fc6e4d90effe0bb ]
    
    net/ipv4/route.c:783:46: warning: incorrect type in argument 2 (different base types)
    net/ipv4/route.c:783:46:    expected unsigned int [usertype] key
    net/ipv4/route.c:783:46:    got restricted __be32 [usertype] new_gw
    
    Fixes: 969447f226b4 ("ipv4: use new_gw for redirect neigh lookup")
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
    Link: https://lore.kernel.org/r/20231119141759.420477-1-chentao@kylinos.cn
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8467afa754d734ca061fcaa174b2ceaebcba842
Author: Charles Yi <be286@163.com>
Date:   Tue Oct 31 12:32:39 2023 +0800

    HID: fix HID device resource race between HID core and debugging support
    
    [ Upstream commit fc43e9c857b7aa55efba9398419b14d9e35dcc7d ]
    
    hid_debug_events_release releases resources bound to the HID device instance.
    hid_device_release releases the underlying HID device instance potentially
    before hid_debug_events_release has completed releasing debug resources bound
    to the same HID device instance.
    
    Reference count to prevent the HID device instance from being torn down
    preemptively when HID debugging support is used. When count reaches zero,
    release core resources of HID device instance using hiddev_free.
    
    The crash:
    
    [  120.728477][ T4396] kernel BUG at lib/list_debug.c:53!
    [  120.728505][ T4396] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    [  120.739806][ T4396] Modules linked in: bcmdhd dhd_static_buf 8822cu pcie_mhi r8168
    [  120.747386][ T4396] CPU: 1 PID: 4396 Comm: hidt_bridge Not tainted 5.10.110 #257
    [  120.754771][ T4396] Hardware name: Rockchip RK3588 EVB4 LP4 V10 Board (DT)
    [  120.761643][ T4396] pstate: 60400089 (nZCv daIf +PAN -UAO -TCO BTYPE=--)
    [  120.768338][ T4396] pc : __list_del_entry_valid+0x98/0xac
    [  120.773730][ T4396] lr : __list_del_entry_valid+0x98/0xac
    [  120.779120][ T4396] sp : ffffffc01e62bb60
    [  120.783126][ T4396] x29: ffffffc01e62bb60 x28: ffffff818ce3a200
    [  120.789126][ T4396] x27: 0000000000000009 x26: 0000000000980000
    [  120.795126][ T4396] x25: ffffffc012431000 x24: ffffff802c6d4e00
    [  120.801125][ T4396] x23: ffffff8005c66f00 x22: ffffffc01183b5b8
    [  120.807125][ T4396] x21: ffffff819df2f100 x20: 0000000000000000
    [  120.813124][ T4396] x19: ffffff802c3f0700 x18: ffffffc01d2cd058
    [  120.819124][ T4396] x17: 0000000000000000 x16: 0000000000000000
    [  120.825124][ T4396] x15: 0000000000000004 x14: 0000000000003fff
    [  120.831123][ T4396] x13: ffffffc012085588 x12: 0000000000000003
    [  120.837123][ T4396] x11: 00000000ffffbfff x10: 0000000000000003
    [  120.843123][ T4396] x9 : 455103d46b329300 x8 : 455103d46b329300
    [  120.849124][ T4396] x7 : 74707572726f6320 x6 : ffffffc0124b8cb5
    [  120.855124][ T4396] x5 : ffffffffffffffff x4 : 0000000000000000
    [  120.861123][ T4396] x3 : ffffffc011cf4f90 x2 : ffffff81fee7b948
    [  120.867122][ T4396] x1 : ffffffc011cf4f90 x0 : 0000000000000054
    [  120.873122][ T4396] Call trace:
    [  120.876259][ T4396]  __list_del_entry_valid+0x98/0xac
    [  120.881304][ T4396]  hid_debug_events_release+0x48/0x12c
    [  120.886617][ T4396]  full_proxy_release+0x50/0xbc
    [  120.891323][ T4396]  __fput+0xdc/0x238
    [  120.895075][ T4396]  ____fput+0x14/0x24
    [  120.898911][ T4396]  task_work_run+0x90/0x148
    [  120.903268][ T4396]  do_exit+0x1bc/0x8a4
    [  120.907193][ T4396]  do_group_exit+0x8c/0xa4
    [  120.911458][ T4396]  get_signal+0x468/0x744
    [  120.915643][ T4396]  do_signal+0x84/0x280
    [  120.919650][ T4396]  do_notify_resume+0xd0/0x218
    [  120.924262][ T4396]  work_pending+0xc/0x3f0
    
    [ Rahul Rameshbabu <sergeantsagara@protonmail.com>: rework changelog ]
    Fixes: cd667ce24796 ("HID: use debugfs for events/reports dumping")
    Signed-off-by: Charles Yi <be286@163.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f0ea5e0944a912075c0f943483a36e6dd5aac6f
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Fri Sep 2 15:29:23 2022 +0200

    HID: core: store the unique system identifier in hid_device
    
    [ Upstream commit 1e839143d674603b0bbbc4c513bca35404967dbc ]
    
    This unique identifier is currently used only for ensuring uniqueness in
    sysfs. However, this could be handful for userspace to refer to a specific
    hid_device by this id.
    
    2 use cases are in my mind: LEDs (and their naming convention), and
    HID-BPF.
    
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20220902132938.2409206-9-benjamin.tissoires@redhat.com
    Stable-dep-of: fc43e9c857b7 ("HID: fix HID device resource race between HID core and debugging support")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 650e43dfe7d21f20431edaebec579439275e20c9
Author: Jonas Karlman <jonas@kwiboo.se>
Date:   Thu Oct 26 19:14:58 2023 +0000

    drm/rockchip: vop: Fix color for RGB888/BGR888 format on VOP full
    
    [ Upstream commit bb0a05acd6121ff0e810b44fdc24dbdfaa46b642 ]
    
    Use of DRM_FORMAT_RGB888 and DRM_FORMAT_BGR888 on e.g. RK3288, RK3328
    and RK3399 result in wrong colors being displayed.
    
    The issue can be observed using modetest:
    
      modetest -s <connector_id>@<crtc_id>:1920x1080-60@RG24
      modetest -s <connector_id>@<crtc_id>:1920x1080-60@BG24
    
    Vendor 4.4 kernel apply an inverted rb swap for these formats on VOP
    full framework (IP version 3.x) compared to VOP little framework (2.x).
    
    Fix colors by applying different rb swap for VOP full framework (3.x)
    and VOP little framework (2.x) similar to vendor 4.4 kernel.
    
    Fixes: 85a359f25388 ("drm/rockchip: Add BGR formats to VOP")
    Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
    Tested-by: Diederik de Haas <didi.debian@cknow.org>
    Reviewed-by: Christopher Obbard <chris.obbard@collabora.com>
    Tested-by: Christopher Obbard <chris.obbard@collabora.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231026191500.2994225-1-jonas@kwiboo.se
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc3b63c089e76dab352927fef6c627daac606f2a
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Tue Oct 31 04:00:07 2023 +0000

    ata: pata_isapnp: Add missing error check for devm_ioport_map()
    
    [ Upstream commit a6925165ea82b7765269ddd8dcad57c731aa00de ]
    
    Add missing error return check for devm_ioport_map() and return the
    error if this function call fails.
    
    Fixes: 0d5ff566779f ("libata: convert to iomap")
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9942c194834642792331cf002c94c8e6d158609d
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Nov 17 14:17:33 2023 +0000

    wireguard: use DEV_STATS_INC()
    
    [ Upstream commit 93da8d75a66568ba4bb5b14ad2833acd7304cd02 ]
    
    wg_xmit() can be called concurrently, KCSAN reported [1]
    some device stats updates can be lost.
    
    Use DEV_STATS_INC() for this unlikely case.
    
    [1]
    BUG: KCSAN: data-race in wg_xmit / wg_xmit
    
    read-write to 0xffff888104239160 of 8 bytes by task 1375 on cpu 0:
    wg_xmit+0x60f/0x680 drivers/net/wireguard/device.c:231
    __netdev_start_xmit include/linux/netdevice.h:4918 [inline]
    netdev_start_xmit include/linux/netdevice.h:4932 [inline]
    xmit_one net/core/dev.c:3543 [inline]
    dev_hard_start_xmit+0x11b/0x3f0 net/core/dev.c:3559
    ...
    
    read-write to 0xffff888104239160 of 8 bytes by task 1378 on cpu 1:
    wg_xmit+0x60f/0x680 drivers/net/wireguard/device.c:231
    __netdev_start_xmit include/linux/netdevice.h:4918 [inline]
    netdev_start_xmit include/linux/netdevice.h:4932 [inline]
    xmit_one net/core/dev.c:3543 [inline]
    dev_hard_start_xmit+0x11b/0x3f0 net/core/dev.c:3559
    ...
    
    v2: also change wg_packet_consume_data_done() (Hangbin Liu)
        and wg_packet_purge_staged_packets()
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Cc: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 939352ad650289d9ec86c86e58c57c26bbb84319
Author: Marek Vasut <marex@denx.de>
Date:   Mon Oct 9 00:32:56 2023 +0200

    drm/panel: simple: Fix Innolux G101ICE-L01 timings
    
    [ Upstream commit 3f9a91b6c00e655d27bd785dcda1742dbdc31bda ]
    
    The Innolux G101ICE-L01 datasheet [1] page 17 table
    6.1 INPUT SIGNAL TIMING SPECIFICATIONS
    indicates that maximum vertical blanking time is 40 lines.
    Currently the driver uses 29 lines.
    
    Fix it, and since this panel is a DE panel, adjust the timings
    to make them less hostile to controllers which cannot do 1 px
    HSA/VSA, distribute the delays evenly between all three parts.
    
    [1] https://www.data-modul.com/sites/default/files/products/G101ICE-L01-C2-specification-12042389.pdf
    
    Fixes: 1e29b840af9f ("drm/panel: simple: Add Innolux G101ICE-L01 panel")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231008223256.279196-1-marex@denx.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5e82e345f4a59a1b704b7383df088d0e922f76d
Author: Marek Vasut <marex@denx.de>
Date:   Mon Oct 9 00:33:15 2023 +0200

    drm/panel: simple: Fix Innolux G101ICE-L01 bus flags
    
    [ Upstream commit 06fc41b09cfbc02977acd9189473593a37d82d9b ]
    
    Add missing .bus_flags = DRM_BUS_FLAG_DE_HIGH to this panel description,
    ones which match both the datasheet and the panel display_timing flags .
    
    Fixes: 1e29b840af9f ("drm/panel: simple: Add Innolux G101ICE-L01 panel")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231008223315.279215-1-marex@denx.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60660af9577ad3a17ed735b7625ab4ce191cfa44
Author: Xuxin Xiong <xuxinxiong@huaqin.corp-partner.google.com>
Date:   Tue Nov 14 12:42:05 2023 +0800

    drm/panel: auo,b101uan08.3: Fine tune the panel power sequence
    
    [ Upstream commit 6965809e526917b73c8f9178173184dcf13cec4b ]
    
    For "auo,b101uan08.3" this panel, it is stipulated in the panel spec that
    MIPI needs to keep the LP11 state before the lcm_reset pin is pulled high.
    
    Fixes: 56ad624b4cb5 ("drm/panel: support for auo, b101uan08.3 wuxga dsi video mode panel")
    Signed-off-by: Xuxin Xiong <xuxinxiong@huaqin.corp-partner.google.com>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231114044205.613421-1-xuxinxiong@huaqin.corp-partner.google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c688ae2dd78eedd4e409b793bd58f9642b47ba2
Author: Shuijing Li <shuijing.li@mediatek.com>
Date:   Mon May 15 17:49:55 2023 +0800

    drm/panel: boe-tv101wum-nl6: Fine tune the panel power sequence
    
    [ Upstream commit 812562b8d881ce6d33fed8052b3a10b718430fb5 ]
    
    For "boe,tv105wum-nw0" this special panel, it is stipulated in
    the panel spec that MIPI needs to keep the LP11 state before
    the lcm_reset pin is pulled high.
    
    Signed-off-by: Shuijing Li <shuijing.li@mediatek.com>
    Signed-off-by: Xinlei Lee <xinlei.lee@mediatek.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230515094955.15982-3-shuijing.li@mediatek.com
    Stable-dep-of: 6965809e5269 ("drm/panel: auo,b101uan08.3: Fine tune the panel power sequence")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b797242d1789039126c0c27bbeeee8d44e5cfce
Author: David Howells <dhowells@redhat.com>
Date:   Thu Jun 8 09:43:54 2023 +0100

    afs: Make error on cell lookup failure consistent with OpenAFS
    
    [ Upstream commit 2a4ca1b4b77850544408595e2433f5d7811a9daa ]
    
    When kafs tries to look up a cell in the DNS or the local config, it will
    translate a lookup failure into EDESTADDRREQ whereas OpenAFS translates it
    into ENOENT.  Applications such as West expect the latter behaviour and
    fail if they see the former.
    
    This can be seen by trying to mount an unknown cell:
    
       # mount -t afs %example.com:cell.root /mnt
       mount: /mnt: mount(2) system call failed: Destination address required.
    
    Fixes: 4d673da14533 ("afs: Support the AFS dynamic root")
    Reported-by: Markus Suvanto <markus.suvanto@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216637
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Jeffrey Altman <jaltman@auristor.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbc1929a5214754cf4f307ee8e85ab1838d8abfa
Author: David Howells <dhowells@redhat.com>
Date:   Thu Nov 2 16:26:59 2023 +0000

    afs: Fix afs_server_list to be cleaned up with RCU
    
    [ Upstream commit e6bace7313d61e31f2b16fa3d774fd8cb3cb869e ]
    
    afs_server_list is accessed with the rcu_read_lock() held from
    volume->servers, so it needs to be cleaned up correctly.
    
    Fix this by using kfree_rcu() instead of kfree().
    
    Fixes: 8a070a964877 ("afs: Detect cell aliases 1 - Cells with root volumes")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3bead2f8fca13f637cd39f2faae63619cbc539d
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Tue Nov 28 17:35:17 2023 -0700

    PCI: keystone: Drop __init from ks_pcie_add_pcie_{ep,port}()
    
    This commit has no upstream equivalent.
    
    After commit db5ebaeb8fda ("PCI: keystone: Don't discard .probe()
    callback") in 5.10.202, there are two modpost warnings when building with
    clang:
    
      WARNING: modpost: vmlinux.o(.text+0x5aa6dc): Section mismatch in reference from the function ks_pcie_probe() to the function .init.text:ks_pcie_add_pcie_port()
      The function ks_pcie_probe() references
      the function __init ks_pcie_add_pcie_port().
      This is often because ks_pcie_probe lacks a __init
      annotation or the annotation of ks_pcie_add_pcie_port is wrong.
    
      WARNING: modpost: vmlinux.o(.text+0x5aa6f4): Section mismatch in reference from the function ks_pcie_probe() to the function .init.text:ks_pcie_add_pcie_ep()
      The function ks_pcie_probe() references
      the function __init ks_pcie_add_pcie_ep().
      This is often because ks_pcie_probe lacks a __init
      annotation or the annotation of ks_pcie_add_pcie_ep is wrong.
    
    ks_pcie_add_pcie_ep() was removed in upstream commit a0fd361db8e5 ("PCI:
    dwc: Move "dbi", "dbi2", and "addr_space" resource setup into common
    code") and ks_pcie_add_pcie_port() was removed in upstream
    commit 60f5b73fa0f2 ("PCI: dwc: Remove unnecessary wrappers around
    dw_pcie_host_init()"), both of which happened before upstream
    commit 7994db905c0f ("PCI: keystone: Don't discard .probe() callback").
    
    As neither of these removal changes are really suitable for stable, just
    remove __init from these functions in stable, as it is no longer a
    correct annotation after dropping __init from ks_pcie_probe().
    
    Fixes: 012dba0ab814 ("PCI: keystone: Don't discard .probe() callback")
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac65f8979b0eaac80c4710729c509d8837d8fdb7
Author: Christopher Bednarz <christopher.n.bednarz@intel.com>
Date:   Fri Aug 18 09:48:38 2023 -0500

    RDMA/irdma: Prevent zero-length STAG registration
    
    commit bb6d73d9add68ad270888db327514384dfa44958 upstream.
    
    Currently irdma allows zero-length STAGs to be programmed in HW during
    the kernel mode fast register flow. Zero-length MR or STAG registration
    disable HW memory length checks.
    
    Improve gaps in bounds checking in irdma by preventing zero-length STAG or
    MR registrations except if the IB_PD_UNSAFE_GLOBAL_RKEY is set.
    
    This addresses the disclosure CVE-2023-25775.
    
    Fixes: b48c24c2d710 ("RDMA/irdma: Implement device supported verb APIs")
    Signed-off-by: Christopher Bednarz <christopher.n.bednarz@intel.com>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Link: https://lore.kernel.org/r/20230818144838.1758-1-shiraz.saleem@intel.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>