commit 0c3f363d1c150050b2ecec2af04f3c96fa2c66de
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Oct 6 13:16:31 2023 +0200

    Linux 6.5.6
    
    Link: https://lore.kernel.org/r/20231004175229.211487444@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e286056667a723557e4c69f8a30dc7b086aa7dd
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Wed Sep 6 13:22:57 2023 -0500

    ASoC: amd: yc: Fix a non-functional mic on Lenovo 82TL
    
    commit cfff2a7794d23b03a3ddedd318bf1df1876c598f upstream.
    
    Lenovo 82TL has DMIC connected like 82V2 does.  Also match
    82TL.
    
    Reported-by: wildjim@kiwinet.org
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217063
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20230906182257.45736-1-mario.limonciello@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44befc89397ed28958793d7248099f6f011713cc
Author: Michal Hocko <mhocko@suse.com>
Date:   Thu Sep 21 09:38:29 2023 +0200

    mm, memcg: reconsider kmem.limit_in_bytes deprecation
    
    commit 4597648fddeadef5877610d693af11906aa666ac upstream.
    
    This reverts commits 86327e8eb94c ("memcg: drop kmem.limit_in_bytes") and
    partially reverts 58056f77502f ("memcg, kmem: further deprecate
    kmem.limit_in_bytes") which have incrementally removed support for the
    kernel memory accounting hard limit.  Unfortunately it has turned out that
    there is still userspace depending on the existence of
    memory.kmem.limit_in_bytes [1].  The underlying functionality is not
    really required but the non-existent file just confuses the userspace
    which fails in the result.  The patch to fix this on the userspace side
    has been submitted but it is hard to predict how it will propagate through
    the maze of 3rd party consumers of the software.
    
    Now, reverting alone 86327e8eb94c is not an option because there is
    another set of userspace which cannot cope with ENOTSUPP returned when
    writing to the file.  Therefore we have to go and revisit 58056f77502f as
    well.  There are two ways to go ahead.  Either we give up on the
    deprecation and fully revert 58056f77502f as well or we can keep
    kmem.limit_in_bytes but make the write a noop and warn about the fact.
    This should work for both known breaking workloads which depend on the
    existence but do not depend on the hard limit enforcement.
    
    Note to backporters to stable trees.  a8c49af3be5f ("memcg: add per-memcg
    total kernel memory stat") introduced in 4.18 has added memcg_account_kmem
    so the accounting is not done by obj_cgroup_charge_pages directly for v1
    anymore.  Prior kernels need to add it explicitly (thanks to Johannes for
    pointing this out).
    
    [akpm@linux-foundation.org: fix build - remove unused local]
    Link: http://lkml.kernel.org/r/20230920081101.GA12096@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net [1]
    Link: https://lkml.kernel.org/r/ZRE5VJozPZt9bRPy@dhcp22.suse.cz
    Fixes: 86327e8eb94c ("memcg: drop kmem.limit_in_bytes")
    Fixes: 58056f77502f ("memcg, kmem: further deprecate kmem.limit_in_bytes")
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Tejun heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 471ce44a1f3047a977dca80a8b89036522621d45
Author: Michal Hocko <mhocko@suse.com>
Date:   Tue Jul 4 13:52:40 2023 +0200

    memcg: drop kmem.limit_in_bytes
    
    commit 86327e8eb94c52eca4f93cfece2e29d1bf52acbf upstream.
    
    kmem.limit_in_bytes (v1 way to limit kernel memory usage) has been
    deprecated since 58056f77502f ("memcg, kmem: further deprecate
    kmem.limit_in_bytes") merged in 5.16.  We haven't heard about any serious
    users since then but it seems that the mere presence of the file is
    causing more harm thatn good.  We (SUSE) have had several bug reports from
    customers where Docker based containers started to fail because a write to
    kmem.limit_in_bytes has failed.
    
    This was unexpected because runc code only expects ENOENT (kmem disabled)
    or EBUSY (tasks already running within cgroup).  So a new error code was
    unexpected and the whole container startup failed.  This has been later
    addressed by
    https://github.com/opencontainers/runc/commit/52390d68040637dfc77f9fda6bbe70952423d380
    so current Docker runtimes do not suffer from the problem anymore.  There
    are still older version of Docker in use and likely hard to get rid of
    completely.
    
    Address this by wiping out the file completely and effectively get back to
    pre 4.5 era and CONFIG_MEMCG_KMEM=n configuration.
    
    I would recommend backporting to stable trees which have picked up
    58056f77502f ("memcg, kmem: further deprecate kmem.limit_in_bytes").
    
    [mhocko@suse.com: restore _KMEM switch case]
      Link: https://lkml.kernel.org/r/ZKe5wxdbvPi5Cwd7@dhcp22.suse.cz
    Link: https://lkml.kernel.org/r/20230704115240.14672-1-mhocko@kernel.org
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f47b0391baebc2a402fe887177124236a56c282
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Wed Sep 20 19:01:03 2023 +0200

    rbd: take header_rwsem in rbd_dev_refresh() only when updating
    
    commit 0b207d02bd9ab8dcc31b262ca9f60dbc1822500d upstream.
    
    rbd_dev_refresh() has been holding header_rwsem across header and
    parent info read-in unnecessarily for ages.  With commit 870611e4877e
    ("rbd: get snapshot context after exclusive lock is ensured to be
    held"), the potential for deadlocks became much more real owning to
    a) header_rwsem now nesting inside lock_rwsem and b) rw_semaphores
    not allowing new readers after a writer is registered.
    
    For example, assuming that I/O request 1, I/O request 2 and header
    read-in request all target the same OSD:
    
    1. I/O request 1 comes in and gets submitted
    2. watch error occurs
    3. rbd_watch_errcb() takes lock_rwsem for write, clears owner_cid and
       releases lock_rwsem
    4. after reestablishing the watch, rbd_reregister_watch() calls
       rbd_dev_refresh() which takes header_rwsem for write and submits
       a header read-in request
    5. I/O request 2 comes in: after taking lock_rwsem for read in
       __rbd_img_handle_request(), it blocks trying to take header_rwsem
       for read in rbd_img_object_requests()
    6. another watch error occurs
    7. rbd_watch_errcb() blocks trying to take lock_rwsem for write
    8. I/O request 1 completion is received by the messenger but can't be
       processed because lock_rwsem won't be granted anymore
    9. header read-in request completion can't be received, let alone
       processed, because the messenger is stranded
    
    Change rbd_dev_refresh() to take header_rwsem only for actually
    updating rbd_dev->header.  Header and parent info read-in don't need
    any locking.
    
    Cc: stable@vger.kernel.org # 0b035401c570: rbd: move rbd_dev_refresh() definition
    Cc: stable@vger.kernel.org # 510a7330c82a: rbd: decouple header read-in from updating rbd_dev->header
    Cc: stable@vger.kernel.org # c10311776f0a: rbd: decouple parent info read-in from updating rbd_dev
    Cc: stable@vger.kernel.org
    Fixes: 870611e4877e ("rbd: get snapshot context after exclusive lock is ensured to be held")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 907f4f29789e46dd554edf6dc317dd99a5e92451
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Wed Sep 20 18:38:26 2023 +0200

    rbd: decouple parent info read-in from updating rbd_dev
    
    commit c10311776f0a8ddea2276df96e255625b07045a8 upstream.
    
    Unlike header read-in, parent info read-in is already decoupled in
    get_parent_info(), but it's buried in rbd_dev_v2_parent_info() along
    with the processing logic.
    
    Separate the initial read-in and update read-in logic into
    rbd_dev_setup_parent() and rbd_dev_update_parent() respectively and
    have rbd_dev_v2_parent_info() just populate struct parent_image_info
    (i.e. what get_parent_info() did).  Some existing QoI issues, like
    flatten of a standalone clone being disregarded on refresh, remain.
    
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1de64c03983129efcdf4152a445ed2f600d3f25
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Tue Sep 19 20:41:47 2023 +0200

    rbd: decouple header read-in from updating rbd_dev->header
    
    commit 510a7330c82a7754d5df0117a8589e8a539067c7 upstream.
    
    Make rbd_dev_header_info() populate a passed struct rbd_image_header
    instead of rbd_dev->header and introduce rbd_dev_update_header() for
    updating mutable fields in rbd_dev->header upon refresh.  The initial
    read-in of both mutable and immutable fields in rbd_dev_image_probe()
    passes in rbd_dev->header so no update step is required there.
    
    rbd_init_layout() is now called directly from rbd_dev_image_probe()
    instead of individually in format 1 and format 2 implementations.
    
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0373eb1a755caaa163dc1b4174365b61e1ccfb8
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Sun Sep 17 15:07:40 2023 +0200

    rbd: move rbd_dev_refresh() definition
    
    commit 0b035401c57021fc6c300272cbb1c5a889d4fe45 upstream.
    
    Move rbd_dev_refresh() definition further down to avoid having to
    move struct parent_image_info definition in the next commit.  This
    spares some forward declarations too.
    
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43b63e088887a8b82750e16762f77100ffa76cba
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Thu Sep 14 16:10:15 2023 +0300

    drm/meson: fix memory leak on ->hpd_notify callback
    
    commit 099f0af9d98231bb74956ce92508e87cbcb896be upstream.
    
    The EDID returned by drm_bridge_get_edid() needs to be freed.
    
    Fixes: 0af5e0b41110 ("drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR")
    Cc: Neil Armstrong <narmstrong@baylibre.com>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Neil Armstrong <neil.armstrong@linaro.org>
    Cc: Kevin Hilman <khilman@baylibre.com>
    Cc: Jerome Brunet <jbrunet@baylibre.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: linux-amlogic@lists.infradead.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: stable@vger.kernel.org # v5.17+
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230914131015.2472029-1-jani.nikula@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79aec38ba852ef1219e6e7c65052a14f343b7da7
Author: Hamza Mahfooz <hamza.mahfooz@amd.com>
Date:   Wed Sep 13 14:48:08 2023 -0400

    drm/amd/display: fix the ability to use lower resolution modes on eDP
    
    commit 2de19022c5d7ff519dd5b9690f7713267bd1abfe upstream.
    
    On eDP we can receive invalid modes from dm_update_crtc_state() for
    entirely new streams for which drm_mode_set_crtcinfo() shouldn't be
    called on. So, instead of calling drm_mode_set_crtcinfo() from within
    create_stream_for_sink() we can instead call it from
    amdgpu_dm_connector_mode_valid(). Since, we are guaranteed to only call
    drm_mode_set_crtcinfo() for valid modes from that function (invalid
    modes are rejected by that callback) and that is the only user
    of create_validate_stream_for_sink() that we need to call
    drm_mode_set_crtcinfo() for (as before commit cb841d27b876
    ("drm/amd/display: Always pass connector_state to stream validation"),
    that is the only place where create_validate_stream_for_sink()'s
    dm_state was NULL).
    
    Cc: stable@vger.kernel.org
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2693
    Fixes: cb841d27b876 ("drm/amd/display: Always pass connector_state to stream validation")
    Tested-by: Mark Broadworth <mark.broadworth@amd.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc69646fc8f511cf693e1f890dd6a4ad5a538ad4
Author: YuBiao Wang <YuBiao.Wang@amd.com>
Date:   Fri Sep 15 10:47:50 2023 +0800

    drm/amdkfd: Use gpu_offset for user queue's wptr
    
    commit cc39f9ccb82426e576734b493e1777ea01b144a8 upstream.
    
    Directly use tbo's start address will miss the domain start offset. Need
    to use gpu_offset instead.
    
    Signed-off-by: YuBiao Wang <YuBiao.Wang@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc15bb91460a43cb8bdf3637896973cb2047199e
Author: Greg Ungerer <gerg@kernel.org>
Date:   Thu Sep 7 11:18:08 2023 +1000

    fs: binfmt_elf_efpic: fix personality for ELF-FDPIC
    
    commit 7c3151585730b7095287be8162b846d31e6eee61 upstream.
    
    The elf-fdpic loader hard sets the process personality to either
    PER_LINUX_FDPIC for true elf-fdpic binaries or to PER_LINUX for normal ELF
    binaries (in this case they would be constant displacement compiled with
    -pie for example).  The problem with that is that it will lose any other
    bits that may be in the ELF header personality (such as the "bug
    emulation" bits).
    
    On the ARM architecture the ADDR_LIMIT_32BIT flag is used to signify a
    normal 32bit binary - as opposed to a legacy 26bit address binary.  This
    matters since start_thread() will set the ARM CPSR register as required
    based on this flag.  If the elf-fdpic loader loses this bit the process
    will be mis-configured and crash out pretty quickly.
    
    Modify elf-fdpic loader personality setting so that it preserves the upper
    three bytes by using the SET_PERSONALITY macro to set it.  This macro in
    the generic case sets PER_LINUX and preserves the upper bytes.
    Architectures can override this for their specific use case, and ARM does
    exactly this.
    
    The problem shows up quite easily running under qemu using the ARM
    architecture, but not necessarily on all types of real ARM hardware.  If
    the underlying ARM processor does not support the legacy 26-bit addressing
    mode then everything will work as expected.
    
    Link: https://lkml.kernel.org/r/20230907011808.2985083-1-gerg@kernel.org
    Fixes: 1bde925d23547 ("fs/binfmt_elf_fdpic.c: provide NOMMU loader for regular ELF binaries")
    Signed-off-by: Greg Ungerer <gerg@kernel.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Greg Ungerer <gerg@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d6b34da02b58b35173a755b85575f7a55cf1d2d
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Jun 13 23:31:50 2023 +0200

    power: supply: ab8500: Set typing and props
    
    commit dc77721ea4aa1e8937e2436f230b5a69065cc508 upstream.
    
    I had the following weird phenomena on a mobile phone: while
    the capacity in /sys/class/power_supply/ab8500_fg/capacity
    would reflect the actual charge and capacity of the battery,
    only 1/3 of the value was shown on the battery status
    indicator and warnings for low battery appeared.
    
    It turns out that UPower, the Freedesktop power daemon,
    will average all the power supplies of type "battery" in
    /sys/class/power_supply/* if there is more than one battery.
    
    For the AB8500, there was "battery" ab8500_fg, ab8500_btemp
    and ab8500_chargalg. The latter two don't know anything
    about the battery, and should not be considered. They were
    however averaged and with the capacity of 0.
    
    Flag ab8500_btemp and ab8500_chargalg with type "unknown"
    so they are not averaged as batteries.
    
    Remove the technology prop from ab8500_btemp as well, all
    it does is snoop in on knowledge from another supply.
    
    After this the battery indicator shows the right value.
    
    Cc: Stefan Hansson <newbyte@disroot.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 883d5811c528be736c21a564a8ce8922beef1dd7
Author: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
Date:   Mon Jun 12 16:36:52 2023 +0200

    power: supply: rk817: Add missing module alias
    
    commit cbcdfbf5a6cd66e47e5ee5d49c4c5a27a07ba082 upstream.
    
    Similar to the rk817 codec alias that was missing, the rk817 charger
    driver is missing a module alias as well. This absence prevents the
    driver from autoprobing on OF systems when it is built as a module.
    
    Add the right MODULE_ALIAS to fix this.
    
    Fixes: 11cb8da0189b ("power: supply: Add charger driver for Rockchip RK817")
    Cc: stable@vger.kernel.org
    Signed-off-by: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
    Reviewed-by: Chris Morgan <macromorgan@hotmail.com>
    Link: https://lore.kernel.org/r/20230612143651.959646-2-frattaroli.nicolas@gmail.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 280fe281c89b3968a38692146b12196dc0d36a35
Author: Javier Pello <devel@otheo.eu>
Date:   Sat Sep 2 17:10:39 2023 +0200

    drm/i915/gt: Fix reservation address in ggtt_reserve_guc_top
    
    commit b7599d241778d0b10cdf7a5c755aa7db9b83250c upstream.
    
    There is an assertion in ggtt_reserve_guc_top that the global GTT
    is of size at least GUC_GGTT_TOP, which is not the case on a 32-bit
    platform; see commit 562d55d991b39ce376c492df2f7890fd6a541ffc
    ("drm/i915/bdw: Only use 2g GGTT for 32b platforms"). If GEM_BUG_ON
    is enabled, this triggers a BUG(); if GEM_BUG_ON is disabled, the
    subsequent reservation fails and the driver fails to initialise
    the device:
    
    i915 0000:00:02.0: [drm:i915_init_ggtt [i915]] Failed to reserve top of GGTT for GuC
    i915 0000:00:02.0: Device initialization failed (-28)
    i915 0000:00:02.0: Please file a bug on drm/i915; see https://gitlab.freedesktop.org/drm/intel/-/wikis/How-to-file-i915-bugs for details.
    i915: probe of 0000:00:02.0 failed with error -28
    
    Make the reservation at the top of the available space, whatever
    that is, instead of assuming that the top will be GUC_GGTT_TOP.
    
    Fixes: 911800765ef6 ("drm/i915/uc: Reserve upper range of GGTT")
    Link: https://gitlab.freedesktop.org/drm/intel/-/issues/9080
    Signed-off-by: Javier Pello <devel@otheo.eu>
    Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Cc: Fernando Pacheco <fernando.pacheco@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
    Cc: intel-gfx@lists.freedesktop.org
    Cc: stable@vger.kernel.org # v5.3+
    Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230902171039.2229126186d697dbcf62d6d8@otheo.eu
    (cherry picked from commit 0f3fa942d91165c2702577e9274d2ee1c7212afc)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c81803b432c6119e599294967c133b12617eaa8d
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Tue Sep 19 20:48:55 2023 +0100

    i915: Limit the length of an sg list to the requested length
    
    commit 863a8eb3f27098b42772f668e3977ff4cae10b04 upstream.
    
    The folio conversion changed the behaviour of shmem_sg_alloc_table() to
    put the entire length of the last folio into the sg list, even if the sg
    list should have been shorter.  gen8_ggtt_insert_entries() relied on the
    list being the right length and would overrun the end of the page tables.
    Other functions may also have been affected.
    
    Clamp the length of the last entry in the sg list to be the expected
    length.
    
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Fixes: 0b62af28f249 ("i915: convert shmem_sg_free_table() to use a folio_batch")
    Cc: stable@vger.kernel.org # 6.5.x
    Link: https://gitlab.freedesktop.org/drm/intel/-/issues/9256
    Link: https://lore.kernel.org/lkml/6287208.lOV4Wx5bFT@natalenko.name/
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
    Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230919194855.347582-1-willy@infradead.org
    (cherry picked from commit 26a8e32e6d77900819c0c730fbfb393692dbbeea)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6bb3bcb82388c8a7e9aaa13b652f733fb82db1f
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Fri Sep 22 22:55:16 2023 +0200

    ata: libata-sata: increase PMP SRST timeout to 10s
    
    commit 753a4d531bc518633ea88ac0ed02b25a16823d51 upstream.
    
    On certain SATA controllers, softreset fails after wakeup from S2RAM with
    the message "softreset failed (1st FIS failed)", sometimes resulting in
    drives not being detected again. With the increased timeout, this issue
    is avoided. Instead, "softreset failed (device not ready)" is now
    logged 1-2 times; this later failure seems to cause fewer problems
    however, and the drives are detected reliably once they've spun up and
    the probe is retried.
    
    The issue was observed with the primary SATA controller of the QNAP
    TS-453B, which is an "Intel Corporation Celeron/Pentium Silver Processor
    SATA Controller [8086:31e3] (rev 06)" integrated in the Celeron J4125 CPU,
    and the following drives:
    
    - Seagate IronWolf ST12000VN0008
    - Seagate IronWolf ST8000NE0004
    
    The SATA controller seems to be more relevant to this issue than the
    drives, as the same drives are always detected reliably on the secondary
    SATA controller on the same board (an ASMedia 106x) without any "softreset
    failed" errors even without the increased timeout.
    
    Fixes: e7d3ef13d52a ("libata: change drive ready wait after hard reset to 5s")
    Cc: stable@vger.kernel.org
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5514987aef4a8bbabd220713265a9c081e90c2e0
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Sep 8 20:04:52 2023 +0900

    ata: libata-core: Do not register PM operations for SAS ports
    
    commit 75e2bd5f1ede42a2bc88aa34b431e1ace8e0bea0 upstream.
    
    libsas does its own domain based power management of ports. For such
    ports, libata should not use a device type defining power management
    operations as executing these operations for suspend/resume in addition
    to libsas calls to ata_sas_port_suspend() and ata_sas_port_resume() is
    not necessary (and likely dangerous to do, even though problems are not
    seen currently).
    
    Introduce the new ata_port_sas_type device_type for ports managed by
    libsas. This new device type is used in ata_tport_add() and is defined
    without power management operations.
    
    Fixes: 2fcbdcb4c802 ("[SCSI] libata: export ata_port suspend/resume infrastructure for sas")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Tested-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78b7119f3bedd7f90a7d135e5f01bc457d1a4728
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Sat Aug 26 13:07:36 2023 +0900

    ata: libata-core: Fix port and device removal
    
    commit 84d76529c650f887f1e18caee72d6f0589e1baf9 upstream.
    
    Whenever an ATA adapter driver is removed (e.g. rmmod),
    ata_port_detach() is called repeatedly for all the adapter ports to
    remove (unload) the devices attached to the port and delete the port
    device itself. Removing of devices is done using libata EH with the
    ATA_PFLAG_UNLOADING port flag set. This causes libata EH to execute
    ata_eh_unload() which disables all devices attached to the port.
    
    ata_port_detach() finishes by calling scsi_remove_host() to remove the
    scsi host associated with the port. This function will trigger the
    removal of all scsi devices attached to the host and in the case of
    disks, calls to sd_shutdown() which will flush the device write cache
    and stop the device. However, given that the devices were already
    disabled by ata_eh_unload(), the synchronize write cache command and
    start stop unit commands fail. E.g. running "rmmod ahci" with first
    removing sd_mod results in error messages like:
    
    ata13.00: disable device
    sd 0:0:0:0: [sda] Synchronizing SCSI cache
    sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
    sd 0:0:0:0: [sda] Stopping disk
    sd 0:0:0:0: [sda] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
    
    Fix this by removing all scsi devices of the ata devices connected to
    the port before scheduling libata EH to disable the ATA devices.
    
    Fixes: 720ba12620ee ("[PATCH] libata-hp: update unload-unplug")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Tested-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfc77502d6e746d4a0b943bbc83a88de859fdd86
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Mon Sep 4 20:38:13 2023 +0900

    ata: libata-core: Fix ata_port_request_pm() locking
    
    commit 3b8e0af4a7a331d1510e963b8fd77e2fca0a77f1 upstream.
    
    The function ata_port_request_pm() checks the port flag
    ATA_PFLAG_PM_PENDING and calls ata_port_wait_eh() if this flag is set to
    ensure that power management operations for a port are not scheduled
    simultaneously. However, this flag check is done without holding the
    port lock.
    
    Fix this by taking the port lock on entry to the function and checking
    the flag under this lock. The lock is released and re-taken if
    ata_port_wait_eh() needs to be called. The two WARN_ON() macros checking
    that the ATA_PFLAG_PM_PENDING flag was cleared are removed as the first
    call is racy and the second one done without holding the port lock.
    
    Fixes: 5ef41082912b ("ata: add ata port system PM callbacks")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Tested-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 459ee86211d42d9b4a449bd9bcc4207d0c0917c1
Author: Beau Belgrave <beaub@linux.microsoft.com>
Date:   Mon Sep 25 23:08:28 2023 +0000

    tracing/user_events: Align set_bit() address for all archs
    
    commit 2de9ee94054263940122aee8720e902b30c27930 upstream.
    
    All architectures should use a long aligned address passed to set_bit().
    User processes can pass either a 32-bit or 64-bit sized value to be
    updated when tracing is enabled when on a 64-bit kernel. Both cases are
    ensured to be naturally aligned, however, that is not enough. The
    address must be long aligned without affecting checks on the value
    within the user process which require different adjustments for the bit
    for little and big endian CPUs.
    
    Add a compat flag to user_event_enabler that indicates when a 32-bit
    value is being used on a 64-bit kernel. Long align addresses and correct
    the bit to be used by set_bit() to account for this alignment. Ensure
    compat flags are copied during forks and used during deletion clears.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230925230829.341-2-beaub@linux.microsoft.com
    Link: https://lore.kernel.org/linux-trace-kernel/20230914131102.179100-1-cleger@rivosinc.com/
    
    Cc: stable@vger.kernel.org
    Fixes: 7235759084a4 ("tracing/user_events: Use remote writes for event enablement")
    Reported-by: Clément Léger <cleger@rivosinc.com>
    Suggested-by: Clément Léger <cleger@rivosinc.com>
    Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c116005af551e9cf437a9ec8c80204c2d4b1b53
Author: Quang Le <quanglex97@gmail.com>
Date:   Fri Sep 29 00:44:13 2023 +0700

    fs/smb/client: Reset password pointer to NULL
    
    commit e6e43b8aa7cd3c3af686caf0c2e11819a886d705 upstream.
    
    Forget to reset ctx->password to NULL will lead to bug like double free
    
    Cc: stable@vger.kernel.org
    Cc: Willy Tarreau <w@1wt.eu>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Quang Le <quanglex97@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddf013bc905e87b307c8189cbb298e4d722f5077
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Sep 15 20:35:33 2023 +0200

    thermal: sysfs: Fix trip_point_hyst_store()
    
    commit ea3105672c68a5b6d7368504067220682ee6c65c upstream.
    
    After commit 2e38a2a981b2 ("thermal/core: Add a generic thermal_zone_set_trip()
    function") updating a trip point temperature doesn't actually work,
    because the value supplied by user space is subsequently overwritten
    with the current trip point hysteresis value.
    
    Fix this by changing the code to parse the number string supplied by
    user space after retrieving the current trip point data from the
    thermal zone.
    
    Also drop a redundant tab character from the code in question.
    
    Fixes: 2e38a2a981b2 ("thermal/core: Add a generic thermal_zone_set_trip() function")
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: 6.3+ <stable@vger.kernel.org> # 6.3+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5aaa6b31f1491481c26746dd54f915723b6bc083
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Sep 13 08:26:47 2023 +0300

    net: thunderbolt: Fix TCPv6 GSO checksum calculation
    
    commit e0b65f9b81fef180cf5f103adecbe5505c961153 upstream.
    
    Alex reported that running ssh over IPv6 does not work with
    Thunderbolt/USB4 networking driver. The reason for that is that driver
    should call skb_is_gso() before calling skb_is_gso_v6(), and it should
    not return false after calculates the checksum successfully. This probably
    was a copy paste error from the original driver where it was done properly.
    
    Reported-by: Alex Balcanquall <alex@alexbal.com>
    Fixes: e69b6c02b4c3 ("net: Add support for networking over Thunderbolt cable")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fb40c7de8d7d2730e27cecf132d637f37330c54
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Fri Sep 15 10:34:28 2023 -0700

    bpf: Fix BTF_ID symbol generation collision in tools/
    
    commit c0bb9fb0e52a64601d38b3739b729d9138d4c8a1 upstream.
    
    Marcus and Satya reported an issue where BTF_ID macro generates same
    symbol in separate objects and that breaks final vmlinux link.
    
      ld.lld: error: ld-temp.o <inline asm>:14577:1: symbol
      '__BTF_ID__struct__cgroup__624' is already defined
    
    This can be triggered under specific configs when __COUNTER__ happens to
    be the same for the same symbol in two different translation units,
    which is already quite unlikely to happen.
    
    Add __LINE__ number suffix to make BTF_ID symbol more unique, which is
    not a complete fix, but it would help for now and meanwhile we can work
    on better solution as suggested by Andrii.
    
    Cc: stable@vger.kernel.org
    Reported-by: Satya Durga Srinivasu Prabhala <quic_satyap@quicinc.com>
    Reported-by: Marcus Seyfarth <m.seyfarth@gmail.com>
    Closes: https://github.com/ClangBuiltLinux/linux/issues/1913
    Debugged-by: Nathan Chancellor <nathan@kernel.org>
    Co-developed-by: Jiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/bpf/CAEf4Bzb5KQ2_LmhN769ifMeSJaWfebccUasQOfQKaOd0nQ51tw@mail.gmail.com/
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Link: https://lore.kernel.org/r/20230915-bpf_collision-v3-2-263fc519c21f@google.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7037b8dc206aa58989955f5bd8c58b1eb7034b3a
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Fri Sep 15 10:34:27 2023 -0700

    bpf: Fix BTF_ID symbol generation collision
    
    commit 8f908db77782630c45ba29dac35c434b5ce0b730 upstream.
    
    Marcus and Satya reported an issue where BTF_ID macro generates same
    symbol in separate objects and that breaks final vmlinux link.
    
    ld.lld: error: ld-temp.o <inline asm>:14577:1: symbol
    '__BTF_ID__struct__cgroup__624' is already defined
    
    This can be triggered under specific configs when __COUNTER__ happens to
    be the same for the same symbol in two different translation units,
    which is already quite unlikely to happen.
    
    Add __LINE__ number suffix to make BTF_ID symbol more unique, which is
    not a complete fix, but it would help for now and meanwhile we can work
    on better solution as suggested by Andrii.
    
    Cc: stable@vger.kernel.org
    Reported-by: Satya Durga Srinivasu Prabhala <quic_satyap@quicinc.com>
    Reported-by: Marcus Seyfarth <m.seyfarth@gmail.com>
    Closes: https://github.com/ClangBuiltLinux/linux/issues/1913
    Debugged-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/bpf/CAEf4Bzb5KQ2_LmhN769ifMeSJaWfebccUasQOfQKaOd0nQ51tw@mail.gmail.com/
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20230915-bpf_collision-v3-1-263fc519c21f@google.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2a76aeeee1bfb2bce66c352a58df3eaa4a1c8b9
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Sep 7 22:06:51 2023 +0200

    bpf: Add override check to kprobe multi link attach
    
    commit 41bc46c12a8053a1b3279a379bd6b5e87b045b85 upstream.
    
    Currently the multi_kprobe link attach does not check error
    injection list for programs with bpf_override_return helper
    and allows them to attach anywhere. Adding the missing check.
    
    Fixes: 0dcac2725406 ("bpf: Add multi kprobe link")
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/bpf/20230907200652.926951-1-jolsa@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bcf70d787f7d53a3b85ad394f926cfef3eed023
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Thu Jul 20 17:46:54 2023 +0000

    media: uvcvideo: Fix OOB read
    
    commit 41ebaa5e0eebea4c3bac96b72f9f8ae0d77c0bdb upstream.
    
    If the index provided by the user is bigger than the mask size, we might do
    an out of bound read.
    
    CC: stable@kernel.org
    Fixes: 40140eda661e ("media: uvcvideo: Implement mask for V4L2_CTRL_TYPE_MENU")
    Reported-by: Zubin Mithra <zsm@chromium.org>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d82b1eaf907103c2ad3b8888a279e9fc47cea317
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Mon Sep 18 10:34:51 2023 -0400

    btrfs: properly report 0 avail for very full file systems
    
    commit 58bfe2ccec5f9f137b41dd38f335290dcc13cd5c upstream.
    
    A user reported some issues with smaller file systems that get very
    full.  While investigating this issue I noticed that df wasn't showing
    100% full, despite having 0 chunk space and having < 1MiB of available
    metadata space.
    
    This turns out to be an overflow issue, we're doing:
    
      total_available_metadata_space - SZ_4M < global_block_rsv_size
    
    to determine if there's not enough space to make metadata allocations,
    which overflows if total_available_metadata_space is < 4M.  Fix this by
    checking to see if our available space is greater than the 4M threshold.
    This makes df properly report 100% usage on the file system.
    
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: Josef Bacik <josef@toxicpanda.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 ef1054fb901aff291f83c4349523ee5359386026
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Sep 12 11:45:39 2023 +0100

    btrfs: fix race between reading a directory and adding entries to it
    
    commit 8e7f82deb0c0386a03b62e30082574347f8b57d5 upstream.
    
    When opening a directory (opendir(3)) or rewinding it (rewinddir(3)), we
    are not holding the directory's inode locked, and this can result in later
    attempting to add two entries to the directory with the same index number,
    resulting in a transaction abort, with -EEXIST (-17), when inserting the
    second delayed dir index. This results in a trace like the following:
    
      Sep 11 22:34:59 myhostname kernel: BTRFS error (device dm-3): err add delayed dir index item(name: cockroach-stderr.log) into the insertion tree of the delayed node(root id: 5, inode id: 4539217, errno: -17)
      Sep 11 22:34:59 myhostname kernel: ------------[ cut here ]------------
      Sep 11 22:34:59 myhostname kernel: kernel BUG at fs/btrfs/delayed-inode.c:1504!
      Sep 11 22:34:59 myhostname kernel: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
      Sep 11 22:34:59 myhostname kernel: CPU: 0 PID: 7159 Comm: cockroach Not tainted 6.4.15-200.fc38.x86_64 #1
      Sep 11 22:34:59 myhostname kernel: Hardware name: ASUS ESC500 G3/P9D WS, BIOS 2402 06/27/2018
      Sep 11 22:34:59 myhostname kernel: RIP: 0010:btrfs_insert_delayed_dir_index+0x1da/0x260
      Sep 11 22:34:59 myhostname kernel: Code: eb dd 48 (...)
      Sep 11 22:34:59 myhostname kernel: RSP: 0000:ffffa9980e0fbb28 EFLAGS: 00010282
      Sep 11 22:34:59 myhostname kernel: RAX: 0000000000000000 RBX: ffff8b10b8f4a3c0 RCX: 0000000000000000
      Sep 11 22:34:59 myhostname kernel: RDX: 0000000000000000 RSI: ffff8b177ec21540 RDI: ffff8b177ec21540
      Sep 11 22:34:59 myhostname kernel: RBP: ffff8b110cf80888 R08: 0000000000000000 R09: ffffa9980e0fb938
      Sep 11 22:34:59 myhostname kernel: R10: 0000000000000003 R11: ffffffff86146508 R12: 0000000000000014
      Sep 11 22:34:59 myhostname kernel: R13: ffff8b1131ae5b40 R14: ffff8b10b8f4a418 R15: 00000000ffffffef
      Sep 11 22:34:59 myhostname kernel: FS:  00007fb14a7fe6c0(0000) GS:ffff8b177ec00000(0000) knlGS:0000000000000000
      Sep 11 22:34:59 myhostname kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      Sep 11 22:34:59 myhostname kernel: CR2: 000000c00143d000 CR3: 00000001b3b4e002 CR4: 00000000001706f0
      Sep 11 22:34:59 myhostname kernel: Call Trace:
      Sep 11 22:34:59 myhostname kernel:  <TASK>
      Sep 11 22:34:59 myhostname kernel:  ? die+0x36/0x90
      Sep 11 22:34:59 myhostname kernel:  ? do_trap+0xda/0x100
      Sep 11 22:34:59 myhostname kernel:  ? btrfs_insert_delayed_dir_index+0x1da/0x260
      Sep 11 22:34:59 myhostname kernel:  ? do_error_trap+0x6a/0x90
      Sep 11 22:34:59 myhostname kernel:  ? btrfs_insert_delayed_dir_index+0x1da/0x260
      Sep 11 22:34:59 myhostname kernel:  ? exc_invalid_op+0x50/0x70
      Sep 11 22:34:59 myhostname kernel:  ? btrfs_insert_delayed_dir_index+0x1da/0x260
      Sep 11 22:34:59 myhostname kernel:  ? asm_exc_invalid_op+0x1a/0x20
      Sep 11 22:34:59 myhostname kernel:  ? btrfs_insert_delayed_dir_index+0x1da/0x260
      Sep 11 22:34:59 myhostname kernel:  ? btrfs_insert_delayed_dir_index+0x1da/0x260
      Sep 11 22:34:59 myhostname kernel:  btrfs_insert_dir_item+0x200/0x280
      Sep 11 22:34:59 myhostname kernel:  btrfs_add_link+0xab/0x4f0
      Sep 11 22:34:59 myhostname kernel:  ? ktime_get_real_ts64+0x47/0xe0
      Sep 11 22:34:59 myhostname kernel:  btrfs_create_new_inode+0x7cd/0xa80
      Sep 11 22:34:59 myhostname kernel:  btrfs_symlink+0x190/0x4d0
      Sep 11 22:34:59 myhostname kernel:  ? schedule+0x5e/0xd0
      Sep 11 22:34:59 myhostname kernel:  ? __d_lookup+0x7e/0xc0
      Sep 11 22:34:59 myhostname kernel:  vfs_symlink+0x148/0x1e0
      Sep 11 22:34:59 myhostname kernel:  do_symlinkat+0x130/0x140
      Sep 11 22:34:59 myhostname kernel:  __x64_sys_symlinkat+0x3d/0x50
      Sep 11 22:34:59 myhostname kernel:  do_syscall_64+0x5d/0x90
      Sep 11 22:34:59 myhostname kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
      Sep 11 22:34:59 myhostname kernel:  ? do_syscall_64+0x6c/0x90
      Sep 11 22:34:59 myhostname kernel:  entry_SYSCALL_64_after_hwframe+0x72/0xdc
    
    The race leading to the problem happens like this:
    
    1) Directory inode X is loaded into memory, its ->index_cnt field is
       initialized to (u64)-1 (at btrfs_alloc_inode());
    
    2) Task A is adding a new file to directory X, holding its vfs inode lock,
       and calls btrfs_set_inode_index() to get an index number for the entry.
    
       Because the inode's index_cnt field is set to (u64)-1 it calls
       btrfs_inode_delayed_dir_index_count() which fails because no dir index
       entries were added yet to the delayed inode and then it calls
       btrfs_set_inode_index_count(). This functions finds the last dir index
       key and then sets index_cnt to that index value + 1. It found that the
       last index key has an offset of 100. However before it assigns a value
       of 101 to index_cnt...
    
    3) Task B calls opendir(3), ending up at btrfs_opendir(), where the VFS
       lock for inode X is not taken, so it calls btrfs_get_dir_last_index()
       and sees index_cnt still with a value of (u64)-1. Because of that it
       calls btrfs_inode_delayed_dir_index_count() which fails since no dir
       index entries were added to the delayed inode yet, and then it also
       calls btrfs_set_inode_index_count(). This also finds that the last
       index key has an offset of 100, and before it assigns the value 101
       to the index_cnt field of inode X...
    
    4) Task A assigns a value of 101 to index_cnt. And then the code flow
       goes to btrfs_set_inode_index() where it increments index_cnt from
       101 to 102. Task A then creates a delayed dir index entry with a
       sequence number of 101 and adds it to the delayed inode;
    
    5) Task B assigns 101 to the index_cnt field of inode X;
    
    6) At some later point when someone tries to add a new entry to the
       directory, btrfs_set_inode_index() will return 101 again and shortly
       after an attempt to add another delayed dir index key with index
       number 101 will fail with -EEXIST resulting in a transaction abort.
    
    Fix this by locking the inode at btrfs_get_dir_last_index(), which is only
    only used when opening a directory or attempting to lseek on it.
    
    Reported-by: ken <ken@bllue.org>
    Link: https://lore.kernel.org/linux-btrfs/CAE6xmH+Lp=Q=E61bU+v9eWX8gYfLvu6jLYxjxjFpo3zHVPR0EQ@mail.gmail.com/
    Reported-by: syzbot+d13490c82ad5353c779d@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/linux-btrfs/00000000000036e1290603e097e0@google.com/
    Fixes: 9b378f6ad48c ("btrfs: fix infinite directory reads")
    CC: stable@vger.kernel.org # 6.5+
    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 73b4e302165b402d2059c92c00edc2f5c2eb203a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Sat Sep 9 13:08:31 2023 +0100

    btrfs: set last dir index to the current last index when opening dir
    
    commit 357950361cbc6d54fb68ed878265c647384684ae upstream.
    
    When opening a directory for reading it, we set the last index where we
    stop iteration to the value in struct btrfs_inode::index_cnt. That value
    does not match the index of the most recently added directory entry but
    it's instead the index number that will be assigned the next directory
    entry.
    
    This means that if after the call to opendir(3) new directory entries are
    added, a readdir(3) call will return the first new directory entry. This
    is fine because POSIX says the following [1]:
    
      "If a file is removed from or added to the directory after the most
       recent call to opendir() or rewinddir(), whether a subsequent call to
       readdir() returns an entry for that file is unspecified."
    
    For example for the test script from commit 9b378f6ad48c ("btrfs: fix
    infinite directory reads"), where we have 2000 files in a directory, ext4
    doesn't return any new directory entry after opendir(3), while xfs returns
    the first 13 new directory entries added after the opendir(3) call.
    
    If we move to a shorter example with an empty directory when opendir(3) is
    called, and 2 files added to the directory after the opendir(3) call, then
    readdir(3) on btrfs will return the first file, ext4 and xfs return the 2
    files (but in a different order). A test program for this, reported by
    Ian Johnson, is the following:
    
       #include <dirent.h>
       #include <stdio.h>
    
       int main(void) {
         DIR *dir = opendir("test");
    
         FILE *file;
         file = fopen("test/1", "w");
         fwrite("1", 1, 1, file);
         fclose(file);
    
         file = fopen("test/2", "w");
         fwrite("2", 1, 1, file);
         fclose(file);
    
         struct dirent *entry;
         while ((entry = readdir(dir))) {
            printf("%s\n", entry->d_name);
         }
         closedir(dir);
         return 0;
       }
    
    To make this less odd, change the behaviour to never return new entries
    that were added after the opendir(3) call. This is done by setting the
    last_index field of the struct btrfs_file_private attached to the
    directory's file handle with a value matching btrfs_inode::index_cnt
    minus 1, since that value always matches the index of the next new
    directory entry and not the index of the most recently added entry.
    
    [1] https://pubs.opengroup.org/onlinepubs/007904875/functions/readdir_r.html
    
    Link: https://lore.kernel.org/linux-btrfs/YR1P0S.NGASEG570GJ8@ianjohnson.dev/
    CC: stable@vger.kernel.org # 6.5+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59a051389e1433b1a9abd258f3b4278b5e30654d
Author: Bernd Schubert <bschubert@ddn.com>
Date:   Wed Sep 6 17:59:03 2023 +0200

    btrfs: file_remove_privs needs an exclusive lock in direct io write
    
    commit 9af86694fd5d387992699ec99007ed374966ce9a upstream.
    
    This was noticed by Miklos that file_remove_privs might call into
    notify_change(), which requires to hold an exclusive lock. The problem
    exists in FUSE and btrfs. We can fix it without any additional helpers
    from VFS, in case the privileges would need to be dropped, change the
    lock type to be exclusive and redo the loop.
    
    Fixes: e9adabb9712e ("btrfs: use shared lock for direct writes within EOF")
    CC: Miklos Szeredi <miklos@szeredi.hu>
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Bernd Schubert <bschubert@ddn.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 7bcb92540536e654be2c592b68d47bc529ebfa37
Author: Filipe Manana <fdmanana@suse.com>
Date:   Sat Sep 9 13:08:32 2023 +0100

    btrfs: refresh dir last index during a rewinddir(3) call
    
    commit e60aa5da14d01fed8411202dbe4adf6c44bd2a57 upstream.
    
    When opening a directory we find what's the index of its last entry and
    then store it in the directory's file handle private data (struct
    btrfs_file_private::last_index), so that in the case new directory entries
    are added to a directory after an opendir(3) call we don't end up in an
    infinite loop (see commit 9b378f6ad48c ("btrfs: fix infinite directory
    reads")) when calling readdir(3).
    
    However once rewinddir(3) is called, POSIX states [1] that any new
    directory entries added after the previous opendir(3) call, must be
    returned by subsequent calls to readdir(3):
    
      "The rewinddir() function shall reset the position of the directory
       stream to which dirp refers to the beginning of the directory.
       It shall also cause the directory stream to refer to the current
       state of the corresponding directory, as a call to opendir() would
       have done."
    
    We currently don't refresh the last_index field of the struct
    btrfs_file_private associated to the directory, so after a rewinddir(3)
    we are not returning any new entries added after the opendir(3) call.
    
    Fix this by finding the current last index of the directory when llseek
    is called against the directory.
    
    This can be reproduced by the following C program provided by Ian Johnson:
    
       #include <dirent.h>
       #include <stdio.h>
    
       int main(void) {
         DIR *dir = opendir("test");
    
         FILE *file;
         file = fopen("test/1", "w");
         fwrite("1", 1, 1, file);
         fclose(file);
    
         file = fopen("test/2", "w");
         fwrite("2", 1, 1, file);
         fclose(file);
    
         rewinddir(dir);
    
         struct dirent *entry;
         while ((entry = readdir(dir))) {
            printf("%s\n", entry->d_name);
         }
         closedir(dir);
         return 0;
       }
    
    Reported-by: Ian Johnson <ian@ianjohnson.dev>
    Link: https://lore.kernel.org/linux-btrfs/YR1P0S.NGASEG570GJ8@ianjohnson.dev/
    Fixes: 9b378f6ad48c ("btrfs: fix infinite directory reads")
    CC: stable@vger.kernel.org # 6.5+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fed9f0c06f65ef167148274214a9f2198cb2803f
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Fri Sep 29 18:01:13 2023 -0400

    ring-buffer: Update "shortest_full" in polling
    
    commit 1e0cb399c7653462d9dadf8ab9425337c355d358 upstream.
    
    It was discovered that the ring buffer polling was incorrectly stating
    that read would not block, but that's because polling did not take into
    account that reads will block if the "buffer-percent" was set. Instead,
    the ring buffer polling would say reads would not block if there was any
    data in the ring buffer. This was incorrect behavior from a user space
    point of view. This was fixed by commit 42fb0a1e84ff by having the polling
    code check if the ring buffer had more data than what the user specified
    "buffer percent" had.
    
    The problem now is that the polling code did not register itself to the
    writer that it wanted to wait for a specific "full" value of the ring
    buffer. The result was that the writer would wake the polling waiter
    whenever there was a new event. The polling waiter would then wake up, see
    that there's not enough data in the ring buffer to notify user space and
    then go back to sleep. The next event would wake it up again.
    
    Before the polling fix was added, the code would wake up around 100 times
    for a hackbench 30 benchmark. After the "fix", due to the constant waking
    of the writer, it would wake up over 11,0000 times! It would never leave
    the kernel, so the user space behavior was still "correct", but this
    definitely is not the desired effect.
    
    To fix this, have the polling code add what it's waiting for to the
    "shortest_full" variable, to tell the writer not to wake it up if the
    buffer is not as full as it expects to be.
    
    Note, after this fix, it appears that the waiter is now woken up around 2x
    the times it was before (~200). This is a tremendous improvement from the
    11,000 times, but I will need to spend some time to see why polling is
    more aggressive in its wakeups than the read blocking code.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230929180113.01c2cae3@rorschach.local.home
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Fixes: 42fb0a1e84ff ("tracing/ring-buffer: Have polling block on watermark")
    Reported-by: Julia Lawall <julia.lawall@inria.fr>
    Tested-by: Julia Lawall <julia.lawall@inria.fr>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01cba4eece7d54cebbc59c0807877ec532001a46
Author: Zheng Yejian <zhengyejian1@huawei.com>
Date:   Thu Sep 21 20:54:25 2023 +0800

    ring-buffer: Fix bytes info in per_cpu buffer stats
    
    commit 45d99ea451d0c30bfd4864f0fe485d7dac014902 upstream.
    
    The 'bytes' info in file 'per_cpu/cpu<X>/stats' means the number of
    bytes in cpu buffer that have not been consumed. However, currently
    after consuming data by reading file 'trace_pipe', the 'bytes' info
    was not changed as expected.
    
      # cat per_cpu/cpu0/stats
      entries: 0
      overrun: 0
      commit overrun: 0
      bytes: 568             <--- 'bytes' is problematical !!!
      oldest event ts:  8651.371479
      now ts:  8653.912224
      dropped events: 0
      read events: 8
    
    The root cause is incorrect stat on cpu_buffer->read_bytes. To fix it:
      1. When stat 'read_bytes', account consumed event in rb_advance_reader();
      2. When stat 'entries_bytes', exclude the discarded padding event which
         is smaller than minimum size because it is invisible to reader. Then
         use rb_page_commit() instead of BUF_PAGE_SIZE at where accounting for
         page-based read/remove/overrun.
    
    Also correct the comments of ring_buffer_bytes_cpu() in this patch.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230921125425.1708423-1-zhengyejian1@huawei.com
    
    Cc: stable@vger.kernel.org
    Fixes: c64e148a3be3 ("trace: Add ring buffer stats to measure rate of events")
    Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8067b844c920f14ad362eb1a7f114a2a8396b71d
Author: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
Date:   Wed Aug 23 23:43:03 2023 +0000

    cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
    
    commit 0339dc39a521ead3dbcf101acd8c028c61db57dc upstream.
    
    cxl_pci fails to unmask CXL protocol errors when CXL memory error reporting
    is not granted native control. Given that CXL memory error reporting uses
    the event interface and protocol errors use AER, unmask protocol errors
    based only on the native AER setting. Without this change end user
    deployments will fail to report protocol errors in the case where native
    memory error handling is not granted to Linux.
    
    Also, return zero instead of an error code to not block the communication
    with the cxl device when in native memory error reporting mode.
    
    Fixes: 248529edc86f ("cxl: add RAS status unmasking for CXL")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
    Reviewed-by: Robert Richter <rrichter@amd.com>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20230823234305.27333-2-Smita.KoralahalliChannabasappa@amd.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 560e15b9b48f075ae396db79cb5ea0ef828e1ebc
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Fri Sep 15 01:07:30 2023 -0700

    cxl/port: Fix cxl_test register enumeration regression
    
    commit a76b62518eb30ef59158fa777ab2e2a23e1334f9 upstream.
    
    The cxl_test unit test environment models a CXL topology for
    sysfs/user-ABI regression testing. It uses interface mocking via the
    "--wrap=" linker option to redirect cxl_core routines that parse
    hardware registers with versions that just publish objects, like
    devm_cxl_enumerate_decoders().
    
    Starting with:
    
    Commit 19ab69a60e3b ("cxl/port: Store the port's Component Register mappings in struct cxl_port")
    
    ...port register enumeration is moved into devm_cxl_add_port(). This
    conflicts with the "cxl_test avoids emulating registers stance" so
    either the port code needs to be refactored (too violent), or modified
    so that register enumeration is skipped on "fake" cxl_test ports
    (annoying, but straightforward).
    
    This conflict has happened previously and the "check for platform
    device" workaround to avoid instrusive refactoring was deployed in those
    scenarios. In general, refactoring should only benefit production code,
    test code needs to remain minimally instrusive to the greatest extent
    possible.
    
    This was missed previously because it may sometimes just cause warning
    messages to be emitted, but it can also cause test failures. The
    backport to -stable is only nice to have for clean cxl_test runs.
    
    Fixes: 19ab69a60e3b ("cxl/port: Store the port's Component Register mappings in struct cxl_port")
    Cc: stable@vger.kernel.org
    Reported-by: Alison Schofield <alison.schofield@intel.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Tested-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/169476525052.1013896.6235102957693675187.stgit@dwillia2-xfh.jf.intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bc7cbf9ef695e830146d8b374b20274ada4837f
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Thu Sep 14 11:21:39 2023 -0400

    mm: memcontrol: fix GFP_NOFS recursion in memory.high enforcement
    
    commit 9ea9cb00a82b53ec39630eac718776d37e41b35a upstream.
    
    Breno and Josef report a deadlock scenario from cgroup reclaim
    re-entering the filesystem:
    
    [  361.546690] ======================================================
    [  361.559210] WARNING: possible circular locking dependency detected
    [  361.571703] 6.5.0-0_fbk700_debug_rc0_kbuilder_13159_gbf787a128001 #1 Tainted: G S          E
    [  361.589704] ------------------------------------------------------
    [  361.602277] find/9315 is trying to acquire lock:
    [  361.611625] ffff88837ba140c0 (&delayed_node->mutex){+.+.}-{4:4}, at: __btrfs_release_delayed_node+0x68/0x4f0
    [  361.631437]
    [  361.631437] but task is already holding lock:
    [  361.643243] ffff8881765b8678 (btrfs-tree-01){++++}-{4:4}, at: btrfs_tree_read_lock+0x1e/0x40
    
    [  362.904457]  mutex_lock_nested+0x1c/0x30
    [  362.912414]  __btrfs_release_delayed_node+0x68/0x4f0
    [  362.922460]  btrfs_evict_inode+0x301/0x770
    [  362.982726]  evict+0x17c/0x380
    [  362.988944]  prune_icache_sb+0x100/0x1d0
    [  363.005559]  super_cache_scan+0x1f8/0x260
    [  363.013695]  do_shrink_slab+0x2a2/0x540
    [  363.021489]  shrink_slab_memcg+0x237/0x3d0
    [  363.050606]  shrink_slab+0xa7/0x240
    [  363.083382]  shrink_node_memcgs+0x262/0x3b0
    [  363.091870]  shrink_node+0x1a4/0x720
    [  363.099150]  shrink_zones+0x1f6/0x5d0
    [  363.148798]  do_try_to_free_pages+0x19b/0x5e0
    [  363.157633]  try_to_free_mem_cgroup_pages+0x266/0x370
    [  363.190575]  reclaim_high+0x16f/0x1f0
    [  363.208409]  mem_cgroup_handle_over_high+0x10b/0x270
    [  363.246678]  try_charge_memcg+0xaf2/0xc70
    [  363.304151]  charge_memcg+0xf0/0x350
    [  363.320070]  __mem_cgroup_charge+0x28/0x40
    [  363.328371]  __filemap_add_folio+0x870/0xd50
    [  363.371303]  filemap_add_folio+0xdd/0x310
    [  363.399696]  __filemap_get_folio+0x2fc/0x7d0
    [  363.419086]  pagecache_get_page+0xe/0x30
    [  363.427048]  alloc_extent_buffer+0x1cd/0x6a0
    [  363.435704]  read_tree_block+0x43/0xc0
    [  363.443316]  read_block_for_search+0x361/0x510
    [  363.466690]  btrfs_search_slot+0xc8c/0x1520
    
    This is caused by the mem_cgroup_handle_over_high() not respecting the
    gfp_mask of the allocation context.  We used to only call this function on
    resume to userspace, where no locks were held.  But c9afe31ec443 ("memcg:
    synchronously enforce memory.high for large overcharges") added a call
    from the allocation context without considering the gfp.
    
    Link: https://lkml.kernel.org/r/20230914152139.100822-1-hannes@cmpxchg.org
    Fixes: c9afe31ec443 ("memcg: synchronously enforce memory.high for large overcharges")
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Reported-by: Breno Leitao <leitao@debian.org>
    Reported-by: Josef Bacik <josef@toxicpanda.com>
    Acked-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: <stable@vger.kernel.org>    [5.17+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaf409c8d4b103a993e67797d8b9c28699984b28
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Mon Sep 11 14:11:08 2023 -0400

    mm: page_alloc: fix CMA and HIGHATOMIC landing on the wrong buddy list
    
    commit 7b086755fb8cdbb6b3e45a1bbddc00e7f9b1dc03 upstream.
    
    Commit 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock")
    bypasses the pcplist on lock contention and returns the page directly to
    the buddy list of the page's migratetype.
    
    For pages that don't have their own pcplist, such as CMA and HIGHATOMIC,
    the migratetype is temporarily updated such that the page can hitch a ride
    on the MOVABLE pcplist.  Their true type is later reassessed when flushing
    in free_pcppages_bulk().  However, when lock contention is detected after
    the type was already overridden, the bypass will then put the page on the
    wrong buddy list.
    
    Once on the MOVABLE buddy list, the page becomes eligible for fallbacks
    and even stealing.  In the case of HIGHATOMIC, otherwise ineligible
    allocations can dip into the highatomic reserves.  In the case of CMA, the
    page can be lost from the CMA region permanently.
    
    Use a separate pcpmigratetype variable for the pcplist override.  Use the
    original migratetype when going directly to the buddy.  This fixes the bug
    and should make the intentions more obvious in the code.
    
    Originally sent here to address the HIGHATOMIC case:
    https://lore.kernel.org/lkml/20230821183733.106619-4-hannes@cmpxchg.org/
    
    Changelog updated in response to the CMA-specific bug report.
    
    [mgorman@techsingularity.net: updated changelog]
    Link: https://lkml.kernel.org/r/20230911181108.GA104295@cmpxchg.org
    Fixes: 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock")
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Reported-by: Joe Liu <joe.liu@mediatek.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51988be187b041e5355245957b0b9751fa382e0d
Author: Rafael Aquini <aquini@redhat.com>
Date:   Fri Sep 8 19:06:49 2023 -0400

    mm/slab_common: fix slab_caches list corruption after kmem_cache_destroy()
    
    commit 46a9ea6681907a3be6b6b0d43776dccc62cad6cf upstream.
    
    After the commit in Fixes:, if a module that created a slab cache does not
    release all of its allocated objects before destroying the cache (at rmmod
    time), we might end up releasing the kmem_cache object without removing it
    from the slab_caches list thus corrupting the list as kmem_cache_destroy()
    ignores the return value from shutdown_cache(), which in turn never removes
    the kmem_cache object from slabs_list in case __kmem_cache_shutdown() fails
    to release all of the cache's slabs.
    
    This is easily observable on a kernel built with CONFIG_DEBUG_LIST=y
    as after that ill release the system will immediately trip on list_add,
    or list_del, assertions similar to the one shown below as soon as another
    kmem_cache gets created, or destroyed:
    
      [ 1041.213632] list_del corruption. next->prev should be ffff89f596fb5768, but was 52f1e5016aeee75d. (next=ffff89f595a1b268)
      [ 1041.219165] ------------[ cut here ]------------
      [ 1041.221517] kernel BUG at lib/list_debug.c:62!
      [ 1041.223452] invalid opcode: 0000 [#1] PREEMPT SMP PTI
      [ 1041.225408] CPU: 2 PID: 1852 Comm: rmmod Kdump: loaded Tainted: G    B   W  OE      6.5.0 #15
      [ 1041.228244] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20230524-3.fc37 05/24/2023
      [ 1041.231212] RIP: 0010:__list_del_entry_valid+0xae/0xb0
    
    Another quick way to trigger this issue, in a kernel with CONFIG_SLUB=y,
    is to set slub_debug to poison the released objects and then just run
    cat /proc/slabinfo after removing the module that leaks slab objects,
    in which case the kernel will panic:
    
      [   50.954843] general protection fault, probably for non-canonical address 0xa56b6b6b6b6b6b8b: 0000 [#1] PREEMPT SMP PTI
      [   50.961545] CPU: 2 PID: 1495 Comm: cat Kdump: loaded Tainted: G    B   W  OE      6.5.0 #15
      [   50.966808] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20230524-3.fc37 05/24/2023
      [   50.972663] RIP: 0010:get_slabinfo+0x42/0xf0
    
    This patch fixes this issue by properly checking shutdown_cache()'s
    return value before taking the kmem_cache_release() branch.
    
    Fixes: 0495e337b703 ("mm/slab_common: Deleting kobject in kmem_cache_destroy() without holding slab_mutex/cpu_hotplug_lock")
    Signed-off-by: Rafael Aquini <aquini@redhat.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fbc764c91ebfeb1a6c80f909490d346d83de115
Author: Yang Shi <yang@os.amperecomputing.com>
Date:   Wed Sep 20 15:32:42 2023 -0700

    mm: mempolicy: keep VMA walk if both MPOL_MF_STRICT and MPOL_MF_MOVE are specified
    
    commit 24526268f4e38c9ec0c4a30de4f37ad2a2a84e47 upstream.
    
    When calling mbind() with MPOL_MF_{MOVE|MOVEALL} | MPOL_MF_STRICT, kernel
    should attempt to migrate all existing pages, and return -EIO if there is
    misplaced or unmovable page.  Then commit 6f4576e3687b ("mempolicy: apply
    page table walker on queue_pages_range()") messed up the return value and
    didn't break VMA scan early ianymore when MPOL_MF_STRICT alone.  The
    return value problem was fixed by commit a7f40cfe3b7a ("mm: mempolicy:
    make mbind() return -EIO when MPOL_MF_STRICT is specified"), but it broke
    the VMA walk early if unmovable page is met, it may cause some pages are
    not migrated as expected.
    
    The code should conceptually do:
    
     if (MPOL_MF_MOVE|MOVEALL)
         scan all vmas
         try to migrate the existing pages
         return success
     else if (MPOL_MF_MOVE* | MPOL_MF_STRICT)
         scan all vmas
         try to migrate the existing pages
         return -EIO if unmovable or migration failed
     else /* MPOL_MF_STRICT alone */
         break early if meets unmovable and don't call mbind_range() at all
     else /* none of those flags */
         check the ranges in test_walk, EFAULT without mbind_range() if discontig.
    
    Fixed the behavior.
    
    Link: https://lkml.kernel.org/r/20230920223242.3425775-1-yang@os.amperecomputing.com
    Fixes: a7f40cfe3b7a ("mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified")
    Signed-off-by: Yang Shi <yang@os.amperecomputing.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Rafael Aquini <aquini@redhat.com>
    Cc: Kirill A. Shutemov <kirill@shutemov.name>
    Cc: David Rientjes <rientjes@google.com>
    Cc: <stable@vger.kernel.org>    [4.9+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23264bdc2bada0f53b0c75a13d8289359a353061
Author: Juntong Deng <juntong.deng@outlook.com>
Date:   Wed Sep 27 02:19:44 2023 +0800

    selftests/mm: fix awk usage in charge_reserved_hugetlb.sh and hugetlb_reparenting_test.sh that may cause error
    
    commit bbe246f875d064ecfb872fe4f66152e743dfd22d upstream.
    
    According to the awk manual, the -e option does not need to be specified
    in front of 'program' (unless you need to mix program-file).
    
    The redundant -e option can cause error when users use awk tools other
    than gawk (for example, mawk does not support the -e option).
    
    Error Example:
    awk: not an option: -e
    
    Link: https://lkml.kernel.org/r/VI1P193MB075228810591AF2FDD7D42C599C3A@VI1P193MB0752.EURP193.PROD.OUTLOOK.COM
    Signed-off-by: Juntong Deng <juntong.deng@outlook.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b522001693aa113d97a985abc5f6932972e8e86
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Mon Sep 25 15:20:59 2023 +0800

    mm/damon/vaddr-test: fix memory leak in damon_do_test_apply_three_regions()
    
    commit 45120b15743fa7c0aa53d5db6dfb4c8f87be4abd upstream.
    
    When CONFIG_DAMON_VADDR_KUNIT_TEST=y and making CONFIG_DEBUG_KMEMLEAK=y
    and CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN=y, the below memory leak is detected.
    
    Since commit 9f86d624292c ("mm/damon/vaddr-test: remove unnecessary
    variables"), the damon_destroy_ctx() is removed, but still call
    damon_new_target() and damon_new_region(), the damon_region which is
    allocated by kmem_cache_alloc() in damon_new_region() and the damon_target
    which is allocated by kmalloc in damon_new_target() are not freed.  And
    the damon_region which is allocated in damon_new_region() in
    damon_set_regions() is also not freed.
    
    So use damon_destroy_target to free all the damon_regions and damon_target.
    
        unreferenced object 0xffff888107c9a940 (size 64):
          comm "kunit_try_catch", pid 1069, jiffies 4294670592 (age 732.761s)
          hex dump (first 32 bytes):
            00 00 00 00 00 00 00 00 06 00 00 00 6b 6b 6b 6b  ............kkkk
            60 c7 9c 07 81 88 ff ff f8 cb 9c 07 81 88 ff ff  `...............
          backtrace:
            [<ffffffff817e0167>] kmalloc_trace+0x27/0xa0
            [<ffffffff819c11cf>] damon_new_target+0x3f/0x1b0
            [<ffffffff819c7d55>] damon_do_test_apply_three_regions.constprop.0+0x95/0x3e0
            [<ffffffff819c82be>] damon_test_apply_three_regions1+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff8881079cc740 (size 56):
          comm "kunit_try_catch", pid 1069, jiffies 4294670592 (age 732.761s)
          hex dump (first 32 bytes):
            05 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00  ................
            6b 6b 6b 6b 6b 6b 6b 6b 00 00 00 00 6b 6b 6b 6b  kkkkkkkk....kkkk
          backtrace:
            [<ffffffff819bc492>] damon_new_region+0x22/0x1c0
            [<ffffffff819c7d91>] damon_do_test_apply_three_regions.constprop.0+0xd1/0x3e0
            [<ffffffff819c82be>] damon_test_apply_three_regions1+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff888107c9ac40 (size 64):
          comm "kunit_try_catch", pid 1071, jiffies 4294670595 (age 732.843s)
          hex dump (first 32 bytes):
            00 00 00 00 00 00 00 00 06 00 00 00 6b 6b 6b 6b  ............kkkk
            a0 cc 9c 07 81 88 ff ff 78 a1 76 07 81 88 ff ff  ........x.v.....
          backtrace:
            [<ffffffff817e0167>] kmalloc_trace+0x27/0xa0
            [<ffffffff819c11cf>] damon_new_target+0x3f/0x1b0
            [<ffffffff819c7d55>] damon_do_test_apply_three_regions.constprop.0+0x95/0x3e0
            [<ffffffff819c851e>] damon_test_apply_three_regions2+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff8881079ccc80 (size 56):
          comm "kunit_try_catch", pid 1071, jiffies 4294670595 (age 732.843s)
          hex dump (first 32 bytes):
            05 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00  ................
            6b 6b 6b 6b 6b 6b 6b 6b 00 00 00 00 6b 6b 6b 6b  kkkkkkkk....kkkk
          backtrace:
            [<ffffffff819bc492>] damon_new_region+0x22/0x1c0
            [<ffffffff819c7d91>] damon_do_test_apply_three_regions.constprop.0+0xd1/0x3e0
            [<ffffffff819c851e>] damon_test_apply_three_regions2+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff888107c9af40 (size 64):
          comm "kunit_try_catch", pid 1073, jiffies 4294670597 (age 733.011s)
          hex dump (first 32 bytes):
            00 00 00 00 00 00 00 00 06 00 00 00 6b 6b 6b 6b  ............kkkk
            20 a2 76 07 81 88 ff ff b8 a6 76 07 81 88 ff ff   .v.......v.....
          backtrace:
            [<ffffffff817e0167>] kmalloc_trace+0x27/0xa0
            [<ffffffff819c11cf>] damon_new_target+0x3f/0x1b0
            [<ffffffff819c7d55>] damon_do_test_apply_three_regions.constprop.0+0x95/0x3e0
            [<ffffffff819c877e>] damon_test_apply_three_regions3+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff88810776a200 (size 56):
          comm "kunit_try_catch", pid 1073, jiffies 4294670597 (age 733.011s)
          hex dump (first 32 bytes):
            05 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00  ................
            6b 6b 6b 6b 6b 6b 6b 6b 00 00 00 00 6b 6b 6b 6b  kkkkkkkk....kkkk
          backtrace:
            [<ffffffff819bc492>] damon_new_region+0x22/0x1c0
            [<ffffffff819c7d91>] damon_do_test_apply_three_regions.constprop.0+0xd1/0x3e0
            [<ffffffff819c877e>] damon_test_apply_three_regions3+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff88810776a740 (size 56):
          comm "kunit_try_catch", pid 1073, jiffies 4294670597 (age 733.025s)
          hex dump (first 32 bytes):
            3d 00 00 00 00 00 00 00 3f 00 00 00 00 00 00 00  =.......?.......
            6b 6b 6b 6b 6b 6b 6b 6b 00 00 00 00 6b 6b 6b 6b  kkkkkkkk....kkkk
          backtrace:
            [<ffffffff819bc492>] damon_new_region+0x22/0x1c0
            [<ffffffff819bfcc2>] damon_set_regions+0x4c2/0x8e0
            [<ffffffff819c7dbb>] damon_do_test_apply_three_regions.constprop.0+0xfb/0x3e0
            [<ffffffff819c877e>] damon_test_apply_three_regions3+0x21e/0x260
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff888108038240 (size 64):
          comm "kunit_try_catch", pid 1075, jiffies 4294670600 (age 733.022s)
          hex dump (first 32 bytes):
            00 00 00 00 00 00 00 00 03 00 00 00 6b 6b 6b 6b  ............kkkk
            48 ad 76 07 81 88 ff ff 98 ae 76 07 81 88 ff ff  H.v.......v.....
          backtrace:
            [<ffffffff817e0167>] kmalloc_trace+0x27/0xa0
            [<ffffffff819c11cf>] damon_new_target+0x3f/0x1b0
            [<ffffffff819c7d55>] damon_do_test_apply_three_regions.constprop.0+0x95/0x3e0
            [<ffffffff819c898d>] damon_test_apply_three_regions4+0x1cd/0x210
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
        unreferenced object 0xffff88810776ad28 (size 56):
          comm "kunit_try_catch", pid 1075, jiffies 4294670600 (age 733.022s)
          hex dump (first 32 bytes):
            05 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00  ................
            6b 6b 6b 6b 6b 6b 6b 6b 00 00 00 00 6b 6b 6b 6b  kkkkkkkk....kkkk
          backtrace:
            [<ffffffff819bc492>] damon_new_region+0x22/0x1c0
            [<ffffffff819bfcc2>] damon_set_regions+0x4c2/0x8e0
            [<ffffffff819c7dbb>] damon_do_test_apply_three_regions.constprop.0+0xfb/0x3e0
            [<ffffffff819c898d>] damon_test_apply_three_regions4+0x1cd/0x210
            [<ffffffff829fce6a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
            [<ffffffff81237cf6>] kthread+0x2b6/0x380
            [<ffffffff81097add>] ret_from_fork+0x2d/0x70
            [<ffffffff81003791>] ret_from_fork_asm+0x11/0x20
    
    Link: https://lkml.kernel.org/r/20230925072100.3725620-1-ruanjinjie@huawei.com
    Fixes: 9f86d624292c ("mm/damon/vaddr-test: remove unnecessary variables")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Reviewed-by: SeongJae Park <sj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f5a4cff85fabca35612e64bc9037db6e82e7e25
Author: Mikko Rapeli <mikko.rapeli@linaro.org>
Date:   Thu Sep 21 17:57:22 2023 +0300

    arm64: defconfig: remove CONFIG_COMMON_CLK_NPCM8XX=y
    
    commit 7d3e4e9d3bde9c8bd8914d47ddaa90e0d0ffbcab upstream.
    
    There is no code for this config option and enabling it in defconfig
    causes warnings from tools which are detecting unused and obsolete
    kernel config flags since the flag will be completely missing from
    effective build config after "make olddefconfig".
    
    Fixes yocto kernel recipe build time warning:
    
    WARNING: [kernel config]: This BSP contains fragments with warnings:
    ...
    [INFO]: the following symbols were not found in the active
    configuration:
         - CONFIG_COMMON_CLK_NPCM8XX
    
    The flag was added with commit 45472f1e5348c7b755b4912f2f529ec81cea044b
    v5.19-rc4-15-g45472f1e5348 so 6.1 and 6.4 stable kernel trees are
    affected.
    
    Fixes: 45472f1e5348c7b755b4912f2f529ec81cea044b ("arm64: defconfig: Add Nuvoton NPCM family support")
    Cc: stable@kernel.org
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Bjorn Andersson <quic_bjorande@quicinc.com>
    Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
    Cc: Neil Armstrong <neil.armstrong@linaro.org>
    Cc: Tomer Maimon <tmaimon77@gmail.com>
    Cc: Bruce Ashfield <bruce.ashfield@gmail.com>
    Cc: Jon Mason <jon.mason@arm.com>
    Cc: Jon Mason <jdmason@kudzu.us>
    Cc: Ross Burton <ross@burtonini.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee24e16620cd8a0cf48dadd9344b8b04ab7d9a74
Author: Ira Weiny <ira.weiny@intel.com>
Date:   Sun Sep 3 14:42:58 2023 -0700

    cxl/mbox: Fix CEL logic for poison and security commands
    
    commit d2f706058826b803f5b9dc3f6d4c213ae0c54eb9 upstream.
    
    The following debug output was observed while testing CXL
    
    cxl_core:cxl_walk_cel:721: cxl_mock_mem cxl_mem.0: Opcode 0x4300 unsupported by driver
    
    opcode 0x4300 (Get Poison) is supported by the driver and the mock
    device supports it.  The logic should be checking that the opcode is
    both not poison and not security.
    
    Fix the logic to allow poison and security commands.
    
    Fixes: ad64f5952ce3 ("cxl/memdev: Only show sanitize sysfs files when supported")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ira Weiny <ira.weiny@intel.com>
    Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
    Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Link: https://lore.kernel.org/r/20230903-cxl-cel-fix-v1-1-e260c9467be3@intel.com
    [cleanup cxl_walk_cel() to centralized "enabled" checks]
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3397cc43c6dd8928d7bc065380f64117368143e6
Author: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Date:   Mon Sep 11 15:03:24 2023 +0200

    drm/tests: Fix incorrect argument in drm_test_mm_insert_range
    
    commit 2ba157983974ae1b6aaef7d4953812020d6f1eb5 upstream.
    
    While drm_mm test was converted form igt selftest to kunit, unexpected
    value of "end" argument equal "start" was introduced to one of calls to a
    function that executes the drm_test_mm_insert_range for specific start/end
    pair of arguments.  As a consequence, DRM_MM_BUG_ON(end <= start) is
    triggered.  Fix it by restoring the original value.
    
    Fixes: fc8d29e298cf ("drm: selftest: convert drm_mm selftest to KUnit")
    Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
    Cc: "Maíra Canal" <mairacanal@riseup.net>
    Cc: Arthur Grillo <arthurgrillo@riseup.net>
    Cc: Javier Martinez Canillas <javierm@redhat.com>
    Cc: Daniel Latypov <dlatypov@google.com>
    Cc: stable@vger.kernel.org # v6.1+
    Reviewed-by: Maíra Canal <mairacanal@riseup.net>
    Signed-off-by: Maíra Canal <mairacanal@riseup.net>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230911130323.7037-2-janusz.krzysztofik@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bd4f97552d4f56108511af2f5b94bf5325e9d23
Author: Frederic Weisbecker <frederic@kernel.org>
Date:   Tue Sep 12 12:44:06 2023 +0200

    timers: Tag (hr)timer softirq as hotplug safe
    
    commit 1a6a464774947920dcedcf7409be62495c7cedd0 upstream.
    
    Specific stress involving frequent CPU-hotplug operations, such as
    running rcutorture for example, may trigger the following message:
    
      NOHZ tick-stop error: local softirq work is pending, handler #02!!!"
    
    This happens in the CPU-down hotplug process, after
    CPUHP_AP_SMPBOOT_THREADS whose teardown callback parks ksoftirqd, and
    before the target CPU shuts down through CPUHP_AP_IDLE_DEAD. In this
    fragile intermediate state, softirqs waiting for threaded handling may be
    forever ignored and eventually reported by the idle task as in the above
    example.
    
    However some vectors are known to be safe as long as the corresponding
    subsystems have teardown callbacks handling the migration of their
    events. The above error message reports pending timers softirq although
    this vector can be considered as hotplug safe because the
    CPUHP_TIMERS_PREPARE teardown callback performs the necessary migration
    of timers after the death of the CPU. Hrtimers also have a similar
    hotplug handling.
    
    Therefore this error message, as far as (hr-)timers are concerned, can
    be considered spurious and the relevant softirq vectors can be marked as
    hotplug safe.
    
    Fixes: 0345691b24c0 ("tick/rcu: Stop allowing RCU_SOFTIRQ in idle")
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230912104406.312185-6-frederic@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26a70537ffc09269930bc374e5ca8c60cfc47ff1
Author: Yu Liao <liaoyu15@huawei.com>
Date:   Sat Aug 26 15:16:53 2023 +0800

    ACPI: NFIT: Fix incorrect calculation of idt size
    
    commit 33908660e814203e996f6e775d033c5c32fcf9a7 upstream.
    
    acpi_nfit_interleave's field 'line_offset' is switched to flexible array [1],
    but sizeof_idt() still calculates the size in the form of 1-element array.
    
    Therefore, fix incorrect calculation in sizeof_idt().
    
    [1] https://lore.kernel.org/lkml/2652195.BddDVKsqQX@kreacher/
    
    Fixes: 2a5ab99847bd ("ACPICA: struct acpi_nfit_interleave: Replace 1-element array with flexible array")
    Cc: stable@vger.kernel.org # v6.4+
    Signed-off-by: Yu Liao <liaoyu15@huawei.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Ira Weiny <ira.weiny@intel.com>
    Link: https://lore.kernel.org/r/20230826071654.564372-1-liaoyu15@huawei.com
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 532f992935e3272c89d37bfad15b9ec5d51ab9af
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Sep 24 13:14:15 2023 -0400

    NFSv4: Fix a state manager thread deadlock regression
    
    commit 956fd46f97d238032cb5fa4771cdaccc6e760f9a upstream.
    
    Commit 4dc73c679114 reintroduces the deadlock that was fixed by commit
    aeabb3c96186 ("NFSv4: Fix a NFSv4 state manager deadlock") because it
    prevents the setup of new threads to handle reboot recovery, while the
    older recovery thread is stuck returning delegations.
    
    Fixes: 4dc73c679114 ("NFSv4: keep state manager thread active if swap is enabled")
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 975df6b0c34caf65830317740eebfeddbfae7eb9
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Sep 17 19:26:46 2023 -0400

    Revert "SUNRPC dont update timeout value on connection reset"
    
    commit a275ab62606bcd894ddff09460f7d253828313dc upstream.
    
    This reverts commit 88428cc4ae7abcc879295fbb19373dd76aad2bdd.
    
    The problem this commit is intended to fix was comprehensively fixed
    in commit 7de62bc09fe6 ("SUNRPC dont update timeout value on connection
    reset").
    Since then, this commit has been preventing the correct timeout of soft
    mounted requests.
    
    Cc: stable@vger.kernel.org # 5.9.x: 09252177d5f9: SUNRPC: Handle major timeout in xprt_adjust_timeout()
    Cc: stable@vger.kernel.org # 5.9.x: 7de62bc09fe6: SUNRPC dont update timeout value on connection reset
    Cc: stable@vger.kernel.org # 5.9.x
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8d3df1df766251c81f0591a40d0a7b2c945589c
Author: Joel Fernandes (Google) <joel@joelfernandes.org>
Date:   Sat Sep 23 01:14:08 2023 +0000

    sched/rt: Fix live lock between select_fallback_rq() and RT push
    
    commit fc09027786c900368de98d03d40af058bcb01ad9 upstream.
    
    During RCU-boost testing with the TREE03 rcutorture config, I found that
    after a few hours, the machine locks up.
    
    On tracing, I found that there is a live lock happening between 2 CPUs.
    One CPU has an RT task running, while another CPU is being offlined
    which also has an RT task running.  During this offlining, all threads
    are migrated. The migration thread is repeatedly scheduled to migrate
    actively running tasks on the CPU being offlined. This results in a live
    lock because select_fallback_rq() keeps picking the CPU that an RT task
    is already running on only to get pushed back to the CPU being offlined.
    
    It is anyway pointless to pick CPUs for pushing tasks to if they are
    being offlined only to get migrated away to somewhere else. This could
    also add unwanted latency to this task.
    
    Fix these issues by not selecting CPUs in RT if they are not 'active'
    for scheduling, using the cpu_active_mask. Other parts in core.c already
    use cpu_active_mask to prevent tasks from being put on CPUs going
    offline.
    
    With this fix I ran the tests for days and could not reproduce the
    hang. Without the patch, I hit it in a few hours.
    
    Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Paul E. McKenney <paulmck@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230923011409.3522762-1-joel@joelfernandes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f3f2a3acdfbb79b7c3b719984ba81cecdf2b802
Author: Liam R. Howlett <Liam.Howlett@oracle.com>
Date:   Fri Sep 15 13:44:44 2023 -0400

    kernel/sched: Modify initial boot task idle setup
    
    commit cff9b2332ab762b7e0586c793c431a8f2ea4db04 upstream.
    
    Initial booting is setting the task flag to idle (PF_IDLE) by the call
    path sched_init() -> init_idle().  Having the task idle and calling
    call_rcu() in kernel/rcu/tiny.c means that TIF_NEED_RESCHED will be
    set.  Subsequent calls to any cond_resched() will enable IRQs,
    potentially earlier than the IRQ setup has completed.  Recent changes
    have caused just this scenario and IRQs have been enabled early.
    
    This causes a warning later in start_kernel() as interrupts are enabled
    before they are fully set up.
    
    Fix this issue by setting the PF_IDLE flag later in the boot sequence.
    
    Although the boot task was marked as idle since (at least) d80e4fda576d,
    I am not sure that it is wrong to do so.  The forced context-switch on
    idle task was introduced in the tiny_rcu update, so I'm going to claim
    this fixes 5f6130fa52ee.
    
    Fixes: 5f6130fa52ee ("tiny_rcu: Directly force QS when call_rcu_[bh|sched]() on idle_task")
    Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/linux-mm/CAMuHMdWpvpWoDa=Ox-do92czYRvkok6_x6pYUH+ZouMcJbXy+Q@mail.gmail.com/
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fefec7fbd90a291901b731ab3d10aa0b633796b9
Author: August Wikerfors <git@augustwikerfors.se>
Date:   Mon Sep 11 23:34:09 2023 +0200

    ASoC: amd: yc: Fix non-functional mic on Lenovo 82QF and 82UG
    
    commit 1263cc0f414d212129c0f1289b49b7df77f92084 upstream.
    
    Like the Lenovo 82TL and 82V2, the Lenovo 82QF (Yoga 7 14ARB7) and 82UG
    (Legion S7 16ARHA7) both need a quirk entry for the internal microphone to
    function. Commit c008323fe361 ("ASoC: amd: yc: Fix a non-functional mic on
    Lenovo 82SJ") restricted the quirk that previously matched "82" to "82V2",
    breaking microphone functionality on these devices. Fix this by adding
    specific quirks for these models, as was done for the Lenovo 82TL.
    
    Fixes: c008323fe361 ("ASoC: amd: yc: Fix a non-functional mic on Lenovo 82SJ")
    Closes: https://github.com/tomsom/yoga-linux/issues/51
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=208555#c780
    Cc: stable@vger.kernel.org
    Signed-off-by: August Wikerfors <git@augustwikerfors.se>
    Link: https://lore.kernel.org/r/20230911213409.6106-1-git@augustwikerfors.se
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af57b1747772a4ce29dd5bc3ed5949c90b80658a
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Sep 14 23:08:44 2023 +0200

    i2c: i801: unregister tco_pdev in i801_probe() error path
    
    commit 3914784553f68c931fc666dbe7e86fe881aada38 upstream.
    
    We have to unregister tco_pdev also if i2c_add_adapter() fails.
    
    Fixes: 9424693035a5 ("i2c: i801: Create iTCO device on newer Intel PCHs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4f5f1e846d803e92333eea4e1b0d0634c2778f0
Author: Jens Axboe <axboe@kernel.dk>
Date:   Thu Sep 28 09:23:27 2023 -0600

    io_uring/fs: remove sqe->rw_flags checking from LINKAT
    
    commit a52d4f657568d6458e873f74a9602e022afe666f upstream.
    
    This is unionized with the actual link flags, so they can of course be
    set and they will be evaluated further down. If not we fail any LINKAT
    that has to set option flags.
    
    Fixes: cf30da90bc3a ("io_uring: add support for IORING_OP_LINKAT")
    Cc: stable@vger.kernel.org
    Reported-by: Thomas Leonard <talex5@gmail.com>
    Link: https://github.com/axboe/liburing/issues/955
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47cd820721d67e7273ebaabe7faa9e5afb34edf3
Author: Niklas Cassel <niklas.cassel@wdc.com>
Date:   Mon Sep 18 22:24:50 2023 +0200

    ata: libata-scsi: ignore reserved bits for REPORT SUPPORTED OPERATION CODES
    
    commit 3ef600923521616ebe192c893468ad0424de2afb upstream.
    
    For REPORT SUPPORTED OPERATION CODES command, the service action field is
    defined as bits 0-4 in the second byte in the CDB. Bits 5-7 in the second
    byte are reserved.
    
    Only look at the service action field in the second byte when determining
    if the MAINTENANCE IN opcode is a REPORT SUPPORTED OPERATION CODES command.
    
    This matches how we only look at the service action field in the second
    byte when determining if the SERVICE ACTION IN(16) opcode is a READ
    CAPACITY(16) command (reserved bits 5-7 in the second byte are ignored).
    
    Fixes: 7b2030942859 ("libata: Add support for SCT Write Same")
    Cc: stable@vger.kernel.org
    Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bbeebe203d2ebfb1af51a6d74c4d5336022557c
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Sep 8 17:03:15 2023 +0900

    scsi: sd: Do not issue commands to suspended disks on shutdown
    
    commit 99398d2070ab03d13f90b758ad397e19a65fffb0 upstream.
    
    If an error occurs when resuming a host adapter before the devices
    attached to the adapter are resumed, the adapter low level driver may
    remove the scsi host, resulting in a call to sd_remove() for the
    disks of the host. This in turn results in a call to sd_shutdown() which
    will issue a synchronize cache command and a start stop unit command to
    spindown the disk. sd_shutdown() issues the commands only if the device
    is not already runtime suspended but does not check the power state for
    system-wide suspend/resume. That is, the commands may be issued with the
    device in a suspended state, which causes PM resume to hang, forcing a
    reset of the machine to recover.
    
    Fix this by tracking the suspended state of a disk by introducing the
    suspended boolean field in the scsi_disk structure. This flag is set to
    true when the disk is suspended is sd_suspend_common() and resumed with
    sd_resume(). When suspended is true, sd_shutdown() is not executed from
    sd_remove().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc5ab9e1848977c2e50b270d9d95da2033a2f4f1
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Sep 15 10:02:41 2023 +0900

    scsi: sd: Differentiate system and runtime start/stop management
    
    commit 3cc2ffe5c16dc65dfac354bc5b5bc98d3b397567 upstream.
    
    The underlying device and driver of a SCSI disk may have different
    system and runtime power mode control requirements. This is because
    runtime power management affects only the SCSI disk, while system level
    power management affects all devices, including the controller for the
    SCSI disk.
    
    For instance, issuing a START STOP UNIT command when a SCSI disk is
    runtime suspended and resumed is fine: the command is translated to a
    STANDBY IMMEDIATE command to spin down the ATA disk and to a VERIFY
    command to wake it up. The SCSI disk runtime operations have no effect
    on the ata port device used to connect the ATA disk. However, for
    system suspend/resume operations, the ATA port used to connect the
    device will also be suspended and resumed, with the resume operation
    requiring re-validating the device link and the device itself. In this
    case, issuing a VERIFY command to spinup the disk must be done before
    starting to revalidate the device, when the ata port is being resumed.
    In such case, we must not allow the SCSI disk driver to issue START STOP
    UNIT commands.
    
    Allow a low level driver to refine the SCSI disk start/stop management
    by differentiating system and runtime cases with two new SCSI device
    flags: manage_system_start_stop and manage_runtime_start_stop. These new
    flags replace the current manage_start_stop flag. Drivers setting the
    manage_start_stop are modifed to set both new flags, thus preserving the
    existing start/stop management behavior. For backward compatibility, the
    old manage_start_stop sysfs device attribute is kept as a read-only
    attribute showing a value of 1 for devices enabling both new flags and 0
    otherwise.
    
    Fixes: 0a8589055936 ("ata,scsi: do not issue START STOP UNIT on resume")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1a076133d4c9d56975db5ba994a152366b91b38
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Aug 25 15:41:14 2023 +0900

    ata: libata-scsi: link ata port and scsi device
    
    commit fb99ef17865035a6657786d4b2af11a27ba23f9b upstream.
    
    There is no direct device ancestry defined between an ata_device and
    its scsi device which prevents the power management code from correctly
    ordering suspend and resume operations. Create such ancestry with the
    ata device as the parent to ensure that the scsi device (child) is
    suspended before the ata device and that resume handles the ata device
    before the scsi device.
    
    The parent-child (supplier-consumer) relationship is established between
    the ata_port (parent) and the scsi device (child) with the function
    device_add_link(). The parent used is not the ata_device as the PM
    operations are defined per port and the status of all devices connected
    through that port is controlled from the port operations.
    
    The device link is established with the new function
    ata_scsi_slave_alloc(), and this function is used to define the
    ->slave_alloc callback of the scsi host template of all ata drivers.
    
    Fixes: a19a93e4c6a9 ("scsi: core: pm: Rely on the device driver core for async power management")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2447c5b947bd9412d9e6e558df9f37c1d706000f
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Wed Sep 27 16:19:13 2023 +0800

    LoongArch: Add support for 64_PCREL relocation type
    
    commit b1dc55a3d6a86cc2c1ae664ad7280bff4c0fc28f upstream.
    
    When build and update kernel with the latest upstream binutils and
    loongson3_defconfig, module loader fails with:
    
      kmod: zsmalloc: Unknown relocation type 109
      kmod: fuse: Unknown relocation type 109
      kmod: fuse: Unknown relocation type 109
      kmod: radeon: Unknown relocation type 109
      kmod: nf_tables: Unknown relocation type 109
      kmod: nf_tables: Unknown relocation type 109
    
    This is because the latest upstream binutils replaces a pair of ADD64
    and SUB64 with 64_PCREL, so add support for 64_PCREL relocation type.
    
    Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ecb802d02eeb
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5725efed54514991a9e6831d22d0b8bc2306d51
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Wed Sep 27 16:19:13 2023 +0800

    LoongArch: Add support for 32_PCREL relocation type
    
    commit c1c2ce2d3bf903c50f3da7346d394127ffcc93ac upstream.
    
    When build and update kernel with the latest upstream binutils and
    loongson3_defconfig, module loader fails with:
    
      kmod: zsmalloc: Unsupport relocation type 99, please add its support.
      kmod: fuse: Unsupport relocation type 99, please add its support.
      kmod: ipmi_msghandler: Unsupport relocation type 99, please add its support.
      kmod: ipmi_msghandler: Unsupport relocation type 99, please add its support.
      kmod: pstore: Unsupport relocation type 99, please add its support.
      kmod: drm_display_helper: Unsupport relocation type 99, please add its support.
      kmod: drm_display_helper: Unsupport relocation type 99, please add its support.
      kmod: drm_display_helper: Unsupport relocation type 99, please add its support.
      kmod: fuse: Unsupport relocation type 99, please add its support.
      kmod: fat: Unsupport relocation type 99, please add its support.
    
    This is because the latest upstream binutils replaces a pair of ADD32
    and SUB32 with 32_PCREL, so add support for 32_PCREL relocation type.
    
    Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ecb802d02eeb
    Cc: <stable@vger.kernel.org>
    Co-developed-by: Youling Tang <tangyouling@loongson.cn>
    Signed-off-by: Youling Tang <tangyouling@loongson.cn>
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa9874928dcbaa9bfafc101e66c7ad4f7e2d3d50
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Wed Sep 27 16:19:13 2023 +0800

    LoongArch: numa: Fix high_memory calculation
    
    commit 1943feecf80e73ecc03ce40271f29c6cea142bac upstream.
    
    For 64bit kernel without HIGHMEM, high_memory is the virtual address of
    the highest physical address in the system. But __va(get_num_physpages()
    << PAGE_SHIFT) is not what we want for high_memory because there may be
    holes in the physical address space. On the other hand, max_low_pfn is
    calculated from memblock_end_of_DRAM(), which is exactly corresponding
    to the highest physical address, so use it for high_memory calculation.
    
    Cc: <stable@vger.kernel.org>
    Fixes: d4b6f1562a3c3284adce ("LoongArch: Add Non-Uniform Memory Access (NUMA) support")
    Signed-off-by: Chong Qiao <qiaochong@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e10bf1871b11acb953d6aff13f31c557239d541f
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Wed Sep 27 16:19:13 2023 +0800

    LoongArch: Define relocation types for ABI v2.10
    
    commit 2761498876adebff77a43574639005b29e912c43 upstream.
    
    The relocation types from 101 to 109 are used by GNU binutils >= 2.41,
    add their definitions to use them in later patches.
    
    Link: https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=include/elf/loongarch.h#l230
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb9681d36bbc753d983ba1cc7312c6eab83cc553
Author: Helge Deller <deller@gmx.de>
Date:   Wed Sep 20 14:26:28 2023 +0800

    LoongArch: Fix lockdep static memory detection
    
    commit 68ffa230daa0d35b7cce476098433d763d5fd42f upstream.
    
    Since commit 0a6b58c5cd0d ("lockdep: fix static memory detection even
    more") the lockdep code uses is_kernel_core_data(), is_kernel_rodata()
    and init_section_contains() to verify if a lock is located inside a
    kernel static data section.
    
    This change triggers a failure on LoongArch, for which the vmlinux.lds.S
    script misses to put the locks (as part of in the .data.rel symbols)
    into the Linux data section.
    
    This patch fixes the lockdep problem by moving *(.data.rel*) symbols
    into the kernel data section (from _sdata to _edata).
    
    Additionally, move other wrongly assigned symbols too:
    - altinstructions into the _initdata section,
    - PLT symbols behind the read-only section, and
    - *(.la_abs) into the data section.
    
    Cc: stable <stable@kernel.org> # v6.4+
    Fixes: 0a6b58c5cd0d ("lockdep: fix static memory detection even more")
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9b20aa75921f1d51a2a9ad5a4f954f5ab34c487
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu Sep 7 15:24:34 2023 +0800

    ALSA: hda: Disable power save for solving pop issue on Lenovo ThinkCentre M70q
    
    commit 057a28ef93bdbe84326d34cdb5543afdaab49fe1 upstream.
    
    Lenovo ThinkCentre M70q had boot up pop noise.
    Disable power save will solve pop issue.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/315900e2efef42fd9855eacfeb443abd@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8bbfab02d1a710c5a90597fc7ec0b6311cb30c6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Sep 16 08:07:25 2023 +0200

    ALSA: rawmidi: Fix NULL dereference at proc read
    
    commit b2ce0027d7b2905495021c5208f92043eb493146 upstream.
    
    At the implementation of the optional proc fs in rawmidi, I forgot
    that rmidi->ops itself is optional and can be NULL.
    Add the proper NULL check for avoiding the Oops.
    
    Fixes: fa030f666d24 ("ALSA: ump: Additional proc output")
    Reported-and-tested-by: Mark Hills <mark@xwax.org>
    Closes: https://lore.kernel.org/r/ef9118c3-a2eb-d0ff-1efa-cc5fb6416bde@xwax.org
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230916060725.11726-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3eb82c2bd446b0e0b9e8822a68b2f1d528849a86
Author: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Date:   Mon Sep 18 16:38:50 2023 +0800

    crypto: sm2 - Fix crash caused by uninitialized context
    
    commit 21155620fbf2edbb071144894ff9d67ba9a1faa0 upstream.
    
    In sm2_compute_z_digest() function, the newly allocated structure
    mpi_ec_ctx is used, but forget to initialize it, which will cause
    a crash when performing subsequent operations.
    
    Fixes: e5221fa6a355 ("KEYS: asymmetric: Move sm2 code into x509_public_key")
    Cc: stable@vger.kernel.org # v6.5
    Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28df4646ad8b433340772edc90ca709cdefc53e2
Author: Pan Bian <bianpan2016@163.com>
Date:   Thu Sep 21 23:17:31 2023 +0900

    nilfs2: fix potential use after free in nilfs_gccache_submit_read_data()
    
    commit 7ee29facd8a9c5a26079148e36bcf07141b3a6bc upstream.
    
    In nilfs_gccache_submit_read_data(), brelse(bh) is called to drop the
    reference count of bh when the call to nilfs_dat_translate() fails.  If
    the reference count hits 0 and its owner page gets unlocked, bh may be
    freed.  However, bh->b_page is dereferenced to put the page after that,
    which may result in a use-after-free bug.  This patch moves the release
    operation after unlocking and putting the page.
    
    NOTE: The function in question is only called in GC, and in combination
    with current userland tools, address translation using DAT does not occur
    in that function, so the code path that causes this issue will not be
    executed.  However, it is possible to run that code path by intentionally
    modifying the userland GC library or by calling the GC ioctl directly.
    
    [konishi.ryusuke@gmail.com: NOTE added to the commit log]
    Link: https://lkml.kernel.org/r/1543201709-53191-1-git-send-email-bianpan2016@163.com
    Link: https://lkml.kernel.org/r/20230921141731.10073-1-konishi.ryusuke@gmail.com
    Fixes: a3d93f709e89 ("nilfs2: block cache for garbage collection")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reported-by: Ferry Meng <mengferry@linux.alibaba.com>
    Closes: https://lkml.kernel.org/r/20230818092022.111054-1-mengferry@linux.alibaba.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3345cc5f02f1fb4c4dcb114706f2210d879ab933
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Sep 1 01:25:55 2023 +0300

    serial: 8250_port: Check IRQ data before use
    
    commit cce7fc8b29961b64fadb1ce398dc5ff32a79643b upstream.
    
    In case the leaf driver wants to use IRQ polling (irq = 0) and
    IIR register shows that an interrupt happened in the 8250 hardware
    the IRQ data can be NULL. In such a case we need to skip the wake
    event as we came to this path from the timer interrupt and quite
    likely system is already awake.
    
    Without this fix we have got an Oops:
    
        serial8250: ttyS0 at I/O 0x3f8 (irq = 0, base_baud = 115200) is a 16550A
        ...
        BUG: kernel NULL pointer dereference, address: 0000000000000010
        RIP: 0010:serial8250_handle_irq+0x7c/0x240
        Call Trace:
         ? serial8250_handle_irq+0x7c/0x240
         ? __pfx_serial8250_timeout+0x10/0x10
    
    Fixes: 0ba9e3a13c6a ("serial: 8250: Add missing wakeup event reporting")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://lore.kernel.org/r/20230831222555.614426-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37ee7bd247fcae6c7a17e312250baaf379d80bc8
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Sep 15 11:20:34 2023 +0900

    scsi: core: ata: Do no try to probe for CDL on old drives
    
    commit 2132df16f53b4f01ab25f5d404f36a22244ae342 upstream.
    
    Some old drives (e.g. an Ultra320 SCSI disk as reported by John) do not
    seem to execute MAINTENANCE_IN / MI_REPORT_SUPPORTED_OPERATION_CODES
    commands correctly and hang when a non-zero service action is specified
    (one command format with service action case in scsi_report_opcode()).
    
    Currently, CDL probing with scsi_cdl_check_cmd() is the only caller using a
    non zero service action for scsi_report_opcode(). To avoid issues with
    these old drives, do not attempt CDL probe if the device reports support
    for an SPC version lower than 5 (CDL was introduced in SPC-5). To keep
    things working with ATA devices which probe for the CDL T2A and T2B pages
    introduced with SPC-6, modify ata_scsiop_inq_std() to claim SPC-6 version
    compatibility for ATA drives supporting CDL.
    
    SPC-6 standard version number is defined as Dh (= 13) in SPC-6 r09. Fix
    scsi_probe_lun() to correctly capture this value by changing the bit mask
    for the second byte of the INQUIRY response from 0x7 to 0xf.
    include/scsi/scsi.h is modified to add the definition SCSI_SPC_6 with the
    value 14 (Dh + 1). The missing definitions for the SCSI_SPC_4 and
    SCSI_SPC_5 versions are also added.
    
    Reported-by: John David Anglin <dave.anglin@bell.net>
    Fixes: 624885209f31 ("scsi: core: Detect support for command duration limits")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Link: https://lore.kernel.org/r/20230915022034.678121-1-dlemoal@kernel.org
    Tested-by: David Gow <david@davidgow.net>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bff660e0ff349dee84dc4f6f6d10da4497f5b28
Author: Daniel Starke <daniel.starke@siemens.com>
Date:   Thu Sep 14 07:15:07 2023 +0200

    Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux"
    
    commit 29346e217b8ab8a52889b88f00b268278d6b7668 upstream.
    
    This reverts commit 9b9c8195f3f0d74a826077fc1c01b9ee74907239.
    
    The commit above is reverted as it did not solve the original issue.
    
    gsm_cleanup_mux() tries to free up the virtual ttys by calling
    gsm_dlci_release() for each available DLCI. There, dlci_put() is called to
    decrease the reference counter for the DLCI via tty_port_put() which
    finally calls gsm_dlci_free(). This already clears the pointer which is
    being checked in gsm_cleanup_mux() before calling gsm_dlci_release().
    Therefore, it is not necessary to clear this pointer in gsm_cleanup_mux()
    as done in the reverted commit. The commit introduces a null pointer
    dereference:
     <TASK>
     ? __die+0x1f/0x70
     ? page_fault_oops+0x156/0x420
     ? search_exception_tables+0x37/0x50
     ? fixup_exception+0x21/0x310
     ? exc_page_fault+0x69/0x150
     ? asm_exc_page_fault+0x26/0x30
     ? tty_port_put+0x19/0xa0
     gsmtty_cleanup+0x29/0x80 [n_gsm]
     release_one_tty+0x37/0xe0
     process_one_work+0x1e6/0x3e0
     worker_thread+0x4c/0x3d0
     ? __pfx_worker_thread+0x10/0x10
     kthread+0xe1/0x110
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x2f/0x50
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1b/0x30
     </TASK>
    
    The actual issue is that nothing guards dlci_put() from being called
    multiple times while the tty driver was triggered but did not yet finished
    calling gsm_dlci_free().
    
    Fixes: 9b9c8195f3f0 ("tty: n_gsm: fix UAF in gsm_cleanup_mux")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
    Link: https://lore.kernel.org/r/20230914051507.3240-1-daniel.starke@siemens.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8d2e6429139ee120f412f47957ebee3604f0b6f
Author: Ricky WU <ricky_wu@realtek.com>
Date:   Wed Sep 20 09:11:19 2023 +0000

    misc: rtsx: Fix some platforms can not boot and move the l1ss judgment to probe
    
    commit 0e4cac557531a4c93de108d9ff11329fcad482ff upstream.
    
    commit 101bd907b424 ("misc: rtsx: judge ASPM Mode to set PETXCFG Reg")
    some readers no longer force #CLKREQ to low
    when the system need to enter ASPM.
    But some platform maybe not implement complete ASPM?
    it causes some platforms can not boot
    
    Like in the past only the platform support L1ss we release the #CLKREQ.
    Move the judgment (L1ss) to probe,
    we think read config space one time when the driver start is enough
    
    Fixes: 101bd907b424 ("misc: rtsx: judge ASPM Mode to set PETXCFG Reg")
    Cc: stable <stable@kernel.org>
    Reported-by: Paul Grandperrin <paul.grandperrin@gmail.com>
    Signed-off-by: Ricky Wu <ricky_wu@realtek.com>
    Tested-By: Jade Lovelace <lists@jade.fyi>
    Link: https://lore.kernel.org/r/37b1afb997f14946a8784c73d1f9a4f5@realtek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02447cd84afcfd3d92a097b7a2d2b35604988530
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Sat Sep 16 12:52:47 2023 +0200

    mptcp: process pending subflow error on close
    
    commit 9f1a98813b4b686482e5ef3c9d998581cace0ba6 upstream.
    
    On incoming TCP reset, subflow closing could happen before error
    propagation. That in turn could cause the socket error being ignored,
    and a missing socket state transition, as reported by Daire-Byrne.
    
    Address the issues explicitly checking for subflow socket error at
    close time. To avoid code duplication, factor-out of __mptcp_error_report()
    a new helper implementing the relevant bits.
    
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/429
    Fixes: 15cc10453398 ("mptcp: deliver ssk errors to msk")
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6be989cb472ed8c3a78e8b7ac89ed17aecfb35ec
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Sat Sep 16 12:52:46 2023 +0200

    mptcp: move __mptcp_error_report in protocol.c
    
    commit d5fbeff1ab812b6c473b6924bee8748469462e2c upstream.
    
    This will simplify the next patch ("mptcp: process pending subflow error
    on close").
    
    No functional change intended.
    
    Cc: stable@vger.kernel.org # v5.12+
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bef7c8c3950fba26398eed05ba76e6630492b4a
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Sat Sep 16 12:52:45 2023 +0200

    mptcp: fix bogus receive window shrinkage with multiple subflows
    
    commit 6bec041147a2a64a490d1f813e8a004443061b38 upstream.
    
    In case multiple subflows race to update the mptcp-level receive
    window, the subflow losing the race should use the window value
    provided by the "winning" subflow to update it's own tcp-level
    rcv_wnd.
    
    To such goal, the current code bogusly uses the mptcp-level rcv_wnd
    value as observed before the update attempt. On unlucky circumstances
    that may lead to TCP-level window shrinkage, and stall the other end.
    
    Address the issue feeding to the rcv wnd update the correct value.
    
    Fixes: f3589be0c420 ("mptcp: never shrink offered window")
    Cc: stable@vger.kernel.org
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/427
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e52fd594992e0a8267af6c2c7bf1401f602fa25
Author: Sean Christopherson <seanjc@google.com>
Date:   Fri Sep 15 17:39:15 2023 -0700

    KVM: x86/mmu: Stop zapping invalidated TDP MMU roots asynchronously
    
    commit 0df9dab891ff0d9b646d82e4fe038229e4c02451 upstream.
    
    Stop zapping invalidate TDP MMU roots via work queue now that KVM
    preserves TDP MMU roots until they are explicitly invalidated.  Zapping
    roots asynchronously was effectively a workaround to avoid stalling a vCPU
    for an extended during if a vCPU unloaded a root, which at the time
    happened whenever the guest toggled CR0.WP (a frequent operation for some
    guest kernels).
    
    While a clever hack, zapping roots via an unbound worker had subtle,
    unintended consequences on host scheduling, especially when zapping
    multiple roots, e.g. as part of a memslot.  Because the work of zapping a
    root is no longer bound to the task that initiated the zap, things like
    the CPU affinity and priority of the original task get lost.  Losing the
    affinity and priority can be especially problematic if unbound workqueues
    aren't affined to a small number of CPUs, as zapping multiple roots can
    cause KVM to heavily utilize the majority of CPUs in the system, *beyond*
    the CPUs KVM is already using to run vCPUs.
    
    When deleting a memslot via KVM_SET_USER_MEMORY_REGION, the async root
    zap can result in KVM occupying all logical CPUs for ~8ms, and result in
    high priority tasks not being scheduled in in a timely manner.  In v5.15,
    which doesn't preserve unloaded roots, the issues were even more noticeable
    as KVM would zap roots more frequently and could occupy all CPUs for 50ms+.
    
    Consuming all CPUs for an extended duration can lead to significant jitter
    throughout the system, e.g. on ChromeOS with virtio-gpu, deleting memslots
    is a semi-frequent operation as memslots are deleted and recreated with
    different host virtual addresses to react to host GPU drivers allocating
    and freeing GPU blobs.  On ChromeOS, the jitter manifests as audio blips
    during games due to the audio server's tasks not getting scheduled in
    promptly, despite the tasks having a high realtime priority.
    
    Deleting memslots isn't exactly a fast path and should be avoided when
    possible, and ChromeOS is working towards utilizing MAP_FIXED to avoid the
    memslot shenanigans, but KVM is squarely in the wrong.  Not to mention
    that removing the async zapping eliminates a non-trivial amount of
    complexity.
    
    Note, one of the subtle behaviors hidden behind the async zapping is that
    KVM would zap invalidated roots only once (ignoring partial zaps from
    things like mmu_notifier events).  Preserve this behavior by adding a flag
    to identify roots that are scheduled to be zapped versus roots that have
    already been zapped but not yet freed.
    
    Add a comment calling out why kvm_tdp_mmu_invalidate_all_roots() can
    encounter invalid roots, as it's not at all obvious why zapping
    invalidated roots shouldn't simply zap all invalid roots.
    
    Reported-by: Pattara Teerapong <pteerapong@google.com>
    Cc: David Stevens <stevensd@google.com>
    Cc: Yiwei Zhang<zzyiwei@google.com>
    Cc: Paul Hsia <paulhsia@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20230916003916.2545000-4-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1f5d279d7e8cece0ce6d594de4e8b84762a9611
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Sep 21 05:44:56 2023 -0400

    KVM: x86/mmu: Do not filter address spaces in for_each_tdp_mmu_root_yield_safe()
    
    commit 441a5dfcd96854cbcb625709e2694a9c60adfaab upstream.
    
    All callers except the MMU notifier want to process all address spaces.
    Remove the address space ID argument of for_each_tdp_mmu_root_yield_safe()
    and switch the MMU notifier to use __for_each_tdp_mmu_root_yield_safe().
    
    Extracted out of a patch by Sean Christopherson <seanjc@google.com>
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f654c202a31869be66f73b0ef5c2acb4ac4e54d7
Author: Sean Christopherson <seanjc@google.com>
Date:   Fri Sep 15 17:39:14 2023 -0700

    KVM: x86/mmu: Open code leaf invalidation from mmu_notifier
    
    commit 50107e8b2a8a59d8cec7e8454e27c1f8e365acdb upstream.
    
    The mmu_notifier path is a bit of a special snowflake, e.g. it zaps only a
    single address space (because it's per-slot), and can't always yield.
    Because of this, it calls kvm_tdp_mmu_zap_leafs() in ways that no one
    else does.
    
    Iterate manually over the leafs in response to an mmu_notifier
    invalidation, instead of invoking kvm_tdp_mmu_zap_leafs().  Drop the
    @can_yield param from kvm_tdp_mmu_zap_leafs() as its sole remaining
    caller unconditionally passes "true".
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20230916003916.2545000-2-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c416989d0b8eec8df850664b7ded5d26ea5e5ad2
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Fri Sep 15 15:54:30 2023 -0500

    KVM: SVM: Fix TSC_AUX virtualization setup
    
    commit e0096d01c4fcb8c96c05643cfc2c20ab78eae4da upstream.
    
    The checks for virtualizing TSC_AUX occur during the vCPU reset processing
    path. However, at the time of initial vCPU reset processing, when the vCPU
    is first created, not all of the guest CPUID information has been set. In
    this case the RDTSCP and RDPID feature support for the guest is not in
    place and so TSC_AUX virtualization is not established.
    
    This continues for each vCPU created for the guest. On the first boot of
    an AP, vCPU reset processing is executed as a result of an APIC INIT
    event, this time with all of the guest CPUID information set, resulting
    in TSC_AUX virtualization being enabled, but only for the APs. The BSP
    always sees a TSC_AUX value of 0 which probably went unnoticed because,
    at least for Linux, the BSP TSC_AUX value is 0.
    
    Move the TSC_AUX virtualization enablement out of the init_vmcb() path and
    into the vcpu_after_set_cpuid() path to allow for proper initialization of
    the support after the guest CPUID information has been set.
    
    With the TSC_AUX virtualization support now in the vcpu_set_after_cpuid()
    path, the intercepts must be either cleared or set based on the guest
    CPUID input.
    
    Fixes: 296d5a17e793 ("KVM: SEV-ES: Use V_TSC_AUX if available instead of RDTSC/MSR_TSC_AUX intercepts")
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Message-Id: <4137fbcb9008951ab5f0befa74a0399d2cce809a.1694811272.git.thomas.lendacky@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 822425a9d40ceb00390355021619e31131974bcd
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri Sep 22 17:06:34 2023 -0400

    KVM: SVM: INTERCEPT_RDTSCP is never intercepted anyway
    
    commit e8d93d5d93f85949e7299be289c6e7e1154b2f78 upstream.
    
    svm_recalc_instruction_intercepts() is always called at least once
    before the vCPU is started, so the setting or clearing of the RDTSCP
    intercept can be dropped from the TSC_AUX virtualization support.
    
    Extracted from a patch by Tom Lendacky.
    
    Cc: stable@vger.kernel.org
    Fixes: 296d5a17e793 ("KVM: SEV-ES: Use V_TSC_AUX if available instead of RDTSC/MSR_TSC_AUX intercepts")
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf43b304b6952b549d58feabc342807b334f03d4
Author: Pu Wen <puwen@hygon.cn>
Date:   Thu Sep 28 14:59:16 2023 +0800

    x86/srso: Add SRSO mitigation for Hygon processors
    
    commit a5ef7d68cea1344cf524f04981c2b3f80bedbb0d upstream.
    
    Add mitigation for the speculative return stack overflow vulnerability
    which exists on Hygon processors too.
    
    Signed-off-by: Pu Wen <puwen@hygon.cn>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/tencent_4A14812842F104E93AA722EC939483CEFF05@qq.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1348f7f15d7c7798456856bee74a4235c2da994e
Author: Haitao Huang <haitao.huang@linux.intel.com>
Date:   Thu Jul 27 22:10:24 2023 -0700

    x86/sgx: Resolves SECS reclaim vs. page fault for EAUG race
    
    commit c6c2adcba50c2622ed25ba5d5e7f05f584711358 upstream.
    
    The SGX EPC reclaimer (ksgxd) may reclaim the SECS EPC page for an
    enclave and set secs.epc_page to NULL. The SECS page is used for EAUG
    and ELDU in the SGX page fault handler. However, the NULL check for
    secs.epc_page is only done for ELDU, not EAUG before being used.
    
    Fix this by doing the same NULL check and reloading of the SECS page as
    needed for both EAUG and ELDU.
    
    The SECS page holds global enclave metadata. It can only be reclaimed
    when there are no other enclave pages remaining. At that point,
    virtually nothing can be done with the enclave until the SECS page is
    paged back in.
    
    An enclave can not run nor generate page faults without a resident SECS
    page. But it is still possible for a #PF for a non-SECS page to race
    with paging out the SECS page: when the last resident non-SECS page A
    triggers a #PF in a non-resident page B, and then page A and the SECS
    both are paged out before the #PF on B is handled.
    
    Hitting this bug requires that race triggered with a #PF for EAUG.
    Following is a trace when it happens.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    RIP: 0010:sgx_encl_eaug_page+0xc7/0x210
    Call Trace:
     ? __kmem_cache_alloc_node+0x16a/0x440
     ? xa_load+0x6e/0xa0
     sgx_vma_fault+0x119/0x230
     __do_fault+0x36/0x140
     do_fault+0x12f/0x400
     __handle_mm_fault+0x728/0x1110
     handle_mm_fault+0x105/0x310
     do_user_addr_fault+0x1ee/0x750
     ? __this_cpu_preempt_check+0x13/0x20
     exc_page_fault+0x76/0x180
     asm_exc_page_fault+0x27/0x30
    
    Fixes: 5a90d2c3f5ef ("x86/sgx: Support adding of pages to an initialized enclave")
    Signed-off-by: Haitao Huang <haitao.huang@linux.intel.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Reviewed-by: Kai Huang <kai.huang@intel.com>
    Acked-by: Reinette Chatre <reinette.chatre@intel.com>
    Cc:stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20230728051024.33063-1-haitao.huang%40linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d0d8a6ea42470fccd9c9edbbddd5f426864397d
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Thu Jun 22 10:24:35 2023 +0200

    spi: zynqmp-gqspi: fix clock imbalance on probe failure
    
    commit 1527b076ae2cb6a9c590a02725ed39399fcad1cf upstream.
    
    Make sure that the device is not runtime suspended before explicitly
    disabling the clocks on probe failure and on driver unbind to avoid a
    clock enable-count imbalance.
    
    Fixes: 9e3a000362ae ("spi: zynqmp: Add pm runtime support")
    Cc: stable@vger.kernel.org      # 4.19
    Cc: Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>
    Cc: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/Message-Id: <20230622082435.7873-1-johan+linaro@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3283a1bce9bbc978059f790b84f3c10c32492429
Author: Nicolin Chen <nicolinc@nvidia.com>
Date:   Tue Oct 3 16:35:49 2023 -0700

    iommu/arm-smmu-v3: Fix soft lockup triggered by arm_smmu_mm_invalidate_range
    
    commit d5afb4b47e13161b3f33904d45110f9e6463bad6 upstream.
    
    When running an SVA case, the following soft lockup is triggered:
    --------------------------------------------------------------------
    watchdog: BUG: soft lockup - CPU#244 stuck for 26s!
    pstate: 83400009 (Nzcv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)
    pc : arm_smmu_cmdq_issue_cmdlist+0x178/0xa50
    lr : arm_smmu_cmdq_issue_cmdlist+0x150/0xa50
    sp : ffff8000d83ef290
    x29: ffff8000d83ef290 x28: 000000003b9aca00 x27: 0000000000000000
    x26: ffff8000d83ef3c0 x25: da86c0812194a0e8 x24: 0000000000000000
    x23: 0000000000000040 x22: ffff8000d83ef340 x21: ffff0000c63980c0
    x20: 0000000000000001 x19: ffff0000c6398080 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: ffff3000b4a3bbb0
    x14: ffff3000b4a30888 x13: ffff3000b4a3cf60 x12: 0000000000000000
    x11: 0000000000000000 x10: 0000000000000000 x9 : ffffc08120e4d6bc
    x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000048cfa
    x5 : 0000000000000000 x4 : 0000000000000001 x3 : 000000000000000a
    x2 : 0000000080000000 x1 : 0000000000000000 x0 : 0000000000000001
    Call trace:
     arm_smmu_cmdq_issue_cmdlist+0x178/0xa50
     __arm_smmu_tlb_inv_range+0x118/0x254
     arm_smmu_tlb_inv_range_asid+0x6c/0x130
     arm_smmu_mm_invalidate_range+0xa0/0xa4
     __mmu_notifier_invalidate_range_end+0x88/0x120
     unmap_vmas+0x194/0x1e0
     unmap_region+0xb4/0x144
     do_mas_align_munmap+0x290/0x490
     do_mas_munmap+0xbc/0x124
     __vm_munmap+0xa8/0x19c
     __arm64_sys_munmap+0x28/0x50
     invoke_syscall+0x78/0x11c
     el0_svc_common.constprop.0+0x58/0x1c0
     do_el0_svc+0x34/0x60
     el0_svc+0x2c/0xd4
     el0t_64_sync_handler+0x114/0x140
     el0t_64_sync+0x1a4/0x1a8
    --------------------------------------------------------------------
    
    The commit 06ff87bae8d3 ("arm64: mm: remove unused functions and variable
    protoypes") fixed a similar lockup on the CPU MMU side. Yet, it can occur
    to SMMU too since arm_smmu_mm_invalidate_range() is typically called next
    to MMU tlb flush function, e.g.
            tlb_flush_mmu_tlbonly {
                    tlb_flush {
                            __flush_tlb_range {
                                    // check MAX_TLBI_OPS
                            }
                    }
                    mmu_notifier_invalidate_range {
                            arm_smmu_mm_invalidate_range {
                                    // does not check MAX_TLBI_OPS
                            }
                    }
            }
    
    Clone a CMDQ_MAX_TLBI_OPS from the MAX_TLBI_OPS in tlbflush.h, since in an
    SVA case SMMU uses the CPU page table, so it makes sense to align with the
    tlbflush code. Then, replace per-page TLBI commands with a single per-asid
    TLBI command, if the request size hits this threshold.
    
    Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
    Link: https://lore.kernel.org/r/20230920052257.8615-1-nicolinc@nvidia.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71c7428d0dc14fffd43f9338c239e00c5b40f2ec
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Mon Oct 2 13:50:59 2023 +0100

    ASoC: cs35l56: Call pm_runtime_dont_use_autosuspend()
    
    commit ec03804552e9a723569e14d2512f36a8e70dc640 upstream
    
    Driver remove() must call pm_runtime_dont_use_autosuspend().
    
    Drivers that call pm_runtime_use_autosuspend() must disable
    it in driver remove(). Unfortunately until recently this was
    only mentioned in 1 line in a 900+ line document so most
    people hadn't noticed this. It has only recently been added
    to the kerneldoc of pm_runtime_use_autosuspend().
    
    Backport note: This is the same change as the upstream
    commit but the cs35l56->base.dev argument in the upstream
    code is cs35l56->dev in older releases.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230908101716.2658582-1-rf@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f0d613bfca09068e8e76a35385fb4b1ab5e12a2
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Jul 28 17:26:54 2023 -0300

    perf build: Define YYNOMEM as YYNOABORT for bison < 3.81
    
    [ Upstream commit 88cc47e24597971b05b6e94c28a2fc81d2a8d61a ]
    
    YYNOMEM was introduced in bison 3.81, so define it as YYABORT for older
    versions, which should provide the previous perf behaviour.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c8745e60f29da0e1361f1695867ca162fc4c0ee4
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Mon Sep 18 11:03:49 2023 +0200

    fbdev/sh7760fb: Depend on FB=y
    
    [ Upstream commit f75f71b2c418a27a7c05139bb27a0c83adf88d19 ]
    
    Fix linker error if FB=m about missing fb_io_read and fb_io_write. The
    linker's error message suggests that this config setting has already
    been broken for other symbols.
    
      All errors (new ones prefixed by >>):
    
         sh4-linux-ld: drivers/video/fbdev/sh7760fb.o: in function `sh7760fb_probe':
         sh7760fb.c:(.text+0x374): undefined reference to `framebuffer_alloc'
         sh4-linux-ld: sh7760fb.c:(.text+0x394): undefined reference to `fb_videomode_to_var'
         sh4-linux-ld: sh7760fb.c:(.text+0x39c): undefined reference to `fb_alloc_cmap'
         sh4-linux-ld: sh7760fb.c:(.text+0x3a4): undefined reference to `register_framebuffer'
         sh4-linux-ld: sh7760fb.c:(.text+0x3ac): undefined reference to `fb_dealloc_cmap'
         sh4-linux-ld: sh7760fb.c:(.text+0x434): undefined reference to `framebuffer_release'
         sh4-linux-ld: drivers/video/fbdev/sh7760fb.o: in function `sh7760fb_remove':
         sh7760fb.c:(.text+0x800): undefined reference to `unregister_framebuffer'
         sh4-linux-ld: sh7760fb.c:(.text+0x804): undefined reference to `fb_dealloc_cmap'
         sh4-linux-ld: sh7760fb.c:(.text+0x814): undefined reference to `framebuffer_release'
      >> sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0xc): undefined reference to `fb_io_read'
      >> sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x10): undefined reference to `fb_io_write'
         sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x2c): undefined reference to `cfb_fillrect'
         sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x30): undefined reference to `cfb_copyarea'
         sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x34): undefined reference to `cfb_imageblit'
    
    Suggested-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202309130632.LS04CPWu-lkp@intel.com/
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230918090400.13264-1-tzimmermann@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 19878758accf6b2788091a771d9f9fee7bab11ab
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Wed Sep 20 14:26:29 2023 +0800

    LoongArch: Set all reserved memblocks on Node#0 at initialization
    
    [ Upstream commit b795fb9f5861ee256070d59e33130980a01fadd7 ]
    
    After commit 61167ad5fecdea ("mm: pass nid to reserve_bootmem_region()")
    we get a panic if DEFERRED_STRUCT_PAGE_INIT is enabled:
    
    [    0.000000] CPU 0 Unable to handle kernel paging request at virtual address 0000000000002b82, era == 90000000040e3f28, ra == 90000000040e3f18
    [    0.000000] Oops[#1]:
    [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 6.5.0+ #733
    [    0.000000] pc 90000000040e3f28 ra 90000000040e3f18 tp 90000000046f4000 sp 90000000046f7c90
    [    0.000000] a0 0000000000000001 a1 0000000000200000 a2 0000000000000040 a3 90000000046f7ca0
    [    0.000000] a4 90000000046f7ca4 a5 0000000000000000 a6 90000000046f7c38 a7 0000000000000000
    [    0.000000] t0 0000000000000002 t1 9000000004b00ac8 t2 90000000040e3f18 t3 90000000040f0800
    [    0.000000] t4 00000000000f0000 t5 80000000ffffe07e t6 0000000000000003 t7 900000047fff5e20
    [    0.000000] t8 aaaaaaaaaaaaaaab u0 0000000000000018 s9 0000000000000000 s0 fffffefffe000000
    [    0.000000] s1 0000000000000000 s2 0000000000000080 s3 0000000000000040 s4 0000000000000000
    [    0.000000] s5 0000000000000000 s6 fffffefffe000000 s7 900000000470b740 s8 9000000004ad4000
    [    0.000000]    ra: 90000000040e3f18 reserve_bootmem_region+0xec/0x21c
    [    0.000000]   ERA: 90000000040e3f28 reserve_bootmem_region+0xfc/0x21c
    [    0.000000]  CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE)
    [    0.000000]  PRMD: 00000000 (PPLV0 -PIE -PWE)
    [    0.000000]  EUEN: 00000000 (-FPE -SXE -ASXE -BTE)
    [    0.000000]  ECFG: 00070800 (LIE=11 VS=7)
    [    0.000000] ESTAT: 00010800 [PIL] (IS=11 ECode=1 EsubCode=0)
    [    0.000000]  BADV: 0000000000002b82
    [    0.000000]  PRID: 0014d000 (Loongson-64bit, Loongson-3A6000)
    [    0.000000] Modules linked in:
    [    0.000000] Process swapper (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____))
    [    0.000000] Stack : 0000000000000000 9000000002eb5430 0000003a00000020 90000000045ccd00
    [    0.000000]         900000000470e000 90000000002c1918 0000000000000000 9000000004110780
    [    0.000000]         00000000fe6c0000 0000000480000000 9000000004b4e368 9000000004110748
    [    0.000000]         0000000000000000 900000000421ca84 9000000004620000 9000000004564970
    [    0.000000]         90000000046f7d78 9000000002cc9f70 90000000002c1918 900000000470e000
    [    0.000000]         9000000004564970 90000000040bc0e0 90000000046f7d78 0000000000000000
    [    0.000000]         0000000000004000 90000000045ccd00 0000000000000000 90000000002c1918
    [    0.000000]         90000000002c1900 900000000470b700 9000000004b4df78 9000000004620000
    [    0.000000]         90000000046200a8 90000000046200a8 0000000000000000 9000000004218b2c
    [    0.000000]         9000000004270008 0000000000000001 0000000000000000 90000000045ccd00
    [    0.000000]         ...
    [    0.000000] Call Trace:
    [    0.000000] [<90000000040e3f28>] reserve_bootmem_region+0xfc/0x21c
    [    0.000000] [<900000000421ca84>] memblock_free_all+0x114/0x350
    [    0.000000] [<9000000004218b2c>] mm_core_init+0x138/0x3cc
    [    0.000000] [<9000000004200e38>] start_kernel+0x488/0x7a4
    [    0.000000] [<90000000040df0d8>] kernel_entry+0xd8/0xdc
    [    0.000000]
    [    0.000000] Code: 02eb21ad  00410f4c  380c31ac <262b818d> 6800b70d  02c1c196  0015001c  57fe4bb1  260002cd
    
    The reason is early memblock_reserve() in memblock_init() set node id to
    MAX_NUMNODES, making NODE_DATA(nid) a NULL dereference in the call chain
    reserve_bootmem_region() -> init_reserved_page(). After memblock_init(),
    those late calls of memblock_reserve() operate on subregions of memblock
    .memory regions. As a result, these reserved regions will be set to the
    correct node at the first iteration of memmap_init_reserved_pages().
    
    So set all reserved memblocks on Node#0 at initialization can avoid this
    panic.
    
    Reported-by: WANG Xuerui <git@xen0n.name>
    Tested-by: WANG Xuerui <git@xen0n.name>
    Reviewed-by: WANG Xuerui <git@xen0n.name>  # with nits addressed
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 560e4941910085da7007b07313543814c9a3e36f
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Sep 20 14:26:29 2023 +0800

    LoongArch: Use _UL() and _ULL()
    
    [ Upstream commit 3563b477ddfe057ff1ef63636cacf198130276cb ]
    
    Use _UL() and _ULL() that are provided by const.h.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55aba54dea4ae542de9f52068267564cf3d47fbd
Author: Yann Sionneau <ysionneau@kalray.eu>
Date:   Mon Sep 11 16:07:49 2023 +0200

    i2c: designware: fix __i2c_dw_disable() in case master is holding SCL low
    
    [ Upstream commit 2409205acd3c7c877f3d0080cac6a5feb3358f83 ]
    
    The DesignWare IP can be synthesized with the IC_EMPTYFIFO_HOLD_MASTER_EN
    parameter.
    In this case, when the TX FIFO gets empty and the last command didn't have
    the STOP bit (IC_DATA_CMD[9]), the controller will hold SCL low until
    a new command is pushed into the TX FIFO or the transfer is aborted.
    
    When the controller is holding SCL low, it cannot be disabled.
    The transfer must first be aborted.
    Also, the bus recovery won't work because SCL is held low by the master.
    
    Check if the master is holding SCL low in __i2c_dw_disable() before trying
    to disable the controller. If SCL is held low, an abort is initiated.
    When the abort is done, then proceed with disabling the controller.
    
    This whole situation can happen for instance during SMBus read data block
    if the slave just responds with "byte count == 0".
    This puts the driver in an unrecoverable state, because the controller is
    holding SCL low and the current __i2c_dw_disable() procedure is not
    working. In this situation only a SoC reset can fix the i2c bus.
    
    Co-developed-by: Jonathan Borne <jborne@kalray.eu>
    Signed-off-by: Jonathan Borne <jborne@kalray.eu>
    Signed-off-by: Yann Sionneau <ysionneau@kalray.eu>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 73ab623014002be3bf5fbf5e3efb8b8c49ae6a91
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Tue Sep 12 08:05:51 2023 -0500

    gfs2: fix glock shrinker ref issues
    
    [ Upstream commit 62862485a4c3a52029fc30f4bdde9af04afdafc9 ]
    
    Before this patch, function gfs2_scan_glock_lru would only try to free
    glocks that had a reference count of 0. But if the reference count ever
    got to 0, the glock should have already been freed.
    
    Shrinker function gfs2_dispose_glock_lru checks whether glocks on the
    LRU are demote_ok, and if so, tries to demote them. But that's only
    possible if the reference count is at least 1.
    
    This patch changes gfs2_scan_glock_lru so it will try to demote and/or
    dispose of glocks that have a reference count of 1 and which are either
    demotable, or are already unlocked.
    
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f057b2c710a09487c657eaef62ee1da3582d432d
Author: Gerhard Engleder <gerhard@engleder-embedded.com>
Date:   Fri Sep 15 23:01:26 2023 +0200

    tsnep: Fix NAPI polling with budget 0
    
    [ Upstream commit 46589db3817bd8b523701274885984b5a5dda7d1 ]
    
    According to the NAPI documentation networking/napi.rst, Rx specific
    APIs like page pool and XDP cannot be used at all when budget is 0.
    skb Tx processing should happen regardless of the budget.
    
    Stop NAPI polling after Tx processing and skip Rx processing if budget
    is 0.
    
    Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11a5377e0925b2a62a64ac68768ec60a0095de55
Author: Gerhard Engleder <gerhard@engleder-embedded.com>
Date:   Fri Sep 15 23:01:25 2023 +0200

    tsnep: Fix ethtool channels
    
    [ Upstream commit a7f991953d73dd50c4c23b5437c0139960e1fad4 ]
    
    According to the NAPI documentation networking/napi.rst, for the ethtool
    API a channel is a IRQ/NAPI which services queues of a given type.
    
    tsnep uses a single IRQ/NAPI instance for every TX/RX queue pair.
    Therefore, combined channels shall be returned instead of separate tx/rx
    channels.
    
    Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e36aa9fa253b14103c5cdfc1cacdf83edcf22e4e
Author: Gerhard Engleder <gerhard@engleder-embedded.com>
Date:   Fri Sep 15 23:01:24 2023 +0200

    tsnep: Fix NAPI scheduling
    
    [ Upstream commit ea852c17f5382a0a52041cfbd9a4451ae0fa1a38 ]
    
    According to the NAPI documentation networking/napi.rst, drivers which
    have to mask interrupts explicitly should use the napi_schedule_prep()
    and __napi_schedule() calls.
    
    No problem seen so far with current implementation. Nevertheless, let's
    align the implementation with documentation.
    
    Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10ee8a00cb0e3b5c58bb8708129ddff237d4dad5
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Sep 15 20:10:03 2023 +0200

    net: hsr: Add __packed to struct hsr_sup_tlv.
    
    [ Upstream commit fbd825fcd7dd4c11d4c48c3d0adc248a4a0ce90b ]
    
    Struct hsr_sup_tlv describes HW layout and therefore it needs a __packed
    attribute to ensure the compiler does not add any padding.
    Due to the size and __packed attribute of the structs that use
    hsr_sup_tlv it has no functional impact.
    
    Add __packed to struct hsr_sup_tlv.
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c656c63e6264c071917f68bc23007521b916bf1e
Author: Johnathan Mantey <johnathanx.mantey@intel.com>
Date:   Fri Sep 15 09:12:35 2023 -0700

    ncsi: Propagate carrier gain/loss events to the NCSI controller
    
    [ Upstream commit 3780bb29311eccb7a1c9641032a112eed237f7e3 ]
    
    Report the carrier/no-carrier state for the network interface
    shared between the BMC and the passthrough channel. Without this
    functionality the BMC is unable to reconfigure the NIC in the event
    of a re-cabling to a different subnet.
    
    Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c91f3228fa94cadb092015686dcddd67e35b7c6c
Author: Benjamin Gray <bgray@linux.ibm.com>
Date:   Tue Aug 29 16:34:57 2023 +1000

    powerpc/watchpoints: Annotate atomic context in more places
    
    [ Upstream commit 27646b2e02b096a6936b3e3b6ba334ae20763eab ]
    
    It can be easy to miss that the notifier mechanism invokes the callbacks
    in an atomic context, so add some comments to that effect on the two
    handlers we register here.
    
    Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230829063457.54157-4-bgray@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3799888a6b884599345e45d49821b5dfa66fb90f
Author: Benjamin Gray <bgray@linux.ibm.com>
Date:   Tue Aug 29 16:34:56 2023 +1000

    powerpc/watchpoint: Disable pagefaults when getting user instruction
    
    [ Upstream commit 3241f260eb830d27d09cc604690ec24533fdb433 ]
    
    This is called in an atomic context, so is not allowed to sleep if a
    user page needs to be faulted in and has nowhere it can be deferred to.
    The pagefault_disabled() function is documented as preventing user
    access methods from sleeping.
    
    In practice the page will be mapped in nearly always because we are
    reading the instruction that just triggered the watchpoint trap.
    
    Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230829063457.54157-3-bgray@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98ac791d40003fd0b8c9a7b3004366e795238368
Author: Benjamin Gray <bgray@linux.ibm.com>
Date:   Tue Aug 29 16:34:55 2023 +1000

    powerpc/watchpoints: Disable preemption in thread_change_pc()
    
    [ Upstream commit cc879ab3ce39bc39f9b1d238b283f43a5f6f957d ]
    
    thread_change_pc() uses CPU local data, so must be protected from
    swapping CPUs while it is reading the breakpoint struct.
    
    The error is more noticeable after 1e60f3564bad ("powerpc/watchpoints:
    Track perf single step directly on the breakpoint"), which added an
    unconditional __this_cpu_read() call in thread_change_pc(). However the
    existing __this_cpu_read() that runs if a breakpoint does need to be
    re-inserted has the same issue.
    
    Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230829063457.54157-2-bgray@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 633f3563b2a441c6b04f58fa2d5a82a75f2eb5b4
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Date:   Fri Sep 15 16:41:53 2023 +0300

    ASoC: SOF: Intel: MTL: Reduce the DSP init timeout
    
    [ Upstream commit e0f96246c4402514acda040be19ee24c1619e01a ]
    
    20s seems unnecessarily large for the DSP init timeout. This coupled with
    multiple FW boot attempts causes an excessive delay in the error path when
    booting in recovery mode. Reduce it to 0.5s and use the existing
    HDA_DSP_INIT_TIMEOUT_US.
    
    Link: https://github.com/thesofproject/linux/issues/4565
    Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-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>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20230915134153.9688-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0bd2714996606d383638e2b81b3659d9fd69cf8
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Thu Jul 13 15:54:16 2023 -0400

    NFSv4.1: fix zero value filehandle in post open getattr
    
    [ Upstream commit 4506f23e117161a20104c8fa04f33e1ca63c26af ]
    
    Currently, if the OPEN compound experiencing an error and needs to
    get the file attributes separately, it will send a stand alone
    GETATTR but it would use the filehandle from the results of
    the OPEN compound. In case of the CLAIM_FH OPEN, nfs_openres's fh
    is zero value. That generate a GETATTR that's sent with a zero
    value filehandle, and results in the server returning an error.
    
    Instead, for the CLAIM_FH OPEN, take the filehandle that was used
    in the PUTFH of the OPEN compound.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e1f2aeb733751d8c45be4cb7ea122bd7351f059
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Aug 17 12:41:32 2023 +0200

    media: vb2: frame_vector.c: replace WARN_ONCE with a comment
    
    [ Upstream commit 735de5caf79e06cc9fb96b1b4f4974674ae3e917 ]
    
    The WARN_ONCE was issued also in cases that had nothing to do with VM_IO
    (e.g. if the start address was just a random value and uaccess fails with
    -EFAULT).
    
    There are no reports of WARN_ONCE being issued for actual VM_IO cases, so
    just drop it and instead add a note to the comment before the function.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reported-by: Yikebaer Aizezi <yikebaer61@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 767176f849bfbeb1a7379a076d08441050a245a2
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Thu Sep 14 15:47:25 2023 +0300

    ASoC: SOF: sof-audio: Fix DSP core put imbalance on widget setup failure
    
    [ Upstream commit bb0216d4db9ecaa51af45d8504757becbe5c050d ]
    
    In case the widget setup fails we should only decrement the core usage
    count if the sof_widget_free_unlocked() has not been called as part of
    the error handling.
    sof_widget_free_unlocked() calls snd_sof_dsp_core_put() and the additional
    core_put will cause imbalance in core usage count.
    Use the existing use_count_decremented to handle this issue.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20230914124725.17397-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dfc15af9edfd00968b3ec63f41dd1c8d93e2395e
Author: Chancel Liu <chancel.liu@nxp.com>
Date:   Wed Sep 13 18:26:56 2023 +0800

    ASoC: imx-rpmsg: Set ignore_pmdown_time for dai_link
    
    [ Upstream commit fac58baf8fcfcd7481e8f6d60206ce2a47c1476c ]
    
    i.MX rpmsg sound cards work on codec slave mode. MCLK will be disabled
    by CPU DAI driver in hw_free(). Some codec requires MCLK present at
    power up/down sequence. So need to set ignore_pmdown_time to power down
    codec immediately before MCLK is turned off.
    
    Take WM8962 as an example, if MCLK is disabled before DAPM power down
    playback stream, FIFO error will arise in WM8962 which will have bad
    impact on playback next.
    
    Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
    Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com>
    Link: https://lore.kernel.org/r/20230913102656.2966757-1-chancel.liu@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a8e6742b0d0230bd97d2680d7c4182816775786
Author: Mike Rapoport (IBM) <rppt@kernel.org>
Date:   Thu Sep 14 10:45:40 2023 +0300

    memblock tests: fix warning ‘struct seq_file’ declared inside parameter list
    
    [ Upstream commit 55122e0130e51eb71f5ec62d10525db0468f28e8 ]
    
    Building memblock tests produces the following warning:
    
    cc -I. -I../../include -Wall -O2 -fsanitize=address -fsanitize=undefined -D CONFIG_PHYS_ADDR_T_64BIT   -c -o main.o main.c
    In file included from tests/common.h:9,
                     from tests/basic_api.h:5,
                     from main.c:2:
    ./linux/memblock.h:601:50: warning: ‘struct seq_file’ declared inside parameter list will not be visible outside of this definition or declaration
      601 | static inline void memtest_report_meminfo(struct seq_file *m) { }
          |                                                  ^~~~~~~~
    
    Add declaration of 'struct seq_file' to tools/include/linux/seq_file.h
    to fix it.
    
    Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b46983198d21e8bfc7cfa3cec1377345a9e856c7
Author: Mike Rapoport (IBM) <rppt@kernel.org>
Date:   Thu Sep 14 09:24:51 2023 +0300

    memblock tests: fix warning: "__ALIGN_KERNEL" redefined
    
    [ Upstream commit 5e1bffbdb63baf89f3bf0b6bafb50903432a7434 ]
    
    Building memblock tests produces the following warning:
    
    cc -I. -I../../include -Wall -O2 -fsanitize=address -fsanitize=undefined -D CONFIG_PHYS_ADDR_T_64BIT   -c -o main.o main.c
    In file included from ../../include/linux/pfn.h:5,
                     from ./linux/memory_hotplug.h:6,
                     from ./linux/init.h:7,
                     from ./linux/memblock.h:11,
                     from tests/common.h:8,
                     from tests/basic_api.h:5,
                     from main.c:2:
    ../../include/linux/mm.h:14: warning: "__ALIGN_KERNEL" redefined
       14 | #define __ALIGN_KERNEL(x, a)            __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
          |
    In file included from ../../include/linux/mm.h:6,
                     from ../../include/linux/pfn.h:5,
                     from ./linux/memory_hotplug.h:6,
                     from ./linux/init.h:7,
                     from ./linux/memblock.h:11,
                     from tests/common.h:8,
                     from tests/basic_api.h:5,
                     from main.c:2:
    ../../include/uapi/linux/const.h:31: note: this is the location of the previous definition
       31 | #define __ALIGN_KERNEL(x, a)            __ALIGN_KERNEL_MASK(x, (__typeof__(x))(a) - 1)
          |
    
    Remove definitions of __ALIGN_KERNEL and __ALIGN_KERNEL_MASK from
    tools/include/linux/mm.h to fix it.
    
    Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c12eda0a22cee0d57957260f6afdb66923f61f03
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Wed Sep 13 17:02:50 2023 +0100

    ASoC: wm_adsp: Fix missing locking in wm_adsp_[read|write]_ctl()
    
    [ Upstream commit 781118bc2fc1026c8285f83ea7ecab07071a09c4 ]
    
    wm_adsp_read_ctl() and wm_adsp_write_ctl() must hold the cs_dsp pwr_lock
    mutex when calling cs_dsp_coeff_read_ctrl() and cs_dsp_coeff_write_ctrl().
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230913160250.3700346-1-rf@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 12bf8311da03b10d62d762e3cb21a6071574159d
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Wed Sep 13 17:05:23 2023 +0100

    firmware: cirrus: cs_dsp: Only log list of algorithms in debug build
    
    [ Upstream commit 69343ce91435f222052015c5af86b550391bac85 ]
    
    Change the logging of each algorithm from info level to debug level.
    
    On the original devices supported by this code there were typically only
    one or two algorithms in a firmware and one or two DSPs so this logging
    only used a small number of log lines.
    
    However, for the latest devices there could be 30-40 algorithms in a
    firmware and 8 DSPs being loaded in parallel, so using 300+ lines of log
    for information that isn't particularly important to have logged.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230913160523.3701189-1-rf@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 682659829e968f9e29d9225a7d3e6a0eb0046282
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Wed Sep 13 16:00:12 2023 +0100

    ASoC: cs42l42: Avoid stale SoundWire ATTACH after hard reset
    
    [ Upstream commit 2d066c6a78654c179f95c9beda1985d4c6befa4e ]
    
    In SoundWire mode leave hard RESET asserted when exiting probe,
    and wait for an UNATTACHED notification before deasserting RESET.
    
    If the boot state of the reset GPIO was deasserted it is possible
    that the SoundWire core had already enumerated the CS42L42 before
    cs42l42_sdw_probe() is called. When cs42l42_common_probe() hard
    resets the CS42L42 it triggers a race condition:
    
    1) After cs42l42_sdw_probe() returns the thread that called it
       will call cs42l42_sdw_update_status() to report the last
       status recorded by the SoundWire core.
    
    2) The SoundWire bus master will see a PING with the CS42L42
       now reporting as unenumerated and will trigger the core
       SoundWire code to start enumerating CS42L42.
    
    These two threads are racing against each other. If (1)
    happens before (2) a stale ATTACHED notification will be
    reported to the cs42l42 driver when in fact the status of
    cs42l42 is now unattached.
    
    To avoid this race condition:
    
    - Leave RESET asserted on exit from cs42l42_sdw_probe().
      This ensures that an UNATTACHED notification must be
      sent to the cs42l42 driver. If cs42l42 was already
      enumerated it will be seen to drop off the bus, causing
      an UNATTACH notification. If it was never enumerated the
      status is already UNATTACHED and this will be reported
      by thread (1).
    
    - When the UNATTACH notification is received, release RESET.
      This will cause CS42L42 to be enumerated and eventually
      report an ATTACHED notification.
    
    - The ATTACHED notification is now valid.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230913150012.604775-4-sbinding@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5188f7fedafc4d6ce734b87d4442d8bcdcd2dcd
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Wed Sep 13 16:00:11 2023 +0100

    ASoC: cs42l42: Don't rely on GPIOD_OUT_LOW to set RESET initially low
    
    [ Upstream commit a479b44ac0a0ac25cd48e5356200078924d78022 ]
    
    The ACPI setting for a GPIO default state has higher priority than the
    flag passed to devm_gpiod_get_optional() so ACPI can override the
    GPIOD_OUT_LOW. Explicitly set the GPIO low when hard resetting.
    
    Although GPIOD_OUT_LOW can't be relied on this doesn't seem like a
    reason to stop passing it to devm_gpiod_get_optional(). So we still pass
    it to state our intent, but can deal with it having no effect.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230913150012.604775-3-sbinding@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 068b0f7e07bd36ec4e0dc759dd87f09a11d918b2
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Wed Sep 13 16:00:10 2023 +0100

    ASoC: cs42l42: Ensure a reset pulse meets minimum pulse width.
    
    [ Upstream commit 41dac81b56c82c51a6d00fda5f3af7691ffee2d7 ]
    
    The CS42L42 can accept very short reset pulses of a few microseconds
    but there's no reason to force a very short pulse.
    Allow a wide range for the usleep_range() so it can be relaxed about
    the choice of timing source.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230913150012.604775-2-sbinding@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit daac7df9169177ba386763e0d6e6bcbb66873c70
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Tue Sep 12 19:26:17 2023 +0300

    ALSA: hda: intel-sdw-acpi: Use u8 type for link index
    
    [ Upstream commit 485ddd519fbd89a9d9ac4b02be489e03cbbeebba ]
    
    Use consistently u8 for sdw link index. The id is limited to 4, u8 is
    adequate in size to store it.
    
    This change will also fixes the following compiler warning/error (W=1):
    
    sound/hda/intel-sdw-acpi.c: In function ‘sdw_intel_acpi_scan’:
    sound/hda/intel-sdw-acpi.c:34:35: error: ‘-subproperties’ directive output may be truncated writing 14 bytes into a region of size between 7 and 17 [-Werror=format-truncation=]
       34 |                  "mipi-sdw-link-%d-subproperties", i);
          |                                   ^~~~~~~~~~~~~~
    In function ‘is_link_enabled’,
        inlined from ‘sdw_intel_scan_controller’ at sound/hda/intel-sdw-acpi.c:106:8,
        inlined from ‘sdw_intel_acpi_scan’ at sound/hda/intel-sdw-acpi.c:180:9:
    sound/hda/intel-sdw-acpi.c:33:9: note: ‘snprintf’ output between 30 and 40 bytes into a destination of size 32
       33 |         snprintf(name, sizeof(name),
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
       34 |                  "mipi-sdw-link-%d-subproperties", i);
          |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    
    The warnings got brought to light by a recent patch upstream:
    commit 6d4ab2e97dcf ("extrawarn: enable format and stringop overflow warnings in W=1")
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20230912162617.29178-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df28f6bbc8aa32f22bc41ad3ff6e5b24d9ff064e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 12 13:32:45 2023 +0200

    ASoC: rt5640: Only cancel jack-detect work on suspend if active
    
    [ Upstream commit 8fc7cc507d61fc655172836c74fb7fcc8b7a978b ]
    
    If jack-detection is not used; or has already been disabled then
    there is no need to call rt5640_cancel_work().
    
    Move the rt5640_cancel_work() inside the "if (rt5640->jack) {}" block,
    grouping it together with the disabling of the IRQ which queues the work
    in the first place.
    
    This also makes suspend() symetrical with resume() which re-queues the work
    in an "if (rt5640->jack) {}" block.
    
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230912113245.320159-7-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8db07f90f2817b39de391748a9c6fb092caccb4b
Author: Stanislav Fomichev <sdf@google.com>
Date:   Mon Sep 11 12:47:30 2023 -0700

    bpf: Clarify error expectations from bpf_clone_redirect
    
    [ Upstream commit 7cb779a6867fea00b4209bcf6de2f178a743247d ]
    
    Commit 151e887d8ff9 ("veth: Fixing transmit return status for dropped
    packets") exposed the fact that bpf_clone_redirect is capable of
    returning raw NET_XMIT_XXX return codes.
    
    This is in the conflict with its UAPI doc which says the following:
    "0 on success, or a negative error in case of failure."
    
    Update the UAPI to reflect the fact that bpf_clone_redirect can
    return positive error numbers, but don't explicitly define
    their meaning.
    
    Reported-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Stanislav Fomichev <sdf@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20230911194731.286342-1-sdf@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d50dcc52012d05b76fd49b0ba8ed7494667090f
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Sep 11 10:46:16 2023 +0300

    spi: intel-pci: Add support for Granite Rapids SPI serial flash
    
    [ Upstream commit 9855d60cfc720ff32355484c119acafd3c4dc806 ]
    
    Intel Granite Rapids has a flash controller that is compatible with the
    other Cannon Lake derivatives. Add Granite Rapids PCI ID to the driver
    list of supported devices.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20230911074616.3473347-1-mika.westerberg@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75ebf2efb708a8422303b906d9d044a28645e4f6
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Mon Sep 11 14:38:07 2023 +0800

    ASoC: fsl: imx-pcm-rpmsg: Add SNDRV_PCM_INFO_BATCH flag
    
    [ Upstream commit 2f9426905a63be7ccf8cd10109caf1848aa0993a ]
    
    The rpmsg pcm device is a device which should support
    double buffering.
    
    Found this issue with pipewire. When there is no
    SNDRV_PCM_INFO_BATCH flag in driver, the pipewire will
    set headroom to be zero, and because rpmsg pcm device
    don't support residue report, when the latency setting
    is small, the "delay" always larger than "target" in
    alsa-pcm.c, that reading next period data is not
    scheduled on time.
    
    With SNDRV_PCM_INFO_BATCH flag in driver, the pipewire
    will select a smaller period size for device, then
    the task of reading next period data will be scheduled
    on time.
    
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Link: https://lore.kernel.org/r/1694414287-13291-1-git-send-email-shengjiu.wang@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c96cfcf7057575bc84a3a7445c63ecd5cced75d
Author: Valentin Caron <valentin.caron@foss.st.com>
Date:   Wed Sep 6 15:27:35 2023 +0200

    spi: stm32: add a delay before SPI disable
    
    [ Upstream commit 6de8a70c84ee0586fdde4e671626b9caca6aed74 ]
    
    As explained in errata sheet, in section "2.14.5 Truncation of SPI output
    signals after EOT event":
    On STM32MP1x, EOT interrupt can be thrown before the true end of
    communication.
    
    So we add a delay of a half period to wait the real end of the
    transmission.
    
    Link: https://www.st.com/resource/en/errata_sheet/es0539-stm32mp131x3x5x-device-errata-stmicroelectronics.pdf
    Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
    Link: https://lore.kernel.org/r/20230906132735.748174-1-valentin.caron@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d83f069fcbe274cde48c3bad449eeae81553695b
Author: Han Xu <han.xu@nxp.com>
Date:   Wed Sep 6 13:32:54 2023 -0500

    spi: nxp-fspi: reset the FLSHxCR1 registers
    
    [ Upstream commit 18495676f7886e105133f1dc06c1d5e8d5436f32 ]
    
    Reset the FLSHxCR1 registers to default value. ROM may set the register
    value and it affects the SPI NAND normal functions.
    
    Signed-off-by: Han Xu <han.xu@nxp.com>
    Link: https://lore.kernel.org/r/20230906183254.235847-1-han.xu@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db7632bd384585ee29231615eb2a6c22f4728f13
Author: Walt Holman <waltholman09@gmail.com>
Date:   Sun Sep 10 13:54:34 2023 -0500

    Add DMI ID for MSI Bravo 15 B7ED
    
    [ Upstream commit e616a916fe8431ebd5eb3cf4ac224d143c57083c ]
    
    Signed-off-by: Walt Holman <waltholman09@gmail.com>
    Link: https://lore.kernel.org/r/20230910185433.13677-1-waltholman09@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c2b53434df7a8c478b59b3c77f4f63badded1e6e
Author: Niklas Cassel <niklas.cassel@wdc.com>
Date:   Thu Sep 14 00:19:17 2023 +0200

    ata: libata-eh: do not thaw the port twice in ata_eh_reset()
    
    [ Upstream commit 7a3bc2b3989e05bbaa904a63279049a401491c84 ]
    
    commit 1e641060c4b5 ("libata: clear eh_info on reset completion") added
    a workaround that broke the retry mechanism in ATA EH.
    
    Tejun himself suggested to remove this workaround when it was identified
    to cause additional problems:
    https://lore.kernel.org/linux-ide/20110426135027.GI878@htj.dyndns.org/
    
    He even said:
    "Hmm... it seems I wasn't thinking straight when I added that work around."
    https://lore.kernel.org/linux-ide/20110426155229.GM878@htj.dyndns.org/
    
    While removing the workaround solved the issue, however, the workaround was
    kept to avoid "spurious hotplug events during reset", and instead another
    workaround was added on top of the existing workaround in commit
    8c56cacc724c ("libata: fix unexpectedly frozen port after ata_eh_reset()").
    
    Because these IRQs happened when the port was frozen, we know that they
    were actually a side effect of PxIS and IS.IPS(x) not being cleared before
    the COMRESET. This is now done in commit 94152042eaa9 ("ata: libahci: clear
    pending interrupt status"), so these workarounds can now be removed.
    
    Since commit 1e641060c4b5 ("libata: clear eh_info on reset completion") has
    now been reverted, the ATA EH retry mechanism is functional again, so there
    is once again no need to thaw the port more than once in ata_eh_reset().
    
    This reverts "the workaround on top of the workaround" introduced in commit
    8c56cacc724c ("libata: fix unexpectedly frozen port after ata_eh_reset()").
    
    Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e86c64afbbec74722c5d914d4aec786642e6bee3
Author: Niklas Cassel <niklas.cassel@wdc.com>
Date:   Thu Sep 14 00:19:16 2023 +0200

    ata: libata-eh: do not clear ATA_PFLAG_EH_PENDING in ata_eh_reset()
    
    [ Upstream commit 80cc944eca4f0baa9c381d0706f3160e491437f2 ]
    
    ata_scsi_port_error_handler() starts off by clearing ATA_PFLAG_EH_PENDING,
    before calling ap->ops->error_handler() (without holding the ap->lock).
    
    If an error IRQ is received while ap->ops->error_handler() is running,
    the irq handler will set ATA_PFLAG_EH_PENDING.
    
    Once ap->ops->error_handler() returns, ata_scsi_port_error_handler()
    checks if ATA_PFLAG_EH_PENDING is set, and if it is, another iteration
    of ATA EH is performed.
    
    The problem is that ATA_PFLAG_EH_PENDING is not only cleared by
    ata_scsi_port_error_handler(), it is also cleared by ata_eh_reset().
    
    ata_eh_reset() is called by ap->ops->error_handler(). This additional
    clearing done by ata_eh_reset() breaks the whole retry logic in
    ata_scsi_port_error_handler(). Thus, if an error IRQ is received while
    ap->ops->error_handler() is running, the port will currently remain
    frozen and will never get re-enabled.
    
    The additional clearing in ata_eh_reset() was introduced in commit
    1e641060c4b5 ("libata: clear eh_info on reset completion").
    
    Looking at the original error report:
    https://marc.info/?l=linux-ide&m=124765325828495&w=2
    
    We can see the following happening:
    [    1.074659] ata3: XXX port freeze
    [    1.074700] ata3: XXX hardresetting link, stopping engine
    [    1.074746] ata3: XXX flipping SControl
    
    [    1.411471] ata3: XXX irq_stat=400040 CONN|PHY
    [    1.411475] ata3: XXX port freeze
    
    [    1.420049] ata3: XXX starting engine
    [    1.420096] ata3: XXX rc=0, class=1
    [    1.420142] ata3: XXX clearing IRQs for thawing
    [    1.420188] ata3: XXX port thawed
    [    1.420234] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
    
    We are not supposed to be able to receive an error IRQ while the port is
    frozen (PxIE is set to 0, i.e. all IRQs for the port are disabled).
    
    AHCI 1.3.1 section 10.7.1.1 First Tier (IS Register) states:
    "Each bit location can be thought of as reporting a '1' if the virtual
    "interrupt line" for that port is indicating it wishes to generate an
    interrupt. That is, if a port has one or more interrupt status bit set,
    and the enables for those status bits are set, then this bit shall be set."
    
    Additionally, AHCI state P:ComInit clearly shows that the state machine
    will only jump to P:ComInitSetIS (which sets IS.IPS(x) to '1'), if PxIE.PCE
    is set to '1'. In our case, PxIE is set to 0, so IS.IPS(x) won't get set.
    
    So IS.IPS(x) only gets set if PxIS and PxIE is set.
    
    AHCI 1.3.1 section 10.7.1.1 First Tier (IS Register) also states:
    "The bits in this register are read/write clear. It is set by the level of
    the virtual interrupt line being a set, and cleared by a write of '1' from
    the software."
    
    So if IS.IPS(x) is set, you need to explicitly clear it by writing a 1 to
    IS.IPS(x) for that port.
    
    Since PxIE is cleared, the only way to get an interrupt while the port is
    frozen, is if IS.IPS(x) is set, and the only way IS.IPS(x) can be set when
    the port is frozen, is if it was set before the port was frozen.
    
    However, since commit 737dd811a3db ("ata: libahci: clear pending interrupt
    status"), we clear both PxIS and IS.IPS(x) after freezing the port, but
    before the COMRESET, so the problem that commit 1e641060c4b5 ("libata:
    clear eh_info on reset completion") fixed can no longer happen.
    
    Thus, revert commit 1e641060c4b5 ("libata: clear eh_info on reset
    completion"), so that the retry logic in ata_scsi_port_error_handler()
    works once again. (The retry logic is still needed, since we can still
    get an error IRQ _after_ the port has been thawed, but before
    ata_scsi_port_error_handler() takes the ap->lock in order to check
    if ATA_PFLAG_EH_PENDING is set.)
    
    Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1aaff2ce94936afa00f73b10f464c78f5292cf7f
Author: Steve French <stfrench@microsoft.com>
Date:   Fri Sep 15 01:10:40 2023 -0500

    smb3: correct places where ENOTSUPP is used instead of preferred EOPNOTSUPP
    
    [ Upstream commit ebc3d4e44a7e05457825e03d0560153687265523 ]
    
    checkpatch flagged a few places with:
         WARNING: ENOTSUPP is not a SUSV4 error code, prefer EOPNOTSUPP
    Also fixed minor typo
    
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 22e6d783a33015bcdf0979015e4eac603912bea7
Author: Michal Grzedzicki <mge@meta.com>
Date:   Mon Sep 11 10:03:40 2023 -0700

    scsi: pm80xx: Avoid leaking tags when processing OPC_INB_SET_CONTROLLER_CONFIG command
    
    [ Upstream commit c13e7331745852d0dd7c35eabbe181cbd5b01172 ]
    
    Tags allocated for OPC_INB_SET_CONTROLLER_CONFIG command need to be freed
    when we receive the response.
    
    Signed-off-by: Michal Grzedzicki <mge@meta.com>
    Link: https://lore.kernel.org/r/20230911170340.699533-2-mge@meta.com
    Acked-by: Jack Wang <jinpu.wang@ionos.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ee6128efb3a56a33c802c6c8d50e9592e893add
Author: Michal Grzedzicki <mge@meta.com>
Date:   Wed Sep 13 08:56:10 2023 -0700

    scsi: pm80xx: Use phy-specific SAS address when sending PHY_START command
    
    [ Upstream commit 71996bb835aed58c7ec4967be1d05190a27339ec ]
    
    Some cards have more than one SAS address. Using an incorrect address
    causes communication issues with some devices like expanders.
    
    Closes: https://lore.kernel.org/linux-kernel/A57AEA84-5CA0-403E-8053-106033C73C70@fb.com/
    Signed-off-by: Michal Grzedzicki <mge@meta.com>
    Link: https://lore.kernel.org/r/20230913155611.3183612-1-mge@meta.com
    Acked-by: Jack Wang <jinpu.wang@ionos.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ce28dbbbedf3a402006cac1aadc971d143edba8
Author: Icenowy Zheng <uwu@icenowy.me>
Date:   Tue Sep 12 15:24:10 2023 +0800

    riscv: errata: fix T-Head dcache.cva encoding
    
    [ Upstream commit 8eb8fe67e2c84324398f5983c41b4f831d0705b3 ]
    
    The dcache.cva encoding shown in the comments are wrong, it's for
    dcache.cval1 (which is restricted to L1) instead.
    
    Fix this in the comment and in the hardcoded instruction.
    
    Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
    Tested-by: Sergey Matyukevich <sergey.matyukevich@syntacore.com>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Reviewed-by: Guo Ren <guoren@kernel.org>
    Tested-by: Drew Fustini <dfustini@baylibre.com>
    Link: https://lore.kernel.org/r/20230912072410.2481-1-jszhang@kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b62561b266f80cf2cac55425477dac9154dabeff
Author: Pratyush Yadav <ptyadav@amazon.de>
Date:   Tue Sep 12 17:52:49 2023 +0200

    nvme-pci: do not set the NUMA node of device if it has none
    
    [ Upstream commit dad651b2a44eb6b201738f810254279dca29d30d ]
    
    If a device has no NUMA node information associated with it, the driver
    puts the device in node first_memory_node (say node 0). Not having a
    NUMA node and being associated with node 0 are completely different
    things and it makes little sense to mix the two.
    
    Signed-off-by: Pratyush Yadav <ptyadav@amazon.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e35b16b2fa63d6030513c6a7306a7d75639a60a
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Mon Sep 11 16:56:13 2023 -0700

    objtool: Fix _THIS_IP_ detection for cold functions
    
    [ Upstream commit 72178d5d1a38dd185d1db15f177f2d122ef10d9b ]
    
    Cold functions and their non-cold counterparts can use _THIS_IP_ to
    reference each other.  Don't warn about !ENDBR in that case.
    
    Note that for GCC this is currently irrelevant in light of the following
    commit
    
      c27cd083cfb9 ("Compiler attributes: GCC cold function alignment workarounds")
    
    which disabled cold functions in the kernel.  However this may still be
    possible with Clang.
    
    Fixes several warnings like the following:
    
      drivers/scsi/bnx2i/bnx2i.prelink.o: warning: objtool: bnx2i_hw_ep_disconnect+0x19d: relocation to !ENDBR: bnx2i_hw_ep_disconnect.cold+0x0
      drivers/net/ipvlan/ipvlan.prelink.o: warning: objtool: ipvlan_addr4_event.cold+0x28: relocation to !ENDBR: ipvlan_addr4_event+0xda
      drivers/net/ipvlan/ipvlan.prelink.o: warning: objtool: ipvlan_addr6_event.cold+0x26: relocation to !ENDBR: ipvlan_addr6_event+0xb7
      drivers/net/ethernet/broadcom/tg3.prelink.o: warning: objtool: tg3_set_ringparam.cold+0x17: relocation to !ENDBR: tg3_set_ringparam+0x115
      drivers/net/ethernet/broadcom/tg3.prelink.o: warning: objtool: tg3_self_test.cold+0x17: relocation to !ENDBR: tg3_self_test+0x2e1
      drivers/target/iscsi/cxgbit/cxgbit.prelink.o: warning: objtool: __cxgbit_free_conn.cold+0x24: relocation to !ENDBR: __cxgbit_free_conn+0xfb
      net/can/can.prelink.o: warning: objtool: can_rx_unregister.cold+0x2c: relocation to !ENDBR: can_rx_unregister+0x11b
      drivers/net/ethernet/qlogic/qed/qed.prelink.o: warning: objtool: qed_spq_post+0xc0: relocation to !ENDBR: qed_spq_post.cold+0x9a
      drivers/net/ethernet/qlogic/qed/qed.prelink.o: warning: objtool: qed_iwarp_ll2_comp_syn_pkt.cold+0x12f: relocation to !ENDBR: qed_iwarp_ll2_comp_syn_pkt+0x34b
      net/tipc/tipc.prelink.o: warning: objtool: tipc_nametbl_publish.cold+0x21: relocation to !ENDBR: tipc_nametbl_publish+0xa6
    
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/d8f1ab6a23a6105bc023c132b105f245c7976be6.1694476559.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 109063d6b222613daacbcde57b3dc99ff40fee15
Author: David Francis <David.Francis@amd.com>
Date:   Tue Sep 5 10:13:51 2023 -0400

    drm/amdgpu: Handle null atom context in VBIOS info ioctl
    
    [ Upstream commit 5e7e82254270c8cf8b107451c5de01cee2f135ae ]
    
    On some APU systems, there is no atom context and so the
    atom_context struct is null.
    
    Add a check to the VBIOS_INFO branch of amdgpu_info_ioctl
    to handle this case, returning all zeroes.
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: David Francis <David.Francis@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bfd7ecee601dad12d837fc99ac2fda03dd76218b
Author: David Francis <David.Francis@amd.com>
Date:   Tue Nov 22 15:14:32 2022 -0500

    drm/amdkfd: Checkpoint and restore queues on GFX11
    
    [ Upstream commit 9296da8c40900b4dae3d973aa22be306e2a77671 ]
    
    The code in kfd_mqd_manager_v11.c to support criu dump and
    restore of queue state was missing.
    
    Added it; should be equivalent to kfd_mqd_manager_v10.c.
    
    CC: Felix Kuehling <felix.kuehling@amd.com>
    Reviewed-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: David Francis <David.Francis@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea3f2bff5ab7a719f8caab28384304bf97fb7ef4
Author: Hawking Zhang <Hawking.Zhang@amd.com>
Date:   Fri Sep 8 21:21:55 2023 +0800

    drm/amdgpu: fallback to old RAS error message for aqua_vanjaram
    
    [ Upstream commit ffd6bde302061aeee405ab364403af30210f0b99 ]
    
    So driver doesn't generate incorrect message until
    the new format is settled down for aqua_vanjaram
    
    Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a663c199b4d63ea1f90a37f6329c1a0af9437390
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Sep 7 15:44:54 2023 -0400

    drm/amdgpu/nbio4.3: set proper rmmio_remap.reg_offset for SR-IOV
    
    [ Upstream commit ab43213e7afd08ac68d4282060bacf309e70fd14 ]
    
    Needed for HDP flush to work correctly.
    
    Reviewed-by: Timmy Tsai <timmtsai@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c634d78245b2a4ada1110837808925a1904e9a68
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Sep 6 11:35:04 2023 -0400

    drm/amdgpu/soc21: don't remap HDP registers for SR-IOV
    
    [ Upstream commit 1832403cd41ca6b19b24e9d64f79cb08d920ca44 ]
    
    This matches the behavior for soc15 and nv.
    
    Acked-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Timmy Tsai <timmtsai@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1faca7fa88c738c2ecb2da6503f8de0be3fd7ff
Author: Swapnil Patel <swapnil.patel@amd.com>
Date:   Thu Aug 17 14:04:26 2023 -0400

    drm/amd/display: Don't check registers, if using AUX BL control
    
    [ Upstream commit f5b2c10b57615828b531bb0ae56bd6325a41167e ]
    
    [Why]
    Currently the driver looks DCN registers to access if BL is on or not.
    This check is not valid if we are using AUX based brightness control.
    This causes driver to not send out "backlight off" command during power off
    sequence as it already thinks it is off.
    
    [How]
    Only check DCN registers if we aren't using AUX based brightness control.
    
    Reviewed-by: Wenjing Liu <wenjing.liu@amd.com>
    Acked-by: Stylon Wang <stylon.wang@amd.com>
    Signed-off-by: Swapnil Patel <swapnil.patel@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e47e585b63078fddbb86277835693266ecd4ee6
Author: Mukul Joshi <mukul.joshi@amd.com>
Date:   Tue Aug 22 11:35:25 2023 -0400

    drm/amdkfd: Update CU masking for GFX 9.4.3
    
    [ Upstream commit fc6efed2c728c9c10b058512fc9c1613f870a8e8 ]
    
    The CU mask passed from user-space will change based on
    different spatial partitioning mode. As a result, update
    CU masking code for GFX9.4.3 to work for all partitioning
    modes.
    
    Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8ffd9453dc2b535cc9146b66c36e8295aa3a555b
Author: Mukul Joshi <mukul.joshi@amd.com>
Date:   Fri Aug 25 12:18:06 2023 -0400

    drm/amdkfd: Update cache info reporting for GFX v9.4.3
    
    [ Upstream commit 0752e66e91fa86fa5481b04b22053363833ffb85 ]
    
    Update cache info reporting in sysfs to report the correct
    number of CUs and associated cache information based on
    different spatial partitioning modes.
    
    Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 830807d1fb11e3cbf7cf9091e820aa34a8b9c02d
Author: Mukul Joshi <mukul.joshi@amd.com>
Date:   Fri Aug 25 11:59:09 2023 -0400

    drm/amdgpu: Store CU info from all XCCs for GFX v9.4.3
    
    [ Upstream commit 97e3c6a853f2af9145daf0c6ca25bcdf55c759d4 ]
    
    Currently, we store CU info only for a single XCC assuming
    that it is the same for all XCCs. However, that may not be
    true. As a result, store CU info for all XCCs. This info is
    later used for CU masking.
    
    Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 652ba144b190295b7f3ecc2278b86fdd4799dc52
Author: Julia Lawall <Julia.Lawall@inria.fr>
Date:   Thu Sep 7 11:55:18 2023 +0200

    thermal/of: add missing of_node_put()
    
    [ Upstream commit 8a81cf96f5510aaf9a65d103f7405079a7b0fcc5 ]
    
    for_each_child_of_node performs an of_node_get on each
    iteration, so a break out of the loop requires an
    of_node_put.
    
    This was done using the Coccinelle semantic patch
    iterators/for_each_child.cocci
    
    Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99c535d97092df8b73619b4cfe0dd5d33f83c57f
Author: Luke D. Jones <luke@ljones.dev>
Date:   Tue Sep 5 20:28:13 2023 +1200

    platform/x86: asus-wmi: Support 2023 ROG X16 tablet mode
    
    [ Upstream commit 4106a70ddad57ee6d8f98b81d6f036740c72762b ]
    
    Add quirk for ASUS ROG X16 (GV601V, 2023 versions) Flow 2-in-1
    to enable tablet mode with lid flip (all screen rotations).
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Link: https://lore.kernel.org/r/20230905082813.13470-1-luke@ljones.dev
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 511784d9e480a8a690e82c869727b04baac6fb75
Author: David Thompson <davthompson@nvidia.com>
Date:   Tue Sep 5 09:32:43 2023 -0400

    platform/mellanox: mlxbf-bootctl: add NET dependency into Kconfig
    
    [ Upstream commit c2dffda1d8f7511505bbbf16ba282f2079b30089 ]
    
    The latest version of the mlxbf_bootctl driver utilizes
    "sysfs_format_mac", and this API is only available if
    NET is defined in the kernel configuration. This patch
    changes the mlxbf_bootctl Kconfig to depend on NET.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202309031058.JvwNDBKt-lkp@intel.com/
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Link: https://lore.kernel.org/r/20230905133243.31550-1-davthompson@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 164eaebff0af18fba6c70e0c3e41f1f1f093d2e3
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Wed Aug 2 17:17:04 2023 +0200

    efi/x86: Ensure that EFI_RUNTIME_MAP is enabled for kexec
    
    [ Upstream commit aba7e066c738d4b349413a271b2a236aa55bacbc ]
    
    CONFIG_EFI_RUNTIME_MAP needs to be enabled in order for kexec to be able
    to provide the required information about the EFI runtime mappings to
    the incoming kernel, regardless of whether kexec_load() or
    kexec_file_load() is being used. Without this information, kexec boot in
    EFI mode is not possible.
    
    The CONFIG_EFI_RUNTIME_MAP option is currently directly configurable if
    CONFIG_EXPERT is enabled, so that it can be turned on for debugging
    purposes even if KEXEC is not enabled. However, the upshot of this is
    that it can also be disabled even when it shouldn't.
    
    So tweak the Kconfig declarations to avoid this situation.
    
    Reported-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79c6bb2be2c0f66037a8c6c2cda78a532ec40823
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Sep 4 21:54:36 2023 +0200

    ata: sata_mv: Fix incorrect string length computation in mv_dump_mem()
    
    [ Upstream commit e97eb65dd464e7f118a16a26337322d07eb653e2 ]
    
    snprintf() returns the "number of characters which *would* be generated for
    the given input", not the size *really* generated.
    
    In order to avoid too large values for 'o' (and potential negative values
    for "sizeof(linebuf) o") use scnprintf() instead of snprintf().
    
    Note that given the "w < 4" in the for loop, the buffer can NOT
    overflow, but using the *right* function is always better.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 812e69bfc445793d5b668077da933eaa5decba43
Author: Guangguan Wang <guangguan.wang@linux.alibaba.com>
Date:   Fri Sep 8 11:31:42 2023 +0800

    net/smc: bugfix for smcr v2 server connect success statistic
    
    [ Upstream commit 6912e724832c47bb381eb1bd1e483ec8df0d0f0f ]
    
    In the macro SMC_STAT_SERV_SUCC_INC, the smcd_version is used
    to determin whether to increase the v1 statistic or the v2
    statistic. It is correct for SMCD. But for SMCR, smcr_version
    should be used.
    
    Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75fc9e99b3a71006720ad1e029db11a4b5c32d4a
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Thu Sep 7 12:28:20 2023 -0400

    ring-buffer: Do not attempt to read past "commit"
    
    [ Upstream commit 95a404bd60af6c4d9d8db01ad14fe8957ece31ca ]
    
    When iterating over the ring buffer while the ring buffer is active, the
    writer can corrupt the reader. There's barriers to help detect this and
    handle it, but that code missed the case where the last event was at the
    very end of the page and has only 4 bytes left.
    
    The checks to detect the corruption by the writer to reads needs to see the
    length of the event. If the length in the first 4 bytes is zero then the
    length is stored in the second 4 bytes. But if the writer is in the process
    of updating that code, there's a small window where the length in the first
    4 bytes could be zero even though the length is only 4 bytes. That will
    cause rb_event_length() to read the next 4 bytes which could happen to be off the
    allocated page.
    
    To protect against this, fail immediately if the next event pointer is
    less than 8 bytes from the end of the commit (last byte of data), as all
    events must be a minimum of 8 bytes anyway.
    
    Link: https://lore.kernel.org/all/20230905141245.26470-1-Tze-nan.Wu@mediatek.com/
    Link: https://lore.kernel.org/linux-trace-kernel/20230907122820.0899019c@gandalf.local.home
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Reported-by: Tze-nan Wu <Tze-nan.Wu@mediatek.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c06f3b07566ff8f46b1e913366ef5288707336ec
Author: Ricardo B. Marliere <rbmarliere@gmail.com>
Date:   Tue Aug 22 18:09:40 2023 -0300

    selftests: fix dependency checker script
    
    [ Upstream commit 5f9dd2e896a91bfca90f8463eb6808c03d535d8a ]
    
    This patch fixes inconsistencies in the parsing rules of the levels 1
    and 2 of the kselftest_deps.sh.  It was added the levels 4 and 5 to
    account for a few edge cases that are present in some tests, also some
    minor identation styling have been fixed (s/    /\t/g).
    
    Signed-off-by: Ricardo B. Marliere <rbmarliere@gmail.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 806bd126ec5dec359fe095a9fae53653eaab56f1
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Aug 28 09:06:44 2023 +0100

    btrfs: assert delayed node locked when removing delayed item
    
    [ Upstream commit a57c2d4e46f519b24558ae0752c17eec416ac72a ]
    
    When removing a delayed item, or releasing which will remove it as well,
    we will modify one of the delayed node's rbtrees and item counter if the
    delayed item is in one of the rbtrees. This require having the delayed
    node's mutex locked, otherwise we will race with other tasks modifying
    the rbtrees and the counter.
    
    This is motivated by a previous version of another patch actually calling
    btrfs_release_delayed_item() after unlocking the delayed node's mutex and
    against a delayed item that is in a rbtree.
    
    So assert at __btrfs_remove_delayed_item() that the delayed node's mutex
    is locked.
    
    Reviewed-by: Qu Wenruo <wqu@suse.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: Sasha Levin <sashal@kernel.org>

commit 8e35b261e381bdfa352bca4008f32d594e32137a
Author: Zheng Yejian <zhengyejian1@huawei.com>
Date:   Wed Sep 6 16:19:30 2023 +0800

    ring-buffer: Avoid softlockup in ring_buffer_resize()
    
    [ Upstream commit f6bd2c92488c30ef53b5bd80c52f0a7eee9d545a ]
    
    When user resize all trace ring buffer through file 'buffer_size_kb',
    then in ring_buffer_resize(), kernel allocates buffer pages for each
    cpu in a loop.
    
    If the kernel preemption model is PREEMPT_NONE and there are many cpus
    and there are many buffer pages to be allocated, it may not give up cpu
    for a long time and finally cause a softlockup.
    
    To avoid it, call cond_resched() after each cpu buffer allocation.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230906081930.3939106-1-zhengyejian1@huawei.com
    
    Cc: <mhiramat@kernel.org>
    Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c9ceeaa275efd44f6af11dc10229fb80e870fbc
Author: Zheng Yejian <zhengyejian1@huawei.com>
Date:   Mon Jun 26 08:11:44 2023 +0800

    selftests/ftrace: Correctly enable event in instance-event.tc
    
    [ Upstream commit f4e4ada586995b17f828c6d147d1800eb1471450 ]
    
    Function instance_set() expects to enable event 'sched_switch', so we
    should set 1 to its 'enable' file.
    
    Testcase passed after this patch:
      # ./ftracetest test.d/instances/instance-event.tc
      === Ftrace unit tests ===
      [1] Test creation and deletion of trace instances while setting an event
      [PASS]
    
      # of passed:  1
      # of failed:  0
      # of unresolved:  0
      # of untested:  0
      # of unsupported:  0
      # of xfailed:  0
      # of undefined(test bug):  0
    
    Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f75e0670d5113628eec5e95e1a043934fe737a9d
Author: Kiwoong Kim <kwmad.kim@samsung.com>
Date:   Mon Sep 4 10:30:45 2023 +0900

    scsi: ufs: core: Poll HCS.UCRDY before issuing a UIC command
    
    [ Upstream commit d32533d30e2119b0c0aa17596734f1f842f750df ]
    
    With auto hibern8 enabled, UIC could be busy processing a hibern8 operation
    and the HCI would reports UIC not ready for a short while through
    HCS.UCRDY. The UFS driver doesn't currently handle this situation. The
    UFSHCI spec specifies UCRDY like this: whether the host controller is ready
    to process UIC COMMAND
    
    The 'ready' could be seen as many different meanings. If the meaning
    includes not processing any request from HCI, processing a hibern8
    operation can be 'not ready'. In this situation, the driver needs to wait
    until the operations is completed.
    
    Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
    Link: https://lore.kernel.org/r/550484ffb66300bdcec63d3e304dfd55cb432f1f.1693790060.git.kwmad.kim@samsung.com
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Chanwoo Lee <cw9316.lee@samsung.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 129dbfdd82814f3a846a82c2ca2e1e3250559498
Author: Kiwoong Kim <kwmad.kim@samsung.com>
Date:   Mon Sep 4 10:30:44 2023 +0900

    scsi: ufs: core: Move __ufshcd_send_uic_cmd() outside host_lock
    
    [ Upstream commit 2d3f59cf868b4a2dd678a96cd49bdd91411bd59f ]
    
    __ufshcd_send_uic_cmd() is wrapped by uic_cmd_mutex and its related
    contexts are accessed within the section wrapped by uic_cmd_mutex. Thus,
    wrapping with host_lock is redundant.
    
    Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
    Link: https://lore.kernel.org/r/782ba5f26f0a96e58d85dff50751787d2d2a6b2b.1693790060.git.kwmad.kim@samsung.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Chanwoo Lee <cw9316.lee@samsung.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01345a59c6e09169d6297dbec43f35af5e8e6183
Author: Javed Hasan <jhasan@marvell.com>
Date:   Fri Sep 1 11:36:46 2023 +0530

    scsi: qedf: Add synchronization between I/O completions and abort
    
    [ Upstream commit 7df0b2605489bef3f4223ad66f1f9bb8d50d4cd2 ]
    
    Avoid race condition between I/O completion and abort processing by
    protecting the cmd_type with the rport lock.
    
    Signed-off-by: Javed Hasan <jhasan@marvell.com>
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Link: https://lore.kernel.org/r/20230901060646.27885-1-skashyap@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef26ca55348bfa754476829854ca769feeb22f52
Author: Helge Deller <deller@gmx.de>
Date:   Thu Aug 31 22:36:12 2023 +0200

    parisc: irq: Make irq_stack_union static to avoid sparse warning
    
    [ Upstream commit b1bef1388c427cdad7331a9c8eb4ebbbe5b954b0 ]
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f1fb571e914195d7d7df9e7147333afdc30cc158
Author: Helge Deller <deller@gmx.de>
Date:   Thu Aug 31 22:08:32 2023 +0200

    parisc: drivers: Fix sparse warning
    
    [ Upstream commit b137b9d60b8add5620a06c687a71ce18776730b0 ]
    
    Fix "warning: directive in macro's argument list" warning.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b398e1bef22302e35bd7dd458b231e3029d40209
Author: Helge Deller <deller@gmx.de>
Date:   Wed Aug 30 11:59:55 2023 +0200

    parisc: iosapic.c: Fix sparse warnings
    
    [ Upstream commit 927c6c8aa27c284a799b8c18784e37d3373af908 ]
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f944136c63a4563093293c0d0793ce0bb2e08f6
Author: Helge Deller <deller@gmx.de>
Date:   Wed Aug 30 11:36:52 2023 +0200

    parisc: ccio-dma: Fix sparse warnings
    
    [ Upstream commit 9a47a710cf517801a8b4fff9949c4cecb5fd019a ]
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 503b10a1a50756abe2391703d1d2ec728ab5f789
Author: Helge Deller <deller@gmx.de>
Date:   Wed Aug 30 11:49:57 2023 +0200

    parisc: sba-iommu: Fix sparse warnigs
    
    [ Upstream commit c1ebb94071cb4455177bafa619423acb3494d15d ]
    
    Fix sparse warnings, as pdir is __le64 *.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 24aa18b6345a9f58bcc255d13cf5e0edcd586c07
Author: Helge Deller <deller@gmx.de>
Date:   Wed Aug 30 08:10:01 2023 +0200

    parisc: sba: Fix compile warning wrt list of SBA devices
    
    [ Upstream commit eb3255ee8f6f4691471a28fbf22db5e8901116cd ]
    
    Fix this makecheck warning:
    drivers/parisc/sba_iommu.c:98:19: warning: symbol 'sba_list'
            was not declared. Should it be static?
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd46b3ac7322baf3772b33b29726e94f98289db7
Author: Nigel Kirkland <nkirkland2304@gmail.com>
Date:   Thu Aug 17 12:43:01 2023 -0700

    nvme-fc: Prevent null pointer dereference in nvme_fc_io_getuuid()
    
    [ Upstream commit 8ae5b3a685dc59a8cf7ccfe0e850999ba9727a3c ]
    
    The nvme_fc_fcp_op structure describing an AEN operation is initialized with a
    null request structure pointer. An FC LLDD may make a call to
    nvme_fc_io_getuuid passing a pointer to an nvmefc_fcp_req for an AEN operation.
    
    Add validation of the request structure pointer before dereference.
    
    Signed-off-by: Nigel Kirkland <nkirkland2304@gmail.com>
    Reviewed-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e149d524678431638ff378ef6025e4e89b71097
Author: Tobias Schramm <t.schramm@manjaro.org>
Date:   Sun Aug 27 17:25:58 2023 +0200

    spi: sun6i: fix race between DMA RX transfer completion and RX FIFO drain
    
    [ Upstream commit 1f11f4202caf5710204d334fe63392052783876d ]
    
    Previously the transfer complete IRQ immediately drained to RX FIFO to
    read any data remaining in FIFO to the RX buffer. This behaviour is
    correct when dealing with SPI in interrupt mode. However in DMA mode the
    transfer complete interrupt still fires as soon as all bytes to be
    transferred have been stored in the FIFO. At that point data in the FIFO
    still needs to be picked up by the DMA engine. Thus the drain procedure
    and DMA engine end up racing to read from RX FIFO, corrupting any data
    read. Additionally the RX buffer pointer is never adjusted according to
    DMA progress in DMA mode, thus calling the RX FIFO drain procedure in DMA
    mode is a bug.
    Fix corruptions in DMA RX mode by draining RX FIFO only in interrupt mode.
    Also wait for completion of RX DMA when in DMA mode before returning to
    ensure all data has been copied to the supplied memory buffer.
    
    Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
    Link: https://lore.kernel.org/r/20230827152558.5368-3-t.schramm@manjaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3c21c9c7289692f4019f163c3b06d8bdf78b355
Author: Tobias Schramm <t.schramm@manjaro.org>
Date:   Sun Aug 27 17:25:57 2023 +0200

    spi: sun6i: reduce DMA RX transfer width to single byte
    
    [ Upstream commit 171f8a49f212e87a8b04087568e1b3d132e36a18 ]
    
    Through empirical testing it has been determined that sometimes RX SPI
    transfers with DMA enabled return corrupted data. This is down to single
    or even multiple bytes lost during DMA transfer from SPI peripheral to
    memory. It seems the RX FIFO within the SPI peripheral can become
    confused when performing bus read accesses wider than a single byte to it
    during an active SPI transfer.
    
    This patch reduces the width of individual DMA read accesses to the
    RX FIFO to a single byte to mitigate that issue.
    
    Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
    Link: https://lore.kernel.org/r/20230827152558.5368-2-t.schramm@manjaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 77562272fbf347f16aecbd8ba5b87f87a73a90be
Author: Shubh <shubhisroking@gmail.com>
Date:   Sat Sep 2 20:38:07 2023 +0530

    ASoC: amd: yc: Add DMI entries to support Victus by HP Gaming Laptop 15-fb0xxx (8A3E)
    
    [ Upstream commit d1cf5d30b43f1a331032ebf3e11d9e366ab0f885 ]
    
    This model requires an additional detection quirk to
    enable the internal microphone.
    
    Signed-off-by: Shubh <shubhisroking@gmail.com>
    Link: https://lore.kernel.org/r/20230902150807.133523-1-shubhisroking@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e562de67dc9196f2415f117796a2108c00ac7fc6
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue Aug 29 22:53:52 2023 +0200

    bpf: Annotate bpf_long_memcpy with data_race
    
    [ Upstream commit 6a86b5b5cd76d2734304a0173f5f01aa8aa2025e ]
    
    syzbot reported a data race splat between two processes trying to
    update the same BPF map value via syscall on different CPUs:
    
      BUG: KCSAN: data-race in bpf_percpu_array_update / bpf_percpu_array_update
    
      write to 0xffffe8fffe7425d8 of 8 bytes by task 8257 on cpu 1:
       bpf_long_memcpy include/linux/bpf.h:428 [inline]
       bpf_obj_memcpy include/linux/bpf.h:441 [inline]
       copy_map_value_long include/linux/bpf.h:464 [inline]
       bpf_percpu_array_update+0x3bb/0x500 kernel/bpf/arraymap.c:380
       bpf_map_update_value+0x190/0x370 kernel/bpf/syscall.c:175
       generic_map_update_batch+0x3ae/0x4f0 kernel/bpf/syscall.c:1749
       bpf_map_do_batch+0x2df/0x3d0 kernel/bpf/syscall.c:4648
       __sys_bpf+0x28a/0x780
       __do_sys_bpf kernel/bpf/syscall.c:5241 [inline]
       __se_sys_bpf kernel/bpf/syscall.c:5239 [inline]
       __x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5239
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
      write to 0xffffe8fffe7425d8 of 8 bytes by task 8268 on cpu 0:
       bpf_long_memcpy include/linux/bpf.h:428 [inline]
       bpf_obj_memcpy include/linux/bpf.h:441 [inline]
       copy_map_value_long include/linux/bpf.h:464 [inline]
       bpf_percpu_array_update+0x3bb/0x500 kernel/bpf/arraymap.c:380
       bpf_map_update_value+0x190/0x370 kernel/bpf/syscall.c:175
       generic_map_update_batch+0x3ae/0x4f0 kernel/bpf/syscall.c:1749
       bpf_map_do_batch+0x2df/0x3d0 kernel/bpf/syscall.c:4648
       __sys_bpf+0x28a/0x780
       __do_sys_bpf kernel/bpf/syscall.c:5241 [inline]
       __se_sys_bpf kernel/bpf/syscall.c:5239 [inline]
       __x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5239
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
      value changed: 0x0000000000000000 -> 0xfffffff000002788
    
    The bpf_long_memcpy is used with 8-byte aligned pointers, power-of-8 size
    and forced to use long read/writes to try to atomically copy long counters.
    It is best-effort only and no barriers are here since it _will_ race with
    concurrent updates from BPF programs. The bpf_long_memcpy() is called from
    bpf(2) syscall. Marco suggested that the best way to make this known to
    KCSAN would be to use data_race() annotation.
    
    Reported-by: syzbot+97522333291430dd277f@syzkaller.appspotmail.com
    Suggested-by: Marco Elver <elver@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Marco Elver <elver@google.com>
    Link: https://lore.kernel.org/bpf/000000000000d87a7f06040c970c@google.com
    Link: https://lore.kernel.org/bpf/57628f7a15e20d502247c3b55fceb1cb2b31f266.1693342186.git.daniel@iogearbox.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe2b811a02c3244ebf6059039e4a9e715e26a9e3
Author: Sergey Senozhatsky <senozhatsky@chromium.org>
Date:   Wed Aug 16 11:32:21 2023 +0900

    dma-debug: don't call __dma_entry_alloc_check_leak() under free_entries_lock
    
    [ Upstream commit fb5a4315591dae307a65fc246ca80b5159d296e1 ]
    
    __dma_entry_alloc_check_leak() calls into printk -> serial console
    output (qcom geni) and grabs port->lock under free_entries_lock
    spin lock, which is a reverse locking dependency chain as qcom_geni
    IRQ handler can call into dma-debug code and grab free_entries_lock
    under port->lock.
    
    Move __dma_entry_alloc_check_leak() call out of free_entries_lock
    scope so that we don't acquire serial console's port->lock under it.
    
    Trimmed-down lockdep splat:
    
     The existing dependency chain (in reverse order) is:
    
                   -> #2 (free_entries_lock){-.-.}-{2:2}:
            _raw_spin_lock_irqsave+0x60/0x80
            dma_entry_alloc+0x38/0x110
            debug_dma_map_page+0x60/0xf8
            dma_map_page_attrs+0x1e0/0x230
            dma_map_single_attrs.constprop.0+0x6c/0xc8
            geni_se_rx_dma_prep+0x40/0xcc
            qcom_geni_serial_isr+0x310/0x510
            __handle_irq_event_percpu+0x110/0x244
            handle_irq_event_percpu+0x20/0x54
            handle_irq_event+0x50/0x88
            handle_fasteoi_irq+0xa4/0xcc
            handle_irq_desc+0x28/0x40
            generic_handle_domain_irq+0x24/0x30
            gic_handle_irq+0xc4/0x148
            do_interrupt_handler+0xa4/0xb0
            el1_interrupt+0x34/0x64
            el1h_64_irq_handler+0x18/0x24
            el1h_64_irq+0x64/0x68
            arch_local_irq_enable+0x4/0x8
            ____do_softirq+0x18/0x24
            ...
    
                   -> #1 (&port_lock_key){-.-.}-{2:2}:
            _raw_spin_lock_irqsave+0x60/0x80
            qcom_geni_serial_console_write+0x184/0x1dc
            console_flush_all+0x344/0x454
            console_unlock+0x94/0xf0
            vprintk_emit+0x238/0x24c
            vprintk_default+0x3c/0x48
            vprintk+0xb4/0xbc
            _printk+0x68/0x90
            register_console+0x230/0x38c
            uart_add_one_port+0x338/0x494
            qcom_geni_serial_probe+0x390/0x424
            platform_probe+0x70/0xc0
            really_probe+0x148/0x280
            __driver_probe_device+0xfc/0x114
            driver_probe_device+0x44/0x100
            __device_attach_driver+0x64/0xdc
            bus_for_each_drv+0xb0/0xd8
            __device_attach+0xe4/0x140
            device_initial_probe+0x1c/0x28
            bus_probe_device+0x44/0xb0
            device_add+0x538/0x668
            of_device_add+0x44/0x50
            of_platform_device_create_pdata+0x94/0xc8
            of_platform_bus_create+0x270/0x304
            of_platform_populate+0xac/0xc4
            devm_of_platform_populate+0x60/0xac
            geni_se_probe+0x154/0x160
            platform_probe+0x70/0xc0
            ...
    
                   -> #0 (console_owner){-...}-{0:0}:
            __lock_acquire+0xdf8/0x109c
            lock_acquire+0x234/0x284
            console_flush_all+0x330/0x454
            console_unlock+0x94/0xf0
            vprintk_emit+0x238/0x24c
            vprintk_default+0x3c/0x48
            vprintk+0xb4/0xbc
            _printk+0x68/0x90
            dma_entry_alloc+0xb4/0x110
            debug_dma_map_sg+0xdc/0x2f8
            __dma_map_sg_attrs+0xac/0xe4
            dma_map_sgtable+0x30/0x4c
            get_pages+0x1d4/0x1e4 [msm]
            msm_gem_pin_pages_locked+0x38/0xac [msm]
            msm_gem_pin_vma_locked+0x58/0x88 [msm]
            msm_ioctl_gem_submit+0xde4/0x13ac [msm]
            drm_ioctl_kernel+0xe0/0x15c
            drm_ioctl+0x2e8/0x3f4
            vfs_ioctl+0x30/0x50
            ...
    
     Chain exists of:
       console_owner --> &port_lock_key --> free_entries_lock
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(free_entries_lock);
                                    lock(&port_lock_key);
                                    lock(free_entries_lock);
       lock(console_owner);
    
                    *** DEADLOCK ***
    
     Call trace:
      dump_backtrace+0xb4/0xf0
      show_stack+0x20/0x30
      dump_stack_lvl+0x60/0x84
      dump_stack+0x18/0x24
      print_circular_bug+0x1cc/0x234
      check_noncircular+0x78/0xac
      __lock_acquire+0xdf8/0x109c
      lock_acquire+0x234/0x284
      console_flush_all+0x330/0x454
      console_unlock+0x94/0xf0
      vprintk_emit+0x238/0x24c
      vprintk_default+0x3c/0x48
      vprintk+0xb4/0xbc
      _printk+0x68/0x90
      dma_entry_alloc+0xb4/0x110
      debug_dma_map_sg+0xdc/0x2f8
      __dma_map_sg_attrs+0xac/0xe4
      dma_map_sgtable+0x30/0x4c
      get_pages+0x1d4/0x1e4 [msm]
      msm_gem_pin_pages_locked+0x38/0xac [msm]
      msm_gem_pin_vma_locked+0x58/0x88 [msm]
      msm_ioctl_gem_submit+0xde4/0x13ac [msm]
      drm_ioctl_kernel+0xe0/0x15c
      drm_ioctl+0x2e8/0x3f4
      vfs_ioctl+0x30/0x50
      ...
    
    Reported-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    Acked-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47f82395f04a976d4fa97de7f2acffa1c1096571
Author: Xiubo Li <xiubli@redhat.com>
Date:   Wed Dec 21 14:13:51 2022 +0800

    ceph: drop messages from MDS when unmounting
    
    [ Upstream commit e3dfcab2080dc1f9a4b09cc1327361bc2845bfcd ]
    
    When unmounting all the dirty buffers will be flushed and after
    the last osd request is finished the last reference of the i_count
    will be released. Then it will flush the dirty cap/snap to MDSs,
    and the unmounting won't wait the possible acks, which will ihold
    the inodes when updating the metadata locally but makes no sense
    any more, of this. This will make the evict_inodes() to skip these
    inodes.
    
    If encrypt is enabled the kernel generate a warning when removing
    the encrypt keys when the skipped inodes still hold the keyring:
    
    WARNING: CPU: 4 PID: 168846 at fs/crypto/keyring.c:242 fscrypt_destroy_keyring+0x7e/0xd0
    CPU: 4 PID: 168846 Comm: umount Tainted: G S  6.1.0-rc5-ceph-g72ead199864c #1
    Hardware name: Supermicro SYS-5018R-WR/X10SRW-F, BIOS 2.0 12/17/2015
    RIP: 0010:fscrypt_destroy_keyring+0x7e/0xd0
    RSP: 0018:ffffc9000b277e28 EFLAGS: 00010202
    RAX: 0000000000000002 RBX: ffff88810d52ac00 RCX: ffff88810b56aa00
    RDX: 0000000080000000 RSI: ffffffff822f3a09 RDI: ffff888108f59000
    RBP: ffff8881d394fb88 R08: 0000000000000028 R09: 0000000000000000
    R10: 0000000000000001 R11: 11ff4fe6834fcd91 R12: ffff8881d394fc40
    R13: ffff888108f59000 R14: ffff8881d394f800 R15: 0000000000000000
    FS:  00007fd83f6f1080(0000) GS:ffff88885fd00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f918d417000 CR3: 000000017f89a005 CR4: 00000000003706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    generic_shutdown_super+0x47/0x120
    kill_anon_super+0x14/0x30
    ceph_kill_sb+0x36/0x90 [ceph]
    deactivate_locked_super+0x29/0x60
    cleanup_mnt+0xb8/0x140
    task_work_run+0x67/0xb0
    exit_to_user_mode_prepare+0x23d/0x240
    syscall_exit_to_user_mode+0x25/0x60
    do_syscall_64+0x40/0x80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7fd83dc39e9b
    
    Later the kernel will crash when iput() the inodes and dereferencing
    the "sb->s_master_keys", which has been released by the
    generic_shutdown_super().
    
    Link: https://tracker.ceph.com/issues/59162
    Signed-off-by: Xiubo Li <xiubli@redhat.com>
    Reviewed-and-tested-by: Luís Henriques <lhenriques@suse.de>
    Reviewed-by: Milind Changire <mchangir@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65edea77d7006140c6290e7f46009d75e02d3273
Author: Sean Christopherson <seanjc@google.com>
Date:   Fri Jul 21 13:18:41 2023 -0700

    x86/reboot: VMCLEAR active VMCSes before emergency reboot
    
    [ Upstream commit b23c83ad2c638420ec0608a9de354507c41bec29 ]
    
    VMCLEAR active VMCSes before any emergency reboot, not just if the kernel
    may kexec into a new kernel after a crash.  Per Intel's SDM, the VMX
    architecture doesn't require the CPU to flush the VMCS cache on INIT.  If
    an emergency reboot doesn't RESET CPUs, cached VMCSes could theoretically
    be kept and only be written back to memory after the new kernel is booted,
    i.e. could effectively corrupt memory after reboot.
    
    Opportunistically remove the setting of the global pointer to NULL to make
    checkpatch happy.
    
    Cc: Andrew Cooper <Andrew.Cooper3@citrix.com>
    Link: https://lore.kernel.org/r/20230721201859.2307736-2-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a017a273b8783ff1f7c0c4f9b4c07cb0fd74129
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed Sep 27 13:16:48 2023 -0400

    NFSD: Fix zero NFSv4 READ results when RQ_SPLICE_OK is not set
    
    [ Upstream commit 0d32a6bbb8e7bf503855f2990f1ccce0922db87b ]
    
    nfsd4_encode_readv() uses xdr->buf->page_len as a starting point for
    the nfsd_iter_read() sink buffer -- page_len is going to be offset
    by the parts of the COMPOUND that have already been encoded into
    xdr->buf->pages.
    
    However, that value must be captured /before/
    xdr_reserve_space_vec() advances page_len by the expected size of
    the read payload. Otherwise, the whole front part of the first
    page of the payload in the reply will be uninitialized.
    
    Mantas hit this because sec=krb5i forces RQ_SPLICE_OK off, which
    invokes the readv part of the nfsd4_encode_read() path. Also,
    older Linux NFS clients appear to send shorter READ requests
    for files smaller than a page, whereas newer clients just send
    page-sized requests and let the server send as many bytes as
    are in the file.
    
    Reported-by: Mantas Mikulėnas <grawity@gmail.com>
    Closes: https://lore.kernel.org/linux-nfs/f1d0b234-e650-0f6e-0f5d-126b3d51d1eb@gmail.com/
    Fixes: 703d75215555 ("NFSD: Hoist rq_vec preparation into nfsd_read() [step two]")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d7863b8f5a4eefb94fac4731d0dd4050fb1eefc4
Author: William A. Kennington III <william@wkennington.com>
Date:   Sat Sep 23 18:02:14 2023 -0700

    i2c: npcm7xx: Fix callback completion ordering
    
    [ Upstream commit 92e73d807b68b2214fcafca4e130b5300a9d4b3c ]
    
    Sometimes, our completions race with new master transfers and override
    the bus->operation and bus->master_or_slave variables. This causes
    transactions to timeout and kernel crashes less frequently.
    
    To remedy this, we re-order all completions to the very end of the
    function.
    
    Fixes: 56a1485b102e ("i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver")
    Signed-off-by: William A. Kennington III <william@wkennington.com>
    Reviewed-by: Tali Perry <tali.perry1@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b226972a04ff1967dcd7070aff7c3163021f0c77
Author: Wenhua Lin <Wenhua.Lin@unisoc.com>
Date:   Thu Sep 21 20:25:27 2023 +0800

    gpio: pmic-eic-sprd: Add can_sleep flag for PMIC EIC chip
    
    [ Upstream commit 26d9e5640d2130ee16df7b1fb6a908f460ab004c ]
    
    The drivers uses a mutex and I2C bus access in its PMIC EIC chip
    get implementation. This means these functions can sleep and the PMIC EIC
    chip should set the can_sleep property to true.
    
    This will ensure that a warning is printed when trying to get the
    value from a context that potentially can't sleep.
    
    Fixes: 348f3cde84ab ("gpio: Add Spreadtrum PMIC EIC driver support")
    Signed-off-by: Wenhua Lin <Wenhua.Lin@unisoc.com>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c4648be6b9b3e7564cb36502b4ab67703ab08b51
Author: Karol Wachowski <karol.wachowski@linux.intel.com>
Date:   Tue Sep 26 14:09:43 2023 +0200

    accel/ivpu: Use cached buffers for FW loading
    
    [ Upstream commit 645d694559cab36fe6a57c717efcfa27d9321396 ]
    
    Create buffers with cache coherency on the CPU side (write-back) while
    disabling snooping on the VPU side. These buffers require an explicit
    cache flush after each CPU-side modification.
    
    Configuring pages as write-combined may introduce significant delays,
    potentially taking hundreds of milliseconds for 64 MB buffers.
    
    Added internal DRM_IVPU_BO_NOSNOOP mask which disables snooping on the
    VPU side. Allocate FW runtime memory buffer (64 MB) as cached with
    snooping-disabled.
    
    This fixes random long FW loading times and boot params memory
    corruption on warmboot (due to missed wmb).
    
    Fixes: 02d5b0aacd05 ("accel/ivpu: Implement firmware parsing and booting")
    Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
    Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
    Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230926120943.GD846747@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59908c76cef7d60498d8d1b55048b78a277a48ed
Author: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Date:   Mon Sep 25 14:11:32 2023 +0200

    accel/ivpu: Do not use wait event interruptible
    
    [ Upstream commit b0873eead1d1eadf13b5c80ad5d8f88b91e4910a ]
    
    If we receive signal when waiting for IPC message response in
    ivpu_ipc_receive() we return error and continue to operate.
    Then the driver can send another IPC messages and re-use occupied
    slot of the message still processed by the firmware. This can result
    in corrupting firmware memory and following FW crash with messages:
    
    [ 3698.569719] intel_vpu 0000:00:0b.0: [drm] ivpu_ipc_send_receive_internal(): IPC receive failed: type 0x1103, ret -512
    [ 3698.569747] intel_vpu 0000:00:0b.0: [drm] ivpu_jsm_unregister_db(): Failed to unregister doorbell 3: -512
    [ 3698.569756] intel_vpu 0000:00:0b.0: [drm] ivpu_ipc_tx_prepare(): IPC message vpu:0x88980000 not released by firmware
    [ 3698.569763] intel_vpu 0000:00:0b.0: [drm] ivpu_ipc_tx_prepare(): JSM message vpu:0x88980040 not released by firmware
    [ 3698.570234] intel_vpu 0000:00:0b.0: [drm] ivpu_ipc_send_receive_internal(): IPC receive failed: type 0x110e, ret -512
    [ 3698.570318] intel_vpu 0000:00:0b.0: [drm] *ERROR* ivpu_mmu_dump_event(): MMU EVTQ: 0x10 (Translation fault) SSID: 0 SID: 3, e[2] 00000000, e[3] 00000208, in addr: 0x88988000, fetch addr: 0x0
    
    To fix the issue don't use interruptible variant of wait event to
    allow firmware to finish IPC processing.
    
    Fixes: 5d7422cfb498 ("accel/ivpu: Add IPC driver and JSM messages")
    Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
    Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230925121137.872158-2-stanislaw.gruszka@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 915847cceb71a8147b4fbd56b55deb1123f11853
Author: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Date:   Mon Sep 25 12:21:17 2023 -0700

    i915/guc: Get runtime pm in busyness worker only if already active
    
    [ Upstream commit 907ef0398c938be8232b77c61cfcf50fbfd95554 ]
    
    Ideally the busyness worker should take a gt pm wakeref because the
    worker only needs to be active while gt is awake. However, the gt_park
    path cancels the worker synchronously and this complicates the flow if
    the worker is also running at the same time. The cancel waits for the
    worker and when the worker releases the wakeref, that would call gt_park
    and would lead to a deadlock.
    
    The resolution is to take the global pm wakeref if runtime pm is already
    active. If not, we don't need to update the busyness stats as the stats
    would already be updated when the gt was parked.
    
    Note:
    - We do not requeue the worker if we cannot take a reference to runtime
      pm since intel_guc_busyness_unpark would requeue the worker in the
      resume path.
    
    - If the gt was parked longer than time taken for GT timestamp to roll
      over, we ignore those rollovers since we don't care about tracking the
      exact GT time. We only care about roll overs when the gt is active and
      running workloads.
    
    - There is a window of time between gt_park and runtime suspend, where
      the worker may run. This is acceptable since the worker will not find
      any new data to update busyness.
    
    v2: (Daniele)
    - Edit commit message and code comment
    - Use runtime pm in the worker
    - Put runtime pm after enabling the worker
    - Use Link tag and add Fixes tag
    
    v3: (Daniele)
    - Reword commit and comments and add details
    
    Link: https://gitlab.freedesktop.org/drm/intel/-/issues/7077
    Fixes: 77cdd054dd2c ("drm/i915/pmu: Connect engine busyness stats from GuC to pmu")
    Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
    Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230925192117.2497058-1-umesh.nerlige.ramappa@intel.com
    (cherry picked from commit e2f99b79d4c594cdf7ab449e338d4947f5ea8903)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f61048992cee35bad7ab5abf0d3ac8a6e7a9b00
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Tue Sep 19 18:41:01 2023 +0100

    firmware: arm_ffa: Don't set the memory region attributes for MEM_LEND
    
    [ Upstream commit 9dda1178479aa0a73fe0eaabfe2d9a1c603cfeed ]
    
    As per the FF-A specification: section "Usage of other memory region
    attributes", in a transaction to donate memory or lend memory to a single
    borrower, if the receiver is a PE or Proxy endpoint, the owner must not
    specify the attributes and the relayer will return INVALID_PARAMETERS
    if the attributes are set.
    
    Let us not set the memory region attributes for MEM_LEND.
    
    Fixes: 82a8daaecfd9 ("firmware: arm_ffa: Add support for MEM_LEND")
    Reported-by: Joao Alves <joao.alves@arm.com>
    Reported-by: Olivier Deprez <olivier.deprez@arm.com>
    Link: https://lore.kernel.org/r/20230919-ffa_v1-1_notif-v2-13-6f3a3ca3923c@arm.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5dbead1a5af8fccc38b61cb5d956c346598647df
Author: Rob Herring <robh@kernel.org>
Date:   Mon Sep 11 16:45:37 2023 -0500

    arm64: dts: imx: Add imx8mm-prt8mm.dtb to build
    
    [ Upstream commit f09752eaf0e8f8befc26b44c4d3e15633e56d16a ]
    
    imx8mm-prt8mm.dts was not getting built. Add it to the build.
    
    Fixes: 58497d7a13ed ("arm64: dts: imx: add Protonic PRT8MM board")
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55f82f3a185020c3fd37328317b10363a9245b3e
Author: Liu Ying <victor.liu@nxp.com>
Date:   Mon Aug 14 16:11:47 2023 +0800

    arm64: dts: imx8mm-evk: Fix hdmi@3d node
    
    [ Upstream commit efa97aed071e0607b15ee08ddb1b7d775b664352 ]
    
    The hdmi@3d node's compatible string is "adi,adv7535" instead of
    "adi,adv7533" or "adi,adv751*".
    
    Fix the hdmi@3d node by means of:
    * Use default register addresses for "cec", "edid" and "packet", because
      there is no need to use a non-default address map.
    * Add missing interrupt related properties.
    * Drop "adi,input-*" properties which are only valid for adv751*.
    * Add VDDEXT_3V3 fixed regulator
    * Add "*-supply" properties, since most are required.
    * Fix label names - s/adv7533/adv7535/.
    
    Fixes: a27335b3f1e0 ("arm64: dts: imx8mm-evk: Add HDMI support")
    Signed-off-by: Liu Ying <victor.liu@nxp.com>
    Tested-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5648afd7c15bc775992258ae9f87a67a2e9e74a4
Author: Nathan Rossi <nathan.rossi@digi.com>
Date:   Mon Aug 14 01:57:00 2023 +0000

    soc: imx8m: Enable OCOTP clock for imx8mm before reading registers
    
    [ Upstream commit 9d1e8275a28f51599d754ce661c91e0a689c0234 ]
    
    Commit 836fb30949d9 ("soc: imx8m: Enable OCOTP clock before reading the
    register") added configuration to enable the OCOTP clock before
    attempting to read from the associated registers.
    
    This same kexec issue is present with the imx8m SoCs that use the
    imx8mm_soc_uid function (e.g. imx8mp). This requires the imx8mm_soc_uid
    function to configure the OCOTP clock before accessing the associated
    registers. This change implements the same clock enable functionality
    that is present in the imx8mq_soc_revision function for the
    imx8mm_soc_uid function.
    
    Signed-off-by: Nathan Rossi <nathan.rossi@digi.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Fixes: 836fb30949d9 ("soc: imx8m: Enable OCOTP clock before reading the register")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3cb0f98499e324546fbdcee0e61dad9940e30488
Author: Adam Ford <aford173@gmail.com>
Date:   Sat Aug 19 05:50:02 2023 -0500

    arm64: dts: imx8mp-beacon-kit: Fix audio_pll2 clock
    
    [ Upstream commit 161af16c18f3e10d81870328928e5fff3a7d47bb ]
    
    Commit 16c984524862 ("arm64: dts: imx8mp: don't initialize audio clocks
    from CCM node") removed the Audio clocks from the main clock node, because
    the intent is to force people to setup the audio PLL clocks per board
    instead of having a common set of rates since not all boards may use
    the various audio PLL clocks for audio devices.
    
    This resulted in an incorrect clock rate when attempting to playback
    audio, since the AUDIO_PLL2 wasn't set any longer. Fix this by
    setting the AUDIO_PLL2 rate inside the SAI3 node since it's the SAI3
    that needs it.
    
    Fixes: 16c984524862 ("arm64: dts: imx8mp: don't initialize audio clocks from CCM node")
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d8631d09868249071409e9bc6c47da19671e0e9
Author: Adam Ford <aford173@gmail.com>
Date:   Sat Aug 19 05:50:01 2023 -0500

    arm64: dts: imx8mp: Fix SDMA2/3 clocks
    
    [ Upstream commit b739681b3f8b2a7a684a71ddd048b9b6b5400011 ]
    
    Commit 16c984524862 ("arm64: dts: imx8mp: don't initialize audio clocks
    from CCM node") removed the Audio clocks from the main clock node, because
    the intent is to force people to setup the audio PLL clocks per board
    instead of having a common set of rates, since not all boards may use
    the various audio PLL clocks in the same way.
    
    Unfortunately, with this parenting removed, the SDMA2 and SDMA3
    clocks were slowed to 24MHz because the SDMA2/3 clocks are controlled
    via the audio_blk_ctrl which is clocked from IMX8MP_CLK_AUDIO_ROOT,
    and that clock is enabled by pgc_audio.
    
    Per the TRM, "The SDMA2/3 target frequency is 400MHz IPG and 400MHz
    AHB, always 1:1 mode, to make sure there is enough throughput for all
    the audio use cases."
    
    Instead of cluttering the clock node, place the clock rate and parent
    information into the pgc_audio node.
    
    With the parenting and clock rates restored for  IMX8MP_CLK_AUDIO_AHB,
    and IMX8MP_CLK_AUDIO_AXI_SRC, it appears the SDMA2 and SDMA3 run at
    400MHz again.
    
    Fixes: 16c984524862 ("arm64: dts: imx8mp: don't initialize audio clocks from CCM node")
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b949646c3deaf37864e01e54d33e1a718afb3198
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Sep 21 17:26:10 2023 +1000

    selftests/powerpc: Fix emit_tests to work with run_kselftest.sh
    
    [ Upstream commit 58b33e78a31782ffe25d404d5eba9a45fe636e27 ]
    
    In order to use run_kselftest.sh the list of tests must be emitted to
    populate kselftest-list.txt.
    
    The powerpc Makefile is written to use EMIT_TESTS. But support for
    EMIT_TESTS was dropped in commit d4e59a536f50 ("selftests: Use runner.sh
    for emit targets"). Although prior to that commit a548de0fe8e1
    ("selftests: lib.mk: add test execute bit check to EMIT_TESTS") had
    already broken run_kselftest.sh for powerpc due to the executable check
    using the wrong path.
    
    It can be fixed by replacing the EMIT_TESTS definitions with actual
    emit_tests rules in the powerpc Makefiles. This makes run_kselftest.sh
    able to run powerpc tests:
    
      $ cd linux
      $ export ARCH=powerpc
      $ export CROSS_COMPILE=powerpc64le-linux-gnu-
      $ make headers
      $ make -j -C tools/testing/selftests install
      $ grep -c "^powerpc" tools/testing/selftests/kselftest_install/kselftest-list.txt
      182
    
    Fixes: d4e59a536f50 ("selftests: Use runner.sh for emit targets")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230921072623.828772-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59d64197508ff9ef487c5f687b77df7e657430de
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Sep 22 09:24:41 2023 +1000

    powerpc/stacktrace: Fix arch_stack_walk_reliable()
    
    [ Upstream commit c5cc3ca707bc916a3f326364751a41f25040aef3 ]
    
    The changes to copy_thread() made in commit eed7c420aac7 ("powerpc:
    copy_thread differentiate kthreads and user mode threads") inadvertently
    broke arch_stack_walk_reliable() because it has knowledge of the stack
    layout.
    
    Fix it by changing the condition to match the new logic in
    copy_thread(). The changes make the comments about the stack layout
    incorrect, rather than rephrasing them just refer the reader to
    copy_thread().
    
    Also the comment about the stack backchain is no longer true, since
    commit edbd0387f324 ("powerpc: copy_thread add a back chain to the
    switch stack frame"), so remove that as well.
    
    Fixes: eed7c420aac7 ("powerpc: copy_thread differentiate kthreads and user mode threads")
    Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230921232441.1181843-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 70326b46b6a043f7e7404b2ff678b033c06d6577
Author: Chris Morgan <macromorgan@hotmail.com>
Date:   Wed Sep 20 09:56:44 2023 -0500

    power: supply: rk817: Fix node refcount leak
    
    [ Upstream commit 488ef44c068e79752dba8eda0b75f524f111a695 ]
    
    Dan Carpenter reports that the Smatch static checker warning has found
    that there is another refcount leak in the probe function. While
    of_node_put() was added in one of the return paths, it should in
    fact be added for ALL return paths that return an error and at driver
    removal time.
    
    Fixes: 54c03bfd094f ("power: supply: Fix refcount leak in rk817_charger_probe")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Closes: https://lore.kernel.org/linux-pm/dc0bb0f8-212d-4be7-be69-becd2a3f9a80@kili.mountain/
    Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
    Link: https://lore.kernel.org/r/20230920145644.57964-1-macroalpha82@gmail.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe25f30cc326767cd3771baa89bde51aae2d6d7c
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Wed Sep 20 04:41:09 2023 -0700

    xtensa: boot/lib: fix function prototypes
    
    [ Upstream commit f54d02c8f2cc4b46ba2a3bd8252a6750453b6f2b ]
    
    Add function prototype for gunzip() to the boot library code and make
    exit() and zalloc() static.
    
    arch/xtensa/boot/lib/zmem.c:8:6: warning: no previous prototype for 'exit' [-Wmissing-prototypes]
        8 | void exit (void)
    arch/xtensa/boot/lib/zmem.c:13:7: warning: no previous prototype for 'zalloc' [-Wmissing-prototypes]
       13 | void *zalloc(unsigned size)
    arch/xtensa/boot/lib/zmem.c:35:6: warning: no previous prototype for 'gunzip' [-Wmissing-prototypes]
       35 | void gunzip (void *dst, int dstlen, unsigned char *src, int *lenp)
    
    Fixes: 4bedea945451 ("xtensa: Architecture support for Tensilica Xtensa Part 2")
    Fixes: e7d163f76665 ("xtensa: Removed local copy of zlib and fixed O= support")
    Suggested-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d00e9ed40d458923d8c286e84424b43443b5187
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Sep 19 22:21:38 2023 -0700

    xtensa: umulsidi3: fix conditional expression
    
    [ Upstream commit 9aecda97ec3deecbfa7670877c8ddfd3d0fc87c4 ]
    
    Even when a variant has one or more of these defines set to 1, the
    multiplier code paths are not used. Change the expression so that the
    correct code paths are used.
    
    arch/xtensa/lib/umulsidi3.S:44:38: warning: "XCHAL_NO_MUL" is not defined, evaluates to 0 [-Wundef]
       44 | #if defined(__XTENSA_CALL0_ABI__) && XCHAL_NO_MUL
    arch/xtensa/lib/umulsidi3.S:145:38: warning: "XCHAL_NO_MUL" is not defined, evaluates to 0 [-Wundef]
      145 | #if defined(__XTENSA_CALL0_ABI__) && XCHAL_NO_MUL
    arch/xtensa/lib/umulsidi3.S:159:5: warning: "XCHAL_NO_MUL" is not defined, evaluates to 0 [-Wundef]
      159 | #if XCHAL_NO_MUL
    
    Fixes: 8939c58d68f9 ("xtensa: add __umulsidi3 helper")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Message-Id: <20230920052139.10570-16-rdunlap@infradead.org>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a08d2ca6ca932c33670884259d5ca904341043a
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Sep 19 22:21:37 2023 -0700

    xtensa: boot: don't add include-dirs
    
    [ Upstream commit 54d3d7d363823782c3444ddc41bb8cf1edc80514 ]
    
    Drop the -I<include-dir> options to prevent build warnings since there
    is not boot/include directory:
    
    cc1: warning: arch/xtensa/boot/include: No such file or directory [-Wmissing-include-dirs]
    
    Fixes: 437374e9a950 ("restore arch/{ppc/xtensa}/boot cflags")
    Fixes: 4bedea945451 ("xtensa: Architecture support for Tensilica Xtensa Part 2")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Message-Id: <20230920052139.10570-15-rdunlap@infradead.org>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21d2beffef85b4626ebb8cd8de5092340ba9ca9a
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Sep 19 22:21:36 2023 -0700

    xtensa: iss/network: make functions static
    
    [ Upstream commit 1b59efeb59851277266318f4e0132aa61ce3455e ]
    
    Make 2 functions static to prevent build warnings:
    
    arch/xtensa/platforms/iss/network.c:204:16: warning: no previous prototype for 'tuntap_protocol' [-Wmissing-prototypes]
      204 | unsigned short tuntap_protocol(struct sk_buff *skb)
    arch/xtensa/platforms/iss/network.c:444:6: warning: no previous prototype for 'iss_net_user_timer_expire' [-Wmissing-prototypes]
      444 | void iss_net_user_timer_expire(struct timer_list *unused)
    
    Fixes: 7282bee78798 ("xtensa: Architecture support for Tensilica Xtensa Part 8")
    Fixes: d8479a21a98b ("xtensa: Convert timers to use timer_setup()")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Message-Id: <20230920052139.10570-14-rdunlap@infradead.org>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27eb66bdf50aa0a77968a8ffed2d5ca2c01b2555
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Wed Sep 20 04:15:22 2023 -0700

    xtensa: add default definition for XCHAL_HAVE_DIV32
    
    [ Upstream commit 494e87ffa0159b3f879694a9231089707792a44d ]
    
    When variant FSF is set, XCHAL_HAVE_DIV32 is not defined. Add default
    definition for that macro to prevent build warnings:
    
    arch/xtensa/lib/divsi3.S:9:5: warning: "XCHAL_HAVE_DIV32" is not defined, evaluates to 0 [-Wundef]
        9 | #if XCHAL_HAVE_DIV32
    arch/xtensa/lib/modsi3.S:9:5: warning: "XCHAL_HAVE_DIV32" is not defined, evaluates to 0 [-Wundef]
        9 | #if XCHAL_HAVE_DIV32
    
    Fixes: 173d6681380a ("xtensa: remove extra header files")
    Suggested-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: lore.kernel.org/r/202309150556.t0yCdv3g-lkp@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50d14cd5a67e3120e18baf3cf6c7b70db2f90027
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Jan 15 19:13:46 2023 +0100

    firmware: imx-dsp: Fix an error handling path in imx_dsp_setup_channels()
    
    [ Upstream commit e527adfb9b7d9d05a4577c116519e59a2bda4b05 ]
    
    If mbox_request_channel_byname() fails, the memory allocated a few lines
    above still need to be freed before going to the error handling path.
    
    Fixes: 046326989a18 ("firmware: imx: Save channel name for further use")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9b092769b58d931604bcdeadee6a2cd96755f59
Author: Sebastian Reichel <sebastian.reichel@collabora.com>
Date:   Tue Sep 19 14:08:29 2023 +0200

    power: supply: core: fix use after free in uevent
    
    [ Upstream commit 3dc0bab23dba53f315c9a7b4a679e0a6d46f7c6e ]
    
    power_supply_uevent() which is called to emit a udev event on device
    deletion attempts to use the power_supply_battery_info structure,
    which is device-managed and has been freed before this point.
    
    Fix this by not generating all battery/charger properties when the
    device is about to be removed. This also avoids generating errors
    when trying to access the hardware in hot-unplug scenarios.
    
    ==================================================================
     BUG: KASAN: slab-use-after-free in power_supply_battery_info_has_prop (power_supply_core.c:872)
     Read of size 4 at addr 0000000062e59028 by task python3/27
    
     Call Trace:
      power_supply_battery_info_has_prop (power_supply_core.c:872)
      power_supply_uevent (power_supply_sysfs.c:504)
      dev_uevent (drivers/base/core.c:2590)
      kobject_uevent_env (lib/kobject_uevent.c:558)
      kobject_uevent (lib/kobject_uevent.c:643)
      device_del (drivers/base/core.c:3266 drivers/base/core.c:3831)
      device_unregister (drivers/base/core.c:3730 drivers/base/core.c:3854)
      power_supply_unregister (power_supply_core.c:1608)
      devm_power_supply_release (power_supply_core.c:1515)
      release_nodes (drivers/base/devres.c:506)
      devres_release_group (drivers/base/devres.c:669)
      i2c_device_remove (drivers/i2c/i2c-core-base.c:629)
      device_remove (drivers/base/dd.c:570)
      device_release_driver_internal (drivers/base/dd.c:1274 drivers/base/dd.c:1295)
      device_driver_detach (drivers/base/dd.c:1332)
      unbind_store (drivers/base/bus.c:247)
      ...
    
     Allocated by task 27:
      devm_kmalloc (drivers/base/devres.c:119 drivers/base/devres.c:829)
      power_supply_get_battery_info (include/linux/device.h:316 power_supply_core.c:626)
      __power_supply_register (power_supply_core.c:1408)
      devm_power_supply_register (power_supply_core.c:1544)
      bq256xx_probe (bq256xx_charger.c:1539 bq256xx_charger.c:1727) bq256xx_charger
      i2c_device_probe (drivers/i2c/i2c-core-base.c:584)
      really_probe (drivers/base/dd.c:579 drivers/base/dd.c:658)
      __driver_probe_device (drivers/base/dd.c:800)
      device_driver_attach (drivers/base/dd.c:1128)
      bind_store (drivers/base/bus.c:273)
      ...
    
     Freed by task 27:
      kfree (mm/slab_common.c:1073)
      release_nodes (drivers/base/devres.c:503)
      devres_release_all (drivers/base/devres.c:536)
      device_del (drivers/base/core.c:3829)
      device_unregister (drivers/base/core.c:3730 drivers/base/core.c:3854)
      power_supply_unregister (power_supply_core.c:1608)
      devm_power_supply_release (power_supply_core.c:1515)
      release_nodes (drivers/base/devres.c:506)
      devres_release_group (drivers/base/devres.c:669)
      i2c_device_remove (drivers/i2c/i2c-core-base.c:629)
      device_remove (drivers/base/dd.c:570)
      device_release_driver_internal (drivers/base/dd.c:1274 drivers/base/dd.c:1295)
      device_driver_detach (drivers/base/dd.c:1332)
      unbind_store (drivers/base/bus.c:247)
      ...
     ==================================================================
    
    Reported-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Fixes: 27a2195efa8d ("power: supply: core: auto-exposure of simple-battery data")
    Tested-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25ef0a06f1268b5c086d17d47b99bb9abd8251a2
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Feb 15 13:43:04 2023 +0100

    power: supply: rt9467: Fix rt9467_run_aicl()
    
    [ Upstream commit cba320408d631422fef0ad8407954fb9d6f8f650 ]
    
    It is spurious to bail-out on a wait_for_completion_timeout() call that
    does NOT timeout.
    
    Reverse the logic to return -ETIMEDOUT instead, in case of tiemout.
    
    Fixes: 6f7f70e3a8dd ("power: supply: rt9467: Add Richtek RT9467 charger driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: ChiYuan Huang <cy_huang@richtek.com>
    Link: https://lore.kernel.org/r/2ed01020fa8a135c36dbaa871095ded47d926507.1676464968.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 274d39581c80f28a01338ee5c5c3bc40522c15aa
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Mon Jun 19 12:44:17 2023 +0300

    power: supply: ucs1002: fix error code in ucs1002_get_property()
    
    [ Upstream commit e35059949daa83f8dadf710d0f829ab3c3a72fe2 ]
    
    This function is supposed to return 0 for success instead of returning
    the val->intval.  This makes it the same as the other case statements
    in this function.
    
    Fixes: 81196e2e57fc ("power: supply: ucs1002: fix some health status issues")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/687f64a4-4c6e-4536-8204-98ad1df934e5@moroto.mountain
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3eb2c018708aaa7ecd2c85c9ab2b554c51eae4eb
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Mon Sep 11 11:32:51 2023 +0100

    swiotlb: use the calculated number of areas
    
    [ Upstream commit a6a241764f69c62d23fc6960920cc662ae4069e9 ]
    
    Commit 8ac04063354a ("swiotlb: reduce the number of areas to match
    actual memory pool size") calculated the reduced number of areas in
    swiotlb_init_remap() but didn't actually use the value. Replace usage of
    default_nareas accordingly.
    
    Fixes: 8ac04063354a ("swiotlb: reduce the number of areas to match actual memory pool size")
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f66e484d4bd824e8f2270e4ddac7a53bc200c92
Author: Tony Lindgren <tony@atomide.com>
Date:   Thu Sep 7 08:53:28 2023 +0300

    bus: ti-sysc: Fix SYSC_QUIRK_SWSUP_SIDLE_ACT handling for uart wake-up
    
    [ Upstream commit e5deb8f76e64d94ccef715e75ebafffd0c312d80 ]
    
    The uarts should be tagged with SYSC_QUIRK_SWSUP_SIDLE instead of
    SYSC_QUIRK_SWSUP_SIDLE_ACT. The difference is that SYSC_QUIRK_SWSUP_SIDLE
    is used to force idle target modules rather than block idle during usage.
    
    The SYSC_QUIRK_SWSUP_SIDLE_ACT should disable autoidle and wake-up when
    a target module is active, and configure autoidle and wake-up when a
    target module is inactive. We are missing configuring the target module
    on sysc_disable_module(), and missing toggling of the wake-up bit.
    
    Let's fix the issue to allow uart wake-up to work.
    
    Fixes: fb685f1c190e ("bus: ti-sysc: Handle swsup idle mode quirks")
    Tested-by: Dhruva Gole <d-gole@ti.com>
    Tested-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 748b244750018a3e27e6cc85c08d9cf336a985cb
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon Sep 11 07:07:38 2023 +0300

    ARM: dts: ti: omap: motorola-mapphone: Fix abe_clkctrl warning on boot
    
    [ Upstream commit ac08bda1569b06b7a62c7b4dd00d4c3b28ceaaec ]
    
    Commit 0840242e8875 ("ARM: dts: Configure clock parent for pwm vibra")
    attempted to fix the PWM settings but ended up causin an additional clock
    reparenting error:
    
    clk: failed to reparent abe-clkctrl:0060:24 to sys_clkin_ck: -22
    
    Only timer9 is in the PER domain and can use the sys_clkin_ck clock source.
    For timer8, the there is no sys_clkin_ck available as it's in the ABE
    domain, instead it should use syc_clk_div_ck. However, for power
    management, we want to use the always on sys_32k_ck instead.
    
    Cc: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Cc: Carl Philipp Klemm <philipp@uvos.xyz>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Fixes: 0840242e8875 ("ARM: dts: Configure clock parent for pwm vibra")
    Depends-on: 61978617e905 ("ARM: dts: Add minimal support for Droid Bionic xt875")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9b42678b1ad0a4bce0824e514fe7ad8f7031bb9a
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon Sep 11 07:07:38 2023 +0300

    ARM: dts: ti: omap: Fix bandgap thermal cells addressing for omap3/4
    
    [ Upstream commit 6469b2feade8fd82d224dd3734e146536f3e9f0e ]
    
    Fix "thermal_sys: cpu_thermal: Failed to read thermal-sensors cells: -2"
    error on boot for omap3/4. This is caused by wrong addressing in the dts
    for bandgap sensor for single sensor instances.
    
    Note that omap4-cpu-thermal.dtsi is shared across omap4/5 and dra7, so
    we can't just change the addressing in omap4-cpu-thermal.dtsi.
    
    Cc: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Cc: Carl Philipp Klemm <philipp@uvos.xyz>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Fixes: a761d517bbb1 ("ARM: dts: omap3: Add cpu_thermal zone")
    Fixes: 0bbf6c54d100 ("arm: dts: add omap4 CPU thermal data")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4e01cd5219c335f1cc0807e641f1e3a2d005baf
Author: Timo Alho <talho@nvidia.com>
Date:   Tue Sep 12 14:29:50 2023 +0300

    clk: tegra: fix error return case for recalc_rate
    
    [ Upstream commit a47b44fbb13f5e7a981b4515dcddc93a321ae89c ]
    
    tegra-bpmp clocks driver makes implicit conversion of signed error
    code to unsigned value in recalc_rate operation. The behavior for
    recalc_rate, according to it's specification, should be that "If the
    driver cannot figure out a rate for this clock, it must return 0."
    
    Fixes: ca6f2796eef7 ("clk: tegra: Add BPMP clock driver")
    Signed-off-by: Timo Alho <talho@nvidia.com>
    Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
    Link: https://lore.kernel.org/r/20230912112951.2330497-1-cyndis@kapsi.fi
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99b5d9adf44113c427a3a7538c381bf3e34caebb
Author: Marek Vasut <marex@denx.de>
Date:   Thu Aug 31 20:16:56 2023 +0200

    clk: si521xx: Fix regmap write accessor
    
    [ Upstream commit 83df5bf010eb5ccc11ce95f2d076515ec216c99c ]
    
    Rework the write operation such that the Byte Count register is written with
    a single raw i2c write outside of regmap using transfer which does specify
    the number of bytes to be transfered, one in this case, and which makes the
    expected subsequent write transfer look like address+register+data, and then
    make use of this method. Without this change, the Byte Count register write
    in probe() would succeed as it would provide the byte count as part of its
    write payload, but any subsequent writes would fail due to this Byte Count
    register programming. Such failing writes happens e.g. during resume, when
    restoring the regmap content.
    
    Fixes: edc12763a3a2 ("clk: si521xx: Clock driver for Skyworks Si521xx I2C PCIe clock generators")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Link: https://lore.kernel.org/r/20230831181656.154750-2-marex@denx.de
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0fe3096662c53207864480328b1afbb5f90bf45
Author: Marek Vasut <marex@denx.de>
Date:   Thu Aug 31 20:16:55 2023 +0200

    clk: si521xx: Use REGCACHE_FLAT instead of NONE
    
    [ Upstream commit f03a562450eef35b785a814005ed164a89dfb2db ]
    
    In order to reload registers into the clock generator on resume using
    regcache_sync(), it is necessary to select one of the regcache types
    which are not NONE. Since this device has some 7 registers, use the
    simplest one, FLAT. The regcache code complains about REGCACHE_NONE
    being selected and generates a WARNING, this fixes that warning.
    
    Fixes: edc12763a3a2 ("clk: si521xx: Clock driver for Skyworks Si521xx I2C PCIe clock generators")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Link: https://lore.kernel.org/r/20230831181656.154750-1-marex@denx.de
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72df907bef8fb65fe604d09202556f30d4126d9e
Author: Zhifeng Tang <zhifeng.tang@unisoc.com>
Date:   Thu Aug 24 17:26:24 2023 +0800

    clk: sprd: Fix thm_parents incorrect configuration
    
    [ Upstream commit b7b20cfe6f849c2682c5f7d3f50ede6321a5d04c ]
    
    The thm*_clk have two clock sources 32k and 250k,excluding 32m.
    
    Fixes: af3bd36573e3 ("clk: sprd: Add clocks support for UMS512")
    Signed-off-by: Zhifeng Tang <zhifeng.tang@unisoc.com>
    Acked-by: Chunyan Zhang <zhang.lyra@gmail.com>
    Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20230824092624.20020-1-zhifeng.tang@unisoc.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a847712a1f6f84de72e099e2e299587a44f0fb7
Author: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Date:   Wed Sep 6 01:48:15 2023 -0700

    power: supply: mt6370: Fix missing error code in mt6370_chg_toggle_cfo()
    
    [ Upstream commit 779873ec81306d2c40c459fa7c91a5d40655510d ]
    
    When mt6370_chg_field_get() suceeds, ret is set to zero and returning
    zero when flash led is still in strobe mode looks incorrect.
    
    Fixes: 233cb8a47d65 ("power: supply: mt6370: Add MediaTek MT6370 charger driver")
    Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Reviewed-by: ChiaEn Wu <chiaen_wu@richtek.com>
    Link: https://lore.kernel.org/r/20230906084815.2827930-1-harshit.m.mogalapalli@oracle.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3aeffe442077544573e2a0b5548eec2dda8b91c2
Author: Sibi Sankar <quic_sibis@quicinc.com>
Date:   Sat Aug 12 02:18:18 2023 +0530

    firmware: arm_scmi: Fixup perf power-cost/microwatt support
    
    [ Upstream commit c3638b851bc1ca0022dca9d6ca4beaa6ef03a216 ]
    
    The perf power scale value would currently be reported as bogowatts if the
    platform firmware supports microwatt power scale and meets the perf major
    version requirements. Fix this by populating version information in the
    driver private data before the call to protocol attributes is made.
    
    CC: Chandra Sekhar Lingutla <quic_lingutla@quicinc.com>
    Fixes: 3630cd8130ce ("firmware: arm_scmi: Add SCMI v3.1 perf power-cost in microwatts")
    Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
    Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
    Link: https://lore.kernel.org/r/20230811204818.30928-1-quic_sibis@quicinc.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6575f349ffa0aa9fa16769c1972a9ba7a6abe96
Author: Cristian Marussi <cristian.marussi@arm.com>
Date:   Mon Jul 17 17:12:45 2023 +0100

    firmware: arm_scmi: Harden perf domain info access
    
    [ Upstream commit 3da82112355bba263597fcbb24d275fc57e69e7e ]
    
    Harden internal accesses to domain info in the SCMI perf protocol.
    
    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    Link: https://lore.kernel.org/r/20230717161246.1761777-2-cristian.marussi@arm.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Stable-dep-of: c3638b851bc1 ("firmware: arm_scmi: Fixup perf power-cost/microwatt support")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d3f6b2a2f13f19b74089ca6827f89fc1828e079
Author: Adam Ford <aford173@gmail.com>
Date:   Wed Sep 6 18:34:42 2023 -0500

    bus: ti-sysc: Fix missing AM35xx SoC matching
    
    [ Upstream commit 11729caa520950e17cd81bc43ffc477c46cf791e ]
    
    Commit feaa8baee82a ("bus: ti-sysc: Implement SoC revision handling")
    created a list of SoC types searching for strings based on names
    and wildcards which associates the SoC to different families.
    
    The OMAP34xx and OMAP35xx are treated as SOC_3430 while
    OMAP36xx and OMAP37xx are treated as SOC_3630, but the AM35xx
    isn't listed.
    
    The AM35xx is mostly an OMAP3430, and a later commit a12315d6d270
    ("bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific") looks
    for the SOC type and behaves in a certain way if it's SOC_3430.
    
    This caused a regression on the AM3517 causing it to return two
    errors:
    
     ti-sysc: probe of 48318000.target-module failed with error -16
     ti-sysc: probe of 49032000.target-module failed with error -16
    
    Fix this by treating the creating SOC_AM35 and inserting it between
    the SOC_3430 and SOC_3630.  If it is treaed the same way as the
    SOC_3430 when checking the status of sysc_check_active_timer,
    the error conditions will disappear.
    
    Fixes: a12315d6d270 ("bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific")
    Fixes: feaa8baee82a ("bus: ti-sysc: Implement SoC revision handling")
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Message-ID: <20230906233442.270835-1-aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45071e27a00c5c30bdaeea95a688371e2c03ec37
Author: Julien Panis <jpanis@baylibre.com>
Date:   Mon Aug 21 16:24:18 2023 +0200

    bus: ti-sysc: Use fsleep() instead of usleep_range() in sysc_reset()
    
    [ Upstream commit d929b2b7464f95ec01e47f560b1e687482ba8929 ]
    
    The am335x-evm started producing boot errors because of subtle timing
    changes:
    
    Unhandled fault: external abort on non-linefetch (0x1008) at 0xf03c1010
    ...
    sysc_reset from sysc_probe+0xf60/0x1514
    sysc_probe from platform_probe+0x5c/0xbc
    ...
    
    The fix consists in using the appropriate sleep function in sysc reset.
    For flexible sleeping, fsleep is recommended. Here, sysc delay parameter
    can take any value in [0 - 255] us range. As a result, fsleep() should
    be used, calling udelay() for a sysc delay lower than 10 us.
    
    Signed-off-by: Julien Panis <jpanis@baylibre.com>
    Fixes: e709ed70d122 ("bus: ti-sysc: Fix missing reset delay handling")
    Message-ID: <20230821-fix-ti-sysc-reset-v1-1-5a0a5d8fae55@baylibre.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27dc0d54b29644cb12805c52c4b6ef7da4ec908b
Author: Charles Kearney <charles.kearney@hpe.com>
Date:   Wed Sep 20 21:53:39 2023 +0000

    spi: spi-gxp: BUG: Correct spi write return value
    
    [ Upstream commit 1a8196a93e493c0a50b800cb09cef60b124eee15 ]
    
    Bug fix to correct return value of gxp_spi_write function to zero.
    Completion of succesful operation should return zero.
    
    Fixes: 730bc8ba5e9e spi: spi-gxp: Add support for HPE GXP SoCs
    
    Signed-off-by: Charles Kearney <charles.kearney@hpe.com>
    Link: https://lore.kernel.org/r/20230920215339.4125856-2-charles.kearney@hpe.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45e91af6a92956f74bfae9adb739793209a394e3
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Sep 5 09:06:56 2023 +0200

    MIPS: Alchemy: only build mmc support helpers if au1xmmc is enabled
    
    [ Upstream commit ef8f8f04a0b25e8f294b24350e8463a8d6a9ba0b ]
    
    While commit d4a5c59a955b ("mmc: au1xmmc: force non-modular build and
    remove symbol_get usage") to be built in, it can still build a kernel
    without MMC support and thuse no mmc_detect_change symbol at all.
    
    Add ifdefs to build the mmc support code in the alchemy arch code
    conditional on mmc support.
    
    Fixes: d4a5c59a955b ("mmc: au1xmmc: force non-modular build and remove symbol_get usage")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Tested-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52093779b1830ac184a23848d971f06404cf513e
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Mon Sep 18 19:55:51 2023 +0800

    vfio/mdev: Fix a null-ptr-deref bug for mdev_unregister_parent()
    
    [ Upstream commit c777b11d34e0f47dbbc4b018ef65ad030f2b283a ]
    
    Inject fault while probing mdpy.ko, if kstrdup() of create_dir() fails in
    kobject_add_internal() in kobject_init_and_add() in mdev_type_add()
    in parent_create_sysfs_files(), it will return 0 and probe successfully.
    And when rmmod mdpy.ko, the mdpy_dev_exit() will call
    mdev_unregister_parent(), the mdev_type_remove() may traverse uninitialized
    parent->types[i] in parent_remove_sysfs_files(), and it will cause
    below null-ptr-deref.
    
    If mdev_type_add() fails, return the error code and kset_unregister()
    to fix the issue.
    
     general protection fault, probably for non-canonical address 0xdffffc0000000002: 0000 [#1] PREEMPT SMP KASAN
     KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
     CPU: 2 PID: 10215 Comm: rmmod Tainted: G        W        N 6.6.0-rc2+ #20
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
     RIP: 0010:__kobject_del+0x62/0x1c0
     Code: 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 51 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 8b 6b 28 48 8d 7d 10 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 24 01 00 00 48 8b 75 10 48 89 df 48 8d 6b 3c e8
     RSP: 0018:ffff88810695fd30 EFLAGS: 00010202
     RAX: dffffc0000000000 RBX: ffffffffa0270268 RCX: 0000000000000000
     RDX: 0000000000000002 RSI: 0000000000000004 RDI: 0000000000000010
     RBP: 0000000000000000 R08: 0000000000000001 R09: ffffed10233a4ef1
     R10: ffff888119d2778b R11: 0000000063666572 R12: 0000000000000000
     R13: fffffbfff404e2d4 R14: dffffc0000000000 R15: ffffffffa0271660
     FS:  00007fbc81981540(0000) GS:ffff888119d00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007fc14a142dc0 CR3: 0000000110a62003 CR4: 0000000000770ee0
     DR0: ffffffff8fb0bce8 DR1: ffffffff8fb0bce9 DR2: ffffffff8fb0bcea
     DR3: ffffffff8fb0bceb DR6: 00000000fffe0ff0 DR7: 0000000000000600
     PKRU: 55555554
     Call Trace:
      <TASK>
      ? die_addr+0x3d/0xa0
      ? exc_general_protection+0x144/0x220
      ? asm_exc_general_protection+0x22/0x30
      ? __kobject_del+0x62/0x1c0
      kobject_del+0x32/0x50
      parent_remove_sysfs_files+0xd6/0x170 [mdev]
      mdev_unregister_parent+0xfb/0x190 [mdev]
      ? mdev_register_parent+0x270/0x270 [mdev]
      ? find_module_all+0x9d/0xe0
      mdpy_dev_exit+0x17/0x63 [mdpy]
      __do_sys_delete_module.constprop.0+0x2fa/0x4b0
      ? module_flags+0x300/0x300
      ? __fput+0x4e7/0xa00
      do_syscall_64+0x35/0x80
      entry_SYSCALL_64_after_hwframe+0x46/0xb0
     RIP: 0033:0x7fbc813221b7
     Code: 73 01 c3 48 8b 0d d1 8c 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a1 8c 2c 00 f7 d8 64 89 01 48
     RSP: 002b:00007ffe780e0648 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
     RAX: ffffffffffffffda RBX: 00007ffe780e06a8 RCX: 00007fbc813221b7
     RDX: 000000000000000a RSI: 0000000000000800 RDI: 000055e214df9b58
     RBP: 000055e214df9af0 R08: 00007ffe780df5c1 R09: 0000000000000000
     R10: 00007fbc8139ecc0 R11: 0000000000000206 R12: 00007ffe780e0870
     R13: 00007ffe780e0ed0 R14: 000055e214df9260 R15: 000055e214df9af0
      </TASK>
     Modules linked in: mdpy(-) mdev vfio_iommu_type1 vfio [last unloaded: mdpy]
     Dumping ftrace buffer:
        (ftrace buffer empty)
     ---[ end trace 0000000000000000 ]---
     RIP: 0010:__kobject_del+0x62/0x1c0
     Code: 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 51 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 8b 6b 28 48 8d 7d 10 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 24 01 00 00 48 8b 75 10 48 89 df 48 8d 6b 3c e8
     RSP: 0018:ffff88810695fd30 EFLAGS: 00010202
     RAX: dffffc0000000000 RBX: ffffffffa0270268 RCX: 0000000000000000
     RDX: 0000000000000002 RSI: 0000000000000004 RDI: 0000000000000010
     RBP: 0000000000000000 R08: 0000000000000001 R09: ffffed10233a4ef1
     R10: ffff888119d2778b R11: 0000000063666572 R12: 0000000000000000
     R13: fffffbfff404e2d4 R14: dffffc0000000000 R15: ffffffffa0271660
     FS:  00007fbc81981540(0000) GS:ffff888119d00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007fc14a142dc0 CR3: 0000000110a62003 CR4: 0000000000770ee0
     DR0: ffffffff8fb0bce8 DR1: ffffffff8fb0bce9 DR2: ffffffff8fb0bcea
     DR3: ffffffff8fb0bceb DR6: 00000000fffe0ff0 DR7: 0000000000000600
     PKRU: 55555554
     Kernel panic - not syncing: Fatal exception
     Dumping ftrace buffer:
        (ftrace buffer empty)
     Kernel Offset: disabled
     Rebooting in 1 seconds..
    
    Fixes: da44c340c4fe ("vfio/mdev: simplify mdev_type handling")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Reviewed-by: Eric Farman <farman@linux.ibm.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Link: https://lore.kernel.org/r/20230918115551.1423193-1-ruanjinjie@huawei.com
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56ad3015e39e6a093cfa9c077846bdbe3d8b6607
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Sep 19 11:44:42 2023 +0930

    btrfs: reset destination buffer when read_extent_buffer() gets invalid range
    
    [ Upstream commit 74ee79142c0a344d4eae2eb7012ebc4e82254109 ]
    
    Commit f98b6215d7d1 ("btrfs: extent_io: do extra check for extent buffer
    read write functions") changed how we handle invalid extent buffer range
    for read_extent_buffer().
    
    Previously if the range is invalid we just set the destination to zero,
    but after the patch we do nothing and error out.
    
    This can lead to smatch static checker errors like:
    
      fs/btrfs/print-tree.c:186 print_uuid_item() error: uninitialized symbol 'subvol_id'.
      fs/btrfs/tests/extent-io-tests.c:338 check_eb_bitmap() error: uninitialized symbol 'has'.
      fs/btrfs/tests/extent-io-tests.c:353 check_eb_bitmap() error: uninitialized symbol 'has'.
      fs/btrfs/uuid-tree.c:203 btrfs_uuid_tree_remove() error: uninitialized symbol 'read_subid'.
      fs/btrfs/uuid-tree.c:353 btrfs_uuid_tree_iterate() error: uninitialized symbol 'subid_le'.
      fs/btrfs/uuid-tree.c:72 btrfs_uuid_tree_lookup() error: uninitialized symbol 'data'.
      fs/btrfs/volumes.c:7415 btrfs_dev_stats_value() error: uninitialized symbol 'val'.
    
    Fix those warnings by reverting back to the old memset() behavior.
    By this we keep the static checker happy and would still make a lot of
    noise when such invalid ranges are passed in.
    
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Fixes: f98b6215d7d1 ("btrfs: extent_io: do extra check for extent buffer read write functions")
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aaa8ceca93faaeafefe5646f01d9a6a0e764de57
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Sep 13 18:28:15 2023 +0200

    direct_write_fallback(): on error revert the ->ki_pos update from buffered write
    
    [ Upstream commit 8287474aa5ffb41df52552c4ae4748e791d2faf2 ]
    
    If we fail filemap_write_and_wait_range() on the range the buffered write went
    into, we only report the "number of bytes which we direct-written", to quote
    the comment in there.  Which is fine, but buffered write has already advanced
    iocb->ki_pos, so we need to roll that back.  Otherwise we end up with e.g.
    write(2) advancing position by more than the amount it reports having written.
    
    Fixes: 182c25e9c157 "filemap: update ki_pos in generic_perform_write"
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Message-Id: <20230827214518.GU3390869@ZenIV>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82dacd0ca0d9640723824026d6fdf773c02de1d2
Author: Amit Pundir <amit.pundir@linaro.org>
Date:   Wed Jul 26 18:57:19 2023 +0530

    arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved
    
    [ Upstream commit 110e70fccce4f22b53986ae797d665ffb1950aa6 ]
    
    Adding a reserved memory region for the framebuffer memory
    (the splash memory region set up by the bootloader).
    
    It fixes a kernel panic (arm-smmu: Unhandled context fault
    at this particular memory region) reported on DB845c running
    v5.10.y.
    
    Cc: stable@vger.kernel.org # v5.10+
    Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20230726132719.2117369-2-amit.pundir@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b4c845a613b777c8ed28296301c8cb5a8af127b
Author: Wenjing Liu <wenjing.liu@amd.com>
Date:   Mon Jul 24 13:12:58 2023 -0400

    drm/amd/display: fix a regression in blank pixel data caused by coding mistake
    
    [ Upstream commit f77d1a49902bc70625e3d101a16d8a687f7e97db ]
    
    [why]
    There was unfortunately a coding mistake. It gets caught with an ultrawide monitor
    that requires ODM 4:1 combine. We are blanking or unblanking pixel data we
    are supposed to enumerate through all ODM pipes and program DPG for each
    of those pipes. However the coding mistake causes us to program only the
    first and last ODM pipes.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Martin Leung <martin.leung@amd.com>
    Acked-by: Tom Chung <chiahsuan.chung@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5934e2ab73f5765cab2b5850a5a84da04ed69fb2
Author: Wenjing Liu <wenjing.liu@amd.com>
Date:   Thu Jul 13 18:40:51 2023 -0400

    drm/amd/display: Update DPG test pattern programming
    
    [ Upstream commit ad4455c614b27e6b24a4e6bd70114545c1660ff9 ]
    
    [Why]
    Last ODM slice could be slightly larger than other slice because it can be
    including the residual.
    
    [How]
    Update DPG pattern programming sequence to use a different width for
    last odm slice.
    
    Reviewed-by: Chris Park <chris.park@amd.com>
    Acked-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: f77d1a49902b ("drm/amd/display: fix a regression in blank pixel data caused by coding mistake")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b839049cc5c0c5a79d2d7404ef255979b96f474
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Mon Sep 25 16:14:43 2023 +0100

    ASoC: cs35l56: Disable low-power hibernation mode
    
    commit 18789be8e0d9fbb78b2290dcf93f500726ed19f0 upstream.
    
    Do not allow the CS35L56 to be put into its lowest power
    "hibernation" mode. This only affects I2C because "hibernation"
    is already disabled on SPI and SoundWire.
    
    Recent firmwares need a different wake-up sequence. Until
    that sequence has been specified, the chip "hibernation" mode
    must be disabled otherwise it can intermittently fail to wake.
    
    Backport note: This is the same change as upstream commit, to delete
    one line, but the upstream commit would not apply cleanly on older
    branches because of minor differences to the surrounding code.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230912133841.3480466-1-rf@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c4cc4d787a5f332f2c61f12cdb31e01da386439
Author: Jiadong Zhu <Jiadong.Zhu@amd.com>
Date:   Wed Jul 26 15:21:48 2023 +0800

    drm/amdgpu: set completion status as preempted for the resubmission
    
    [ Upstream commit 8cbbd11547f61b90b33a4ef70c4614eb2e789c49 ]
    
    The driver's CSA buffer is shared by all the ibs. When the high priority ib
    is submitted after the preempted ib, CP overrides the ib_completion_status
    as completed in the csa buffer. After that the preempted ib is resubmitted,
    CP would clear some locals stored for ib resume when reading the completed
    status, which causes gpu hang in some cases.
    
    Always set status as preempted for those resubmitted ib instead of reading
    everything from the CSA buffer.
    
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2535
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2717
    Signed-off-by: Jiadong Zhu <Jiadong.Zhu@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb665adeec45ac08a106af232a4b03f49cc8ef04
Author: Daniel Scally <dan.scally@ideasonboard.com>
Date:   Wed Sep 20 14:41:09 2023 +0100

    i2c: xiic: Correct return value check for xiic_reinit()
    
    [ Upstream commit 59851fb05d759f13662be143eff0aae605815b0e ]
    
    The error paths for xiic_reinit() return negative values on failure
    and 0 on success - this error message therefore is triggered on
    _success_ rather than failure. Correct the condition so it's only
    shown on failure as intended.
    
    Fixes: 8fa9c9388053 ("i2c: xiic: return value of xiic_reinit")
    Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
    Acked-by: Michal Simek <michal.simek@amd.com>
    Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9553546feb29716c952c5802534e003c513f9d60
Author: Liang He <windhl@126.com>
Date:   Wed Mar 22 12:29:51 2023 +0800

    i2c: mux: gpio: Add missing fwnode_handle_put()
    
    [ Upstream commit db6aee6083a56ac4a6cd1b08fff7938072bcd0a3 ]
    
    In i2c_mux_gpio_probe_fw(), we should add fwnode_handle_put()
    when break out of the iteration device_for_each_child_node()
    as it will automatically increase and decrease the refcounter.
    
    Fixes: 98b2b712bc85 ("i2c: i2c-mux-gpio: Enable this driver in ACPI land")
    Signed-off-by: Liang He <windhl@126.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8406f0fe2ebdc45d3198982db4aae6d5745f11c4
Author: Xiaoke Wang <xkernel.wang@foxmail.com>
Date:   Thu Mar 3 20:39:14 2022 +0800

    i2c: mux: demux-pinctrl: check the return value of devm_kstrdup()
    
    [ Upstream commit 7c0195fa9a9e263df204963f88a22b21688ffb66 ]
    
    devm_kstrdup() returns pointer to allocated string on success,
    NULL on failure. So it is better to check the return value of it.
    
    Fixes: e35478eac030 ("i2c: mux: demux-pinctrl: run properly with multiple instances")
    Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 395f0712443195b7c76042cd26ebd1a9aec43369
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Sep 3 08:13:21 2023 +0200

    gpio: tb10x: Fix an error handling path in tb10x_gpio_probe()
    
    [ Upstream commit b547b5e52a0587e6b25ea520bf2f9e03d00cbcb6 ]
    
    If an error occurs after a successful irq_domain_add_linear() call, it
    should be undone by a corresponding irq_domain_remove(), as already done
    in the remove function.
    
    Fixes: c6ce2b6bffe5 ("gpio: add TB10x GPIO driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76569e3819e0bb59fc19b1b8688b017e627c268a
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Tue Sep 19 13:38:04 2023 -0500

    cifs: Fix UAF in cifs_demultiplex_thread()
    
    [ Upstream commit d527f51331cace562393a8038d870b3e9916686f ]
    
    There is a UAF when xfstests on cifs:
    
      BUG: KASAN: use-after-free in smb2_is_network_name_deleted+0x27/0x160
      Read of size 4 at addr ffff88810103fc08 by task cifsd/923
    
      CPU: 1 PID: 923 Comm: cifsd Not tainted 6.1.0-rc4+ #45
      ...
      Call Trace:
       <TASK>
       dump_stack_lvl+0x34/0x44
       print_report+0x171/0x472
       kasan_report+0xad/0x130
       kasan_check_range+0x145/0x1a0
       smb2_is_network_name_deleted+0x27/0x160
       cifs_demultiplex_thread.cold+0x172/0x5a4
       kthread+0x165/0x1a0
       ret_from_fork+0x1f/0x30
       </TASK>
    
      Allocated by task 923:
       kasan_save_stack+0x1e/0x40
       kasan_set_track+0x21/0x30
       __kasan_slab_alloc+0x54/0x60
       kmem_cache_alloc+0x147/0x320
       mempool_alloc+0xe1/0x260
       cifs_small_buf_get+0x24/0x60
       allocate_buffers+0xa1/0x1c0
       cifs_demultiplex_thread+0x199/0x10d0
       kthread+0x165/0x1a0
       ret_from_fork+0x1f/0x30
    
      Freed by task 921:
       kasan_save_stack+0x1e/0x40
       kasan_set_track+0x21/0x30
       kasan_save_free_info+0x2a/0x40
       ____kasan_slab_free+0x143/0x1b0
       kmem_cache_free+0xe3/0x4d0
       cifs_small_buf_release+0x29/0x90
       SMB2_negotiate+0x8b7/0x1c60
       smb2_negotiate+0x51/0x70
       cifs_negotiate_protocol+0xf0/0x160
       cifs_get_smb_ses+0x5fa/0x13c0
       mount_get_conns+0x7a/0x750
       cifs_mount+0x103/0xd00
       cifs_smb3_do_mount+0x1dd/0xcb0
       smb3_get_tree+0x1d5/0x300
       vfs_get_tree+0x41/0xf0
       path_mount+0x9b3/0xdd0
       __x64_sys_mount+0x190/0x1d0
       do_syscall_64+0x35/0x80
       entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    The UAF is because:
    
     mount(pid: 921)               | cifsd(pid: 923)
    -------------------------------|-------------------------------
                                   | cifs_demultiplex_thread
    SMB2_negotiate                 |
     cifs_send_recv                |
      compound_send_recv           |
       smb_send_rqst               |
        wait_for_response          |
         wait_event_state      [1] |
                                   |  standard_receive3
                                   |   cifs_handle_standard
                                   |    handle_mid
                                   |     mid->resp_buf = buf;  [2]
                                   |     dequeue_mid           [3]
         KILL the process      [4] |
        resp_iov[i].iov_base = buf |
     free_rsp_buf              [5] |
                                   |   is_network_name_deleted [6]
                                   |   callback
    
    1. After send request to server, wait the response until
        mid->mid_state != SUBMITTED;
    2. Receive response from server, and set it to mid;
    3. Set the mid state to RECEIVED;
    4. Kill the process, the mid state already RECEIVED, get 0;
    5. Handle and release the negotiate response;
    6. UAF.
    
    It can be easily reproduce with add some delay in [3] - [6].
    
    Only sync call has the problem since async call's callback is
    executed in cifsd process.
    
    Add an extra state to mark the mid state to READY before wakeup the
    waitter, then it can get the resp safely.
    
    Fixes: ec637e3ffb6b ("[CIFS] Avoid extra large buffer allocation (and memcpy) in cifs_readpages")
    Reviewed-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 674a8a9f78483777f521c94ddde1ab8110257281
Author: Ben Wolsieffer <ben.wolsieffer@hefring.com>
Date:   Fri Sep 15 12:00:56 2023 -0400

    proc: nommu: fix empty /proc/<pid>/maps
    
    [ Upstream commit fe4419801617514765974f3e796269bc512ad146 ]
    
    On no-MMU, /proc/<pid>/maps reads as an empty file.  This happens because
    find_vma(mm, 0) always returns NULL (assuming no vma actually contains the
    zero address, which is normally the case).
    
    To fix this bug and improve the maintainability in the future, this patch
    makes the no-MMU implementation as similar as possible to the MMU
    implementation.
    
    The only remaining differences are the lack of hold/release_task_mempolicy
    and the extra code to shoehorn the gate vma into the iterator.
    
    This has been tested on top of 6.5.3 on an STM32F746.
    
    Link: https://lkml.kernel.org/r/20230915160055.971059-2-ben.wolsieffer@hefring.com
    Fixes: 0c563f148043 ("proc: remove VMA rbtree use from nommu")
    Signed-off-by: Ben Wolsieffer <ben.wolsieffer@hefring.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
    Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ffe07e1d1a97c6854c82a8d178c0700da0913d09
Author: Ben Wolsieffer <Ben.Wolsieffer@hefring.com>
Date:   Thu Sep 14 12:30:20 2023 -0400

    proc: nommu: /proc/<pid>/maps: release mmap read lock
    
    [ Upstream commit 578d7699e5c2add8c2e9549d9d75dfb56c460cb3 ]
    
    The no-MMU implementation of /proc/<pid>/map doesn't normally release
    the mmap read lock, because it uses !IS_ERR_OR_NULL(_vml) to determine
    whether to release the lock.  Since _vml is NULL when the end of the
    mappings is reached, the lock is not released.
    
    Reading /proc/1/maps twice doesn't cause a hang because it only
    takes the read lock, which can be taken multiple times and therefore
    doesn't show any problem if the lock isn't released. Instead, you need
    to perform some operation that attempts to take the write lock after
    reading /proc/<pid>/maps. To actually reproduce the bug, compile the
    following code as 'proc_maps_bug':
    
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/mman.h>
    
    int main(int argc, char *argv[]) {
            void *buf;
            sleep(1);
            buf = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
            puts("mmap returned");
            return 0;
    }
    
    Then, run:
    
      ./proc_maps_bug &; cat /proc/$!/maps; fg
    
    Without this patch, mmap() will hang and the command will never
    complete.
    
    This code was incorrectly adapted from the MMU implementation, which at
    the time released the lock in m_next() before returning the last entry.
    
    The MMU implementation has diverged further from the no-MMU version since
    then, so this patch brings their locking and error handling into sync,
    fixing the bug and hopefully avoiding similar issues in the future.
    
    Link: https://lkml.kernel.org/r/20230914163019.4050530-2-ben.wolsieffer@hefring.com
    Fixes: 47fecca15c09 ("fs/proc/task_nommu.c: don't use priv->task->mm")
    Signed-off-by: Ben Wolsieffer <ben.wolsieffer@hefring.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
    Cc: Greg Ungerer <gerg@uclinux.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: fe4419801617 ("proc: nommu: fix empty /proc/<pid>/maps")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dcdbc22ce0550da09c6961d482a77fbad372f1e9
Author: Alison Schofield <alison.schofield@intel.com>
Date:   Tue Sep 5 14:10:07 2023 -0700

    cxl/region: Match auto-discovered region decoders by HPA range
    
    [ Upstream commit 9e4edf1a2196fa4bea6e8201f166785bd066446a ]
    
    Currently, when the region driver attaches a region to a port, it
    selects the ports next available decoder to program.
    
    With the addition of auto-discovered regions, a port decoder has
    already been programmed so grabbing the next available decoder can
    be a mismatch when there is more than one region using the port.
    
    The failure appears like this with CXL DEBUG enabled:
    
    [] cxl_core:alloc_region_ref:754: cxl region0: endpoint9: HPA order violation region0:[mem 0x14780000000-0x1478fffffff flags 0x200] vs [mem 0x880000000-0x185fffffff flags 0x200]
    [] cxl_core:cxl_port_attach_region:972: cxl region0: endpoint9: failed to allocate region reference
    
    When CXL DEBUG is not enabled, there is no failure message. The region
    just never materializes. Users can suspect this issue if they know their
    firmware has programmed decoders so that more than one region is using
    a port. Note that the problem may appear intermittently, ie not on
    every reboot.
    
    Add a matching method for auto-discovered regions that finds a decoder
    based on an HPA range. The decoder range must exactly match the region
    resource parameter.
    
    Fixes: a32320b71f08 ("cxl/region: Add region autodiscovery")
    Signed-off-by: Alison Schofield <alison.schofield@intel.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Link: https://lore.kernel.org/r/20230905211007.256385-1-alison.schofield@intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ea4d0745dd498d6bdfe9ac61adf239f5cfe9c3f
Author: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
Date:   Tue Sep 19 10:03:31 2023 -0700

    igc: Expose tx-usecs coalesce setting to user
    
    [ Upstream commit 1703b2e0de653b459ca6230be32ce7f2ea0ae7ee ]
    
    When users attempt to obtain the coalesce setting using the
    ethtool command, current code always returns 0 for tx-usecs.
    This is because I225/6 always uses a queue pair setting, hence
    tx_coalesce_usecs does not return a value during the
    igc_ethtool_get_coalesce() callback process. The pair queue
    condition checking in igc_ethtool_get_coalesce() is removed by
    this patch so that the user gets information of the value of tx-usecs.
    
    Even if i225/6 is using queue pair setting, there is no harm in
    notifying the user of the tx-usecs. The implementation of the current
    code may have previously been a copy of the legacy code i210.
    Since I225 has the queue pair setting enabled, tx-usecs will always adhere
    to the user-set rx-usecs value. An error message will appear when the user
    attempts to set the tx-usecs value for the input parameters because,
    by default, they should only set the rx-usecs value.
    
    This patch also adds the helper function to get the
    previous rx coalesce value similar to tx coalesce.
    
    How to test:
    User can get the coalesce value using ethtool command.
    
    Example command:
    Get: ethtool -c <interface>
    
    Previous output:
    
    rx-usecs: 3
    rx-frames: n/a
    rx-usecs-irq: n/a
    rx-frames-irq: n/a
    
    tx-usecs: 0
    tx-frames: n/a
    tx-usecs-irq: n/a
    tx-frames-irq: n/a
    
    New output:
    
    rx-usecs: 3
    rx-frames: n/a
    rx-usecs-irq: n/a
    rx-frames-irq: n/a
    
    tx-usecs: 3
    tx-frames: n/a
    tx-usecs-irq: n/a
    tx-frames-irq: n/a
    
    Fixes: 8c5ad0dae93c ("igc: Add ethtool support")
    Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20230919170331.1581031-1-anthony.l.nguyen@intel.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e800300b52456425ced715cf5c416abc55f5717
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Mon Sep 18 17:36:11 2023 +0200

    octeontx2-pf: Do xdp_do_flush() after redirects.
    
    [ Upstream commit 70b2b6892645e58ed6f051dad7f8d1083f0ad553 ]
    
    xdp_do_flush() should be invoked before leaving the NAPI poll function
    if XDP-redirect has been performed.
    
    Invoke xdp_do_flush() before leaving NAPI.
    
    Cc: Geetha sowjanya <gakula@marvell.com>
    Cc: Subbaraya Sundeep <sbhatta@marvell.com>
    Cc: Sunil Goutham <sgoutham@marvell.com>
    Cc: hariprasad <hkelam@marvell.com>
    Fixes: 06059a1a9a4a5 ("octeontx2-pf: Add XDP support to netdev PF")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Geethasowjanya Akula <gakula@marvell.com>
    Acked-by: Jesper Dangaard Brouer <hawk@kernel.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e07515c577495d511bf6d01439a13949ff6d0453
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Mon Sep 18 17:36:10 2023 +0200

    bnxt_en: Flush XDP for bnxt_poll_nitroa0()'s NAPI
    
    [ Upstream commit edc0140cc3b7b91874ebe70eb7d2a851e8817ccc ]
    
    bnxt_poll_nitroa0() invokes bnxt_rx_pkt() which can run a XDP program
    which in turn can return XDP_REDIRECT. bnxt_rx_pkt() is also used by
    __bnxt_poll_work() which flushes (xdp_do_flush()) the packets after each
    round. bnxt_poll_nitroa0() lacks this feature.
    xdp_do_flush() should be invoked before leaving the NAPI callback.
    
    Invoke xdp_do_flush() after a redirect in bnxt_poll_nitroa0() NAPI.
    
    Cc: Michael Chan <michael.chan@broadcom.com>
    Fixes: f18c2b77b2e4e ("bnxt_en: optimized XDP_REDIRECT support")
    Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Acked-by: Jesper Dangaard Brouer <hawk@kernel.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 801cadbde2dd9d850f7a7012db94081aeef711aa
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Mon Sep 18 17:36:09 2023 +0200

    net: ena: Flush XDP packets on error.
    
    [ Upstream commit 6f411fb5ca9419090bee6a0a46425e0a5060b734 ]
    
    xdp_do_flush() should be invoked before leaving the NAPI poll function
    after a XDP-redirect. This is not the case if the driver leaves via
    the error path (after having a redirect in one of its previous
    iterations).
    
    Invoke xdp_do_flush() also in the error path.
    
    Cc: Arthur Kiyanovski <akiyano@amazon.com>
    Cc: David Arinzon <darinzon@amazon.com>
    Cc: Noam Dagan <ndagan@amazon.com>
    Cc: Saeed Bishara <saeedb@amazon.com>
    Cc: Shay Agroskin <shayagr@amazon.com>
    Fixes: a318c70ad152b ("net: ena: introduce XDP redirect implementation")
    Acked-by: Arthur Kiyanovski <akiyano@amazon.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Jesper Dangaard Brouer <hawk@kernel.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80d51aa81e26b78c9b31acd468201ac9ac9cc4e9
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Wed Sep 20 12:46:27 2023 +0200

    locking/seqlock: Do the lockdep annotation before locking in do_write_seqcount_begin_nested()
    
    [ Upstream commit 41b43b6c6e30a832c790b010a06772e793bca193 ]
    
    It was brought up by Tetsuo that the following sequence:
    
       write_seqlock_irqsave()
       printk_deferred_enter()
    
    could lead to a deadlock if the lockdep annotation within
    write_seqlock_irqsave() triggers.
    
    The problem is that the sequence counter is incremented before the lockdep
    annotation is performed. The lockdep splat would then attempt to invoke
    printk() but the reader side, of the same seqcount, could have a
    tty_port::lock acquired waiting for the sequence number to become even again.
    
    The other lockdep annotations come before the actual locking because "we
    want to see the locking error before it happens". There is no reason why
    seqcount should be different here.
    
    Do the lockdep annotation first then perform the locking operation (the
    sequence increment).
    
    Fixes: 1ca7d67cf5d5a ("seqcount: Add lockdep functionality to seqcount/seqlock structures")
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20230920104627._DTHgPyA@linutronix.de
    
    Closes: https://lore.kernel.org/20230621130641.-5iueY1I@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a6ad94b6274b3274e329678584626e7c3f410a1
Author: José Pekkarinen <jose.pekkarinen@foxhound.fi>
Date:   Tue Sep 12 09:08:24 2023 +0300

    drm/virtio: clean out_fence on complete_submit
    
    [ Upstream commit 4556b93f6c026c62c93e7acc22838224ac2e2eba ]
    
    The removed line prevents the following cleanup function
    to execute a dma_fence_put on the out_fence to free its
    memory, producing the following output in kmemleak:
    
    unreferenced object 0xffff888126d8ee00 (size 128):
      comm "kwin_wayland", pid 981, jiffies 4295380296 (age 390.060s)
      hex dump (first 32 bytes):
        c8 a1 c2 27 81 88 ff ff e0 14 a9 c0 ff ff ff ff  ...'............
        30 1a e1 2e a6 00 00 00 28 fc 5b 17 81 88 ff ff  0.......(.[.....
      backtrace:
        [<0000000011655661>] kmalloc_trace+0x26/0xa0
        [<0000000055f15b82>] virtio_gpu_fence_alloc+0x47/0xc0 [virtio_gpu]
        [<00000000fa6d96f9>] virtio_gpu_execbuffer_ioctl+0x1a8/0x800 [virtio_gpu]
        [<00000000e6cb5105>] drm_ioctl_kernel+0x169/0x240 [drm]
        [<000000005ad33e27>] drm_ioctl+0x399/0x6b0 [drm]
        [<00000000a19dbf65>] __x64_sys_ioctl+0xc5/0x100
        [<0000000011fa801e>] do_syscall_64+0x5b/0xc0
        [<0000000065c76d8a>] entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    unreferenced object 0xffff888121930500 (size 128):
      comm "kwin_wayland", pid 981, jiffies 4295380313 (age 390.096s)
      hex dump (first 32 bytes):
        c8 a1 c2 27 81 88 ff ff e0 14 a9 c0 ff ff ff ff  ...'............
        f9 ec d7 2f a6 00 00 00 28 fc 5b 17 81 88 ff ff  .../....(.[.....
      backtrace:
        [<0000000011655661>] kmalloc_trace+0x26/0xa0
        [<0000000055f15b82>] virtio_gpu_fence_alloc+0x47/0xc0 [virtio_gpu]
        [<00000000fa6d96f9>] virtio_gpu_execbuffer_ioctl+0x1a8/0x800 [virtio_gpu]
        [<00000000e6cb5105>] drm_ioctl_kernel+0x169/0x240 [drm]
        [<000000005ad33e27>] drm_ioctl+0x399/0x6b0 [drm]
        [<00000000a19dbf65>] __x64_sys_ioctl+0xc5/0x100
        [<0000000011fa801e>] do_syscall_64+0x5b/0xc0
        [<0000000065c76d8a>] entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    [...]
    
    This memleak will grow quickly, being possible to see the
    following line in dmesg after few minutes of life in the
    virtual machine:
    
    [  706.217388] kmemleak: 10731 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
    
    The patch will remove the line to allow the cleanup
    function do its job.
    
    Signed-off-by: José Pekkarinen <jose.pekkarinen@foxhound.fi>
    Fixes: e4812ab8e6b1 ("drm/virtio: Refactor and optimize job submission code path")
    Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230912060824.5210-1-jose.pekkarinen@foxhound.fi
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb74cf25a8c8db6ce1fe8bf57ff95c9cfe55d430
Author: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Date:   Tue Sep 12 14:22:47 2023 -0700

    i915/pmu: Move execlist stats initialization to execlist specific setup
    
    [ Upstream commit c524cd40e8a2a1a36f4898eaf2024beefeb815f3 ]
    
    engine->stats is a union of execlist and guc stat objects. When execlist
    specific fields are initialized, the initial state of guc stats is
    affected. This results in bad busyness values when using GuC mode. Move
    the execlist initialization from common code to execlist specific code.
    
    Fixes: 77cdd054dd2c ("drm/i915/pmu: Connect engine busyness stats from GuC to pmu")
    Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
    Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230912212247.1828681-1-umesh.nerlige.ramappa@intel.com
    (cherry picked from commit 4485bd519f5d6d620a29d0547ff3c982bdeeb468)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1751e44980466e3ebc246d22d3ebd422197704b6
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Tue Sep 19 18:44:06 2023 +0800

    net/handshake: Fix memory leak in __sock_create() and sock_alloc_file()
    
    [ Upstream commit 4a0f07d71b0483cc08c03cefa7c85749e187c214 ]
    
    When making CONFIG_DEBUG_KMEMLEAK=y and CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN=y,
    modprobe handshake-test and then rmmmod handshake-test, the below memory
    leak is detected.
    
    The struct socket_alloc which is allocated by alloc_inode_sb() in
    __sock_create() is not freed. And the struct dentry which is allocated
    by __d_alloc() in sock_alloc_file() is not freed.
    
    Since fput() will call file->f_op->release() which is sock_close() here and
    it will call __sock_release(). and fput() will call dput(dentry) to free
    the struct dentry. So replace sock_release() with fput() to fix the
    below memory leak. After applying this patch, the following memory leak is
    never detected.
    
    unreferenced object 0xffff888109165840 (size 768):
      comm "kunit_try_catch", pid 1852, jiffies 4294685807 (age 976.262s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 5a 5a 20 00 00 00 00 00 00 00  ......ZZ .......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8397993f>] sock_alloc_inode+0x1f/0x1b0
        [<ffffffff81a2cb5b>] alloc_inode+0x5b/0x1a0
        [<ffffffff81a32bed>] new_inode_pseudo+0xd/0x70
        [<ffffffff8397889c>] sock_alloc+0x3c/0x260
        [<ffffffff83979b46>] __sock_create+0x66/0x3d0
        [<ffffffffa0209ba2>] 0xffffffffa0209ba2
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810f472008 (size 192):
      comm "kunit_try_catch", pid 1852, jiffies 4294685808 (age 976.261s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 08 20 47 0f 81 88 ff ff  ......... G.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0209bbb>] 0xffffffffa0209bbb
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810958e580 (size 224):
      comm "kunit_try_catch", pid 1852, jiffies 4294685808 (age 976.261s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0209bbb>] 0xffffffffa0209bbb
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810926dc88 (size 192):
      comm "kunit_try_catch", pid 1854, jiffies 4294685809 (age 976.271s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 88 dc 26 09 81 88 ff ff  ..........&.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0208fdc>] 0xffffffffa0208fdc
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810a241380 (size 224):
      comm "kunit_try_catch", pid 1854, jiffies 4294685809 (age 976.271s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0208fdc>] 0xffffffffa0208fdc
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888109165040 (size 768):
      comm "kunit_try_catch", pid 1856, jiffies 4294685811 (age 976.269s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 5a 5a 20 00 00 00 00 00 00 00  ......ZZ .......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8397993f>] sock_alloc_inode+0x1f/0x1b0
        [<ffffffff81a2cb5b>] alloc_inode+0x5b/0x1a0
        [<ffffffff81a32bed>] new_inode_pseudo+0xd/0x70
        [<ffffffff8397889c>] sock_alloc+0x3c/0x260
        [<ffffffff83979b46>] __sock_create+0x66/0x3d0
        [<ffffffffa0208860>] 0xffffffffa0208860
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810926d568 (size 192):
      comm "kunit_try_catch", pid 1856, jiffies 4294685811 (age 976.269s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 68 d5 26 09 81 88 ff ff  ........h.&.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0208879>] 0xffffffffa0208879
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810a240580 (size 224):
      comm "kunit_try_catch", pid 1856, jiffies 4294685811 (age 976.347s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0208879>] 0xffffffffa0208879
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888109164c40 (size 768):
      comm "kunit_try_catch", pid 1858, jiffies 4294685816 (age 976.342s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 5a 5a 20 00 00 00 00 00 00 00  ......ZZ .......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8397993f>] sock_alloc_inode+0x1f/0x1b0
        [<ffffffff81a2cb5b>] alloc_inode+0x5b/0x1a0
        [<ffffffff81a32bed>] new_inode_pseudo+0xd/0x70
        [<ffffffff8397889c>] sock_alloc+0x3c/0x260
        [<ffffffff83979b46>] __sock_create+0x66/0x3d0
        [<ffffffffa0208541>] 0xffffffffa0208541
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810926cd18 (size 192):
      comm "kunit_try_catch", pid 1858, jiffies 4294685816 (age 976.342s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 18 cd 26 09 81 88 ff ff  ..........&.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa020855a>] 0xffffffffa020855a
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810a240200 (size 224):
      comm "kunit_try_catch", pid 1858, jiffies 4294685816 (age 976.342s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa020855a>] 0xffffffffa020855a
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888109164840 (size 768):
      comm "kunit_try_catch", pid 1860, jiffies 4294685817 (age 976.416s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 5a 5a 20 00 00 00 00 00 00 00  ......ZZ .......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8397993f>] sock_alloc_inode+0x1f/0x1b0
        [<ffffffff81a2cb5b>] alloc_inode+0x5b/0x1a0
        [<ffffffff81a32bed>] new_inode_pseudo+0xd/0x70
        [<ffffffff8397889c>] sock_alloc+0x3c/0x260
        [<ffffffff83979b46>] __sock_create+0x66/0x3d0
        [<ffffffffa02093e2>] 0xffffffffa02093e2
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810926cab8 (size 192):
      comm "kunit_try_catch", pid 1860, jiffies 4294685817 (age 976.416s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 b8 ca 26 09 81 88 ff ff  ..........&.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa02093fb>] 0xffffffffa02093fb
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810a240040 (size 224):
      comm "kunit_try_catch", pid 1860, jiffies 4294685817 (age 976.416s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa02093fb>] 0xffffffffa02093fb
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888109166440 (size 768):
      comm "kunit_try_catch", pid 1862, jiffies 4294685819 (age 976.489s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 5a 5a 20 00 00 00 00 00 00 00  ......ZZ .......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8397993f>] sock_alloc_inode+0x1f/0x1b0
        [<ffffffff81a2cb5b>] alloc_inode+0x5b/0x1a0
        [<ffffffff81a32bed>] new_inode_pseudo+0xd/0x70
        [<ffffffff8397889c>] sock_alloc+0x3c/0x260
        [<ffffffff83979b46>] __sock_create+0x66/0x3d0
        [<ffffffffa02097c1>] 0xffffffffa02097c1
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810926c398 (size 192):
      comm "kunit_try_catch", pid 1862, jiffies 4294685819 (age 976.489s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 98 c3 26 09 81 88 ff ff  ..........&.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa02097da>] 0xffffffffa02097da
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888107e0b8c0 (size 224):
      comm "kunit_try_catch", pid 1862, jiffies 4294685819 (age 976.489s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa02097da>] 0xffffffffa02097da
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888109164440 (size 768):
      comm "kunit_try_catch", pid 1864, jiffies 4294685821 (age 976.487s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 5a 5a 20 00 00 00 00 00 00 00  ......ZZ .......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8397993f>] sock_alloc_inode+0x1f/0x1b0
        [<ffffffff81a2cb5b>] alloc_inode+0x5b/0x1a0
        [<ffffffff81a32bed>] new_inode_pseudo+0xd/0x70
        [<ffffffff8397889c>] sock_alloc+0x3c/0x260
        [<ffffffff83979b46>] __sock_create+0x66/0x3d0
        [<ffffffffa020824e>] 0xffffffffa020824e
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff88810f4cf698 (size 192):
      comm "kunit_try_catch", pid 1864, jiffies 4294685821 (age 976.501s)
      hex dump (first 32 bytes):
        00 00 50 40 02 00 00 00 00 00 00 00 00 00 00 00  ..P@............
        00 00 00 00 00 00 00 00 98 f6 4c 0f 81 88 ff ff  ..........L.....
      backtrace:
        [<ffffffff81a1ff11>] __d_alloc+0x31/0x8a0
        [<ffffffff81a2910e>] d_alloc_pseudo+0xe/0x50
        [<ffffffff819d549e>] alloc_file_pseudo+0xce/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0208267>] 0xffffffffa0208267
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    unreferenced object 0xffff888107e0b000 (size 224):
      comm "kunit_try_catch", pid 1864, jiffies 4294685821 (age 976.501s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 03 00 2e 08 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff819d4b90>] alloc_empty_file+0x50/0x160
        [<ffffffff819d4cf9>] alloc_file+0x59/0x730
        [<ffffffff819d5524>] alloc_file_pseudo+0x154/0x210
        [<ffffffff83978582>] sock_alloc_file+0x42/0x1b0
        [<ffffffffa0208267>] 0xffffffffa0208267
        [<ffffffff829cf03a>] kunit_generic_run_threadfn_adapter+0x4a/0x90
        [<ffffffff81236fc6>] kthread+0x2b6/0x380
        [<ffffffff81096afd>] ret_from_fork+0x2d/0x70
        [<ffffffff81003511>] ret_from_fork_asm+0x11/0x20
    
    Fixes: 88232ec1ec5e ("net/handshake: Add Kunit tests for the handshake consumer API")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a108132601936daa91fb07e0ba7f45fe772e76f3
Author: Cai Huoqing <cai.huoqing@linux.dev>
Date:   Tue Sep 19 10:27:15 2023 +0800

    net: hinic: Fix warning-hinic_set_vlan_fliter() warn: variable dereferenced before check 'hwdev'
    
    [ Upstream commit 22b6e7f3d6d51ff2716480f3d8f3098d90d69165 ]
    
    'hwdev' is checked too late and hwdev will not be NULL, so remove the check
    
    Fixes: 2acf960e3be6 ("net: hinic: Add support for configuration of rx-vlan-filter by ethtool")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/r/202309112354.pikZCmyk-lkp@intel.com/
    Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20a93d402b6fe6757e14b0eeb400dfac8b8aa3ad
Author: Jozsef Kadlecsik <kadlec@netfilter.org>
Date:   Tue Sep 19 20:04:45 2023 +0200

    netfilter: ipset: Fix race between IPSET_CMD_CREATE and IPSET_CMD_SWAP
    
    [ Upstream commit 7433b6d2afd512d04398c73aa984d1e285be125b ]
    
    Kyle Zeng reported that there is a race between IPSET_CMD_ADD and IPSET_CMD_SWAP
    in netfilter/ip_set, which can lead to the invocation of `__ip_set_put` on a
    wrong `set`, triggering the `BUG_ON(set->ref == 0);` check in it.
    
    The race is caused by using the wrong reference counter, i.e. the ref counter instead
    of ref_netlink.
    
    Fixes: 24e227896bbf ("netfilter: ipset: Add schedule point in call_ad().")
    Reported-by: Kyle Zeng <zengyhkyle@gmail.com>
    Closes: https://lore.kernel.org/netfilter-devel/ZPZqetxOmH+w%2Fmyc@westworld/#r
    Tested-by: Kyle Zeng <zengyhkyle@gmail.com>
    Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e5754e9e77ce400d70ff3c30fea466c8dfe9a9f
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Sep 15 15:18:11 2023 +0200

    netfilter: nf_tables: disable toggling dormant table state more than once
    
    [ Upstream commit c9bd26513b3a11b3adb3c2ed8a31a01a87173ff1 ]
    
    nft -f -<<EOF
    add table ip t
    add table ip t { flags dormant; }
    add chain ip t c { type filter hook input priority 0; }
    add table ip t
    EOF
    
    Triggers a splat from nf core on next table delete because we lose
    track of right hook register state:
    
    WARNING: CPU: 2 PID: 1597 at net/netfilter/core.c:501 __nf_unregister_net_hook
    RIP: 0010:__nf_unregister_net_hook+0x41b/0x570
     nf_unregister_net_hook+0xb4/0xf0
     __nf_tables_unregister_hook+0x160/0x1d0
    [..]
    
    The above should have table in *active* state, but in fact no
    hooks were registered.
    
    Reject on/off/on games rather than attempting to fix this.
    
    Fixes: 179d9ba5559a ("netfilter: nf_tables: fix table flag updates")
    Reported-by: "Lee, Cherie-Anne" <cherie.lee@starlabs.sg>
    Cc: Bing-Jhong Billy Jheng <billy@starlabs.sg>
    Cc: info@starlabs.sg
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a226a189aa15e975acfc1793794b82835298339
Author: Benjamin Poirier <bpoirier@nvidia.com>
Date:   Mon Sep 18 11:40:15 2023 -0400

    vxlan: Add missing entries to vxlan_get_size()
    
    [ Upstream commit 4e4b1798cc90e376b8b61d0098b4093898a32227 ]
    
    There are some attributes added by vxlan_fill_info() which are not
    accounted for in vxlan_get_size(). Add them.
    
    I didn't find a way to trigger an actual problem from this miscalculation
    since there is usually extra space in netlink size calculations like
    if_nlmsg_size(); but maybe I just didn't search long enough.
    
    Fixes: 3511494ce2f3 ("vxlan: Group Policy extension")
    Fixes: e1e5314de08b ("vxlan: implement GPE")
    Fixes: 0ace2ca89cbd ("vxlan: Use checksum partial with remote checksum offload")
    Fixes: f9c4bb0b245c ("vxlan: vni filtering support on collect metadata device")
    Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
    Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 069ac51c37a6f07a51f7134d8c34289075786a35
Author: Artem Chernyshev <artem.chernyshev@red-soft.ru>
Date:   Mon Sep 18 16:56:23 2023 +0300

    net: rds: Fix possible NULL-pointer dereference
    
    [ Upstream commit f1d95df0f31048f1c59092648997686e3f7d9478 ]
    
    In rds_rdma_cm_event_handler_cmn() check, if conn pointer exists
    before dereferencing it as rdma_set_service_type() argument
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: fd261ce6a30e ("rds: rdma: update rdma transport for tos")
    Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2eebf58ce030526a08b973e63137b2f104646f64
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Tue Sep 19 18:14:29 2023 +0100

    locking/atomic: scripts: fix fallback ifdeffery
    
    [ Upstream commit 6d2779ecaeb56f92d7105c56772346c71c88c278 ]
    
    Since commit:
    
      9257959a6e5b4fca ("locking/atomic: scripts: restructure fallback ifdeffery")
    
    The ordering fallbacks for atomic*_read_acquire() and
    atomic*_set_release() erroneously fall back to the implictly relaxed
    atomic*_read() and atomic*_set() variants respectively, without any
    additional barriers. This loses the ACQUIRE and RELEASE ordering
    semantics, which can result in a wide variety of problems, even on
    strongly-ordered architectures where the implementation of
    atomic*_read() and/or atomic*_set() allows the compiler to reorder those
    relative to other accesses.
    
    In practice this has been observed to break bit spinlocks on arm64,
    resulting in dentry cache corruption.
    
    The fallback logic was intended to allow ACQUIRE/RELEASE/RELAXED ops to
    be defined in terms of FULL ops, but where an op had RELAXED ordering by
    default, this unintentionally permitted the ACQUIRE/RELEASE ops to be
    defined in terms of the implicitly RELAXED default.
    
    This patch corrects the logic to avoid falling back to implicitly
    RELAXED ops, resulting in the same behaviour as prior to commit
    9257959a6e5b4fca.
    
    I've verified the resulting assembly on arm64 by generating outlined
    wrappers of the atomics. Prior to this patch the compiler generates
    sequences using relaxed load (LDR) and store (STR) instructions, e.g.
    
    | <outlined_atomic64_read_acquire>:
    |         ldr     x0, [x0]
    |         ret
    |
    | <outlined_atomic64_set_release>:
    |         str     x1, [x0]
    |         ret
    
    With this patch applied the compiler generates sequences using the
    intended load-acquire (LDAR) and store-release (STLR) instructions, e.g.
    
    | <outlined_atomic64_read_acquire>:
    |         ldar    x0, [x0]
    |         ret
    |
    | <outlined_atomic64_set_release>:
    |         stlr    x1, [x0]
    |         ret
    
    To make sure that there were no other victims of the ifdeffery rewrite,
    I generated outlined copies of all of the {atomic,atomic64,atomic_long}
    atomic operations before and after commit 9257959a6e5b4fca. A diff of
    the generated assembly on arm64 shows that only the read_acquire() and
    set_release() operations were changed, and only lost their intended
    ordering:
    
    | [mark@lakrids:~/src/linux]% diff -u \
    |       <(aarch64-linux-gnu-objdump -d before-9257959a6e5b4fca.o)
    |       <(aarch64-linux-gnu-objdump -d after-9257959a6e5b4fca.o)
    | --- /proc/self/fd/11    2023-09-19 16:51:51.114779415 +0100
    | +++ /proc/self/fd/16    2023-09-19 16:51:51.114779415 +0100
    | @@ -1,5 +1,5 @@
    |
    | -before-9257959a6e5b4fca.o:     file format elf64-littleaarch64
    | +after-9257959a6e5b4fca.o:     file format elf64-littleaarch64
    |
    |
    |  Disassembly of section .text:
    | @@ -9,7 +9,7 @@
    |         4:      d65f03c0        ret
    |
    |  0000000000000008 <outlined_atomic_read_acquire>:
    | -       8:      88dffc00        ldar    w0, [x0]
    | +       8:      b9400000        ldr     w0, [x0]
    |         c:      d65f03c0        ret
    |
    |  0000000000000010 <outlined_atomic_set>:
    | @@ -17,7 +17,7 @@
    |        14:      d65f03c0        ret
    |
    |  0000000000000018 <outlined_atomic_set_release>:
    | -      18:      889ffc01        stlr    w1, [x0]
    | +      18:      b9000001        str     w1, [x0]
    |        1c:      d65f03c0        ret
    |
    |  0000000000000020 <outlined_atomic_add>:
    | @@ -1230,7 +1230,7 @@
    |      1070:      d65f03c0        ret
    |
    |  0000000000001074 <outlined_atomic64_read_acquire>:
    | -    1074:      c8dffc00        ldar    x0, [x0]
    | +    1074:      f9400000        ldr     x0, [x0]
    |      1078:      d65f03c0        ret
    |
    |  000000000000107c <outlined_atomic64_set>:
    | @@ -1238,7 +1238,7 @@
    |      1080:      d65f03c0        ret
    |
    |  0000000000001084 <outlined_atomic64_set_release>:
    | -    1084:      c89ffc01        stlr    x1, [x0]
    | +    1084:      f9000001        str     x1, [x0]
    |      1088:      d65f03c0        ret
    |
    |  000000000000108c <outlined_atomic64_add>:
    | @@ -2427,7 +2427,7 @@
    |      207c:      d65f03c0        ret
    |
    |  0000000000002080 <outlined_atomic_long_read_acquire>:
    | -    2080:      c8dffc00        ldar    x0, [x0]
    | +    2080:      f9400000        ldr     x0, [x0]
    |      2084:      d65f03c0        ret
    |
    |  0000000000002088 <outlined_atomic_long_set>:
    | @@ -2435,7 +2435,7 @@
    |      208c:      d65f03c0        ret
    |
    |  0000000000002090 <outlined_atomic_long_set_release>:
    | -    2090:      c89ffc01        stlr    x1, [x0]
    | +    2090:      f9000001        str     x1, [x0]
    |      2094:      d65f03c0        ret
    |
    |  0000000000002098 <outlined_atomic_long_add>:
    
    I've build tested this with a variety of configs for alpha, arm, arm64,
    csky, i386, m68k, microblaze, mips, nios2, openrisc, powerpc, riscv,
    s390, sh, sparc, x86_64, and xtensa, for which I've seen no issues. I
    was unable to build test for ia64 and parisc due to existing build
    breakage in v6.6-rc2.
    
    Fixes: 9257959a6e5b4fca ("locking/atomic: scripts: restructure fallback ifdeffery")
    Reported-by: Ming Lei <ming.lei@redhat.com>
    Reported-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lkml.kernel.org/r/20230919171430.2697727-1-mark.rutland@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cac50d9f5d876be32cb9aa21c74018468900284d
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Mon Sep 18 20:30:11 2023 +0800

    team: fix null-ptr-deref when team device type is changed
    
    [ Upstream commit 492032760127251e5540a5716a70996bacf2a3fd ]
    
    Get a null-ptr-deref bug as follows with reproducer [1].
    
    BUG: kernel NULL pointer dereference, address: 0000000000000228
    ...
    RIP: 0010:vlan_dev_hard_header+0x35/0x140 [8021q]
    ...
    Call Trace:
     <TASK>
     ? __die+0x24/0x70
     ? page_fault_oops+0x82/0x150
     ? exc_page_fault+0x69/0x150
     ? asm_exc_page_fault+0x26/0x30
     ? vlan_dev_hard_header+0x35/0x140 [8021q]
     ? vlan_dev_hard_header+0x8e/0x140 [8021q]
     neigh_connected_output+0xb2/0x100
     ip6_finish_output2+0x1cb/0x520
     ? nf_hook_slow+0x43/0xc0
     ? ip6_mtu+0x46/0x80
     ip6_finish_output+0x2a/0xb0
     mld_sendpack+0x18f/0x250
     mld_ifc_work+0x39/0x160
     process_one_work+0x1e6/0x3f0
     worker_thread+0x4d/0x2f0
     ? __pfx_worker_thread+0x10/0x10
     kthread+0xe5/0x120
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x34/0x50
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1b/0x30
    
    [1]
    $ teamd -t team0 -d -c '{"runner": {"name": "loadbalance"}}'
    $ ip link add name t-dummy type dummy
    $ ip link add link t-dummy name t-dummy.100 type vlan id 100
    $ ip link add name t-nlmon type nlmon
    $ ip link set t-nlmon master team0
    $ ip link set t-nlmon nomaster
    $ ip link set t-dummy up
    $ ip link set team0 up
    $ ip link set t-dummy.100 down
    $ ip link set t-dummy.100 master team0
    
    When enslave a vlan device to team device and team device type is changed
    from non-ether to ether, header_ops of team device is changed to
    vlan_header_ops. That is incorrect and will trigger null-ptr-deref
    for vlan->real_dev in vlan_dev_hard_header() because team device is not
    a vlan device.
    
    Cache eth_header_ops in team_setup(), then assign cached header_ops to
    header_ops of team net device when its type is changed from non-ether
    to ether to fix the bug.
    
    Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
    Suggested-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230918123011.1884401-1-william.xuanziyang@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2ef4cb4d418fa64fe73eb84d10cc5c0e52e00fa
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Sep 18 09:13:51 2023 +0000

    net: bridge: use DEV_STATS_INC()
    
    [ Upstream commit 44bdb313da57322c9b3c108eb66981c6ec6509f4 ]
    
    syzbot/KCSAN reported data-races in br_handle_frame_finish() [1]
    This function can run from multiple cpus without mutual exclusion.
    
    Adopt SMP safe DEV_STATS_INC() to update dev->stats fields.
    
    Handles updates to dev->stats.tx_dropped while we are at it.
    
    [1]
    BUG: KCSAN: data-race in br_handle_frame_finish / br_handle_frame_finish
    
    read-write to 0xffff8881374b2178 of 8 bytes by interrupt on cpu 1:
    br_handle_frame_finish+0xd4f/0xef0 net/bridge/br_input.c:189
    br_nf_hook_thresh+0x1ed/0x220
    br_nf_pre_routing_finish_ipv6+0x50f/0x540
    NF_HOOK include/linux/netfilter.h:304 [inline]
    br_nf_pre_routing_ipv6+0x1e3/0x2a0 net/bridge/br_netfilter_ipv6.c:178
    br_nf_pre_routing+0x526/0xba0 net/bridge/br_netfilter_hooks.c:508
    nf_hook_entry_hookfn include/linux/netfilter.h:144 [inline]
    nf_hook_bridge_pre net/bridge/br_input.c:272 [inline]
    br_handle_frame+0x4c9/0x940 net/bridge/br_input.c:417
    __netif_receive_skb_core+0xa8a/0x21e0 net/core/dev.c:5417
    __netif_receive_skb_one_core net/core/dev.c:5521 [inline]
    __netif_receive_skb+0x57/0x1b0 net/core/dev.c:5637
    process_backlog+0x21f/0x380 net/core/dev.c:5965
    __napi_poll+0x60/0x3b0 net/core/dev.c:6527
    napi_poll net/core/dev.c:6594 [inline]
    net_rx_action+0x32b/0x750 net/core/dev.c:6727
    __do_softirq+0xc1/0x265 kernel/softirq.c:553
    run_ksoftirqd+0x17/0x20 kernel/softirq.c:921
    smpboot_thread_fn+0x30a/0x4a0 kernel/smpboot.c:164
    kthread+0x1d7/0x210 kernel/kthread.c:388
    ret_from_fork+0x48/0x60 arch/x86/kernel/process.c:147
    ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304
    
    read-write to 0xffff8881374b2178 of 8 bytes by interrupt on cpu 0:
    br_handle_frame_finish+0xd4f/0xef0 net/bridge/br_input.c:189
    br_nf_hook_thresh+0x1ed/0x220
    br_nf_pre_routing_finish_ipv6+0x50f/0x540
    NF_HOOK include/linux/netfilter.h:304 [inline]
    br_nf_pre_routing_ipv6+0x1e3/0x2a0 net/bridge/br_netfilter_ipv6.c:178
    br_nf_pre_routing+0x526/0xba0 net/bridge/br_netfilter_hooks.c:508
    nf_hook_entry_hookfn include/linux/netfilter.h:144 [inline]
    nf_hook_bridge_pre net/bridge/br_input.c:272 [inline]
    br_handle_frame+0x4c9/0x940 net/bridge/br_input.c:417
    __netif_receive_skb_core+0xa8a/0x21e0 net/core/dev.c:5417
    __netif_receive_skb_one_core net/core/dev.c:5521 [inline]
    __netif_receive_skb+0x57/0x1b0 net/core/dev.c:5637
    process_backlog+0x21f/0x380 net/core/dev.c:5965
    __napi_poll+0x60/0x3b0 net/core/dev.c:6527
    napi_poll net/core/dev.c:6594 [inline]
    net_rx_action+0x32b/0x750 net/core/dev.c:6727
    __do_softirq+0xc1/0x265 kernel/softirq.c:553
    do_softirq+0x5e/0x90 kernel/softirq.c:454
    __local_bh_enable_ip+0x64/0x70 kernel/softirq.c:381
    __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:167 [inline]
    _raw_spin_unlock_bh+0x36/0x40 kernel/locking/spinlock.c:210
    spin_unlock_bh include/linux/spinlock.h:396 [inline]
    batadv_tt_local_purge+0x1a8/0x1f0 net/batman-adv/translation-table.c:1356
    batadv_tt_purge+0x2b/0x630 net/batman-adv/translation-table.c:3560
    process_one_work kernel/workqueue.c:2630 [inline]
    process_scheduled_works+0x5b8/0xa30 kernel/workqueue.c:2703
    worker_thread+0x525/0x730 kernel/workqueue.c:2784
    kthread+0x1d7/0x210 kernel/kthread.c:388
    ret_from_fork+0x48/0x60 arch/x86/kernel/process.c:147
    ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304
    
    value changed: 0x00000000000d7190 -> 0x00000000000d7191
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 14848 Comm: kworker/u4:11 Not tainted 6.6.0-rc1-syzkaller-00236-gad8a69f361b9 #0
    
    Fixes: 1c29fc4989bc ("[BRIDGE]: keep track of received multicast packets")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Roopa Prabhu <roopa@nvidia.com>
    Cc: Nikolay Aleksandrov <razor@blackwall.org>
    Cc: bridge@lists.linux-foundation.org
    Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
    Link: https://lore.kernel.org/r/20230918091351.1356153-1-edumazet@google.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b7321f5384d7298347b7b824a6af1fae12e2547
Author: Jie Wang <wangjie125@huawei.com>
Date:   Mon Sep 18 15:48:40 2023 +0800

    net: hns3: add 5ms delay before clear firmware reset irq source
    
    [ Upstream commit 0770063096d5da4a8e467b6e73c1646a75589628 ]
    
    Currently the reset process in hns3 and firmware watchdog init process is
    asynchronous. we think firmware watchdog initialization is completed
    before hns3 clear the firmware interrupt source. However, firmware
    initialization may not complete early.
    
    so we add delay before hns3 clear firmware interrupt source and 5 ms delay
    is enough to avoid second firmware reset interrupt.
    
    Fixes: c1a81619d73a ("net: hns3: Add mailbox interrupt handling to PF driver")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d22d1d8d5ad77c0b34fc2f8c74c0c010251f9cb
Author: Jijie Shao <shaojijie@huawei.com>
Date:   Mon Sep 18 15:48:39 2023 +0800

    net: hns3: fix fail to delete tc flower rules during reset issue
    
    [ Upstream commit 1a7be66e4685b8541546222c305cce9710718a88 ]
    
    Firmware does not respond driver commands during reset
    Therefore, rule will fail to delete while the firmware is resetting
    
    So, if failed to delete rule, set rule state to TO_DEL,
    and the rule will be deleted when periodic task being scheduled.
    
    Fixes: 0205ec041ec6 ("net: hns3: add support for hw tc offload of tc flower")
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43302d93a49573165175653939dae507391b8223
Author: Jian Shen <shenjian15@huawei.com>
Date:   Mon Sep 18 15:48:38 2023 +0800

    net: hns3: only enable unicast promisc when mac table full
    
    [ Upstream commit f2ed304922a55690529bcca59678dd92d7466ce8 ]
    
    Currently, the driver will enable unicast promisc for the function
    once configure mac address fail. It's unreasonable when the failure
    is caused by using same mac address with other functions. So only
    enable unicast promisc when mac table full.
    
    Fixes: c631c696823c ("net: hns3: refactor the promisc mode setting")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 07810b795ce440e2c60f3eff5511f1aca6610a69
Author: Jie Wang <wangjie125@huawei.com>
Date:   Mon Sep 18 15:48:37 2023 +0800

    net: hns3: fix GRE checksum offload issue
    
    [ Upstream commit f9f651261130cdcb7adc9a3e365b356bc2749ab3 ]
    
    The device_version V3 hardware can't offload the checksum for IP in GRE
    packets, but can do it for NvGRE. So default to disable the checksum and
    GSO offload for GRE, but keep the ability to enable it when only using
    NvGRE.
    
    Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8399206e694c57fec8da1bc52ef6cb41fa353990
Author: Jie Wang <wangjie125@huawei.com>
Date:   Mon Sep 18 15:48:36 2023 +0800

    net: hns3: add cmdq check for vf periodic service task
    
    [ Upstream commit bd3caddf299a640efb66c6022efed7fe744db626 ]
    
    When the vf cmdq is disabled, there is no need to keep these task running.
    So this patch skip these task when the cmdq is disabled.
    
    Fixes: ff200099d271 ("net: hns3: remove unnecessary work in hclgevf_main")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3cb8b2c391b1f287eb76df4ba37880f4ea56d8a
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Mon Sep 4 22:04:48 2023 -0700

    x86/srso: Fix SBPB enablement for spec_rstack_overflow=off
    
    [ Upstream commit 01b057b2f4cc2d905a0bd92195657dbd9a7005ab ]
    
    If the user has requested no SRSO mitigation, other mitigations can use
    the lighter-weight SBPB instead of IBPB.
    
    Fixes: fb3bd914b3ec ("x86/srso: Add a Speculative RAS Overflow mitigation")
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/b20820c3cfd1003171135ec8d762a0b957348497.1693889988.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96834afc3e4909050b880a9c8006c97bb3d8e80e
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Mon Sep 4 22:04:47 2023 -0700

    x86/srso: Don't probe microcode in a guest
    
    [ Upstream commit 02428d0366a27c2f33bc4361eb10467777804f29 ]
    
    To support live migration, the hypervisor sets the "lowest common
    denominator" of features.  Probing the microcode isn't allowed because
    any detected features might go away after a migration.
    
    As Andy Cooper states:
    
      "Linux must not probe microcode when virtualised.  What it may see
      instantaneously on boot (owing to MSR_PRED_CMD being fully passed
      through) is not accurate for the lifetime of the VM."
    
    Rely on the hypervisor to set the needed IBPB_BRTYPE and SBPB bits.
    
    Fixes: 1b5277c0ea0b ("x86/srso: Add SRSO_NO support")
    Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/3938a7209606c045a3f50305d201d840e8c834c7.1693889988.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit afae367e91c800669d273af6c6269b2800be52ba
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Mon Sep 4 22:04:46 2023 -0700

    x86/srso: Set CPUID feature bits independently of bug or mitigation status
    
    [ Upstream commit 91857ae20303cc98ed36720d9868fcd604a2ee75 ]
    
    Booting with mitigations=off incorrectly prevents the
    X86_FEATURE_{IBPB_BRTYPE,SBPB} CPUID bits from getting set.
    
    Also, future CPUs without X86_BUG_SRSO might still have IBPB with branch
    type prediction flushing, in which case SBPB should be used instead of
    IBPB.  The current code doesn't allow for that.
    
    Also, cpu_has_ibpb_brtype_microcode() has some surprising side effects
    and the setting of these feature bits really doesn't belong in the
    mitigation code anyway.  Move it to earlier.
    
    Fixes: fb3bd914b3ec ("x86/srso: Add a Speculative RAS Overflow mitigation")
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Nikolay Borisov <nik.borisov@suse.com>
    Reviewed-by: Borislav Petkov (AMD) <bp@alien8.de>
    Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/869a1709abfe13b673bdd10c2f4332ca253a40bc.1693889988.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67418b4b4f13c7562a7e5121c9580afbf09ad732
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Mon Sep 4 22:04:45 2023 -0700

    x86/srso: Fix srso_show_state() side effect
    
    [ Upstream commit a8cf700c17d9ca6cb8ee7dc5c9330dbac3948237 ]
    
    Reading the 'spec_rstack_overflow' sysfs file can trigger an unnecessary
    MSR write, and possibly even a (handled) exception if the microcode
    hasn't been updated.
    
    Avoid all that by just checking X86_FEATURE_IBPB_BRTYPE instead, which
    gets set by srso_select_mitigation() if the updated microcode exists.
    
    Fixes: fb3bd914b3ec ("x86/srso: Add a Speculative RAS Overflow mitigation")
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Nikolay Borisov <nik.borisov@suse.com>
    Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/27d128899cb8aee9eb2b57ddc996742b0c1d776b.1693889988.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdcc085dec3cb97ea769edce3236a9559c22ae95
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Mon Sep 18 12:52:34 2023 +0200

    x86/asm: Fix build of UML with KASAN
    
    [ Upstream commit 10f4c9b9a33b7df000f74fa0d896351fb1a61e6a ]
    
    Building UML with KASAN fails since commit 69d4c0d32186 ("entry, kasan,
    x86: Disallow overriding mem*() functions") with the following errors:
    
     $ tools/testing/kunit/kunit.py run --kconfig_add CONFIG_KASAN=y
     ...
     ld: mm/kasan/shadow.o: in function `memset':
     shadow.c:(.text+0x40): multiple definition of `memset';
     arch/x86/lib/memset_64.o:(.noinstr.text+0x0): first defined here
     ld: mm/kasan/shadow.o: in function `memmove':
     shadow.c:(.text+0x90): multiple definition of `memmove';
     arch/x86/lib/memmove_64.o:(.noinstr.text+0x0): first defined here
     ld: mm/kasan/shadow.o: in function `memcpy':
     shadow.c:(.text+0x110): multiple definition of `memcpy';
     arch/x86/lib/memcpy_64.o:(.noinstr.text+0x0): first defined here
    
    UML does not use GENERIC_ENTRY and is still supposed to be allowed to
    override the mem*() functions, so use weak aliases in that case.
    
    Fixes: 69d4c0d32186 ("entry, kasan, x86: Disallow overriding mem*() functions")
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/20230918-uml-kasan-v3-1-7ad6db477df6@axis.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 744eeabd715761e6c7ca4631ed6f86e8b2d5052b
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Wed Sep 13 14:27:22 2023 -0700

    platform/x86: intel_scu_ipc: Fail IPC send if still busy
    
    [ Upstream commit 85e654c9f722853a595fa941dca60c157b707b86 ]
    
    It's possible for interrupts to get significantly delayed to the point
    that callers of intel_scu_ipc_dev_command() and friends can call the
    function once, hit a timeout, and call it again while the interrupt
    still hasn't been processed. This driver will get seriously confused if
    the interrupt is finally processed after the second IPC has been sent
    with ipc_command(). It won't know which IPC has been completed. This
    could be quite disastrous if calling code assumes something has happened
    upon return from intel_scu_ipc_dev_simple_command() when it actually
    hasn't.
    
    Let's avoid this scenario by simply returning -EBUSY in this case.
    Hopefully higher layers will know to back off or fail gracefully when
    this happens. It's all highly unlikely anyway, but it's better to be
    correct here as we have no way to know which IPC the status register is
    telling us about if we send a second IPC while the previous IPC is still
    processing.
    
    Cc: Prashant Malani <pmalani@chromium.org>
    Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Fixes: ed12f295bfd5 ("ipc: Added support for IPC interrupt mode")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20230913212723.3055315-5-swboyd@chromium.org
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 618aa01f7ff5f604feb9a5321e52904a20f7f88c
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Wed Sep 13 14:27:21 2023 -0700

    platform/x86: intel_scu_ipc: Don't override scu in intel_scu_ipc_dev_simple_command()
    
    [ Upstream commit efce78584e583226e9a1f6cb2fb555d6ff47c3e7 ]
    
    Andy discovered this bug during patch review. The 'scu' argument to this
    function shouldn't be overridden by the function itself. It doesn't make
    any sense. Looking at the commit history, we see that commit
    f57fa18583f5 ("platform/x86: intel_scu_ipc: Introduce new SCU IPC API")
    removed the setting of the scu to ipcdev in other functions, but not
    this one. That was an oversight. Remove this line so that we stop
    overriding the scu instance that is used by this function.
    
    Reported-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Closes: https://lore.kernel.org/r/ZPjdZ3xNmBEBvNiS@smile.fi.intel.com
    Cc: Prashant Malani <pmalani@chromium.org>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Fixes: f57fa18583f5 ("platform/x86: intel_scu_ipc: Introduce new SCU IPC API")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20230913212723.3055315-4-swboyd@chromium.org
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09e1a620f7089be116b8b211d65c892060b2a5f3
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Wed Sep 13 14:27:20 2023 -0700

    platform/x86: intel_scu_ipc: Check status upon timeout in ipc_wait_for_interrupt()
    
    [ Upstream commit 427fada620733e6474d783ae6037a66eae42bf8c ]
    
    It's possible for the completion in ipc_wait_for_interrupt() to timeout,
    simply because the interrupt was delayed in being processed. A timeout
    in itself is not an error. This driver should check the status register
    upon a timeout to ensure that scheduling or interrupt processing delays
    don't affect the outcome of the IPC return value.
    
     CPU0                                                   SCU
     ----                                                   ---
     ipc_wait_for_interrupt()
      wait_for_completion_timeout(&scu->cmd_complete)
      [TIMEOUT]                                             status[IPC_STATUS_BUSY]=0
    
    Fix this problem by reading the status bit in all cases, regardless of
    the timeout. If the completion times out, we'll assume the problem was
    that the IPC_STATUS_BUSY bit was still set, but if the status bit is
    cleared in the meantime we know that we hit some scheduling delay and we
    should just check the error bit.
    
    Cc: Prashant Malani <pmalani@chromium.org>
    Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Fixes: ed12f295bfd5 ("ipc: Added support for IPC interrupt mode")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20230913212723.3055315-3-swboyd@chromium.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 341a8fd4eef4ded04a5e684e3d5d745a21aea100
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Wed Sep 13 14:27:19 2023 -0700

    platform/x86: intel_scu_ipc: Check status after timeout in busy_loop()
    
    [ Upstream commit e0b4ab3bb92bda8d12f55842614362989d5b2cb3 ]
    
    It's possible for the polling loop in busy_loop() to get scheduled away
    for a long time.
    
      status = ipc_read_status(scu); // status = IPC_STATUS_BUSY
      <long time scheduled away>
      if (!(status & IPC_STATUS_BUSY))
    
    If this happens, then the status bit could change while the task is
    scheduled away and this function would never read the status again after
    timing out. Instead, the function will return -ETIMEDOUT when it's
    possible that scheduling didn't work out and the status bit was cleared.
    Bit polling code should always check the bit being polled one more time
    after the timeout in case this happens.
    
    Fix this by reading the status once more after the while loop breaks.
    The readl_poll_timeout() macro implements all of this, and it is
    shorter, so use that macro here to consolidate code and fix this.
    
    There were some concerns with using readl_poll_timeout() because it uses
    timekeeping, and timekeeping isn't running early on or during the late
    stages of system suspend or early stages of system resume, but an audit
    of the code concluded that this code isn't called during those times so
    it is safe to use the macro.
    
    Cc: Prashant Malani <pmalani@chromium.org>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Fixes: e7b7ab3847c9 ("platform/x86: intel_scu_ipc: Sleeping is fine when polling")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20230913212723.3055315-2-swboyd@chromium.org
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b53879b9f50b1e3822c42840fbc043d0e34e48f
Author: Lukasz Majewski <lukma@denx.de>
Date:   Fri Sep 15 20:10:02 2023 +0200

    net: hsr: Properly parse HSRv1 supervisor frames.
    
    [ Upstream commit 295de650d3aaf9e50258465c5f1c84b465d836f6 ]
    
    While adding support for parsing the redbox supervision frames, the
    author added `pull_size' and `total_pull_size' to track the amount of
    bytes that were pulled from the skb during while parsing the skb so it
    can be reverted/ pushed back at the end.
    In the process probably copy&paste error occurred and for the HSRv1 case
    the ethhdr was used instead of the hsr_tag. Later the hsr_tag was used
    instead of hsr_sup_tag. The later error didn't matter because both
    structs have the size so HSRv0 was still working. It broke however HSRv1
    parsing because struct ethhdr is larger than struct hsr_tag.
    
    Reinstate the old pulling flow and pull first ethhdr, hsr_tag in v1 case
    followed by hsr_sup_tag.
    
    [bigeasy: commit message]
    
    Fixes: eafaa88b3eb7 ("net: hsr: Add support for redbox supervision frames")'
    Suggested-by: Tristram.Ha@microchip.com
    Signed-off-by: Lukasz Majewski <lukma@denx.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2dfbc0e3b7a04c2d941421a958dc31c897fb204
Author: Rik van Riel <riel@surriel.com>
Date:   Thu Aug 17 13:55:58 2023 -0400

    x86/mm, kexec, ima: Use memblock_free_late() from ima_free_kexec_buffer()
    
    [ Upstream commit 34cf99c250d5cd2530b93a57b0de31d3aaf8685b ]
    
    The code calling ima_free_kexec_buffer() runs long after the memblock
    allocator has already been torn down, potentially resulting in a use
    after free in memblock_isolate_range().
    
    With KASAN or KFENCE, this use after free will result in a BUG
    from the idle task, and a subsequent kernel panic.
    
    Switch ima_free_kexec_buffer() over to memblock_free_late() to avoid
    that bug.
    
    Fixes: fee3ff99bc67 ("powerpc: Move arch independent ima kexec functions to drivers/of/kexec.c")
    Suggested-by: Mike Rappoport <rppt@kernel.org>
    Signed-off-by: Rik van Riel <riel@surriel.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20230817135558.67274c83@imladris.surriel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1512d8f45d3c5d0b5baa00bd8e600492fa569f40
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 15 19:00:35 2023 +0000

    dccp: fix dccp_v4_err()/dccp_v6_err() again
    
    [ Upstream commit 6af289746a636f71f4c0535a9801774118486c7a ]
    
    dh->dccph_x is the 9th byte (offset 8) in "struct dccp_hdr",
    not in the "byte 7" as Jann claimed.
    
    We need to make sure the ICMP messages are big enough,
    using more standard ways (no more assumptions).
    
    syzbot reported:
    BUG: KMSAN: uninit-value in pskb_may_pull_reason include/linux/skbuff.h:2667 [inline]
    BUG: KMSAN: uninit-value in pskb_may_pull include/linux/skbuff.h:2681 [inline]
    BUG: KMSAN: uninit-value in dccp_v6_err+0x426/0x1aa0 net/dccp/ipv6.c:94
    pskb_may_pull_reason include/linux/skbuff.h:2667 [inline]
    pskb_may_pull include/linux/skbuff.h:2681 [inline]
    dccp_v6_err+0x426/0x1aa0 net/dccp/ipv6.c:94
    icmpv6_notify+0x4c7/0x880 net/ipv6/icmp.c:867
    icmpv6_rcv+0x19d5/0x30d0
    ip6_protocol_deliver_rcu+0xda6/0x2a60 net/ipv6/ip6_input.c:438
    ip6_input_finish net/ipv6/ip6_input.c:483 [inline]
    NF_HOOK include/linux/netfilter.h:304 [inline]
    ip6_input+0x15d/0x430 net/ipv6/ip6_input.c:492
    ip6_mc_input+0xa7e/0xc80 net/ipv6/ip6_input.c:586
    dst_input include/net/dst.h:468 [inline]
    ip6_rcv_finish+0x5db/0x870 net/ipv6/ip6_input.c:79
    NF_HOOK include/linux/netfilter.h:304 [inline]
    ipv6_rcv+0xda/0x390 net/ipv6/ip6_input.c:310
    __netif_receive_skb_one_core net/core/dev.c:5523 [inline]
    __netif_receive_skb+0x1a6/0x5a0 net/core/dev.c:5637
    netif_receive_skb_internal net/core/dev.c:5723 [inline]
    netif_receive_skb+0x58/0x660 net/core/dev.c:5782
    tun_rx_batched+0x83b/0x920
    tun_get_user+0x564c/0x6940 drivers/net/tun.c:2002
    tun_chr_write_iter+0x3af/0x5d0 drivers/net/tun.c:2048
    call_write_iter include/linux/fs.h:1985 [inline]
    new_sync_write fs/read_write.c:491 [inline]
    vfs_write+0x8ef/0x15c0 fs/read_write.c:584
    ksys_write+0x20f/0x4c0 fs/read_write.c:637
    __do_sys_write fs/read_write.c:649 [inline]
    __se_sys_write fs/read_write.c:646 [inline]
    __x64_sys_write+0x93/0xd0 fs/read_write.c:646
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Uninit was created at:
    slab_post_alloc_hook+0x12f/0xb70 mm/slab.h:767
    slab_alloc_node mm/slub.c:3478 [inline]
    kmem_cache_alloc_node+0x577/0xa80 mm/slub.c:3523
    kmalloc_reserve+0x13d/0x4a0 net/core/skbuff.c:559
    __alloc_skb+0x318/0x740 net/core/skbuff.c:650
    alloc_skb include/linux/skbuff.h:1286 [inline]
    alloc_skb_with_frags+0xc8/0xbd0 net/core/skbuff.c:6313
    sock_alloc_send_pskb+0xa80/0xbf0 net/core/sock.c:2795
    tun_alloc_skb drivers/net/tun.c:1531 [inline]
    tun_get_user+0x23cf/0x6940 drivers/net/tun.c:1846
    tun_chr_write_iter+0x3af/0x5d0 drivers/net/tun.c:2048
    call_write_iter include/linux/fs.h:1985 [inline]
    new_sync_write fs/read_write.c:491 [inline]
    vfs_write+0x8ef/0x15c0 fs/read_write.c:584
    ksys_write+0x20f/0x4c0 fs/read_write.c:637
    __do_sys_write fs/read_write.c:649 [inline]
    __se_sys_write fs/read_write.c:646 [inline]
    __x64_sys_write+0x93/0xd0 fs/read_write.c:646
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    CPU: 0 PID: 4995 Comm: syz-executor153 Not tainted 6.6.0-rc1-syzkaller-00014-ga747acc0b752 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/04/2023
    
    Fixes: 977ad86c2a1b ("dccp: Fix out of bounds access in DCCP error handler")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jann Horn <jannh@google.com>
    Reviewed-by: Jann Horn <jannh@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82c302f3eb995d15043a6df0f68fc1ccfa75f8c3
Author: Benjamin Gray <bgray@linux.ibm.com>
Date:   Fri Sep 15 13:46:04 2023 +1000

    powerpc/dexcr: Move HASHCHK trap handler
    
    [ Upstream commit c3f4309693758b13fbb34b3741c2e2801ad28769 ]
    
    Syzkaller reported a sleep in atomic context bug relating to the HASHCHK
    handler logic:
    
      BUG: sleeping function called from invalid context at arch/powerpc/kernel/traps.c:1518
      in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 25040, name: syz-executor
      preempt_count: 0, expected: 0
      RCU nest depth: 0, expected: 0
      no locks held by syz-executor/25040.
      irq event stamp: 34
      hardirqs last  enabled at (33): [<c000000000048b38>] prep_irq_for_enabled_exit arch/powerpc/kernel/interrupt.c:56 [inline]
      hardirqs last  enabled at (33): [<c000000000048b38>] interrupt_exit_user_prepare_main+0x148/0x600 arch/powerpc/kernel/interrupt.c:230
      hardirqs last disabled at (34): [<c00000000003e6a4>] interrupt_enter_prepare+0x144/0x4f0 arch/powerpc/include/asm/interrupt.h:176
      softirqs last  enabled at (0): [<c000000000281954>] copy_process+0x16e4/0x4750 kernel/fork.c:2436
      softirqs last disabled at (0): [<0000000000000000>] 0x0
      CPU: 15 PID: 25040 Comm: syz-executor Not tainted 6.5.0-rc5-00001-g3ccdff6bb06d #3
      Hardware name: IBM,9105-22A POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1040.00 (NL1040_021) hv:phyp pSeries
      Call Trace:
      [c0000000a8247ce0] [c00000000032b0e4] __might_resched+0x3b4/0x400 kernel/sched/core.c:10189
      [c0000000a8247d80] [c0000000008c7dc8] __might_fault+0xa8/0x170 mm/memory.c:5853
      [c0000000a8247dc0] [c00000000004160c] do_program_check+0x32c/0xb20 arch/powerpc/kernel/traps.c:1518
      [c0000000a8247e50] [c000000000009b2c] program_check_common_virt+0x3bc/0x3c0
    
    To determine if a trap was caused by a HASHCHK instruction, we inspect
    the user instruction that triggered the trap. However this may sleep
    if the page needs to be faulted in (get_user_instr() reaches
    __get_user(), which calls might_fault() and triggers the bug message).
    
    Move the HASHCHK handler logic to after we allow IRQs, which is fine
    because we are only interested in HASHCHK if it's a user space trap.
    
    Fixes: 5bcba4e6c13f ("powerpc/dexcr: Handle hashchk exception")
    Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230915034604.45393-1-bgray@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f55797de0effa07b7c9b2546e630d4537d6bb77
Author: Kajol Jain <kjain@linux.ibm.com>
Date:   Fri Aug 25 11:26:01 2023 +0530

    powerpc/perf/hv-24x7: Update domain value check
    
    [ Upstream commit 4ff3ba4db5943cac1045e3e4a3c0463ea10f6930 ]
    
    Valid domain value is in range 1 to HV_PERF_DOMAIN_MAX. Current code has
    check for domain value greater than or equal to HV_PERF_DOMAIN_MAX. But
    the check for domain value 0 is missing.
    
    Fix this issue by adding check for domain value 0.
    
    Before:
      # ./perf stat -v -e hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/ sleep 1
      Using CPUID 00800200
      Control descriptor is not initialized
      Error:
      The sys_perf_event_open() syscall returned with 5 (Input/output error) for
      event (hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/).
      /bin/dmesg | grep -i perf may provide additional information.
    
      Result from dmesg:
      [   37.819387] hv-24x7: hcall failed: [0 0x60040000 0x100 0] => ret
      0xfffffffffffffffc (-4) detail=0x2000000 failing ix=0
    
    After:
      # ./perf stat -v -e hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/ sleep 1
      Using CPUID 00800200
      Control descriptor is not initialized
      Warning:
      hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/ event is not supported by the kernel.
      failed to read counter hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/
    
    Fixes: ebd4a5a3ebd9 ("powerpc/perf/hv-24x7: Minor improvements")
    Reported-by: Krishan Gopal Sarawast <krishang@linux.vnet.ibm.com>
    Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
    Tested-by: Disha Goel <disgoel@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230825055601.360083-1-kjain@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 502386ae61f95dc9bf308eec4dcbf69ebca7ebba
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 15 17:11:11 2023 +0000

    scsi: iscsi_tcp: restrict to TCP sockets
    
    [ Upstream commit f4f82c52a0ead5ab363d207d06f81b967d09ffb8 ]
    
    Nothing prevents iscsi_sw_tcp_conn_bind() to receive file descriptor
    pointing to non TCP socket (af_unix for example).
    
    Return -EINVAL if this is attempted, instead of crashing the kernel.
    
    Fixes: 7ba247138907 ("[SCSI] open-iscsi/linux-iscsi-5 Initiator: Initiator code")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Lee Duncan <lduncan@suse.com>
    Cc: Chris Leech <cleech@redhat.com>
    Cc: Mike Christie <michael.christie@oracle.com>
    Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: open-iscsi@googlegroups.com
    Cc: linux-scsi@vger.kernel.org
    Reviewed-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cda20fcddf53f0f959641c8ef4d50ab87ffa5124
Author: Kyle Zeng <zengyhkyle@gmail.com>
Date:   Thu Sep 14 22:12:57 2023 -0700

    ipv4: fix null-deref in ipv4_link_failure
    
    [ Upstream commit 0113d9c9d1ccc07f5a3710dac4aa24b6d711278c ]
    
    Currently, we assume the skb is associated with a device before calling
    __ip_options_compile, which is not always the case if it is re-routed by
    ipvs.
    When skb->dev is NULL, dev_net(skb->dev) will become null-dereference.
    This patch adds a check for the edge case and switch to use the net_device
    from the rtable when skb->dev is NULL.
    
    Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure")
    Suggested-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Kyle Zeng <zengyhkyle@gmail.com>
    Cc: Stephen Suryaputra <ssuryaextr@gmail.com>
    Cc: Vadim Fedorenko <vfedorenko@novek.ru>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f82def005375db03b8b0baa6a0a4086e6a675c20
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Wed Sep 13 11:06:15 2023 -0700

    igc: Fix infinite initialization loop with early XDP redirect
    
    [ Upstream commit cb47b1f679c4d83a5fa5f1852e472f844e41a3da ]
    
    When an XDP redirect happens before the link is ready, that
    transmission will not finish and will timeout, causing an adapter
    reset. If the redirects do not stop, the adapter will not stop
    resetting.
    
    Wait for the driver to signal that there's a carrier before allowing
    transmissions to proceed.
    
    Previous code was relying that when __IGC_DOWN is cleared, the NIC is
    ready to transmit as all the queues are ready, what happens is that
    the carrier presence will only be signaled later, after the watchdog
    workqueue has a chance to run. And during this interval (between
    clearing __IGC_DOWN and the watchdog running) if any transmission
    happens the timeout is emitted (detected by igc_tx_timeout()) which
    causes the reset, with the potential for the infinite loop.
    
    Fixes: 4ff320361092 ("igc: Add support for XDP_REDIRECT action")
    Reported-by: Ferenc Fejes <ferenc.fejes@ericsson.com>
    Closes: https://lore.kernel.org/netdev/0caf33cf6adb3a5bf137eeaa20e89b167c9986d5.camel@ericsson.com/
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Ferenc Fejes <ferenc.fejes@ericsson.com>
    Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04fe6c09129bb2c4947b2ea2a84ce75ac7037eb3
Author: David Christensen <drc@linux.vnet.ibm.com>
Date:   Thu Sep 14 18:02:52 2023 -0400

    ionic: fix 16bit math issue when PAGE_SIZE >= 64KB
    
    [ Upstream commit 8f6b846b0a86c3cbae8a25b772651cfc2270ad0a ]
    
    The ionic device supports a maximum buffer length of 16 bits (see
    ionic_rxq_desc or ionic_rxq_sg_elem).  When adding new buffers to
    the receive rings, the function ionic_rx_fill() uses 16bit math when
    calculating the number of pages to allocate for an RX descriptor,
    given the interface's MTU setting. If the system PAGE_SIZE >= 64KB,
    and the buf_info->page_offset is 0, the remain_len value will never
    decrement from the original MTU value and the frag_len value will
    always be 0, causing additional pages to be allocated as scatter-
    gather elements unnecessarily.
    
    A similar math issue exists in ionic_rx_frags(), but no failures
    have been observed here since a 64KB page should not normally
    require any scatter-gather elements at any legal Ethernet MTU size.
    
    Fixes: 4b0a7539a372 ("ionic: implement Rx page reuse")
    Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
    Reviewed-by: Shannon Nelson <shannon.nelson@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3bfd4588b89a33e090dc66205198781639f7bf2
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Wed Aug 30 03:07:43 2023 +0200

    netfilter, bpf: Adjust timeouts of non-confirmed CTs in bpf_ct_insert_entry()
    
    [ Upstream commit 837723b22a63cfbff584655b009b9d488d0e9087 ]
    
    bpf_nf testcase fails on s390x: bpf_skb_ct_lookup() cannot find the entry
    that was added by bpf_ct_insert_entry() within the same BPF function.
    
    The reason is that this entry is deleted by nf_ct_gc_expired().
    
    The CT timeout starts ticking after the CT confirmation; therefore
    nf_conn.timeout is initially set to the timeout value, and
    __nf_conntrack_confirm() sets it to the deadline value.
    
    bpf_ct_insert_entry() sets IPS_CONFIRMED_BIT, but does not adjust the
    timeout, making its value meaningless and causing false positives.
    
    Fix the problem by making bpf_ct_insert_entry() adjust the timeout,
    like __nf_conntrack_confirm().
    
    Fixes: 2cdaa3eefed8 ("netfilter: conntrack: restore IPS_CONFIRMED out of nf_conntrack_hash_check_insert()")
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Florian Westphal <fw@strlen.de>
    Link: https://lore.kernel.org/bpf/20230830011128.1415752-3-iii@linux.ibm.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eefc7f7f6a521a53a0ef4497f4ed721f8568c062
Author: Ivan Vecera <ivecera@redhat.com>
Date:   Thu Sep 7 17:44:57 2023 +0200

    i40e: Fix VF VLAN offloading when port VLAN is configured
    
    [ Upstream commit d0d362ffa33da4acdcf7aee2116ceef8c8fef658 ]
    
    If port VLAN is configured on a VF then any other VLANs on top of this VF
    are broken.
    
    During i40e_ndo_set_vf_port_vlan() call the i40e driver reset the VF and
    iavf driver asks PF (using VIRTCHNL_OP_GET_VF_RESOURCES) for VF capabilities
    but this reset occurs too early, prior setting of vf->info.pvid field
    and because this field can be zero during i40e_vc_get_vf_resources_msg()
    then VIRTCHNL_VF_OFFLOAD_VLAN capability is reported to iavf driver.
    
    This is wrong because iavf driver should not report VLAN offloading
    capability when port VLAN is configured as i40e does not support QinQ
    offloading.
    
    Fix the issue by moving VF reset after setting of vf->port_vlan_id
    field.
    
    Without this patch:
    $ echo 1 > /sys/class/net/enp2s0f0/device/sriov_numvfs
    $ ip link set enp2s0f0 vf 0 vlan 3
    $ ip link set enp2s0f0v0 up
    $ ip link add link enp2s0f0v0 name vlan4 type vlan id 4
    $ ip link set vlan4 up
    ...
    $ ethtool -k enp2s0f0v0 | grep vlan-offload
    rx-vlan-offload: on
    tx-vlan-offload: on
    $ dmesg -l err | grep iavf
    [1292500.742914] iavf 0000:02:02.0: Failed to add VLAN filter, error IAVF_ERR_INVALID_QP_ID
    
    With this patch:
    $ echo 1 > /sys/class/net/enp2s0f0/device/sriov_numvfs
    $ ip link set enp2s0f0 vf 0 vlan 3
    $ ip link set enp2s0f0v0 up
    $ ip link add link enp2s0f0v0 name vlan4 type vlan id 4
    $ ip link set vlan4 up
    ...
    $ ethtool -k enp2s0f0v0 | grep vlan-offload
    rx-vlan-offload: off [requested on]
    tx-vlan-offload: off [requested on]
    $ dmesg -l err | grep iavf
    
    Fixes: f9b4b6278d51 ("i40e: Reset the VF upon conflicting VLAN configuration")
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3680526cbbee257b8cb17fb9b3a141f98357840d
Author: Petr Oros <poros@redhat.com>
Date:   Thu Sep 7 17:02:51 2023 +0200

    iavf: schedule a request immediately after add/delete vlan
    
    [ Upstream commit 5f3d319a248654a805bafc9e7094bcea47dac6c7 ]
    
    When the iavf driver wants to reconfigure the VLAN filters
    (iavf_add_vlan, iavf_del_vlan), it sets a flag in
    aq_required:
      adapter->aq_required |= IAVF_FLAG_AQ_ADD_VLAN_FILTER;
    or:
      adapter->aq_required |= IAVF_FLAG_AQ_DEL_VLAN_FILTER;
    
    This is later processed by the watchdog_task, but it runs periodically
    every 2 seconds, so it can be a long time before it processes the request.
    
    In the worst case, the interface is unable to receive traffic for more
    than 2 seconds for no objective reason.
    
    Fixes: 5eae00c57f5e ("i40evf: main driver core")
    Signed-off-by: Petr Oros <poros@redhat.com>
    Co-developed-by: Michal Schmidt <mschmidt@redhat.com>
    Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
    Co-developed-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Reviewed-by: Ahmed Zaki <ahmed.zaki@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit abab434231b51b492346044f6f50dc1d9c3b61d1
Author: Petr Oros <poros@redhat.com>
Date:   Thu Sep 7 17:02:50 2023 +0200

    iavf: add iavf_schedule_aq_request() helper
    
    [ Upstream commit ed4cad33df9e272feaa6698b33359b29c2929564 ]
    
    Add helper for set iavf aq request AVF_FLAG_AQ_* and immediately
    schedule watchdog_task. Helper will be used in cases where it is
    necessary to run aq requests asap
    
    Signed-off-by: Petr Oros <poros@redhat.com>
    Co-developed-by: Michal Schmidt <mschmidt@redhat.com>
    Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
    Co-developed-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: 5f3d319a2486 ("iavf: schedule a request immediately after add/delete vlan")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 867009dcfbd1abb25b341bad99c11bdaed7502f6
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Fri Sep 15 15:40:15 2023 +0300

    ASoC: SOF: core: Only call sof_ops_free() on remove if the probe was successful
    
    [ Upstream commit 31bb7bd9ffee50d09ec931998b823a86132ab807 ]
    
    All the fail paths during probe will free up the ops, on remove we should
    only free it if the probe was successful.
    
    Fixes: bc433fd76fae ("ASoC: SOF: Add ops_free")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Rander Wang <rander.wang@intel.com>
    Link: https://lore.kernel.org/r/20230915124015.19637-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4d1fdaaace770b9a9075ae62479db76d7688470
Author: Radoslaw Tyl <radoslawx.tyl@intel.com>
Date:   Mon Aug 7 14:59:40 2023 +0200

    iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set
    
    [ Upstream commit c8de44b577eb540e8bfea55afe1d0904bb571b7a ]
    
    Prevent schedule operations for adminq during device remove and when
    __IAVF_IN_REMOVE_TASK flag is set. Currently, the iavf_down function
    adds operations for adminq that shouldn't be processed when the device
    is in the __IAVF_REMOVE state.
    
    Reproduction:
    
    echo 4 > /sys/bus/pci/devices/0000:17:00.0/sriov_numvfs
    ip link set dev ens1f0 vf 0 trust on
    ip link set dev ens1f0 vf 1 trust on
    ip link set dev ens1f0 vf 2 trust on
    ip link set dev ens1f0 vf 3 trust on
    
    ip link set dev ens1f0 vf 0 mac 00:22:33:44:55:66
    ip link set dev ens1f0 vf 1 mac 00:22:33:44:55:67
    ip link set dev ens1f0 vf 2 mac 00:22:33:44:55:68
    ip link set dev ens1f0 vf 3 mac 00:22:33:44:55:69
    
    echo 0000:17:02.0 > /sys/bus/pci/devices/0000\:17\:02.0/driver/unbind
    echo 0000:17:02.1 > /sys/bus/pci/devices/0000\:17\:02.1/driver/unbind
    echo 0000:17:02.2 > /sys/bus/pci/devices/0000\:17\:02.2/driver/unbind
    echo 0000:17:02.3 > /sys/bus/pci/devices/0000\:17\:02.3/driver/unbind
    sleep 10
    echo 0000:17:02.0 > /sys/bus/pci/drivers/iavf/bind
    echo 0000:17:02.1 > /sys/bus/pci/drivers/iavf/bind
    echo 0000:17:02.2 > /sys/bus/pci/drivers/iavf/bind
    echo 0000:17:02.3 > /sys/bus/pci/drivers/iavf/bind
    
    modprobe vfio-pci
    echo 8086 154c > /sys/bus/pci/drivers/vfio-pci/new_id
    
    qemu-system-x86_64 -accel kvm -m 4096 -cpu host \
    -drive file=centos9.qcow2,if=none,id=virtio-disk0 \
    -device virtio-blk-pci,drive=virtio-disk0,bootindex=0 -smp 4 \
    -device vfio-pci,host=17:02.0 -net none \
    -device vfio-pci,host=17:02.1 -net none \
    -device vfio-pci,host=17:02.2 -net none \
    -device vfio-pci,host=17:02.3 -net none \
    -daemonize -vnc :5
    
    Current result:
    There is a probability that the mac of VF in guest is inconsistent with
    it in host
    
    Expected result:
    When passthrough NIC VF to guest, the VF in guest should always get
    the same mac as it in host.
    
    Fixes: 14756b2ae265 ("iavf: Fix __IAVF_RESETTING state usage")
    Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21645c3520384510f663cce858e949cf23f66c92
Author: Shinas Rasheed <srasheed@marvell.com>
Date:   Wed Sep 13 01:41:56 2023 -0700

    octeon_ep: fix tx dma unmap len values in SG
    
    [ Upstream commit 350db8a59eb392bf42e62b6b2a37d56b5833012b ]
    
    Lengths of SG pointers are kept in the following order in
    the SG entries in hardware.
     63      48|47     32|31     16|15       0
     -----------------------------------------
     |  Len 0  |  Len 1  |  Len 2  |  Len 3  |
     -----------------------------------------
     |                Ptr 0                  |
     -----------------------------------------
     |                Ptr 1                  |
     -----------------------------------------
     |                Ptr 2                  |
     -----------------------------------------
     |                Ptr 3                  |
     -----------------------------------------
    Dma pointers have to be unmapped based on their
    respective lengths given in this format.
    
    Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support")
    Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a2dbdd1f0f2cc0207e349e0c4a2044fcedbc19f
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Fri Sep 15 14:02:11 2023 +0800

    ASoC: imx-audmix: Fix return error with devm_clk_get()
    
    [ Upstream commit b19a5733de255cabba5feecabf6e900638b582d1 ]
    
    The devm_clk_get() can return -EPROBE_DEFER error,
    modify the error code to be -EINVAL is not correct, which
    cause the -EPROBE_DEFER error is not correctly handled.
    
    This patch is to fix the return error code.
    
    Fixes: b86ef5367761 ("ASoC: fsl: Add Audio Mixer machine driver")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
    Link: https://lore.kernel.org/r/1694757731-18308-1-git-send-email-shengjiu.wang@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62a09e61afa217254aba72ddc5b43d5724cf2464
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Fri Sep 15 02:13:44 2023 +0000

    ASoC: hdaudio.c: Add missing check for devm_kstrdup
    
    [ Upstream commit c04efbfd76d23157e64e6d6147518c187ab4233a ]
    
    Because of the potential failure of the devm_kstrdup(), the
    dl[i].codecs->name could be NULL.
    Therefore, we need to check it and return -ENOMEM in order to transfer
    the error.
    
    Fixes: 97030a43371e ("ASoC: Intel: avs: Add HDAudio machine board")
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Link: https://lore.kernel.org/r/20230915021344.3078-1-nichen@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac451e0a4700c14eb6b6c2fe0aebe80b844c7c37
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Sep 15 10:27:50 2023 +0200

    ALSA: seq: ump: Fix -Wformat-truncation warning
    
    [ Upstream commit 0d42260867f9ff3e3a5bcfa8750fa06a658e0b1c ]
    
    The filling of a port name string got a warning with W=1 due to the
    potentially too long group name.  Add the string precision to limit
    the size.
    
    Fixes: 81fd444aa371 ("ALSA: seq: Bind UMP device")
    Link: https://lore.kernel.org/r/20230915082802.28684-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48e105a2a1a10adc21c0ae717969f5e8e990ba48
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Wed Sep 13 09:39:05 2023 +0300

    net/core: Fix ETH_P_1588 flow dissector
    
    [ Upstream commit 75ad80ed88a182ab2ad5513e448cf07b403af5c3 ]
    
    When a PTP ethernet raw frame with a size of more than 256 bytes followed
    by a 0xff pattern is sent to __skb_flow_dissect, nhoff value calculation
    is wrong. For example: hdr->message_length takes the wrong value (0xffff)
    and it does not replicate real header length. In this case, 'nhoff' value
    was overridden and the PTP header was badly dissected. This leads to a
    kernel crash.
    
    net/core: flow_dissector
    net/core flow dissector nhoff = 0x0000000e
    net/core flow dissector hdr->message_length = 0x0000ffff
    net/core flow dissector nhoff = 0x0001000d (u16 overflow)
    ...
    skb linear:   00000000: 00 a0 c9 00 00 00 00 a0 c9 00 00 00 88
    skb frag:     00000000: f7 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    
    Using the size of the ptp_header struct will allow the corrected
    calculation of the nhoff value.
    
    net/core flow dissector nhoff = 0x0000000e
    net/core flow dissector nhoff = 0x00000030 (sizeof ptp_header)
    ...
    skb linear:   00000000: 00 a0 c9 00 00 00 00 a0 c9 00 00 00 88 f7 ff ff
    skb linear:   00000010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    skb linear:   00000020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    skb frag:     00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    
    Kernel trace:
    [   74.984279] ------------[ cut here ]------------
    [   74.989471] kernel BUG at include/linux/skbuff.h:2440!
    [   74.995237] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    [   75.001098] CPU: 4 PID: 0 Comm: swapper/4 Tainted: G     U            5.15.85-intel-ese-standard-lts #1
    [   75.011629] Hardware name: Intel Corporation A-Island (CPU:AlderLake)/A-Island (ID:06), BIOS SB_ADLP.01.01.00.01.03.008.D-6A9D9E73-dirty Mar 30 2023
    [   75.026507] RIP: 0010:eth_type_trans+0xd0/0x130
    [   75.031594] Code: 03 88 47 78 eb c7 8b 47 68 2b 47 6c 48 8b 97 c0 00 00 00 83 f8 01 7e 1b 48 85 d2 74 06 66 83 3a ff 74 09 b8 00 04 00 00 eb ab <0f> 0b b8 00 01 00 00 eb a2 48 85 ff 74 eb 48 8d 54 24 06 31 f6 b9
    [   75.052612] RSP: 0018:ffff9948c0228de0 EFLAGS: 00010297
    [   75.058473] RAX: 00000000000003f2 RBX: ffff8e47047dc300 RCX: 0000000000001003
    [   75.066462] RDX: ffff8e4e8c9ea040 RSI: ffff8e4704e0a000 RDI: ffff8e47047dc300
    [   75.074458] RBP: ffff8e4704e2acc0 R08: 00000000000003f3 R09: 0000000000000800
    [   75.082466] R10: 000000000000000d R11: ffff9948c0228dec R12: ffff8e4715e4e010
    [   75.090461] R13: ffff9948c0545018 R14: 0000000000000001 R15: 0000000000000800
    [   75.098464] FS:  0000000000000000(0000) GS:ffff8e4e8fb00000(0000) knlGS:0000000000000000
    [   75.107530] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   75.113982] CR2: 00007f5eb35934a0 CR3: 0000000150e0a002 CR4: 0000000000770ee0
    [   75.121980] PKRU: 55555554
    [   75.125035] Call Trace:
    [   75.127792]  <IRQ>
    [   75.130063]  ? eth_get_headlen+0xa4/0xc0
    [   75.134472]  igc_process_skb_fields+0xcd/0x150
    [   75.139461]  igc_poll+0xc80/0x17b0
    [   75.143272]  __napi_poll+0x27/0x170
    [   75.147192]  net_rx_action+0x234/0x280
    [   75.151409]  __do_softirq+0xef/0x2f4
    [   75.155424]  irq_exit_rcu+0xc7/0x110
    [   75.159432]  common_interrupt+0xb8/0xd0
    [   75.163748]  </IRQ>
    [   75.166112]  <TASK>
    [   75.168473]  asm_common_interrupt+0x22/0x40
    [   75.173175] RIP: 0010:cpuidle_enter_state+0xe2/0x350
    [   75.178749] Code: 85 c0 0f 8f 04 02 00 00 31 ff e8 39 6c 67 ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 50 02 00 00 31 ff e8 52 b0 6d ff fb 45 85 f6 <0f> 88 b1 00 00 00 49 63 ce 4c 2b 2c 24 48 89 c8 48 6b d1 68 48 c1
    [   75.199757] RSP: 0018:ffff9948c013bea8 EFLAGS: 00000202
    [   75.205614] RAX: ffff8e4e8fb00000 RBX: ffffb948bfd23900 RCX: 000000000000001f
    [   75.213619] RDX: 0000000000000004 RSI: ffffffff94206161 RDI: ffffffff94212e20
    [   75.221620] RBP: 0000000000000004 R08: 000000117568973a R09: 0000000000000001
    [   75.229622] R10: 000000000000afc8 R11: ffff8e4e8fb29ce4 R12: ffffffff945ae980
    [   75.237628] R13: 000000117568973a R14: 0000000000000004 R15: 0000000000000000
    [   75.245635]  ? cpuidle_enter_state+0xc7/0x350
    [   75.250518]  cpuidle_enter+0x29/0x40
    [   75.254539]  do_idle+0x1d9/0x260
    [   75.258166]  cpu_startup_entry+0x19/0x20
    [   75.262582]  secondary_startup_64_no_verify+0xc2/0xcb
    [   75.268259]  </TASK>
    [   75.270721] Modules linked in: 8021q snd_sof_pci_intel_tgl snd_sof_intel_hda_common tpm_crb snd_soc_hdac_hda snd_sof_intel_hda snd_hda_ext_core snd_sof_pci snd_sof snd_sof_xtensa_dsp snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core snd_compress iTCO_wdt ac97_bus intel_pmc_bxt mei_hdcp iTCO_vendor_support snd_hda_codec_hdmi pmt_telemetry intel_pmc_core pmt_class snd_hda_intel x86_pkg_temp_thermal snd_intel_dspcfg snd_hda_codec snd_hda_core kvm_intel snd_pcm snd_timer kvm snd mei_me soundcore tpm_tis irqbypass i2c_i801 mei tpm_tis_core pcspkr intel_rapl_msr tpm i2c_smbus intel_pmt thermal sch_fq_codel uio uhid i915 drm_buddy video drm_display_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm fuse configfs
    [   75.342736] ---[ end trace 3785f9f360400e3a ]---
    [   75.347913] RIP: 0010:eth_type_trans+0xd0/0x130
    [   75.352984] Code: 03 88 47 78 eb c7 8b 47 68 2b 47 6c 48 8b 97 c0 00 00 00 83 f8 01 7e 1b 48 85 d2 74 06 66 83 3a ff 74 09 b8 00 04 00 00 eb ab <0f> 0b b8 00 01 00 00 eb a2 48 85 ff 74 eb 48 8d 54 24 06 31 f6 b9
    [   75.373994] RSP: 0018:ffff9948c0228de0 EFLAGS: 00010297
    [   75.379860] RAX: 00000000000003f2 RBX: ffff8e47047dc300 RCX: 0000000000001003
    [   75.387856] RDX: ffff8e4e8c9ea040 RSI: ffff8e4704e0a000 RDI: ffff8e47047dc300
    [   75.395864] RBP: ffff8e4704e2acc0 R08: 00000000000003f3 R09: 0000000000000800
    [   75.403857] R10: 000000000000000d R11: ffff9948c0228dec R12: ffff8e4715e4e010
    [   75.411863] R13: ffff9948c0545018 R14: 0000000000000001 R15: 0000000000000800
    [   75.419875] FS:  0000000000000000(0000) GS:ffff8e4e8fb00000(0000) knlGS:0000000000000000
    [   75.428946] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   75.435403] CR2: 00007f5eb35934a0 CR3: 0000000150e0a002 CR4: 0000000000770ee0
    [   75.443410] PKRU: 55555554
    [   75.446477] Kernel panic - not syncing: Fatal exception in interrupt
    [   75.453738] Kernel Offset: 0x11c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    [   75.465794] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Fixes: 4f1cc51f3488 ("net: flow_dissector: Parse PTP L2 packet header")
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 959a41af6a8f905767d3a645e1df227991be432b
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Sep 12 16:16:25 2023 +0200

    selftests: tls: swap the TX and RX sockets in some tests
    
    [ Upstream commit c326ca98446e0ae4fee43a40acf79412b74cfedb ]
    
    tls.sendmsg_large and tls.sendmsg_multiple are trying to send through
    the self->cfd socket (only configured with TLS_RX) and to receive through
    the self->fd socket (only configured with TLS_TX), so they're not using
    kTLS at all. Swap the sockets.
    
    Fixes: 7f657d5bf507 ("selftests: tls: add selftests for TLS sockets")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4f3cc315dc2419f9af3cb9737b7812b78b092d4
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Tue Sep 12 19:03:10 2023 +0800

    net: microchip: sparx5: Fix possible memory leaks in vcap_api_kunit
    
    [ Upstream commit 2a2dffd911d4139258b828b9c5056cb64b826758 ]
    
    Inject fault while probing kunit-example-test.ko, the duprule which
    is allocated by kzalloc in vcap_dup_rule() of
    test_vcap_xn_rule_creator() is not freed, and it cause the memory leaks
    below. Use vcap_del_rule() to free them as other functions do it.
    
    unreferenced object 0xffff6eb4846f6180 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895522 (age 880.004s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 0a 00 00 00 f4 01 00 00  .'..............
        00 00 00 00 00 00 00 00 98 61 6f 84 b4 6e ff ff  .........ao..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000d2ac4ccb>] vcap_api_rule_insert_in_order_test+0xa4/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4846f6240 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 879.996s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
        00 00 00 00 00 00 00 00 58 62 6f 84 b4 6e ff ff  ........Xbo..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<0000000052e6ad35>] vcap_api_rule_insert_in_order_test+0xbc/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4846f6300 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 879.996s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 18 63 6f 84 b4 6e ff ff  .........co..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<000000001b0895d4>] vcap_api_rule_insert_in_order_test+0xd4/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4846f63c0 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 880.012s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 28 00 00 00 c8 00 00 00  .'......(.......
        00 00 00 00 00 00 00 00 d8 63 6f 84 b4 6e ff ff  .........co..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000134c151f>] vcap_api_rule_insert_in_order_test+0xec/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc180 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 c8 00 00 00  .'..............
        00 00 00 00 00 00 00 00 98 c1 5f 84 b4 6e ff ff  .........._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000fa5f64d3>] vcap_api_rule_insert_reverse_order_test+0xc8/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc240 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 58 c2 5f 84 b4 6e ff ff  ........X._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000a7db42de>] vcap_api_rule_insert_reverse_order_test+0x108/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc300 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 28 00 00 00 90 01 00 00  .'......(.......
        00 00 00 00 00 00 00 00 18 c3 5f 84 b4 6e ff ff  .........._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000ea416c94>] vcap_api_rule_insert_reverse_order_test+0x150/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc3c0 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.020s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 32 00 00 00 f4 01 00 00  .'......2.......
        00 00 00 00 00 00 00 00 d8 c3 5f 84 b4 6e ff ff  .........._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000764a39b4>] vcap_api_rule_insert_reverse_order_test+0x198/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb484cd4240 (size 192):
      comm "kunit_try_catch", pid 413, jiffies 4294895543 (age 879.956s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 58 42 cd 84 b4 6e ff ff  ........XB...n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<0000000023976dd4>] vcap_api_rule_remove_in_front_test+0x158/0x658
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb484cd4300 (size 192):
      comm "kunit_try_catch", pid 413, jiffies 4294895543 (age 879.956s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 28 00 00 00 c8 00 00 00  .'......(.......
        00 00 00 00 00 00 00 00 18 43 cd 84 b4 6e ff ff  .........C...n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<000000000b4760ff>] vcap_api_rule_remove_in_front_test+0x170/0x658
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    
    Fixes: dccc30cc4906 ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e7c9e2de0d1a34edabdf8456b35a83c86c65102
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Tue Sep 12 19:03:09 2023 +0800

    net: microchip: sparx5: Fix possible memory leaks in test_vcap_xn_rule_creator()
    
    [ Upstream commit 20146fa73ab8db2ab9f4916bbaf4610646787a09 ]
    
    Inject fault while probing kunit-example-test.ko, the rule which
    is allocated by kzalloc in vcap_alloc_rule(), the field which is
    allocated by kzalloc in vcap_rule_add_action() and
    vcap_rule_add_key() is not freed, and it cause the memory leaks
    below. Use vcap_free_rule() to free them as other drivers do it.
    
    And since the return rule of test_vcap_xn_rule_creator() is not
    used, remove it and switch to void.
    
    unreferenced object 0xffff058383334240 (size 192):
      comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
        00 00 00 00 00 00 00 00 00 81 93 84 83 05 ff ff  ................
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
        [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
        [<00000000231b1097>] vcap_api_rule_insert_in_order_test+0xcc/0x184
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0583849380c0 (size 64):
      comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
      hex dump (first 32 bytes):
        40 81 93 84 83 05 ff ff 68 42 33 83 83 05 ff ff  @.......hB3.....
        22 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  "...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
        [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
        [<00000000231b1097>] vcap_api_rule_insert_in_order_test+0xcc/0x184
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff058384938100 (size 64):
      comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
      hex dump (first 32 bytes):
        80 81 93 84 83 05 ff ff 58 42 33 83 83 05 ff ff  ........XB3.....
        7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
        [<00000000ba73cfbe>] vcap_add_type_keyfield+0xfc/0x128
        [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
        [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
        [<00000000231b1097>] vcap_api_rule_insert_in_order_test+0xcc/0x184
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    
    unreferenced object 0xffff0583833b6240 (size 192):
      comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 40 91 8f 84 83 05 ff ff  ........@.......
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
        [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
        [<00000000509de3f4>] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0583848f9100 (size 64):
      comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
      hex dump (first 32 bytes):
        80 91 8f 84 83 05 ff ff 68 62 3b 83 83 05 ff ff  ........hb;.....
        22 00 00 00 01 00 00 00 00 00 00 00 a5 b4 ff ff  "...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
        [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
        [<00000000509de3f4>] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0583848f9140 (size 64):
      comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
      hex dump (first 32 bytes):
        c0 91 8f 84 83 05 ff ff 58 62 3b 83 83 05 ff ff  ........Xb;.....
        7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
        [<00000000ba73cfbe>] vcap_add_type_keyfield+0xfc/0x128
        [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
        [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
        [<00000000509de3f4>] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    
    unreferenced object 0xffff05838264e0c0 (size 192):
      comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.864s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 0a 00 00 00 f4 01 00 00  .'..............
        00 00 00 00 00 00 00 00 40 3a 97 84 83 05 ff ff  ........@:......
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
        [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
        [<00000000a29794d8>] vcap_api_rule_remove_at_end_test+0xbc/0xb48
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff058384973a80 (size 64):
      comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.864s)
      hex dump (first 32 bytes):
        e8 e0 64 82 83 05 ff ff e8 e0 64 82 83 05 ff ff  ..d.......d.....
        22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
        [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
        [<00000000a29794d8>] vcap_api_rule_remove_at_end_test+0xbc/0xb48
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff058384973a40 (size 64):
      comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.880s)
      hex dump (first 32 bytes):
        80 39 97 84 83 05 ff ff d8 e0 64 82 83 05 ff ff  .9........d.....
        7d 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00  }...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
        [<0000000094335477>] vcap_add_type_keyfield+0xbc/0x128
        [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
        [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
        [<00000000a29794d8>] vcap_api_rule_remove_at_end_test+0xbc/0xb48
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    
    unreferenced object 0xffff0583832fa240 (size 192):
      comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
        00 00 00 00 00 00 00 00 00 a1 8b 84 83 05 ff ff  ................
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
        [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
        [<00000000be638a45>] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0583848ba0c0 (size 64):
      comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
      hex dump (first 32 bytes):
        40 a1 8b 84 83 05 ff ff 68 a2 2f 83 83 05 ff ff  @.......h./.....
        22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
        [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
        [<00000000be638a45>] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0583848ba100 (size 64):
      comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
      hex dump (first 32 bytes):
        80 a1 8b 84 83 05 ff ff 58 a2 2f 83 83 05 ff ff  ........X./.....
        7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
        [<00000000ba73cfbe>] vcap_add_type_keyfield+0xfc/0x128
        [<000000002b00f7df>] vcap_val_rule+0x274/0x3e8
        [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
        [<00000000be638a45>] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    
    unreferenced object 0xffff0583827d2180 (size 192):
      comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.956s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
        00 00 00 00 00 00 00 00 00 e1 06 83 83 05 ff ff  ................
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000648fefae>] vcap_alloc_rule+0x17c/0x26c
        [<000000004da16164>] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
        [<00000000e1ed8350>] vcap_api_rule_remove_in_front_test+0x144/0x6c0
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff05838306e0c0 (size 64):
      comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.956s)
      hex dump (first 32 bytes):
        40 e1 06 83 83 05 ff ff a8 21 7d 82 83 05 ff ff  @........!}.....
        22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<00000000ee41df9e>] vcap_rule_add_action+0x104/0x178
        [<000000001cc1bb38>] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
        [<00000000e1ed8350>] vcap_api_rule_remove_in_front_test+0x144/0x6c0
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff05838306e180 (size 64):
      comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.968s)
      hex dump (first 32 bytes):
        98 21 7d 82 83 05 ff ff 00 e1 06 83 83 05 ff ff  .!}.............
        67 00 00 00 00 00 00 00 01 01 00 00 ff 00 00 00  g...............
      backtrace:
        [<000000008585a8f7>] slab_post_alloc_hook+0xb8/0x368
        [<00000000795eba12>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000061886991>] kmalloc_trace+0x40/0x164
        [<0000000043c78991>] vcap_rule_add_key+0x104/0x180
        [<000000006ce4945d>] test_add_def_fields+0x84/0x8c
        [<00000000507e0ab6>] vcap_val_rule+0x294/0x3e8
        [<00000000e67d2ff5>] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
        [<00000000e1ed8350>] vcap_api_rule_remove_in_front_test+0x144/0x6c0
        [<00000000548b559e>] kunit_try_run_case+0x50/0xac
        [<00000000663f0105>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<00000000e646f120>] kthread+0x124/0x130
        [<000000005257599e>] ret_from_fork+0x10/0x20
    
    Fixes: dccc30cc4906 ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202309090950.uOTEKQq3-lkp@intel.com/
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef75ee8184ea90f7e1f648aa7dab993c32cf4b41
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Tue Sep 12 19:03:08 2023 +0800

    net: microchip: sparx5: Fix possible memory leak in vcap_api_encode_rule_test()
    
    [ Upstream commit 89e3af0277388f32d56915a6715c735e4afae5d6 ]
    
    Inject fault while probing kunit-example-test.ko, the duprule which
    is allocated in vcap_dup_rule() and the vcap enabled port which
    is allocated in vcap_enable() of vcap_enable_lookups in
    vcap_api_encode_rule_test() is not freed, and it cause the memory
    leaks below.
    
    Use vcap_enable_lookups() with false arg to free the vcap enabled
    port as other drivers do it. And use vcap_del_rule() to
    free the duprule.
    
    unreferenced object 0xffff677a0278bb00 (size 64):
      comm "kunit_try_catch", pid 388, jiffies 4294895987 (age 1101.840s)
      hex dump (first 32 bytes):
        18 bd a5 82 00 80 ff ff 18 bd a5 82 00 80 ff ff  ................
        40 fe c8 0e be c6 ff ff 00 00 00 00 00 00 00 00  @...............
      backtrace:
        [<000000007d53023a>] slab_post_alloc_hook+0xb8/0x368
        [<0000000076e3f654>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000034d76721>] kmalloc_trace+0x40/0x164
        [<00000000013380a5>] vcap_enable_lookups+0x1c8/0x70c
        [<00000000bbec496b>] vcap_api_encode_rule_test+0x2f8/0xb18
        [<000000002c2bfb7b>] kunit_try_run_case+0x50/0xac
        [<00000000ff74642b>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<000000004af845ca>] kthread+0x124/0x130
        [<0000000038a000ca>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff677a027803c0 (size 192):
      comm "kunit_try_catch", pid 388, jiffies 4294895988 (age 1101.836s)
      hex dump (first 32 bytes):
        00 12 7a 00 05 00 00 00 0a 00 00 00 64 00 00 00  ..z.........d...
        00 00 00 00 00 00 00 00 d8 03 78 02 7a 67 ff ff  ..........x.zg..
      backtrace:
        [<000000007d53023a>] slab_post_alloc_hook+0xb8/0x368
        [<0000000076e3f654>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000034d76721>] kmalloc_trace+0x40/0x164
        [<00000000c1010131>] vcap_dup_rule+0x34/0x14c
        [<00000000d43c54a4>] vcap_add_rule+0x29c/0x32c
        [<0000000073f1c26d>] vcap_api_encode_rule_test+0x304/0xb18
        [<000000002c2bfb7b>] kunit_try_run_case+0x50/0xac
        [<00000000ff74642b>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<000000004af845ca>] kthread+0x124/0x130
        [<0000000038a000ca>] ret_from_fork+0x10/0x20
    
    Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af47fc1fa713e14771a64ac9b8660f36b96ee9fa
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Tue Sep 12 19:03:07 2023 +0800

    net: microchip: sparx5: Fix memory leak for vcap_api_rule_add_actionvalue_test()
    
    [ Upstream commit 39d0ccc185315408e7cecfcaf06d167927b51052 ]
    
    Inject fault while probing kunit-example-test.ko, the field which
    is allocated by kzalloc in vcap_rule_add_action() of
    vcap_rule_add_action_bit/u32() is not freed, and it cause
    the memory leaks below.
    
    unreferenced object 0xffff0276c496b300 (size 64):
      comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
      hex dump (first 32 bytes):
        68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
        3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  <...............
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
        [<00000000ae66c16c>] vcap_api_rule_add_actionvalue_test+0xa4/0x990
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c496b2c0 (size 64):
      comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
      hex dump (first 32 bytes):
        68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
        3c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  <...............
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
        [<00000000607782aa>] vcap_api_rule_add_actionvalue_test+0x100/0x990
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c496b280 (size 64):
      comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
      hex dump (first 32 bytes):
        68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
        3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  <...............
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
        [<000000004e640602>] vcap_api_rule_add_actionvalue_test+0x15c/0x990
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c496b240 (size 64):
      comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.092s)
      hex dump (first 32 bytes):
        68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
        5a 00 00 00 01 00 00 00 32 54 76 98 00 00 00 00  Z.......2Tv.....
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
        [<0000000011141bf8>] vcap_api_rule_add_actionvalue_test+0x1bc/0x990
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c496b200 (size 64):
      comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.092s)
      hex dump (first 32 bytes):
        68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h<b.....h<b.....
        28 00 00 00 01 00 00 00 dd cc bb aa 00 00 00 00  (...............
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<000000008b41c84d>] vcap_rule_add_action+0x104/0x178
        [<00000000d5ed3088>] vcap_api_rule_add_actionvalue_test+0x22c/0x990
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    
    Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79c19b1e55eab81decc10acc687c4f2d24d4cc3e
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Tue Sep 12 19:03:06 2023 +0800

    net: microchip: sparx5: Fix memory leak for vcap_api_rule_add_keyvalue_test()
    
    [ Upstream commit f037fc9905ffa6fa19b89bfbc86946798cede071 ]
    
    Inject fault while probing kunit-example-test.ko, the field which
    is allocated by kzalloc in vcap_rule_add_key() of
    vcap_rule_add_key_bit/u32/u128() is not freed, and it cause
    the memory leaks below.
    
    unreferenced object 0xffff0276c14b7240 (size 64):
      comm "kunit_try_catch", pid 284, jiffies 4294894220 (age 920.072s)
      hex dump (first 32 bytes):
        28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
        67 00 00 00 00 00 00 00 00 01 37 2b af ab ff ff  g.........7+....
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
        [<00000000ff8002d3>] vcap_api_rule_add_keyvalue_test+0x100/0xba8
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c14b7280 (size 64):
      comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.068s)
      hex dump (first 32 bytes):
        28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
        67 00 00 00 00 00 00 00 01 01 37 2b af ab ff ff  g.........7+....
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
        [<00000000f5ac9dc7>] vcap_api_rule_add_keyvalue_test+0x168/0xba8
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c14b72c0 (size 64):
      comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.068s)
      hex dump (first 32 bytes):
        28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
        67 00 00 00 00 00 00 00 00 00 37 2b af ab ff ff  g.........7+....
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
        [<00000000c918ae7f>] vcap_api_rule_add_keyvalue_test+0x1d0/0xba8
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c14b7300 (size 64):
      comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.084s)
      hex dump (first 32 bytes):
        28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
        7d 00 00 00 01 00 00 00 32 54 76 98 ab ff 00 ff  }.......2Tv.....
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
        [<0000000003352814>] vcap_api_rule_add_keyvalue_test+0x240/0xba8
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff0276c14b7340 (size 64):
      comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.084s)
      hex dump (first 32 bytes):
        28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (<a.....(<a.....
        51 00 00 00 07 00 00 00 17 26 35 44 63 62 71 00  Q........&5Dcbq.
      backtrace:
        [<0000000028f08898>] slab_post_alloc_hook+0xb8/0x368
        [<00000000514b9b37>] __kmem_cache_alloc_node+0x174/0x290
        [<000000004620684a>] kmalloc_trace+0x40/0x164
        [<0000000059ad6bcd>] vcap_rule_add_key+0x104/0x180
        [<000000001516f109>] vcap_api_rule_add_keyvalue_test+0x2cc/0xba8
        [<00000000fcc5326c>] kunit_try_run_case+0x50/0xac
        [<00000000f5f45b20>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000026284079>] kthread+0x124/0x130
        [<0000000024d4a996>] ret_from_fork+0x10/0x20
    
    Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e579e8297a3a6214b2e27a76b104d2f52f0bbe4
Author: Bard Liao <yung-chuan.liao@linux.intel.com>
Date:   Thu Sep 14 16:25:04 2023 +0300

    ASoC: SOF: ipc4-topology: fix wrong sizeof argument
    
    [ Upstream commit 6ba59c008f08e84b3c87be10f3391c9735e4f833 ]
    
    available_fmt is a pointer.
    
    Fixes: 4fdef47a44d6 ("ASoC: SOF: ipc4-topology: Add new tokens for input/output pin format count")
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20230914132504.18463-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef2b3d6e6a331ac86fa4ae54b13928a6c19b51af
Author: Rong Tao <rongtao@cestc.cn>
Date:   Mon Sep 11 22:32:56 2023 +0800

    memblock tests: Fix compilation errors.
    
    [ Upstream commit 4b2d631236931550f2ab0abc9a666958853ae846 ]
    
    This patch fix the follow errors.
    
    commit 61167ad5fecd ("mm: pass nid to reserve_bootmem_region()") pass nid
    parameter to reserve_bootmem_region(),
    
        $ make -C tools/testing/memblock/
        ...
        memblock.c: In function ‘memmap_init_reserved_pages’:
        memblock.c:2111:25: error: too many arguments to function ‘reserve_bootmem_region’
        2111 |                         reserve_bootmem_region(start, end, nid);
             |                         ^~~~~~~~~~~~~~~~~~~~~~
        ../../include/linux/mm.h:32:6: note: declared here
        32 | void reserve_bootmem_region(phys_addr_t start, phys_addr_t end);
           |      ^~~~~~~~~~~~~~~~~~~~~~
        memblock.c:2122:17: error: too many arguments to function ‘reserve_bootmem_region’
        2122 |                 reserve_bootmem_region(start, end, nid);
             |                 ^~~~~~~~~~~~~~~~~~~~~~
    
    commit dcdfdd40fa82 ("mm: Add support for unaccepted memory") call
    accept_memory() in memblock.c
    
        $ make -C tools/testing/memblock/
        ...
        cc -fsanitize=address -fsanitize=undefined  main.o memblock.o \
         lib/slab.o mmzone.o slab.o tests/alloc_nid_api.o \
         tests/alloc_helpers_api.o tests/alloc_api.o tests/basic_api.o \
         tests/common.o tests/alloc_exact_nid_api.o   -o main
        /usr/bin/ld: memblock.o: in function `memblock_alloc_range_nid':
        memblock.c:(.text+0x7ae4): undefined reference to `accept_memory'
    
    Signed-off-by: Rong Tao <rongtao@cestc.cn>
    Fixes: dcdfdd40fa82 ("mm: Add support for unaccepted memory")
    Fixes: 61167ad5fecd ("mm: pass nid to reserve_bootmem_region()")
    Link: https://lore.kernel.org/r/tencent_6F19BC082167F15DF2A8D8BEFE8EF220F60A@qq.com
    Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 144ed54ed6ec4c099ff7c2b0064ed3ff89b73737
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date:   Tue Sep 12 19:22:24 2023 +0300

    uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++
    
    [ Upstream commit 32a4ec211d4164e667d9d0b807fadf02053cd2e9 ]
    
    __DECLARE_FLEX_ARRAY(T, member) macro expands to
    
            struct {
                    struct {} __empty_member;
                    T member[];
            };
    
    which is subtly wrong in C++ because sizeof(struct{}) is 1 not 0,
    changing UAPI structures layouts.
    
    This can be fixed by expanding to
    
            T member[];
    
    Now g++ doesn't like "T member[]" either, throwing errors on
    the following code:
    
            struct S {
                    union {
                            T1 member1[];
                            T2 member2[];
                    };
            };
    
    or
    
            struct S {
                    T member[];
            };
    
    Use "T member[0];" which seems to work and does the right thing wrt
    structure layout.
    
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Fixes: 3080ea5553cc ("stddef: Introduce DECLARE_FLEX_ARRAY() helper")
    Link: https://lore.kernel.org/r/97242381-f1ec-4a4a-9472-1a464f575657@p183
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 721045f22e1a79cb04bfd4463cdf445108287666
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date:   Tue Sep 12 19:23:21 2023 +0300

    uapi: stddef.h: Fix header guard location
    
    [ Upstream commit 531108ec5b5cd45ec6272a6115e73275baef7d22 ]
    
    The #endif for the header guard wasn't at the end of the header. This
    was harmless since the define that escaped was already testing for its
    own redefinition. Regardless, move the #endif to the correct place.
    
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Fixes: c8248faf3ca2 ("Compiler Attributes: counted_by: Adjust name and identifier expansion")
    Link: https://lore.kernel.org/r/b1f5081e-339d-421d-81b2-cbb94e1f6f5f@p183
    Co-developed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 32a4ec211d41 ("uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc17adeef726a0df7fe5df7585a07128cd0c6070
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Aug 17 13:06:03 2023 -0700

    Compiler Attributes: counted_by: Adjust name and identifier expansion
    
    [ Upstream commit c8248faf3ca276ebdf60f003b3e04bf764daba91 ]
    
    GCC and Clang's current RFCs name this attribute "counted_by", and have
    moved away from using a string for the member name. Update the kernel's
    macros to match. Additionally provide a UAPI no-op macro for UAPI structs
    that will gain annotations.
    
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Fixes: dd06e72e68bc ("Compiler Attributes: Add __counted_by macro")
    Acked-by: Miguel Ojeda <ojeda@kernel.org>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20230817200558.never.077-kees@kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 32a4ec211d41 ("uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f5b5fdb67276a9cc5fba94728a87d136a1bd409
Author: Phil Sutter <phil@nwl.cc>
Date:   Wed Sep 13 15:51:36 2023 +0200

    netfilter: nf_tables: Fix entries val in rule reset audit log
    
    [ Upstream commit 7fb818f248cff996180b7cdcdcb86b6b4f6e44e2 ]
    
    The value in idx and the number of rules handled in that particular
    __nf_tables_dump_rules() call is not identical. The former is a cursor
    to pick up from if multiple netlink messages are needed, so its value is
    ever increasing. Fixing this is not just a matter of subtracting s_idx
    from it, though: When resetting rules in multiple chains,
    __nf_tables_dump_rules() is called for each and cb->args[0] is not
    adjusted in between. Introduce a dedicated counter to record the number
    of rules reset in this call in a less confusing way.
    
    While being at it, prevent the direct return upon buffer exhaustion: Any
    rules previously dumped into that skb would evade audit logging
    otherwise.
    
    Fixes: 9b5ba5c9c5109 ("netfilter: nf_tables: Unbreak audit log reset")
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 130fa1f00cb06747358870fa3968a66856dbb640
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Sep 12 10:56:07 2023 +0200

    netfilter: conntrack: fix extension size table
    
    [ Upstream commit 4908d5af16676b9d2901830551c2af911e452524 ]
    
    The size table is incorrect due to copypaste error,
    this reserves more size than needed.
    
    TSTAMP reserved 32 instead of 16 bytes.
    TIMEOUT reserved 16 instead of 8 bytes.
    
    Fixes: 5f31edc0676b ("netfilter: conntrack: move extension sizes into core")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38afb9f69871d6353b25677a9c6a6a6262e1ce1d
Author: Knyazev Arseniy <poseaydone@ya.ru>
Date:   Wed Sep 13 10:33:43 2023 +0500

    ALSA: hda/realtek: Splitting the UX3402 into two separate models
    
    [ Upstream commit 07058dceb038a4b0dd49af07118b6b2a685bb4a6 ]
    
    UX3402VA and UX3402ZA models require different hex values, so comibining
    them into one model is incorrect.
    
    Fixes: 491a4ccd8a02 ("ALSA: hda/realtek: Add quirk for ASUS Zenbook using CS35L41")
    Signed-off-by: Knyazev Arseniy <poseaydone@ya.ru>
    Link: https://lore.kernel.org/r/20230913053343.119798-1-poseaydone@ya.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10e7799c43f8a7bb5ada6ccd2d254e36d225b7d3
Author: Artem Savkov <asavkov@redhat.com>
Date:   Tue Sep 12 14:06:31 2023 +0200

    selftests/bpf: fix unpriv_disabled check in test_verifier
    
    [ Upstream commit d128860dbb29cafc3c65ca2d22082745a32829dd ]
    
    Commit 1d56ade032a49 changed the function get_unpriv_disabled() to
    return its results as a bool instead of updating a global variable, but
    test_verifier was not updated to keep in line with these changes. Thus
    unpriv_disabled is always false in test_verifier and unprivileged tests
    are not properly skipped on systems with unprivileged bpf disabled.
    
    Fixes: 1d56ade032a49 ("selftests/bpf: Unprivileged tests for test_loader.c")
    Signed-off-by: Artem Savkov <asavkov@redhat.com>
    Acked-by: Eduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/r/20230912120631.213139-1-asavkov@redhat.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 364f95cd7026a1545086ad5a2bada0338e99b082
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Sep 8 18:33:35 2023 +0200

    bpf: Fix a erroneous check after snprintf()
    
    [ Upstream commit a8f12572860ad8ba659d96eee9cf09e181f6ebcc ]
    
    snprintf() does not return negative error code on error, it returns the
    number of characters which *would* be generated for the given input.
    
    Fix the error handling check.
    
    Fixes: 57539b1c0ac2 ("bpf: Enable annotating trusted nested pointers")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/393bdebc87b22563c08ace094defa7160eb7a6c0.1694190795.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b32bfcae2dba2bca13e77bce548d19fc64bb461
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 12 13:32:44 2023 +0200

    ASoC: rt5640: Fix IRQ not being free-ed for HDA jack detect mode
    
    [ Upstream commit 8c8bf3df6b7c0ed1c4dd373b23eb0ce13a63f452 ]
    
    Set "rt5640->irq_requested = true" after a successful request_irq()
    in rt5640_enable_hda_jack_detect(), so that rt5640_disable_jack_detect()
    properly frees the IRQ.
    
    This fixes the IRQ not being freed on rmmod / driver unbind.
    
    Fixes: 2b9c8d2b3c89 ("ASoC: rt5640: Add the HDA header support")
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230912113245.320159-6-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d9211b46965d5d86e81e9fe8c6187e06308927e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 12 13:32:43 2023 +0200

    ASoC: rt5640: Enable the IRQ on resume after configuring jack-detect
    
    [ Upstream commit b5e85e535551bf82242aa5896e14a136ed3c156d ]
    
    The jack-detect IRQ should be enabled *after* the jack-detect related
    configuration registers have been programmed.
    
    Move the enable_irq() call for this to after the register setup.
    
    Fixes: 5fabcc90e79b ("ASoC: rt5640: Fix Jack work after system suspend")
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230912113245.320159-5-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55b34a5041a06d2fe8c2a16e6d23459d8d5407cc
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 12 13:32:42 2023 +0200

    ASoC: rt5640: Do not disable/enable IRQ twice on suspend/resume
    
    [ Upstream commit 786120ebb649b166021f0212250e8627e53d068a ]
    
    When jack-detect was originally added disabling the IRQ during suspend
    was done by the sound/soc/intel/boards/bytcr_rt5640.c driver
    calling snd_soc_component_set_jack(NULL) on suspend, which calls
    rt5640_disable_jack_detect(), which calls free_irq() which also
    disables it.
    
    Commit 5fabcc90e79b ("ASoC: rt5640: Fix Jack work after system suspend")
    added disable_irq() / enable_irq() calls on suspend/resume for machine
    drivers which do not call snd_soc_component_set_jack(NULL) on suspend.
    
    The new disable_irq() / enable_irq() are made conditional by
    "if (rt5640->irq)" statements, but this is true for the machine drivers
    which do call snd_soc_component_set_jack(NULL) on suspend too, causing
    a disable_irq() call there on the already free-ed IRQ.
    
    Change the "if (rt5640->irq)" condition to "if (rt5640->jack)" to fix this,
    rt5640->jack is only set if the jack-detect IRQ handler is still active
    when rt5640_suspend() runs.
    
    And adjust rt5640_enable_hda_jack_detect()'s request_irq() error handling
    to set rt5640->jack to NULL to match (note that the old setting of irq to
    -ENOXIO still resulted in disable_irq(-ENOXIO) calls on suspend).
    
    Fixes: 5fabcc90e79b ("ASoC: rt5640: Fix Jack work after system suspend")
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230912113245.320159-4-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eae3f68df4d60656e71177869e160e37c977187c
Author: Senhong Liu <liusenhong2022@email.szu.edu.cn>
Date:   Sat Aug 19 06:33:45 2023 -0700

    ASoC: rt5640: fix typos
    
    [ Upstream commit 8e6657159131f90b746572f6a5bd622b3ccac82d ]
    
    I noticed typos and i fixed them.
    
    Signed-off-by: Senhong Liu <liusenhong2022@email.szu.edu.cn>
    Link: https://lore.kernel.org/r/20230819133345.39961-1-liusenhong2022@email.szu.edu.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 786120ebb649 ("ASoC: rt5640: Do not disable/enable IRQ twice on suspend/resume")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b049adc8602d08853f2872d559d2c09f81be0bf7
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 12 13:32:41 2023 +0200

    ASoC: rt5640: Fix sleep in atomic context
    
    [ Upstream commit df7d595f6bd9dc96cc275cc4b0f313fcfa423c58 ]
    
    Following prints are observed while testing audio on Jetson AGX Orin which
    has onboard RT5640 audio codec:
    
      BUG: sleeping function called from invalid context at kernel/workqueue.c:3027
      in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/0
      preempt_count: 10001, expected: 0
      RCU nest depth: 0, expected: 0
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 0 at kernel/irq/handle.c:159 __handle_irq_event_percpu+0x1e0/0x270
      ---[ end trace ad1c64905aac14a6 ]-
    
    The IRQ handler rt5640_irq() runs in interrupt context and can sleep
    during cancel_delayed_work_sync().
    
    The only thing which rt5640_irq() does is cancel + (re-)queue
    the jack_work delayed_work. This can be done in a single non sleeping
    call by replacing queue_delayed_work() with mod_delayed_work(),
    avoiding the sleep in atomic context.
    
    Fixes: 051dade34695 ("ASoC: rt5640: Fix the wrong state of JD1 and JD2")
    Reported-by: Sameer Pujar <spujar@nvidia.com>
    Closes: https://lore.kernel.org/r/1688015537-31682-4-git-send-email-spujar@nvidia.com
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230912113245.320159-3-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4dcbd5acd51d26536a7be1330292ed253d05025b
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 12 13:32:40 2023 +0200

    ASoC: rt5640: Revert "Fix sleep in atomic context"
    
    [ Upstream commit fa6a0c0c1dd53b3949ca56bf7213648dfd6a62ee ]
    
    Commit 70a6404ff610 ("ASoC: rt5640: Fix sleep in atomic context")
    not only switched from request_irq() to request_threaded_irq(),
    to fix the sleep in atomic context issue, but it also added
    devm management of the IRQ by actually switching to
    devm_request_threaded_irq() (without any explanation in the commit
    message for this change).
    
    This is wrong since the IRQ was already explicitly managed by
    the driver. On unbind the ASoC core will call rt5640_set_jack(NULL)
    which in turn will call rt5640_disable_jack_detect() which
    frees the IRQ already. So now we have a double free.
    
    Besides the unexplained switch to devm being wrong, the actual fix
    for the sleep in atomic context issue also is not the best solution.
    
    The only thing which rt5640_irq() does is cancel + (re-)queue
    the jack_work delayed_work. This can be done in a single non sleeping
    call by replacing queue_delayed_work() with mod_delayed_work(),
    which does not sleep. Using mod_delayed_work() is a much better fix
    then adding a thread which does nothing other then queuing a work-item.
    
    This patch is a straight revert of the troublesome changes, the switch
    to mod_delayed_work() is done in a separate follow-up patch.
    
    Fixes: 70a6404ff610 ("ASoC: rt5640: Fix sleep in atomic context")
    Cc: Sameer Pujar <spujar@nvidia.com>
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230912113245.320159-2-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c1fb88020c8ec8f3973c44eefb4a2ec56b42a11
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Sep 12 10:51:44 2023 +0200

    ALSA: seq: Avoid delivery of events for disabled UMP groups
    
    [ Upstream commit 22eefaeab03fe968ab7786fb3d5c5abd203a8bab ]
    
    ALSA sequencer core still delivers events to the disabled UMP Group,
    leaving this handling to the device.  But it's rather risky and it's
    easy to imagine that such an unexpected event may screw up the device
    firmware.
    
    This patch avoids the superfluous event deliveries by setting the
    group_filter of the UMP client as default, and evaluate the
    group_filter properly at delivery from non-UMP clients.
    
    The grouop_filter is updated upon the dynamic UMP Function Block
    updates, so that it follows the change of the disabled UMP Groups,
    too.
    
    Fixes: d2b706077792 ("ALSA: seq: Add UMP group filter")
    Link: https://lore.kernel.org/r/20230912085144.32534-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66ea3d810245d4e26725f6071b56ac84586a1c1d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Sep 12 09:59:44 2023 +0200

    ALSA: docs: Fix a typo of midi2_ump_probe option for snd-usb-audio
    
    [ Upstream commit 60edec9beffebd01a49c005221230f3a61fe6587 ]
    
    A simple typo fix: midi2_probe => midi2_ump_probe.
    
    Fixes: febdfa0e9c8a ("ALSA: docs: Update MIDI 2.0 documentation for UMP 1.1 enhancement")
    Link: https://lore.kernel.org/r/20230912075944.14032-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8680cf1f96a7f60fa21b35226ec696413a094f2e
Author: Eduard Zingerman <eddyz87@gmail.com>
Date:   Tue Sep 12 03:55:37 2023 +0300

    bpf: Avoid dummy bpf_offload_netdev in __bpf_prog_dev_bound_init
    
    [ Upstream commit 1a49f4195d3498fe458a7f5ff7ec5385da70d92e ]
    
    Fix for a bug observable under the following sequence of events:
    1. Create a network device that does not support XDP offload.
    2. Load a device bound XDP program with BPF_F_XDP_DEV_BOUND_ONLY flag
       (such programs are not offloaded).
    3. Load a device bound XDP program with zero flags
       (such programs are offloaded).
    
    At step (2) __bpf_prog_dev_bound_init() associates with device (1)
    a dummy bpf_offload_netdev struct with .offdev field set to NULL.
    At step (3) __bpf_prog_dev_bound_init() would reuse dummy struct
    allocated at step (2).
    However, downstream usage of the bpf_offload_netdev assumes that
    .offdev field can't be NULL, e.g. in bpf_prog_offload_verifier_prep().
    
    Adjust __bpf_prog_dev_bound_init() to require bpf_offload_netdev
    with non-NULL .offdev for offloaded BPF programs.
    
    Fixes: 2b3486bc2d23 ("bpf: Introduce device-bound XDP programs")
    Reported-by: syzbot+291100dcb32190ec02a8@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/bpf/000000000000d97f3c060479c4f8@google.com/
    Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/r/20230912005539.2248244-2-eddyz87@gmail.com
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 232f0ba4d69263af5912e279fcc32fef2882b1dc
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Mon Sep 11 15:28:14 2023 +0200

    bpf: Avoid deadlock when using queue and stack maps from NMI
    
    [ Upstream commit a34a9f1a19afe9c60ca0ea61dfeee63a1c2baac8 ]
    
    Sysbot discovered that the queue and stack maps can deadlock if they are
    being used from a BPF program that can be called from NMI context (such as
    one that is attached to a perf HW counter event). To fix this, add an
    in_nmi() check and use raw_spin_trylock() in NMI context, erroring out if
    grabbing the lock fails.
    
    Fixes: f1a2e44a3aec ("bpf: add queue and stack maps")
    Reported-by: Hsin-Wei Hung <hsinweih@uci.edu>
    Tested-by: Hsin-Wei Hung <hsinweih@uci.edu>
    Co-developed-by: Hsin-Wei Hung <hsinweih@uci.edu>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://lore.kernel.org/r/20230911132815.717240-1-toke@redhat.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c2e14525d45df61a703d9cc08640ff2d8986dea
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Sep 10 19:04:45 2023 +0200

    netfilter: nf_tables: disallow element removal on anonymous sets
    
    [ Upstream commit 23a3bfd4ba7acd36abf52b78605f61b21bdac216 ]
    
    Anonymous sets need to be populated once at creation and then they are
    bound to rule since 938154b93be8 ("netfilter: nf_tables: reject unbound
    anonymous set before commit phase"), otherwise transaction reports
    EINVAL.
    
    Userspace does not need to delete elements of anonymous sets that are
    not yet bound, reject this with EOPNOTSUPP.
    
    From flush command path, skip anonymous sets, they are expected to be
    bound already. Otherwise, EINVAL is hit at the end of this transaction
    for unbound sets.
    
    Fixes: 96518518cc41 ("netfilter: add nftables")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae57621daf86c9641bdd3dfd011739b34e17527b
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Thu Sep 7 11:05:04 2023 +0200

    ASoC: meson: spdifin: start hw on dai probe
    
    [ Upstream commit aedf323b66b2b875137422ecb7d2525179759076 ]
    
    For spdif input to report the locked rate correctly, even when no capture
    is running, the HW and reference clock must be started as soon as
    the dai is probed.
    
    Fixes: 5ce5658375e6 ("ASoC: meson: add axg spdif input")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Link: https://lore.kernel.org/r/20230907090504.12700-1-jbrunet@baylibre.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13f385f99147b4445a1ff151fabd44c12d366ab0
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Sep 7 08:22:33 2023 +0200

    netfilter: nf_tables: disallow rule removal from chain binding
    
    [ Upstream commit f15f29fd4779be8a418b66e9d52979bb6d6c2325 ]
    
    Chain binding only requires the rule addition/insertion command within
    the same transaction. Removal of rules from chain bindings within the
    same transaction makes no sense, userspace does not utilize this
    feature. Replace nft_chain_is_bound() check to nft_chain_binding() in
    rule deletion commands. Replace command implies a rule deletion, reject
    this command too.
    
    Rule flush command can also safely rely on this nft_chain_binding()
    check because unbound chains are not allowed since 62e1e94b246e
    ("netfilter: nf_tables: reject unbound chain set before commit phase").
    
    Fixes: d0e2c7de92c7 ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
    Reported-by: Kevin Rich <kevinrich1337@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4aea243b6853d06c1d160a9955b759189aa02b14
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Sep 22 18:02:56 2023 +0200

    netfilter: nf_tables: fix memleak when more than 255 elements expired
    
    commit cf5000a7787cbc10341091d37245a42c119d26c5 upstream.
    
    When more than 255 elements expired we're supposed to switch to a new gc
    container structure.
    
    This never happens: u8 type will wrap before reaching the boundary
    and nft_trans_gc_space() always returns true.
    
    This means we recycle the initial gc container structure and
    lose track of the elements that came before.
    
    While at it, don't deref 'gc' after we've passed it to call_rcu.
    
    Fixes: 5f68718b34a5 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
    Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 12c8124b9e215295f2c9ff1c746c5f0a4d0d383a
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Sep 22 18:02:55 2023 +0200

    netfilter: nft_set_hash: try later when GC hits EAGAIN on iteration
    
    commit b079155faae94e9b3ab9337e82100a914ebb4e8d upstream.
    
    Skip GC run if iterator rewinds to the beginning with EAGAIN, otherwise GC
    might collect the same element more than once.
    
    Fixes: f6c383b8c31a ("netfilter: nf_tables: adapt set backend to use GC transaction API")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db15e180fa4bf6199ac4cb037afbddd3ca3cf24b
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Sep 22 18:02:54 2023 +0200

    netfilter: nft_set_pipapo: stop GC iteration if GC transaction allocation fails
    
    commit 6d365eabce3c018a80f6e0379b17df2abb17405e upstream.
    
    nft_trans_gc_queue_sync() enqueues the GC transaction and it allocates a
    new one. If this allocation fails, then stop this GC sync run and retry
    later.
    
    Fixes: 5f68718b34a5 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e478aa1bfec17e4e5365f8d6b21dc614656e269
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Sep 22 18:02:53 2023 +0200

    netfilter: nft_set_pipapo: call nft_trans_gc_queue_sync() in catchall GC
    
    commit 4a9e12ea7e70223555ec010bec9f711089ce96f6 upstream.
    
    pipapo needs to enqueue GC transactions for catchall elements through
    nft_trans_gc_queue_sync(). Add nft_trans_gc_catchall_sync() and
    nft_trans_gc_catchall_async() to handle GC transaction queueing
    accordingly.
    
    Fixes: 5f68718b34a5 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
    Fixes: f6c383b8c31a ("netfilter: nf_tables: adapt set backend to use GC transaction API")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b37e05e9b4b779daea4f11d46cfe15c8ea2f4cd
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Sep 22 18:02:52 2023 +0200

    netfilter: nft_set_rbtree: use read spinlock to avoid datapath contention
    
    commit 96b33300fba880ec0eafcf3d82486f3463b4b6da upstream.
    
    rbtree GC does not modify the datastructure, instead it collects expired
    elements and it enqueues a GC transaction. Use a read spinlock instead
    to avoid data contention while GC worker is running.
    
    Fixes: f6c383b8c31a ("netfilter: nf_tables: adapt set backend to use GC transaction API")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52bb9b7a5333ed65743ab686db17f8c33ff1ba6f
Author: Jan Kara <jack@suse.cz>
Date:   Wed Sep 13 17:04:55 2023 +0200

    ext4: do not let fstrim block system suspend
    
    [ Upstream commit 5229a658f6453362fbb9da6bf96872ef25a7097e ]
    
    Len Brown has reported that system suspend sometimes fail due to
    inability to freeze a task working in ext4_trim_fs() for one minute.
    Trimming a large filesystem on a disk that slowly processes discard
    requests can indeed take a long time. Since discard is just an advisory
    call, it is perfectly fine to interrupt it at any time and the return
    number of discarded blocks until that moment. Do that when we detect the
    task is being frozen.
    
    Cc: stable@kernel.org
    Reported-by: Len Brown <lenb@kernel.org>
    Suggested-by: Dave Chinner <david@fromorbit.com>
    References: https://bugzilla.kernel.org/show_bug.cgi?id=216322
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230913150504.9054-2-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b4773177e287cf504352e61f5891c042764b9e1
Author: Jan Kara <jack@suse.cz>
Date:   Wed Sep 13 17:04:54 2023 +0200

    ext4: move setting of trimmed bit into ext4_try_to_trim_range()
    
    [ Upstream commit 45e4ab320c9b5fa67b1fc3b6a9b381cfcc0c8488 ]
    
    Currently we set the group's trimmed bit in ext4_trim_all_free() based
    on return value of ext4_try_to_trim_range(). However when we will want
    to abort trimming because of suspend attempt, we want to return success
    from ext4_try_to_trim_range() but not set the trimmed bit. Instead
    implementing awkward propagation of this information, just move setting
    of trimmed bit into ext4_try_to_trim_range() when the whole group is
    trimmed.
    
    Cc: stable@kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230913150504.9054-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f41e50bf16a87e27b359192e555e5d7cb462c31
Author: Kemeng Shi <shikemeng@huaweicloud.com>
Date:   Tue Aug 1 22:32:00 2023 +0800

    ext4: replace the traditional ternary conditional operator with with max()/min()
    
    [ Upstream commit de8bf0e5ee7482585450357c6d4eddec8efc5cb7 ]
    
    Replace the traditional ternary conditional operator with with max()/min()
    
    Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Link: https://lore.kernel.org/r/20230801143204.2284343-7-shikemeng@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Stable-dep-of: 45e4ab320c9b ("ext4: move setting of trimmed bit into ext4_try_to_trim_range()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d10fd53393cc5de4b9cf1a4b8f9984f0a037aa51
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Aug 28 09:06:43 2023 +0100

    btrfs: remove BUG() after failure to insert delayed dir index item
    
    [ Upstream commit 2c58c3931ede7cd08cbecf1f1a4acaf0a04a41a9 ]
    
    Instead of calling BUG() when we fail to insert a delayed dir index item
    into the delayed node's tree, we can just release all the resources we
    have allocated/acquired before and return the error to the caller. This is
    fine because all existing call chains undo anything they have done before
    calling btrfs_insert_delayed_dir_index() or BUG_ON (when creating pending
    snapshots in the transaction commit path).
    
    So remove the BUG() call and do proper error handling.
    
    This relates to a syzbot report linked below, but does not fix it because
    it only prevents hitting a BUG(), it does not fix the issue where somehow
    we attempt to use twice the same index number for different index items.
    
    Link: https://lore.kernel.org/linux-btrfs/00000000000036e1290603e097e0@google.com/
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.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: Sasha Levin <sashal@kernel.org>

commit e6dbd0bb6946e31d647a9460f56800bc96f21173
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Aug 28 09:06:42 2023 +0100

    btrfs: improve error message after failure to add delayed dir index item
    
    [ Upstream commit 91bfe3104b8db0310f76f2dcb6aacef24c889366 ]
    
    If we fail to add a delayed dir index item because there's already another
    item with the same index number, we print an error message (and then BUG).
    However that message isn't very helpful to debug anything because we don't
    know what's the index number and what are the values of index counters in
    the inode and its delayed inode (index_cnt fields of struct btrfs_inode
    and struct btrfs_delayed_node).
    
    So update the error message to include the index number and counters.
    
    We actually had a recent case where this issue was hit by a syzbot report
    (see the link below).
    
    Link: https://lore.kernel.org/linux-btrfs/00000000000036e1290603e097e0@google.com/
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Stable-dep-of: 2c58c3931ede ("btrfs: remove BUG() after failure to insert delayed dir index item")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9f5537479d4ec97ea92ff24e81a517d5772581a
Author: Dave Wysochanski <dwysocha@redhat.com>
Date:   Mon Sep 18 14:17:11 2023 +0100

    netfs: Only call folio_start_fscache() one time for each folio
    
    [ Upstream commit df1c357f25d808e30b216188330e708e09e1a412 ]
    
    If a network filesystem using netfs implements a clamp_length()
    function, it can set subrequest lengths smaller than a page size.
    
    When we loop through the folios in netfs_rreq_unlock_folios() to
    set any folios to be written back, we need to make sure we only
    call folio_start_fscache() once for each folio.
    
    Otherwise, this simple testcase:
    
      mount -o fsc,rsize=1024,wsize=1024 127.0.0.1:/export /mnt/nfs
      dd if=/dev/zero of=/mnt/nfs/file.bin bs=4096 count=1
      1+0 records in
      1+0 records out
      4096 bytes (4.1 kB, 4.0 KiB) copied, 0.0126359 s, 324 kB/s
      echo 3 > /proc/sys/vm/drop_caches
      cat /mnt/nfs/file.bin > /dev/null
    
    will trigger an oops similar to the following:
    
      page dumped because: VM_BUG_ON_FOLIO(folio_test_private_2(folio))
      ------------[ cut here ]------------
      kernel BUG at include/linux/netfs.h:44!
      ...
      CPU: 5 PID: 134 Comm: kworker/u16:5 Kdump: loaded Not tainted 6.4.0-rc5
      ...
      RIP: 0010:netfs_rreq_unlock_folios+0x68e/0x730 [netfs]
      ...
      Call Trace:
        netfs_rreq_assess+0x497/0x660 [netfs]
        netfs_subreq_terminated+0x32b/0x610 [netfs]
        nfs_netfs_read_completion+0x14e/0x1a0 [nfs]
        nfs_read_completion+0x2f9/0x330 [nfs]
        rpc_free_task+0x72/0xa0 [sunrpc]
        rpc_async_release+0x46/0x70 [sunrpc]
        process_one_work+0x3bd/0x710
        worker_thread+0x89/0x610
        kthread+0x181/0x1c0
        ret_from_fork+0x29/0x50
    
    Fixes: 3d3c95046742 ("netfs: Provide readahead and readpage netfs helpers"
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2210612
    Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/20230608214137.856006-1-dwysocha@redhat.com/ # v1
    Link: https://lore.kernel.org/r/20230915185704.1082982-1-dwysocha@redhat.com/ # v2
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b839de5296cc14be21c1e51753acdbadca5ffc98
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Sep 11 20:00:28 2023 +0200

    gfs2: Fix another freeze/thaw hang
    
    [ Upstream commit 52954b750958dcab9e44935f0c32643279091c85 ]
    
    On a thawed filesystem, the freeze glock is held in shared mode.  In
    order to initiate a cluster-wide freeze, the node initiating the freeze
    drops the freeze glock and grabs it in exclusive mode.  The other nodes
    recognize this as contention on the freeze glock; function
    freeze_go_callback is invoked.  This indicates to them that they must
    freeze the filesystem locally, drop the freeze glock, and then
    re-acquire it in shared mode before being able to unfreeze the
    filesystem locally.
    
    While a node is trying to re-acquire the freeze glock in shared mode,
    additional contention can occur.  In that case, the node must behave in
    the same way as above.
    
    Unfortunately, freeze_go_callback() contains a check that causes it to
    bail out when the freeze glock isn't held in shared mode.  Fix that to
    allow the glock to be unlocked or held in shared mode.
    
    In addition, update a reference to trylock_super() which has been
    renamed to super_trylock_shared() in the meantime.
    
    Fixes: b77b4a4815a9 ("gfs2: Rework freeze / thaw logic")
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f54da8aaee78dc4d2d834bd65558de01c7be537
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Tue Aug 22 11:10:34 2023 +0300

    media: via: Use correct dependency for camera sensor drivers
    
    [ Upstream commit 41425941dfcf47cc6df8e500af6ff16a7be6539f ]
    
    The via camera controller driver selected ov7670 driver, however now that
    driver has dependencies and may no longer be selected unconditionally.
    
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Fixes: 7d3c7d2a2914 ("media: i2c: Add a camera sensor top level menu")
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Tested-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4945a4af14954daeebe1e485919b42312127204b
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Fri Aug 18 12:51:49 2023 +0300

    media: v4l: Use correct dependency for camera sensor drivers
    
    [ Upstream commit 86e16b87afac20779da1228d690a95c54d7e2ad0 ]
    
    The Kconfig option that enables compiling camera sensor drivers is
    VIDEO_CAMERA_SENSOR rather than MEDIA_CAMERA_SUPPORT as it was previously.
    Fix this.
    
    Also select VIDEO_OV7670 for marvell platform drivers only if
    MEDIA_SUBDRV_AUTOSELECT and VIDEO_CAMERA_SENSOR are enabled.
    
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Fixes: 7d3c7d2a2914 ("media: i2c: Add a camera sensor top level menu")
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1db10f1918d19a00fe5257082a0f3d6ab9f3699
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Wed Aug 30 15:29:34 2023 -0400

    NFSv4.1: fix pnfs MDS=DS session trunking
    
    [ Upstream commit 806a3bc421a115fbb287c1efce63a48c54ee804b ]
    
    Currently, when GETDEVICEINFO returns multiple locations where each
    is a different IP but the server's identity is same as MDS, then
    nfs4_set_ds_client() finds the existing nfs_client structure which
    has the MDS's max_connect value (and if it's 1), then the 1st IP
    on the DS's list will get dropped due to MDS trunking rules. Other
    IPs would be added as they fall under the pnfs trunking rules.
    
    For the list of IPs the 1st goes thru calling nfs4_set_ds_client()
    which will eventually call nfs4_add_trunk() and call into
    rpc_clnt_test_and_add_xprt() which has the check for MDS trunking.
    The other IPs (after the 1st one), would call rpc_clnt_add_xprt()
    which doesn't go thru that check.
    
    nfs4_add_trunk() is called when MDS trunking is happening and it
    needs to enforce the usage of max_connect mount option of the
    1st mount. However, this shouldn't be applied to pnfs flow.
    
    Instead, this patch proposed to treat MDS=DS as DS trunking and
    make sure that MDS's max_connect limit does not apply to the
    1st IP returned in the GETDEVICEINFO list. It does so by
    marking the newly created client with a new flag NFS_CS_PNFS
    which then used to pass max_connect value to use into the
    rpc_clnt_test_and_add_xprt() instead of the existing rpc
    client's max_connect value set by the MDS connection.
    
    For example, mount was done without max_connect value set
    so MDS's rpc client has cl_max_connect=1. Upon calling into
    rpc_clnt_test_and_add_xprt() and using rpc client's value,
    the caller passes in max_connect value which is previously
    been set in the pnfs path (as a part of handling
    GETDEVICEINFO list of IPs) in nfs4_set_ds_client().
    
    However, when NFS_CS_PNFS flag is not set and we know we
    are doing MDS trunking, comparing a new IP of the same
    server, we then set the max_connect value to the
    existing MDS's value and pass that into
    rpc_clnt_test_and_add_xprt().
    
    Fixes: dc48e0abee24 ("SUNRPC enforce creation of no more than max_connect xprts")
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0317d19e26e3560fff44e2bb0c5a0ca5d215dfe5
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Thu Jul 13 13:02:38 2023 -0400

    NFSv4.1: use EXCHGID4_FLAG_USE_PNFS_DS for DS server
    
    [ Upstream commit 51d674a5e4889f1c8e223ac131cf218e1631e423 ]
    
    After receiving the location(s) of the DS server(s) in the
    GETDEVINCEINFO, create the request for the clientid to such
    server and indicate that the client is connecting to a DS.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Stable-dep-of: 806a3bc421a1 ("NFSv4.1: fix pnfs MDS=DS session trunking")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b5955944a948f161a457fff78e502e1cea21407
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:50:09 2023 -0400

    SUNRPC: Mark the cred for revalidation if the server rejects it
    
    [ Upstream commit 611fa42dfa9d2f3918ac5f4dd5705dfad81b323d ]
    
    If the server rejects the credential as being stale, or bad, then we
    should mark it for revalidation before retransmitting.
    
    Fixes: 7f5667a5f8c4 ("SUNRPC: Clean up rpc_verify_header()")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5110e5473f83ff953bfd2c428f3f62a57ca6ff66
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:43:58 2023 -0400

    NFS/pNFS: Report EINVAL errors from connect() to the server
    
    [ Upstream commit dd7d7ee3ba2a70d12d02defb478790cf57d5b87b ]
    
    With IPv6, connect() can occasionally return EINVAL if a route is
    unavailable. If this happens during I/O to a data server, we want to
    report it using LAYOUTERROR as an inability to connect.
    
    Fixes: dd52128afdde ("NFSv4.1/pnfs Ensure flexfiles reports all connection related errors")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d847b5c51c1a3367949c5d9e85a083e04f3513e
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:34:41 2023 -0400

    NFS: More fixes for nfs_direct_write_reschedule_io()
    
    [ Upstream commit b11243f720ee5f9376861099019c8542969b6318 ]
    
    Ensure that all requests are put back onto the commit list so that they
    can be rescheduled.
    
    Fixes: 4daaeba93822 ("NFS: Fix nfs_direct_write_reschedule_io()")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad986ce7ef8ad782ccf9adaf709a4af03aaf87eb
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:34:40 2023 -0400

    NFS: Use the correct commit info in nfs_join_page_group()
    
    [ Upstream commit b193a78ddb5ee7dba074d3f28dc050069ba083c0 ]
    
    Ensure that nfs_clear_request_commit() updates the correct counters when
    it removes them from the commit list.
    
    Fixes: ed5d588fe47f ("NFS: Try to join page groups before an O_DIRECT retransmission")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0449e8f4ceffeb83ead1add788056f47f0240f06
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:34:39 2023 -0400

    NFS: More O_DIRECT accounting fixes for error paths
    
    [ Upstream commit 8982f7aff39fb526aba4441fff2525fcedd5e1a3 ]
    
    If we hit a fatal error when retransmitting, we do need to record the
    removal of the request from the count of written bytes.
    
    Fixes: 031d73ed768a ("NFS: Fix O_DIRECT accounting of number of bytes read/written")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d11e1e0aa21adf1443043710ce548e57f098757
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:34:38 2023 -0400

    NFS: Fix O_DIRECT locking issues
    
    [ Upstream commit 7c6339322ce0c6128acbe36aacc1eeb986dd7bf1 ]
    
    The dreq fields are protected by the dreq->lock.
    
    Fixes: 954998b60caa ("NFS: Fix error handling for O_DIRECT write scheduling")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2aed39c39e9e1adf70aa7533694c0f336da49368
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Sep 4 12:34:37 2023 -0400

    NFS: Fix error handling for O_DIRECT write scheduling
    
    [ Upstream commit 954998b60caa8f2a3bf3abe490de6f08d283687a ]
    
    If we fail to schedule a request for transmission, there are 2
    possibilities:
    1) Either we hit a fatal error, and we just want to drop the remaining
       requests on the floor.
    2) We were asked to try again, in which case we should allow the
       outstanding RPC calls to complete, so that we can recoalesce requests
       and try again.
    
    Fixes: d600ad1f2bdb ("NFS41: pop some layoutget errors to application")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>