commit 4e382c2b468348d6208e5a18dbf1591a18170889
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jul 27 08:57:07 2023 +0200

    Linux 6.4.7
    
    Link: https://lore.kernel.org/r/20230725104514.821564989@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Fenil Jain <fkjainco@gmail.com>
    Tested-by: Conor Dooley <conor.dooley@microchip.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ab7147dfae7d70402540da584f8fe36591b1308
Author: Hersen Wu <hersenxs.wu@amd.com>
Date:   Mon Jun 26 13:40:58 2023 -0400

    Revert "drm/amd/display: edp do not add non-edid timings"
    
    commit d6149086b45e150c170beaa4546495fd1880724c upstream.
    
    This change causes regression when eDP and external display in mirror
    mode. When external display supports low resolution than eDP, use eDP
    timing to driver external display may cause corruption on external
    display.
    
    This reverts commit e749dd10e5f292061ad63d2b030194bf7d7d452c.
    
    Cc: stable@vger.kernel.org
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2655
    Signed-off-by: Hersen Wu <hersenxs.wu@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4f89142977e1108ed211f4e6ce30e8b21133d50
Author: Wayne Lin <wayne.lin@amd.com>
Date:   Wed Mar 9 17:05:05 2022 +0800

    drm/amd/display: Add polling method to handle MST reply packet
    
    commit 4f6d9e38c4d244ad106eb9ebd8c0e1215e866f35 upstream.
    
    [Why]
    Specific TBT4 dock doesn't send out short HPD to notify source
    that IRQ event DOWN_REP_MSG_RDY is set. Which violates the spec
    and cause source can't send out streams to mst sinks.
    
    [How]
    To cover this misbehavior, add an additional polling method to detect
    DOWN_REP_MSG_RDY is set. HPD driven handling method is still kept.
    Just hook up our handler to drm mgr->cbs->poll_hpd_irq().
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jerry Zuo <jerry.zuo@amd.com>
    Acked-by: Alan Liu <haoping.liu@amd.com>
    Signed-off-by: Wayne Lin <wayne.lin@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cae69403a82cdb72c43e98ec9f857f5f0a1b3f7e
Author: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Date:   Sat Jun 17 21:09:46 2023 +0530

    drm/amd/display: Clean up errors & warnings in amdgpu_dm.c
    
    commit 87279fdf5ee0ad1360765ef70389d1c4d0f81bb6 upstream.
    
    Fix the following errors & warnings reported by checkpatch:
    
    ERROR: space required before the open brace '{'
    ERROR: space required before the open parenthesis '('
    ERROR: that open brace { should be on the previous line
    ERROR: space prohibited before that ',' (ctx:WxW)
    ERROR: else should follow close brace '}'
    ERROR: open brace '{' following function definitions go on the next line
    ERROR: code indent should use tabs where possible
    
    WARNING: braces {} are not necessary for single statement blocks
    WARNING: void function return statements are not generally useful
    WARNING: Block comments use * on subsequent lines
    WARNING: Block comments use a trailing */ on a separate line
    
    Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3601729d3d6e5b6c712174a858ad7da7e912998d
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Wed Jul 5 10:40:01 2023 +0800

    scsi: sg: Fix checking return value of blk_get_queue()
    
    commit 80b6051085c5fedcb1dfd7b2562a63a83655c4d8 upstream.
    
    Commit fcaa174a9c99 ("scsi/sg: don't grab scsi host module reference") make
    a mess how blk_get_queue() is called, blk_get_queue() returns true on
    success while the caller expects it returns 0 on success.
    
    Fix this problem and also add a corresponding error message on failure.
    
    Fixes: fcaa174a9c99 ("scsi/sg: don't grab scsi host module reference")
    Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com>
    Closes: https://lore.kernel.org/all/87lefv622n.fsf@linux.ibm.com/
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Link: https://lore.kernel.org/r/20230705024001.177585-1-yukuai1@huaweicloud.com
    Tested-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Tested-by: Marc Hartmayer <mhartmay@linux.ibm.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e391c7f7cf3377396eff71f379ccd9f0748b679
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Jun 22 00:01:11 2023 +0800

    scsi/sg: don't grab scsi host module reference
    
    commit fcaa174a9c995cf0af3967e55644a1543ea07e36 upstream.
    
    In order to prevent request_queue to be freed before cleaning up
    blktrace debugfs entries, commit db59133e9279 ("scsi: sg: fix blktrace
    debugfs entries leakage") use scsi_device_get(), however,
    scsi_device_get() will also grab scsi module reference and scsi module
    can't be removed.
    
    It's reported that blktests can't unload scsi_debug after block/001:
    
    blktests (master) # ./check block
    block/001 (stress device hotplugging) [failed]
         +++ /root/blktests/results/nodev/block/001.out.bad 2023-06-19
          Running block/001
          Stressing sd
         +modprobe: FATAL: Module scsi_debug is in use.
    
    Fix this problem by grabbing request_queue reference directly, so that
    scsi host module can still be unloaded while request_queue will be
    pinged by sg device.
    
    Reported-by: Chaitanya Kulkarni <chaitanyak@nvidia.com>
    Link: https://lore.kernel.org/all/1760da91-876d-fc9c-ab51-999a6f66ad50@nvidia.com/
    Fixes: db59133e9279 ("scsi: sg: fix blktrace debugfs entries leakage")
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20230621160111.1433521-1-yukuai1@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92e80c692c4b9a369749139e4c4305f0eac58387
Author: Abe Kohandel <abe.kohandel@intel.com>
Date:   Tue Jun 6 16:18:44 2023 -0700

    spi: dw: Remove misleading comment for Mount Evans SoC
    
    commit 5b6d0b91f84cff3f28724076f93f6f9e2ef8d775 upstream.
    
    Remove a misleading comment about the DMA operations of the Intel Mount
    Evans SoC's SPI Controller as requested by Serge.
    
    Signed-off-by: Abe Kohandel <abe.kohandel@intel.com>
    Link: https://lore.kernel.org/linux-spi/20230606191333.247ucbf7h3tlooxf@mobilestation/
    Fixes: 0760d5d0e9f0 ("spi: dw: Add compatible for Intel Mount Evans SoC")
    Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
    Link: https://lore.kernel.org/r/20230606231844.726272-1-abe.kohandel@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7cf50e41bdc2d574056ebbfeaafc5f0e2562d5b
Author: Yunxiang Li <Yunxiang.Li@amd.com>
Date:   Thu Jun 22 10:18:03 2023 -0400

    drm/ttm: fix bulk_move corruption when adding a entry
    
    commit 4481913607e58196c48a4fef5e6f45350684ec3c upstream.
    
    When the resource is the first in the bulk_move range, adding it again
    (thus moving it to the tail) will corrupt the list since the first
    pointer is not moved. This eventually lead to null pointer deref in
    ttm_lru_bulk_move_del()
    
    Fixes: fee2ede15542 ("drm/ttm: rework bulk move handling v5")
    Signed-off-by: Yunxiang Li <Yunxiang.Li@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    CC: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20230622141902.28718-3-Yunxiang.Li@amd.com
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5339e36dffb721fe71b3cfa0b181e07df062bef1
Author: Mohamed Khalfella <mkhalfella@purestorage.com>
Date:   Fri Jul 14 20:33:41 2023 +0000

    tracing/histograms: Return an error if we fail to add histogram to hist_vars list
    
    commit 4b8b3905165ef98386a3c06f196c85d21292d029 upstream.
    
    Commit 6018b585e8c6 ("tracing/histograms: Add histograms to hist_vars if
    they have referenced variables") added a check to fail histogram creation
    if save_hist_vars() failed to add histogram to hist_vars list. But the
    commit failed to set ret to failed return code before jumping to
    unregister histogram, fix it.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230714203341.51396-1-mkhalfella@purestorage.com
    
    Cc: stable@vger.kernel.org
    Fixes: 6018b585e8c6 ("tracing/histograms: Add histograms to hist_vars if they have referenced variables")
    Signed-off-by: Mohamed Khalfella <mkhalfella@purestorage.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 801d026d61b25386e917ee2adbe7c8da19a9dd15
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Sun Jul 23 16:21:28 2023 +0200

    kbuild: rust: avoid creating temporary files
    
    commit df01b7cfcef08bf3fdcac2909d0e1910781d6bfd upstream.
    
    `rustc` outputs by default the temporary files (i.e. the ones saved
    by `-Csave-temps`, such as `*.rcgu*` files) in the current working
    directory when `-o` and `--out-dir` are not given (even if
    `--emit=x=path` is given, i.e. it does not use those for temporaries).
    
    Since out-of-tree modules are compiled from the `linux` tree,
    `rustc` then tries to create them there, which may not be accessible.
    
    Thus pass `--out-dir` explicitly, even if it is just for the temporary
    files.
    
    Similarly, do so for Rust host programs too.
    
    Reported-by: Raphael Nestler <raphael.nestler@gmail.com>
    Closes: https://github.com/Rust-for-Linux/linux/issues/1015
    Reported-by: Andrea Righi <andrea.righi@canonical.com>
    Tested-by: Raphael Nestler <raphael.nestler@gmail.com> # non-hostprogs
    Tested-by: Andrea Righi <andrea.righi@canonical.com> # non-hostprogs
    Fixes: 295d8398c67e ("kbuild: specify output names separately for each emission type from rustc")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Tested-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a448856c3a1cb452c320bf99d274de1bf456b6aa
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Tue Jun 6 21:59:23 2023 +0800

    jbd2: recheck chechpointing non-dirty buffer
    
    commit c2d6fd9d6f35079f1669f0100f05b46708c74b7f upstream.
    
    There is a long-standing metadata corruption issue that happens from
    time to time, but it's very difficult to reproduce and analyse, benefit
    from the JBD2_CYCLE_RECORD option, we found out that the problem is the
    checkpointing process miss to write out some buffers which are raced by
    another do_get_write_access(). Looks below for detail.
    
    jbd2_log_do_checkpoint() //transaction X
     //buffer A is dirty and not belones to any transaction
     __buffer_relink_io() //move it to the IO list
     __flush_batch()
      write_dirty_buffer()
                                 do_get_write_access()
                                 clear_buffer_dirty
                                 __jbd2_journal_file_buffer()
                                 //add buffer A to a new transaction Y
       lock_buffer(bh)
       //doesn't write out
     __jbd2_journal_remove_checkpoint()
     //finish checkpoint except buffer A
     //filesystem corrupt if the new transaction Y isn't fully write out.
    
    Due to the t_checkpoint_list walking loop in jbd2_log_do_checkpoint()
    have already handles waiting for buffers under IO and re-added new
    transaction to complete commit, and it also removing cleaned buffers,
    this makes sure the list will eventually get empty. So it's fine to
    leave buffers on the t_checkpoint_list while flushing out and completely
    stop using the t_checkpoint_io_list.
    
    Cc: stable@vger.kernel.org
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Tested-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230606135928.434610-2-yi.zhang@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da1818adbaa31ce50d569cd0eb3c3b1987cb702d
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Jul 20 03:02:31 2023 +0300

    net: phy: prevent stale pointer dereference in phy_init()
    
    [ Upstream commit 1c613beaf877c0c0d755853dc62687e2013e55c4 ]
    
    mdio_bus_init() and phy_driver_register() both have error paths, and if
    those are ever hit, ethtool will have a stale pointer to the
    phy_ethtool_phy_ops stub structure, which references memory from a
    module that failed to load (phylib).
    
    It is probably hard to force an error in this code path even manually,
    but the error teardown path of phy_init() should be the same as
    phy_exit(), which is now simply not the case.
    
    Fixes: 55d8f053ce1b ("net: phy: Register ethtool PHY operations")
    Link: https://lore.kernel.org/netdev/ZLaiJ4G6TaJYGJyU@shell.armlinux.org.uk/
    Suggested-by: Russell King (Oracle) <linux@armlinux.org.uk>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20230720000231.1939689-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a6ebe88cd96f2ce7f020bb9bd5460eefa6a5a8e
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:57 2023 +0000

    tcp: annotate data-races around fastopenq.max_qlen
    
    [ Upstream commit 70f360dd7042cb843635ece9d28335a4addff9eb ]
    
    This field can be read locklessly.
    
    Fixes: 1536e2857bd3 ("tcp: Add a TCP_FASTOPEN socket option to get a max backlog on its listner")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-12-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1d2126fcb962ac9cb0146099c5e5da3c983601c
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:56 2023 +0000

    tcp: annotate data-races around icsk->icsk_user_timeout
    
    [ Upstream commit 26023e91e12c68669db416b97234328a03d8e499 ]
    
    This field can be read locklessly from do_tcp_getsockopt()
    
    Fixes: dca43c75e7e5 ("tcp: Add TCP_USER_TIMEOUT socket option.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-11-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c475a047438704a6d704546d75b25f1027f4587
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:55 2023 +0000

    tcp: annotate data-races around tp->notsent_lowat
    
    [ Upstream commit 1aeb87bc1440c5447a7fa2d6e3c2cca52cbd206b ]
    
    tp->notsent_lowat can be read locklessly from do_tcp_getsockopt()
    and tcp_poll().
    
    Fixes: c9bee3b7fdec ("tcp: TCP_NOTSENT_LOWAT socket option")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-10-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c52aa6ac5854f8667efb4512ddc302071384c6c8
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:54 2023 +0000

    tcp: annotate data-races around rskq_defer_accept
    
    [ Upstream commit ae488c74422fb1dcd807c0201804b3b5e8a322a3 ]
    
    do_tcp_getsockopt() reads rskq_defer_accept while another cpu
    might change its value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-9-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 279e1cf49926aad4b15b7d5b1083bdcc390a07da
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:53 2023 +0000

    tcp: annotate data-races around tp->linger2
    
    [ Upstream commit 9df5335ca974e688389c875546e5819778a80d59 ]
    
    do_tcp_getsockopt() reads tp->linger2 while another cpu
    might change its value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-8-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a2da353de8a5acbc3fdf1be52389273f57ce01e0
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:52 2023 +0000

    tcp: annotate data-races around icsk->icsk_syn_retries
    
    [ Upstream commit 3a037f0f3c4bfe44518f2fbb478aa2f99a9cd8bb ]
    
    do_tcp_getsockopt() and reqsk_timer_handler() read
    icsk->icsk_syn_retries while another cpu might change its value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-7-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80cd1842e2da9a3383733d968913921e760558cc
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:51 2023 +0000

    tcp: annotate data-races around tp->keepalive_probes
    
    [ Upstream commit 6e5e1de616bf5f3df1769abc9292191dfad9110a ]
    
    do_tcp_getsockopt() reads tp->keepalive_probes while another cpu
    might change its value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-6-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7416761d5b1c79efcb5b1ce47af28df297d4188d
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:50 2023 +0000

    tcp: annotate data-races around tp->keepalive_intvl
    
    [ Upstream commit 5ecf9d4f52ff2f1d4d44c9b68bc75688e82f13b4 ]
    
    do_tcp_getsockopt() reads tp->keepalive_intvl while another cpu
    might change its value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-5-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b9fcb59163192ae2a08e52ff67d113acddf80c47
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:49 2023 +0000

    tcp: annotate data-races around tp->keepalive_time
    
    [ Upstream commit 4164245c76ff906c9086758e1c3f87082a7f5ef5 ]
    
    do_tcp_getsockopt() reads tp->keepalive_time while another cpu
    might change its value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-4-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed49960ee0c2fb9a0d76c9e6699a4e9341862870
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:48 2023 +0000

    tcp: annotate data-races around tp->tsoffset
    
    [ Upstream commit dd23c9f1e8d5c1d2e3d29393412385ccb9c7a948 ]
    
    do_tcp_getsockopt() reads tp->tsoffset while another cpu
    might change its value.
    
    Fixes: 93be6ce0e91b ("tcp: set and get per-socket timestamp")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b8c25de519552fdc6ca14f203e3f378a01a1b61
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 19 21:28:47 2023 +0000

    tcp: annotate data-races around tp->tcp_tx_delay
    
    [ Upstream commit 348b81b68b13ebd489a3e6a46aa1c384c731c919 ]
    
    do_tcp_getsockopt() reads tp->tcp_tx_delay while another cpu
    might change its value.
    
    Fixes: a842fe1425cb ("tcp: add optional per socket transmit delay")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230719212857.3943972-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb9c26f32e0c5d3d7e0433f51b5726f3ea6f77c1
Author: Tomasz Moń <tomasz.mon@nordicsemi.no>
Date:   Thu Jul 13 12:25:14 2023 +0200

    Bluetooth: btusb: Fix bluetooth on Intel Macbook 2014
    
    [ Upstream commit 95b7015433053cd5f648ad2a7b8f43b2c99c949a ]
    
    Commit c13380a55522 ("Bluetooth: btusb: Do not require hardcoded
    interface numbers") inadvertedly broke bluetooth on Intel Macbook 2014.
    The intention was to keep behavior intact when BTUSB_IFNUM_2 is set and
    otherwise allow any interface numbers. The problem is that the new logic
    condition omits the case where bInterfaceNumber is 0.
    
    Fix BTUSB_IFNUM_2 handling by allowing both interface number 0 and 2
    when the flag is set.
    
    Fixes: c13380a55522 ("Bluetooth: btusb: Do not require hardcoded interface numbers")
    Reported-by: John Holland <johnbholland@icloud.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217651
    Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
    Tested-by: John Holland<johnbholland@icloud.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1add77db60fe8d5662c2b9c5316fba45c94592b6
Author: Pauli Virtanen <pav@iki.fi>
Date:   Mon Jul 10 19:48:19 2023 +0300

    Bluetooth: SCO: fix sco_conn related locking and validity issues
    
    [ Upstream commit 3dcaa192ac2159193bc6ab57bc5369dcb84edd8e ]
    
    Operations that check/update sk_state and access conn should hold
    lock_sock, otherwise they can race.
    
    The order of taking locks is hci_dev_lock > lock_sock > sco_conn_lock,
    which is how it is in connect/disconnect_cfm -> sco_conn_del ->
    sco_chan_del.
    
    Fix locking in sco_connect to take lock_sock around updating sk_state
    and conn.
    
    sco_conn_del must not occur during sco_connect, as it frees the
    sco_conn. Hold hdev->lock longer to prevent that.
    
    sco_conn_add shall return sco_conn with valid hcon. Make it so also when
    reusing an old SCO connection waiting for disconnect timeout (see
    __sco_sock_close where conn->hcon is set to NULL).
    
    This should not reintroduce the issue fixed in the earlier
    commit 9a8ec9e8ebb5 ("Bluetooth: SCO: Fix possible circular locking
    dependency on sco_connect_cfm"), the relevant fix of releasing lock_sock
    in sco_sock_connect before acquiring hdev->lock is retained.
    
    These changes mirror similar fixes earlier in ISO sockets.
    
    Fixes: 9a8ec9e8ebb5 ("Bluetooth: SCO: Fix possible circular locking dependency on sco_connect_cfm")
    Signed-off-by: Pauli Virtanen <pav@iki.fi>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 357ab53c83a5322437fa434e9a9e3e0bafe6b383
Author: Siddh Raman Pant <code@siddh.me>
Date:   Tue Jul 11 18:43:53 2023 +0530

    Bluetooth: hci_conn: return ERR_PTR instead of NULL when there is no link
    
    [ Upstream commit b4066eb04bb67e7ff66e5aaab0db4a753f37eaad ]
    
    hci_connect_sco currently returns NULL when there is no link (i.e. when
    hci_conn_link() returns NULL).
    
    sco_connect() expects an ERR_PTR in case of any error (see line 266 in
    sco.c). Thus, hcon set as NULL passes through to sco_conn_add(), which
    tries to get hcon->hdev, resulting in dereferencing a NULL pointer as
    reported by syzkaller.
    
    The same issue exists for iso_connect_cis() calling hci_connect_cis().
    
    Thus, make hci_connect_sco() and hci_connect_cis() return ERR_PTR
    instead of NULL.
    
    Reported-and-tested-by: syzbot+37acd5d80d00d609d233@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=37acd5d80d00d609d233
    Fixes: 06149746e720 ("Bluetooth: hci_conn: Add support for linking multiple hcon")
    Signed-off-by: Siddh Raman Pant <code@siddh.me>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf00c2c8f6254f44ac041aa9a311ae9e0caf692b
Author: Douglas Anderson <dianders@chromium.org>
Date:   Fri Jun 30 15:33:14 2023 -0700

    Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_remove_adv_monitor()
    
    [ Upstream commit de6dfcefd107667ce2dbedf4d9337f5ed557a4a1 ]
    
    KASAN reports that there's a use-after-free in
    hci_remove_adv_monitor(). Trawling through the disassembly, you can
    see that the complaint is from the access in bt_dev_dbg() under the
    HCI_ADV_MONITOR_EXT_MSFT case. The problem case happens because
    msft_remove_monitor() can end up freeing the monitor
    structure. Specifically:
      hci_remove_adv_monitor() ->
      msft_remove_monitor() ->
      msft_remove_monitor_sync() ->
      msft_le_cancel_monitor_advertisement_cb() ->
      hci_free_adv_monitor()
    
    Let's fix the problem by just stashing the relevant data when it's
    still valid.
    
    Fixes: 7cf5c2978f23 ("Bluetooth: hci_sync: Refactor remove Adv Monitor")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88ad50f2b843a510bd7c922c0a4e2484aff9d645
Author: Pauli Virtanen <pav@iki.fi>
Date:   Mon Jun 19 01:04:33 2023 +0300

    Bluetooth: ISO: fix iso_conn related locking and validity issues
    
    [ Upstream commit d40ae85ee62e3666f45bc61864b22121346f88ef ]
    
    sk->sk_state indicates whether iso_pi(sk)->conn is valid. Operations
    that check/update sk_state and access conn should hold lock_sock,
    otherwise they can race.
    
    The order of taking locks is hci_dev_lock > lock_sock > iso_conn_lock,
    which is how it is in connect/disconnect_cfm -> iso_conn_del ->
    iso_chan_del.
    
    Fix locking in iso_connect_cis/bis and sendmsg/recvmsg to take lock_sock
    around updating sk_state and conn.
    
    iso_conn_del must not occur during iso_connect_cis/bis, as it frees the
    iso_conn. Hold hdev->lock longer to prevent that.
    
    This should not reintroduce the issue fixed in commit 241f51931c35
    ("Bluetooth: ISO: Avoid circular locking dependency"), since the we
    acquire locks in order. We retain the fix in iso_sock_connect to release
    lock_sock before iso_connect_* acquires hdev->lock.
    
    Similarly for commit 6a5ad251b7cd ("Bluetooth: ISO: Fix possible
    circular locking dependency"). We retain the fix in iso_conn_ready to
    not acquire iso_conn_lock before lock_sock.
    
    iso_conn_add shall return iso_conn with valid hcon. Make it so also when
    reusing an old CIS connection waiting for disconnect timeout (see
    __iso_sock_close where conn->hcon is set to NULL).
    
    Trace with iso_conn_del after iso_chan_add in iso_connect_cis:
    ===============================================================
    iso_sock_create:771: sock 00000000be9b69b7
    iso_sock_init:693: sk 000000004dff667e
    iso_sock_bind:827: sk 000000004dff667e 70:1a:b8:98:ff:a2 type 1
    iso_sock_setsockopt:1289: sk 000000004dff667e
    iso_sock_setsockopt:1289: sk 000000004dff667e
    iso_sock_setsockopt:1289: sk 000000004dff667e
    iso_sock_connect:875: sk 000000004dff667e
    iso_connect_cis:353: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da
    hci_get_route:1199: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da
    hci_conn_add:1005: hci0 dst 28:3d:c2:4a:7e:da
    iso_conn_add:140: hcon 000000007b65d182 conn 00000000daf8625e
    __iso_chan_add:214: conn 00000000daf8625e
    iso_connect_cfm:1700: hcon 000000007b65d182 bdaddr 28:3d:c2:4a:7e:da status 12
    iso_conn_del:187: hcon 000000007b65d182 conn 00000000daf8625e, err 16
    iso_sock_clear_timer:117: sock 000000004dff667e state 3
        <Note: sk_state is BT_BOUND (3), so iso_connect_cis is still
        running at this point>
    iso_chan_del:153: sk 000000004dff667e, conn 00000000daf8625e, err 16
    hci_conn_del:1151: hci0 hcon 000000007b65d182 handle 65535
    hci_conn_unlink:1102: hci0: hcon 000000007b65d182
    hci_chan_list_flush:2780: hcon 000000007b65d182
    iso_sock_getsockopt:1376: sk 000000004dff667e
    iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e
    iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e
    iso_sock_getsockopt:1376: sk 000000004dff667e
    iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e
    iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e
    iso_sock_shutdown:1434: sock 00000000be9b69b7, sk 000000004dff667e, how 1
    __iso_sock_close:632: sk 000000004dff667e state 5 socket 00000000be9b69b7
         <Note: sk_state is BT_CONNECT (5), even though iso_chan_del sets
         BT_CLOSED (6). Only iso_connect_cis sets it to BT_CONNECT, so it
         must be that iso_chan_del occurred between iso_chan_add and end of
         iso_connect_cis.>
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    PGD 8000000006467067 P4D 8000000006467067 PUD 3f5f067 PMD 0
    Oops: 0000 [#1] PREEMPT SMP PTI
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014
    RIP: 0010:__iso_sock_close (net/bluetooth/iso.c:664) bluetooth
    ===============================================================
    
    Trace with iso_conn_del before iso_chan_add in iso_connect_cis:
    ===============================================================
    iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da
    ...
    iso_conn_add:140: hcon 0000000093bc551f conn 00000000768ae504
    hci_dev_put:1487: hci0 orig refcnt 21
    hci_event_packet:7607: hci0: event 0x0e
    hci_cmd_complete_evt:4231: hci0: opcode 0x2062
    hci_cc_le_set_cig_params:3846: hci0: status 0x07
    hci_sent_cmd_data:3107: hci0 opcode 0x2062
    iso_connect_cfm:1703: hcon 0000000093bc551f bdaddr 28:3d:c2:4a:7e:da status 7
    iso_conn_del:187: hcon 0000000093bc551f conn 00000000768ae504, err 12
    hci_conn_del:1151: hci0 hcon 0000000093bc551f handle 65535
    hci_conn_unlink:1102: hci0: hcon 0000000093bc551f
    hci_chan_list_flush:2780: hcon 0000000093bc551f
    __iso_chan_add:214: conn 00000000768ae504
        <Note: this conn was already freed in iso_conn_del above>
    iso_sock_clear_timer:117: sock 0000000098323f95 state 3
    general protection fault, probably for non-canonical address 0x30b29c630930aec8: 0000 [#1] PREEMPT SMP PTI
    CPU: 1 PID: 1920 Comm: bluetoothd Tainted: G            E      6.3.0-rc7+ #4
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014
    RIP: 0010:detach_if_pending+0x28/0xd0
    Code: 90 90 0f 1f 44 00 00 48 8b 47 08 48 85 c0 0f 84 ad 00 00 00 55 89 d5 53 48 83 3f 00 48 89 fb 74 7d 66 90 48 8b 03 48 8b 53 08 <>
    RSP: 0018:ffffb90841a67d08 EFLAGS: 00010007
    RAX: 0000000000000000 RBX: ffff9141bd5061b8 RCX: 0000000000000000
    RDX: 30b29c630930aec8 RSI: ffff9141fdd21e80 RDI: ffff9141bd5061b8
    RBP: 0000000000000001 R08: 0000000000000000 R09: ffffb90841a67b88
    R10: 0000000000000003 R11: ffffffff8613f558 R12: ffff9141fdd21e80
    R13: 0000000000000000 R14: ffff9141b5976010 R15: ffff914185755338
    FS:  00007f45768bd840(0000) GS:ffff9141fdd00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000619000424074 CR3: 0000000009f5e005 CR4: 0000000000170ee0
    Call Trace:
     <TASK>
     timer_delete+0x48/0x80
     try_to_grab_pending+0xdf/0x170
     __cancel_work+0x37/0xb0
     iso_connect_cis+0x141/0x400 [bluetooth]
    ===============================================================
    
    Trace with NULL conn->hcon in state BT_CONNECT:
    ===============================================================
    __iso_sock_close:619: sk 00000000f7c71fc5 state 1 socket 00000000d90c5fe5
    ...
    __iso_sock_close:619: sk 00000000f7c71fc5 state 8 socket 00000000d90c5fe5
    iso_chan_del:153: sk 00000000f7c71fc5, conn 0000000022c03a7e, err 104
    ...
    iso_sock_connect:862: sk 00000000129b56c3
    iso_connect_cis:348: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7d:2a
    hci_get_route:1199: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7d:2a
    hci_dev_hold:1495: hci0 orig refcnt 19
    __iso_chan_add:214: conn 0000000022c03a7e
        <Note: reusing old conn>
    iso_sock_clear_timer:117: sock 00000000129b56c3 state 3
    ...
    iso_sock_ready:1485: sk 00000000129b56c3
    ...
    iso_sock_sendmsg:1077: sock 00000000e5013966, sk 00000000129b56c3
    BUG: kernel NULL pointer dereference, address: 00000000000006a8
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP PTI
    CPU: 1 PID: 1403 Comm: wireplumber Tainted: G            E      6.3.0-rc7+ #4
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014
    RIP: 0010:iso_sock_sendmsg+0x63/0x2a0 [bluetooth]
    ===============================================================
    
    Fixes: 241f51931c35 ("Bluetooth: ISO: Avoid circular locking dependency")
    Fixes: 6a5ad251b7cd ("Bluetooth: ISO: Fix possible circular locking dependency")
    Signed-off-by: Pauli Virtanen <pav@iki.fi>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 093a07052406b363b1b2ab489e17dbadaf3e509b
Author: Pauli Virtanen <pav@iki.fi>
Date:   Mon Jun 19 01:04:32 2023 +0300

    Bluetooth: hci_event: call disconnect callback before deleting conn
    
    [ Upstream commit 7f7cfcb6f0825652973b780f248603e23f16ee90 ]
    
    In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.
    
    ISO, L2CAP and SCO connections refer to the hci_conn without
    hci_conn_get, so disconn_cfm must be called so they can clean up their
    conn, otherwise use-after-free occurs.
    
    ISO:
    ==========================================================
    iso_sock_connect:880: sk 00000000eabd6557
    iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da
    ...
    iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073
    hci_dev_put:1487: hci0 orig refcnt 17
    __iso_chan_add:214: conn 00000000b6251073
    iso_sock_clear_timer:117: sock 00000000eabd6557 state 3
    ...
    hci_rx_work:4085: hci0 Event packet
    hci_event_packet:7601: hci0: event 0x0f
    hci_cmd_status_evt:4346: hci0: opcode 0x0406
    hci_cs_disconnect:2760: hci0: status 0x0c
    hci_sent_cmd_data:3107: hci0 opcode 0x0406
    hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560
    hci_conn_unlink:1102: hci0: hcon 000000001696f1fd
    hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2
    hci_chan_list_flush:2780: hcon 000000001696f1fd
    hci_dev_put:1487: hci0 orig refcnt 21
    hci_dev_put:1487: hci0 orig refcnt 20
    hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c
    ... <no iso_* activity on sk/conn> ...
    iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557
    BUG: kernel NULL pointer dereference, address: 0000000000000668
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP PTI
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014
    RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth
    ==========================================================
    
    L2CAP:
    ==================================================================
    hci_cmd_status_evt:4359: hci0: opcode 0x0406
    hci_cs_disconnect:2760: hci0: status 0x0c
    hci_sent_cmd_data:3085: hci0 opcode 0x0406
    hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585
    hci_conn_unlink:1102: hci0: hcon ffff88800c999000
    hci_chan_list_flush:2780: hcon ffff88800c999000
    hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280
    ...
    BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth]
    Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175
    
    CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0x5b/0x90
     print_report+0xcf/0x670
     ? __virt_addr_valid+0xf8/0x180
     ? hci_send_acl+0x2d/0x540 [bluetooth]
     kasan_report+0xa8/0xe0
     ? hci_send_acl+0x2d/0x540 [bluetooth]
     hci_send_acl+0x2d/0x540 [bluetooth]
     ? __pfx___lock_acquire+0x10/0x10
     l2cap_chan_send+0x1fd/0x1300 [bluetooth]
     ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]
     ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]
     ? lock_release+0x1d5/0x3c0
     ? mark_held_locks+0x1a/0x90
     l2cap_sock_sendmsg+0x100/0x170 [bluetooth]
     sock_write_iter+0x275/0x280
     ? __pfx_sock_write_iter+0x10/0x10
     ? __pfx___lock_acquire+0x10/0x10
     do_iter_readv_writev+0x176/0x220
     ? __pfx_do_iter_readv_writev+0x10/0x10
     ? find_held_lock+0x83/0xa0
     ? selinux_file_permission+0x13e/0x210
     do_iter_write+0xda/0x340
     vfs_writev+0x1b4/0x400
     ? __pfx_vfs_writev+0x10/0x10
     ? __seccomp_filter+0x112/0x750
     ? populate_seccomp_data+0x182/0x220
     ? __fget_light+0xdf/0x100
     ? do_writev+0x19d/0x210
     do_writev+0x19d/0x210
     ? __pfx_do_writev+0x10/0x10
     ? mark_held_locks+0x1a/0x90
     do_syscall_64+0x60/0x90
     ? lockdep_hardirqs_on_prepare+0x149/0x210
     ? do_syscall_64+0x6c/0x90
     ? lockdep_hardirqs_on_prepare+0x149/0x210
     entry_SYSCALL_64_after_hwframe+0x72/0xdc
    RIP: 0033:0x7ff45cb23e64
    Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89
    RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007ff45cb23e64
    RDX: 0000000000000001 RSI: 00007fff21ae0aa0 RDI: 0000000000000017
    RBP: 00007fff21ae0aa0 R08: 000000000095a8a0 R09: 0000607000053f40
    R10: 0000000000000001 R11: 0000000000000202 R12: 00007fff21ae0ac0
    R13: 00000fffe435c150 R14: 00007fff21ae0a80 R15: 000060f000000040
     </TASK>
    
    Allocated by task 771:
     kasan_save_stack+0x33/0x60
     kasan_set_track+0x25/0x30
     __kasan_kmalloc+0xaa/0xb0
     hci_chan_create+0x67/0x1b0 [bluetooth]
     l2cap_conn_add.part.0+0x17/0x590 [bluetooth]
     l2cap_connect_cfm+0x266/0x6b0 [bluetooth]
     hci_le_remote_feat_complete_evt+0x167/0x310 [bluetooth]
     hci_event_packet+0x38d/0x800 [bluetooth]
     hci_rx_work+0x287/0xb20 [bluetooth]
     process_one_work+0x4f7/0x970
     worker_thread+0x8f/0x620
     kthread+0x17f/0x1c0
     ret_from_fork+0x2c/0x50
    
    Freed by task 771:
     kasan_save_stack+0x33/0x60
     kasan_set_track+0x25/0x30
     kasan_save_free_info+0x2e/0x50
     ____kasan_slab_free+0x169/0x1c0
     slab_free_freelist_hook+0x9e/0x1c0
     __kmem_cache_free+0xc0/0x310
     hci_chan_list_flush+0x46/0x90 [bluetooth]
     hci_conn_cleanup+0x7d/0x330 [bluetooth]
     hci_cs_disconnect+0x35d/0x530 [bluetooth]
     hci_cmd_status_evt+0xef/0x2b0 [bluetooth]
     hci_event_packet+0x38d/0x800 [bluetooth]
     hci_rx_work+0x287/0xb20 [bluetooth]
     process_one_work+0x4f7/0x970
     worker_thread+0x8f/0x620
     kthread+0x17f/0x1c0
     ret_from_fork+0x2c/0x50
    ==================================================================
    
    Fixes: b8d290525e39 ("Bluetooth: clean up connection in hci_cs_disconnect")
    Signed-off-by: Pauli Virtanen <pav@iki.fi>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cef88a0fd8e9c2e838162fbb742b3e713b811a7e
Author: Pauli Virtanen <pav@iki.fi>
Date:   Mon Jun 19 01:04:31 2023 +0300

    Bluetooth: use RCU for hci_conn_params and iterate safely in hci_sync
    
    [ Upstream commit 195ef75e19287b4bc413da3e3e3722b030ac881e ]
    
    hci_update_accept_list_sync iterates over hdev->pend_le_conns and
    hdev->pend_le_reports, and waits for controller events in the loop body,
    without holding hdev lock.
    
    Meanwhile, these lists and the items may be modified e.g. by
    le_scan_cleanup. This can invalidate the list cursor or any other item
    in the list, resulting to invalid behavior (eg use-after-free).
    
    Use RCU for the hci_conn_params action lists. Since the loop bodies in
    hci_sync block and we cannot use RCU or hdev->lock for the whole loop,
    copy list items first and then iterate on the copy. Only the flags field
    is written from elsewhere, so READ_ONCE/WRITE_ONCE should guarantee we
    read valid values.
    
    Free params everywhere with hci_conn_params_free so the cleanup is
    guaranteed to be done properly.
    
    This fixes the following, which can be triggered e.g. by BlueZ new
    mgmt-tester case "Add + Remove Device Nowait - Success", or by changing
    hci_le_set_cig_params to always return false, and running iso-tester:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in hci_update_passive_scan_sync (net/bluetooth/hci_sync.c:2536 net/bluetooth/hci_sync.c:2723 net/bluetooth/hci_sync.c:2841)
    Read of size 8 at addr ffff888001265018 by task kworker/u3:0/32
    
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014
    Workqueue: hci0 hci_cmd_sync_work
    Call Trace:
    <TASK>
    dump_stack_lvl (./arch/x86/include/asm/irqflags.h:134 lib/dump_stack.c:107)
    print_report (mm/kasan/report.c:320 mm/kasan/report.c:430)
    ? __virt_addr_valid (./include/linux/mmzone.h:1915 ./include/linux/mmzone.h:2011 arch/x86/mm/physaddr.c:65)
    ? hci_update_passive_scan_sync (net/bluetooth/hci_sync.c:2536 net/bluetooth/hci_sync.c:2723 net/bluetooth/hci_sync.c:2841)
    kasan_report (mm/kasan/report.c:538)
    ? hci_update_passive_scan_sync (net/bluetooth/hci_sync.c:2536 net/bluetooth/hci_sync.c:2723 net/bluetooth/hci_sync.c:2841)
    hci_update_passive_scan_sync (net/bluetooth/hci_sync.c:2536 net/bluetooth/hci_sync.c:2723 net/bluetooth/hci_sync.c:2841)
    ? __pfx_hci_update_passive_scan_sync (net/bluetooth/hci_sync.c:2780)
    ? mutex_lock (kernel/locking/mutex.c:282)
    ? __pfx_mutex_lock (kernel/locking/mutex.c:282)
    ? __pfx_mutex_unlock (kernel/locking/mutex.c:538)
    ? __pfx_update_passive_scan_sync (net/bluetooth/hci_sync.c:2861)
    hci_cmd_sync_work (net/bluetooth/hci_sync.c:306)
    process_one_work (./arch/x86/include/asm/preempt.h:27 kernel/workqueue.c:2399)
    worker_thread (./include/linux/list.h:292 kernel/workqueue.c:2538)
    ? __pfx_worker_thread (kernel/workqueue.c:2480)
    kthread (kernel/kthread.c:376)
    ? __pfx_kthread (kernel/kthread.c:331)
    ret_from_fork (arch/x86/entry/entry_64.S:314)
    </TASK>
    
    Allocated by task 31:
    kasan_save_stack (mm/kasan/common.c:46)
    kasan_set_track (mm/kasan/common.c:52)
    __kasan_kmalloc (mm/kasan/common.c:374 mm/kasan/common.c:383)
    hci_conn_params_add (./include/linux/slab.h:580 ./include/linux/slab.h:720 net/bluetooth/hci_core.c:2277)
    hci_connect_le_scan (net/bluetooth/hci_conn.c:1419 net/bluetooth/hci_conn.c:1589)
    hci_connect_cis (net/bluetooth/hci_conn.c:2266)
    iso_connect_cis (net/bluetooth/iso.c:390)
    iso_sock_connect (net/bluetooth/iso.c:899)
    __sys_connect (net/socket.c:2003 net/socket.c:2020)
    __x64_sys_connect (net/socket.c:2027)
    do_syscall_64 (arch/x86/entry/common.c:50 arch/x86/entry/common.c:80)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)
    
    Freed by task 15:
    kasan_save_stack (mm/kasan/common.c:46)
    kasan_set_track (mm/kasan/common.c:52)
    kasan_save_free_info (mm/kasan/generic.c:523)
    __kasan_slab_free (mm/kasan/common.c:238 mm/kasan/common.c:200 mm/kasan/common.c:244)
    __kmem_cache_free (mm/slub.c:1807 mm/slub.c:3787 mm/slub.c:3800)
    hci_conn_params_del (net/bluetooth/hci_core.c:2323)
    le_scan_cleanup (net/bluetooth/hci_conn.c:202)
    process_one_work (./arch/x86/include/asm/preempt.h:27 kernel/workqueue.c:2399)
    worker_thread (./include/linux/list.h:292 kernel/workqueue.c:2538)
    kthread (kernel/kthread.c:376)
    ret_from_fork (arch/x86/entry/entry_64.S:314)
    ==================================================================
    
    Fixes: e8907f76544f ("Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 3")
    Signed-off-by: Pauli Virtanen <pav@iki.fi>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab87c6b43822a56ae0aadc715364b5f8d4a96037
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Jul 20 09:17:21 2023 +0200

    netfilter: nf_tables: skip bound chain on rule flush
    
    [ Upstream commit 6eaf41e87a223ae6f8e7a28d6e78384ad7e407f8 ]
    
    Skip bound chain when flushing table rules, the rule that owns this
    chain releases these objects.
    
    Otherwise, the following warning is triggered:
    
      WARNING: CPU: 2 PID: 1217 at net/netfilter/nf_tables_api.c:2013 nf_tables_chain_destroy+0x1f7/0x210 [nf_tables]
      CPU: 2 PID: 1217 Comm: chain-flush Not tainted 6.1.39 #1
      RIP: 0010:nf_tables_chain_destroy+0x1f7/0x210 [nf_tables]
    
    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: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2bdf3feae26c4c61b23405567bc558b5ccb80b8
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Jul 19 20:19:43 2023 +0200

    netfilter: nf_tables: skip bound chain in netns release path
    
    [ Upstream commit 751d460ccff3137212f47d876221534bf0490996 ]
    
    Skip bound chain from netns release path, the rule that owns this chain
    releases these objects.
    
    Fixes: d0e2c7de92c7 ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48dbb5d24c667bf26bc2fea8caa7fe51fcc6aa62
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jul 19 21:08:21 2023 +0200

    netfilter: nft_set_pipapo: fix improper element removal
    
    [ Upstream commit 87b5a5c209405cb6b57424cdfa226a6dbd349232 ]
    
    end key should be equal to start unless NFT_SET_EXT_KEY_END is present.
    
    Its possible to add elements that only have a start key
    ("{ 1.0.0.0 . 2.0.0.0 }") without an internval end.
    
    Insertion treats this via:
    
    if (nft_set_ext_exists(ext, NFT_SET_EXT_KEY_END))
       end = (const u8 *)nft_set_ext_key_end(ext)->data;
    else
       end = start;
    
    but removal side always uses nft_set_ext_key_end().
    This is wrong and leads to garbage remaining in the set after removal
    next lookup/insert attempt will give:
    
    BUG: KASAN: slab-use-after-free in pipapo_get+0x8eb/0xb90
    Read of size 1 at addr ffff888100d50586 by task nft-pipapo_uaf_/1399
    Call Trace:
     kasan_report+0x105/0x140
     pipapo_get+0x8eb/0xb90
     nft_pipapo_insert+0x1dc/0x1710
     nf_tables_newsetelem+0x31f5/0x4e00
     ..
    
    Fixes: 3c4287f62044 ("nf_tables: Add set type for arbitrary concatenation of ranges")
    Reported-by: lonial con <kongln9170@gmail.com>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d78a37553b128360c76cc1e7bd8c5c97d5b0d7e1
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Jul 18 01:30:33 2023 +0200

    netfilter: nf_tables: can't schedule in nft_chain_validate
    
    [ Upstream commit 314c82841602a111c04a7210c21dc77e0d560242 ]
    
    Can be called via nft set element list iteration, which may acquire
    rcu and/or bh read lock (depends on set type).
    
    BUG: sleeping function called from invalid context at net/netfilter/nf_tables_api.c:3353
    in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 1232, name: nft
    preempt_count: 0, expected: 0
    RCU nest depth: 1, expected: 0
    2 locks held by nft/1232:
     #0: ffff8881180e3ea8 (&nft_net->commit_mutex){+.+.}-{3:3}, at: nf_tables_valid_genid
     #1: ffffffff83f5f540 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire
    Call Trace:
     nft_chain_validate
     nft_lookup_validate_setelem
     nft_pipapo_walk
     nft_lookup_validate
     nft_chain_validate
     nft_immediate_validate
     nft_chain_validate
     nf_tables_validate
     nf_tables_abort
    
    No choice but to move it to nf_tables_validate().
    
    Fixes: 81ea01066741 ("netfilter: nf_tables: add rescheduling points during loop detection walks")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08ca12fa9237af0184ab8cd0132e308a101b5a76
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Jul 20 00:29:58 2023 +0200

    netfilter: nf_tables: fix spurious set element insertion failure
    
    [ Upstream commit ddbd8be68941985f166f5107109a90ce13147c44 ]
    
    On some platforms there is a padding hole in the nft_verdict
    structure, between the verdict code and the chain pointer.
    
    On element insertion, if the new element clashes with an existing one and
    NLM_F_EXCL flag isn't set, we want to ignore the -EEXIST error as long as
    the data associated with duplicated element is the same as the existing
    one.  The data equality check uses memcmp.
    
    For normal data (NFT_DATA_VALUE) this works fine, but for NFT_DATA_VERDICT
    padding area leads to spurious failure even if the verdict data is the
    same.
    
    This then makes the insertion fail with 'already exists' error, even
    though the new "key : data" matches an existing entry and userspace
    told the kernel that it doesn't want to receive an error indication.
    
    Fixes: c016c7e45ddf ("netfilter: nf_tables: honor NLM_F_EXCL flag in set element insertion")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 540075ceefc62e4db142c0c5c7a3d06808785500
Author: Vitaly Rodionov <vitalyr@opensource.cirrus.com>
Date:   Thu Jul 20 09:20:21 2023 +0100

    ALSA: hda/realtek: Fix generic fixup definition for cs35l41 amp
    
    [ Upstream commit f7b069cf08816252f494d193b9ecdff172bf9aa1 ]
    
    Generic fixup for CS35L41 amplifies should not have vendor specific
    chained fixup. For ThinkPad laptops with led issue, we can just add
    specific fixup.
    
    Fixes: a6ac60b36dade (ALSA: hda/realtek: Fix mute led issue on thinkpad with cs35l41 s-codec)
    Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230720082022.13033-1-vitalyr@opensource.cirrus.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b7117b7233770e0ddc20b2e1e4fe479f76f0d442
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Jul 18 10:41:51 2023 -0700

    llc: Don't drop packet from non-root netns.
    
    [ Upstream commit 6631463b6e6673916d2481f692938f393148aa82 ]
    
    Now these upper layer protocol handlers can be called from llc_rcv()
    as sap->rcv_func(), which is registered by llc_sap_open().
    
      * function which is passed to register_8022_client()
        -> no in-kernel user calls register_8022_client().
    
      * snap_rcv()
        `- proto->rcvfunc() : registered by register_snap_client()
           -> aarp_rcv() and atalk_rcv() drop packets from non-root netns
    
      * stp_pdu_rcv()
        `- garp_protos[]->rcv() : registered by stp_proto_register()
           -> garp_pdu_rcv() and br_stp_rcv() are netns-aware
    
    So, we can safely remove the netns restriction in llc_rcv().
    
    Fixes: e730c15519d0 ("[NET]: Make packet reception network namespace safe")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b492d371c6225d95f8ee34cac0eb40b58f5c5023
Author: Zhang Shurong <zhang_shurong@foxmail.com>
Date:   Sat Jul 15 16:16:56 2023 +0800

    fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe
    
    [ Upstream commit 4e88761f5f8c7869f15a2046b1a1116f4fab4ac8 ]
    
    This func misses checking for platform_get_irq()'s call and may passes the
    negative error codes to request_irq(), which takes unsigned IRQ #,
    causing it to fail with -EINVAL, overriding an original error code.
    
    Fix this by stop calling request_irq() with invalid IRQ #s.
    
    Fixes: 1630d85a8312 ("au1200fb: fix hardcoded IRQ")
    Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41d5ae320dcac566a8baff19e91168e00d1cb1fa
Author: Daniel Golle <daniel@makrotopia.org>
Date:   Wed Jul 19 01:39:36 2023 +0100

    net: ethernet: mtk_eth_soc: always mtk_get_ib1_pkt_type
    
    [ Upstream commit 9f9d4c1a2e82174a4e799ec405284a2b0de32b6a ]
    
    entries and bind debugfs files would display wrong data on NETSYS_V2 and
    later because instead of using mtk_get_ib1_pkt_type the driver would use
    MTK_FOE_IB1_PACKET_TYPE which corresponds to NETSYS_V1(.x) SoCs.
    Use mtk_get_ib1_pkt_type so entries and bind records display correctly.
    
    Fixes: 03a3180e5c09e ("net: ethernet: mtk_eth_soc: introduce flow offloading support for mt7986")
    Signed-off-by: Daniel Golle <daniel@makrotopia.org>
    Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Link: https://lore.kernel.org/r/c0ae03d0182f4d27b874cbdf0059bc972c317f3c.1689727134.git.daniel@makrotopia.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 70a2d37cd86e314476ccf94f403317abbfa5210e
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Mon Jul 17 14:59:18 2023 -0700

    Revert "tcp: avoid the lookup process failing to get sk in ehash table"
    
    [ Upstream commit 81b3ade5d2b98ad6e0a473b0e1e420a801275592 ]
    
    This reverts commit 3f4ca5fafc08881d7a57daa20449d171f2887043.
    
    Commit 3f4ca5fafc08 ("tcp: avoid the lookup process failing to get sk in
    ehash table") reversed the order in how a socket is inserted into ehash
    to fix an issue that ehash-lookup could fail when reqsk/full sk/twsk are
    swapped.  However, it introduced another lookup failure.
    
    The full socket in ehash is allocated from a slab with SLAB_TYPESAFE_BY_RCU
    and does not have SOCK_RCU_FREE, so the socket could be reused even while
    it is being referenced on another CPU doing RCU lookup.
    
    Let's say a socket is reused and inserted into the same hash bucket during
    lookup.  After the blamed commit, a new socket is inserted at the end of
    the list.  If that happens, we will skip sockets placed after the previous
    position of the reused socket, resulting in ehash lookup failure.
    
    As described in Documentation/RCU/rculist_nulls.rst, we should insert a
    new socket at the head of the list to avoid such an issue.
    
    This issue, the swap-lookup-failure, and another variant reported in [0]
    can all be handled properly by adding a locked ehash lookup suggested by
    Eric Dumazet [1].
    
    However, this issue could occur for every packet, thus more likely than
    the other two races, so let's revert the change for now.
    
    Link: https://lore.kernel.org/netdev/20230606064306.9192-1-duanmuquan@baidu.com/ [0]
    Link: https://lore.kernel.org/netdev/CANn89iK8snOz8TYOhhwfimC7ykYA78GA3Nyv8x06SZYa1nKdyA@mail.gmail.com/ [1]
    Fixes: 3f4ca5fafc08 ("tcp: avoid the lookup process failing to get sk in ehash table")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://lore.kernel.org/r/20230717215918.15723-1-kuniyu@amazon.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cba5b13f405350c8ef9e60446020558310c98424
Author: Yuanjun Gong <ruc_gongyuanjun@163.com>
Date:   Mon Jul 17 22:45:19 2023 +0800

    net:ipv6: check return value of pskb_trim()
    
    [ Upstream commit 4258faa130be4ea43e5e2d839467da421b8ff274 ]
    
    goto tx_err if an unexpected result is returned by pskb_tirm()
    in ip6erspan_tunnel_xmit().
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef0fe1aff76e1904e04ce82324accd42a62b0f1a
Author: Wang Ming <machel@vivo.com>
Date:   Mon Jul 17 17:59:19 2023 +0800

    net: ipv4: Use kfree_sensitive instead of kfree
    
    [ Upstream commit daa751444fd9d4184270b1479d8af49aaf1a1ee6 ]
    
    key might contain private part of the key, so better use
    kfree_sensitive to free it.
    
    Fixes: 38320c70d282 ("[IPSEC]: Use crypto_aead and authenc in ESP")
    Signed-off-by: Wang Ming <machel@vivo.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7552f8e70c885364d41a0bbcebc9114fdf2ea9f8
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jul 17 14:44:45 2023 +0000

    tcp: annotate data-races around tcp_rsk(req)->ts_recent
    
    [ Upstream commit eba20811f32652bc1a52d5e7cc403859b86390d9 ]
    
    TCP request sockets are lockless, tcp_rsk(req)->ts_recent
    can change while being read by another cpu as syzbot noticed.
    
    This is harmless, but we should annotate the known races.
    
    Note that tcp_check_req() changes req->ts_recent a bit early,
    we might change this in the future.
    
    BUG: KCSAN: data-race in tcp_check_req / tcp_check_req
    
    write to 0xffff88813c8afb84 of 4 bytes by interrupt on cpu 1:
    tcp_check_req+0x694/0xc70 net/ipv4/tcp_minisocks.c:762
    tcp_v4_rcv+0x12db/0x1b70 net/ipv4/tcp_ipv4.c:2071
    ip_protocol_deliver_rcu+0x356/0x6d0 net/ipv4/ip_input.c:205
    ip_local_deliver_finish+0x13c/0x1a0 net/ipv4/ip_input.c:233
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ip_local_deliver+0xec/0x1c0 net/ipv4/ip_input.c:254
    dst_input include/net/dst.h:468 [inline]
    ip_rcv_finish net/ipv4/ip_input.c:449 [inline]
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ip_rcv+0x197/0x270 net/ipv4/ip_input.c:569
    __netif_receive_skb_one_core net/core/dev.c:5493 [inline]
    __netif_receive_skb+0x90/0x1b0 net/core/dev.c:5607
    process_backlog+0x21f/0x380 net/core/dev.c:5935
    __napi_poll+0x60/0x3b0 net/core/dev.c:6498
    napi_poll net/core/dev.c:6565 [inline]
    net_rx_action+0x32b/0x750 net/core/dev.c:6698
    __do_softirq+0xc1/0x265 kernel/softirq.c:571
    do_softirq+0x7e/0xb0 kernel/softirq.c:472
    __local_bh_enable_ip+0x64/0x70 kernel/softirq.c:396
    local_bh_enable+0x1f/0x20 include/linux/bottom_half.h:33
    rcu_read_unlock_bh include/linux/rcupdate.h:843 [inline]
    __dev_queue_xmit+0xabb/0x1d10 net/core/dev.c:4271
    dev_queue_xmit include/linux/netdevice.h:3088 [inline]
    neigh_hh_output include/net/neighbour.h:528 [inline]
    neigh_output include/net/neighbour.h:542 [inline]
    ip_finish_output2+0x700/0x840 net/ipv4/ip_output.c:229
    ip_finish_output+0xf4/0x240 net/ipv4/ip_output.c:317
    NF_HOOK_COND include/linux/netfilter.h:292 [inline]
    ip_output+0xe5/0x1b0 net/ipv4/ip_output.c:431
    dst_output include/net/dst.h:458 [inline]
    ip_local_out net/ipv4/ip_output.c:126 [inline]
    __ip_queue_xmit+0xa4d/0xa70 net/ipv4/ip_output.c:533
    ip_queue_xmit+0x38/0x40 net/ipv4/ip_output.c:547
    __tcp_transmit_skb+0x1194/0x16e0 net/ipv4/tcp_output.c:1399
    tcp_transmit_skb net/ipv4/tcp_output.c:1417 [inline]
    tcp_write_xmit+0x13ff/0x2fd0 net/ipv4/tcp_output.c:2693
    __tcp_push_pending_frames+0x6a/0x1a0 net/ipv4/tcp_output.c:2877
    tcp_push_pending_frames include/net/tcp.h:1952 [inline]
    __tcp_sock_set_cork net/ipv4/tcp.c:3336 [inline]
    tcp_sock_set_cork+0xe8/0x100 net/ipv4/tcp.c:3343
    rds_tcp_xmit_path_complete+0x3b/0x40 net/rds/tcp_send.c:52
    rds_send_xmit+0xf8d/0x1420 net/rds/send.c:422
    rds_send_worker+0x42/0x1d0 net/rds/threads.c:200
    process_one_work+0x3e6/0x750 kernel/workqueue.c:2408
    worker_thread+0x5f2/0xa10 kernel/workqueue.c:2555
    kthread+0x1d7/0x210 kernel/kthread.c:379
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308
    
    read to 0xffff88813c8afb84 of 4 bytes by interrupt on cpu 0:
    tcp_check_req+0x32a/0xc70 net/ipv4/tcp_minisocks.c:622
    tcp_v4_rcv+0x12db/0x1b70 net/ipv4/tcp_ipv4.c:2071
    ip_protocol_deliver_rcu+0x356/0x6d0 net/ipv4/ip_input.c:205
    ip_local_deliver_finish+0x13c/0x1a0 net/ipv4/ip_input.c:233
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ip_local_deliver+0xec/0x1c0 net/ipv4/ip_input.c:254
    dst_input include/net/dst.h:468 [inline]
    ip_rcv_finish net/ipv4/ip_input.c:449 [inline]
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ip_rcv+0x197/0x270 net/ipv4/ip_input.c:569
    __netif_receive_skb_one_core net/core/dev.c:5493 [inline]
    __netif_receive_skb+0x90/0x1b0 net/core/dev.c:5607
    process_backlog+0x21f/0x380 net/core/dev.c:5935
    __napi_poll+0x60/0x3b0 net/core/dev.c:6498
    napi_poll net/core/dev.c:6565 [inline]
    net_rx_action+0x32b/0x750 net/core/dev.c:6698
    __do_softirq+0xc1/0x265 kernel/softirq.c:571
    run_ksoftirqd+0x17/0x20 kernel/softirq.c:939
    smpboot_thread_fn+0x30a/0x4a0 kernel/smpboot.c:164
    kthread+0x1d7/0x210 kernel/kthread.c:379
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308
    
    value changed: 0x1cd237f1 -> 0x1cd237f2
    
    Fixes: 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://lore.kernel.org/r/20230717144445.653164-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d546247e49fb7e35e6ae5aa99b3e5720ab17674d
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jul 17 14:44:44 2023 +0000

    tcp: annotate data-races around tcp_rsk(req)->txhash
    
    [ Upstream commit 5e5265522a9a7f91d1b0bd411d634bdaf16c80cd ]
    
    TCP request sockets are lockless, some of their fields
    can change while being read by another cpu as syzbot noticed.
    
    This is usually harmless, but we should annotate the known
    races.
    
    This patch takes care of tcp_rsk(req)->txhash,
    a separate one is needed for tcp_rsk(req)->ts_recent.
    
    BUG: KCSAN: data-race in tcp_make_synack / tcp_rtx_synack
    
    write to 0xffff8881362304bc of 4 bytes by task 32083 on cpu 1:
    tcp_rtx_synack+0x9d/0x2a0 net/ipv4/tcp_output.c:4213
    inet_rtx_syn_ack+0x38/0x80 net/ipv4/inet_connection_sock.c:880
    tcp_check_req+0x379/0xc70 net/ipv4/tcp_minisocks.c:665
    tcp_v6_rcv+0x125b/0x1b20 net/ipv6/tcp_ipv6.c:1673
    ip6_protocol_deliver_rcu+0x92f/0xf30 net/ipv6/ip6_input.c:437
    ip6_input_finish net/ipv6/ip6_input.c:482 [inline]
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ip6_input+0xbd/0x1b0 net/ipv6/ip6_input.c:491
    dst_input include/net/dst.h:468 [inline]
    ip6_rcv_finish+0x1e2/0x2e0 net/ipv6/ip6_input.c:79
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ipv6_rcv+0x74/0x150 net/ipv6/ip6_input.c:309
    __netif_receive_skb_one_core net/core/dev.c:5452 [inline]
    __netif_receive_skb+0x90/0x1b0 net/core/dev.c:5566
    netif_receive_skb_internal net/core/dev.c:5652 [inline]
    netif_receive_skb+0x4a/0x310 net/core/dev.c:5711
    tun_rx_batched+0x3bf/0x400
    tun_get_user+0x1d24/0x22b0 drivers/net/tun.c:1997
    tun_chr_write_iter+0x18e/0x240 drivers/net/tun.c:2043
    call_write_iter include/linux/fs.h:1871 [inline]
    new_sync_write fs/read_write.c:491 [inline]
    vfs_write+0x4ab/0x7d0 fs/read_write.c:584
    ksys_write+0xeb/0x1a0 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+0x42/0x50 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
    
    read to 0xffff8881362304bc of 4 bytes by task 32078 on cpu 0:
    tcp_make_synack+0x367/0xb40 net/ipv4/tcp_output.c:3663
    tcp_v6_send_synack+0x72/0x420 net/ipv6/tcp_ipv6.c:544
    tcp_conn_request+0x11a8/0x1560 net/ipv4/tcp_input.c:7059
    tcp_v6_conn_request+0x13f/0x180 net/ipv6/tcp_ipv6.c:1175
    tcp_rcv_state_process+0x156/0x1de0 net/ipv4/tcp_input.c:6494
    tcp_v6_do_rcv+0x98a/0xb70 net/ipv6/tcp_ipv6.c:1509
    tcp_v6_rcv+0x17b8/0x1b20 net/ipv6/tcp_ipv6.c:1735
    ip6_protocol_deliver_rcu+0x92f/0xf30 net/ipv6/ip6_input.c:437
    ip6_input_finish net/ipv6/ip6_input.c:482 [inline]
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ip6_input+0xbd/0x1b0 net/ipv6/ip6_input.c:491
    dst_input include/net/dst.h:468 [inline]
    ip6_rcv_finish+0x1e2/0x2e0 net/ipv6/ip6_input.c:79
    NF_HOOK include/linux/netfilter.h:303 [inline]
    ipv6_rcv+0x74/0x150 net/ipv6/ip6_input.c:309
    __netif_receive_skb_one_core net/core/dev.c:5452 [inline]
    __netif_receive_skb+0x90/0x1b0 net/core/dev.c:5566
    netif_receive_skb_internal net/core/dev.c:5652 [inline]
    netif_receive_skb+0x4a/0x310 net/core/dev.c:5711
    tun_rx_batched+0x3bf/0x400
    tun_get_user+0x1d24/0x22b0 drivers/net/tun.c:1997
    tun_chr_write_iter+0x18e/0x240 drivers/net/tun.c:2043
    call_write_iter include/linux/fs.h:1871 [inline]
    new_sync_write fs/read_write.c:491 [inline]
    vfs_write+0x4ab/0x7d0 fs/read_write.c:584
    ksys_write+0xeb/0x1a0 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+0x42/0x50 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
    
    value changed: 0x91d25731 -> 0xe79325cd
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 32078 Comm: syz-executor.4 Not tainted 6.5.0-rc1-syzkaller-00033-geb26cbb1a754 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/03/2023
    
    Fixes: 58d607d3e52f ("tcp: provide skb->hash to synack packets")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://lore.kernel.org/r/20230717144445.653164-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67f6f186ccae18ecd08857081425af96337d30cb
Author: Antoine Tenart <atenart@kernel.org>
Date:   Tue May 23 18:14:52 2023 +0200

    net: ipv4: use consistent txhash in TIME_WAIT and SYN_RECV
    
    [ Upstream commit c0a8966e2bc7d31f77a7246947ebc09c1ff06066 ]
    
    When using IPv4/TCP, skb->hash comes from sk->sk_txhash except in
    TIME_WAIT and SYN_RECV where it's not set in the reply skb from
    ip_send_unicast_reply. Those packets will have a mismatched hash with
    others from the same flow as their hashes will be 0. IPv6 does not have
    the same issue as the hash is set from the socket txhash in those cases.
    
    This commits sets the hash in the reply skb from ip_send_unicast_reply,
    which makes the IPv4 code behaving like IPv6.
    
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Stable-dep-of: 5e5265522a9a ("tcp: annotate data-races around tcp_rsk(req)->txhash")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d5c3b02ffd1c4b169bd0e4bbbda53df7c389d9ae
Author: Florian Kauer <florian.kauer@linutronix.de>
Date:   Mon Jul 17 10:54:44 2023 -0700

    igc: Prevent garbled TX queue with XDP ZEROCOPY
    
    [ Upstream commit 78adb4bcf99effbb960c5f9091e2e062509d1030 ]
    
    In normal operation, each populated queue item has
    next_to_watch pointing to the last TX desc of the packet,
    while each cleaned item has it set to 0. In particular,
    next_to_use that points to the next (necessarily clean)
    item to use has next_to_watch set to 0.
    
    When the TX queue is used both by an application using
    AF_XDP with ZEROCOPY as well as a second non-XDP application
    generating high traffic, the queue pointers can get in
    an invalid state where next_to_use points to an item
    where next_to_watch is NOT set to 0.
    
    However, the implementation assumes at several places
    that this is never the case, so if it does hold,
    bad things happen. In particular, within the loop inside
    of igc_clean_tx_irq(), next_to_clean can overtake next_to_use.
    Finally, this prevents any further transmission via
    this queue and it never gets unblocked or signaled.
    Secondly, if the queue is in this garbled state,
    the inner loop of igc_clean_tx_ring() will never terminate,
    completely hogging a CPU core.
    
    The reason is that igc_xdp_xmit_zc() reads next_to_use
    before acquiring the lock, and writing it back
    (potentially unmodified) later. If it got modified
    before locking, the outdated next_to_use is written
    pointing to an item that was already used elsewhere
    (and thus next_to_watch got written).
    
    Fixes: 9acf59a752d4 ("igc: Enable TX via AF_XDP zero-copy")
    Signed-off-by: Florian Kauer <florian.kauer@linutronix.de>
    Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de>
    Tested-by: Kurt Kanzenbach <kurt@linutronix.de>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20230717175444.3217831-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c6255814ae942d134e0e0efa6708a265cf51f6c5
Author: Kurt Kanzenbach <kurt@linutronix.de>
Date:   Wed Apr 12 09:36:11 2023 +0200

    igc: Avoid transmit queue timeout for XDP
    
    [ Upstream commit 95b681485563c64585de78662ee52d06b7fa47d9 ]
    
    High XDP load triggers the netdev watchdog:
    
    |NETDEV WATCHDOG: enp3s0 (igc): transmit queue 2 timed out
    
    The reason is the Tx queue transmission start (txq->trans_start) is not updated
    in XDP code path. Therefore, add it for all XDP transmission functions.
    
    Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: 78adb4bcf99e ("igc: Prevent garbled TX queue with XDP ZEROCOPY")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7a4c79329b9ceea35792a7ef0d905e909f6cca5f
Author: Alexander Duyck <alexanderduyck@fb.com>
Date:   Thu Jul 13 09:49:31 2023 -0700

    bpf, arm64: Fix BTI type used for freplace attached functions
    
    [ Upstream commit a3f25d614bc73b45e8f02adc6769876dfd16ca84 ]
    
    When running an freplace attached bpf program on an arm64 system w were
    seeing the following issue:
      Unhandled 64-bit el1h sync exception on CPU47, ESR 0x0000000036000003 -- BTI
    
    After a bit of work to track it down I determined that what appeared to be
    happening is that the 'bti c' at the start of the program was somehow being
    reached after a 'br' instruction. Further digging pointed me toward the
    fact that the function was attached via freplace. This in turn led me to
    build_plt which I believe is invoking the long jump which is triggering
    this error.
    
    To resolve it we can replace the 'bti c' with 'bti jc' and add a comment
    explaining why this has to be modified as such.
    
    Fixes: b2ad54e1533e ("bpf, arm64: Implement bpf_arch_text_poke() for arm64")
    Signed-off-by: Alexander Duyck <alexanderduyck@fb.com>
    Acked-by: Xu Kuohai <xukuohai@huawei.com>
    Link: https://lore.kernel.org/r/168926677665.316237.9953845318337455525.stgit@ahduyck-xeon-server.home.arpa
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 275d5743f622d2db18cc6e03208df2e22b9adcc1
Author: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Date:   Mon Jul 17 21:45:29 2023 +0530

    bpf: Repeat check_max_stack_depth for async callbacks
    
    [ Upstream commit b5e9ad522c4ccd32d322877515cff8d47ed731b9 ]
    
    While the check_max_stack_depth function explores call chains emanating
    from the main prog, which is typically enough to cover all possible call
    chains, it doesn't explore those rooted at async callbacks unless the
    async callback will have been directly called, since unlike non-async
    callbacks it skips their instruction exploration as they don't
    contribute to stack depth.
    
    It could be the case that the async callback leads to a callchain which
    exceeds the stack depth, but this is never reachable while only
    exploring the entry point from main subprog. Hence, repeat the check for
    the main subprog *and* all async callbacks marked by the symbolic
    execution pass of the verifier, as execution of the program may begin at
    any of them.
    
    Consider functions with following stack depths:
    main: 256
    async: 256
    foo: 256
    
    main:
        rX = async
        bpf_timer_set_callback(...)
    
    async:
        foo()
    
    Here, async is not descended as it does not contribute to stack depth of
    main (since it is referenced using bpf_pseudo_func and not
    bpf_pseudo_call). However, when async is invoked asynchronously, it will
    end up breaching the MAX_BPF_STACK limit by calling foo.
    
    Hence, in addition to main, we also need to explore call chains
    beginning at all async callback subprogs in a program.
    
    Fixes: 7ddc80a476c2 ("bpf: Teach stack depth check about async callbacks.")
    Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Link: https://lore.kernel.org/r/20230717161530.1238-3-memxor@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e13be2071acbfb45c23c2b73f1ee62fa649b4ad
Author: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Date:   Mon Jul 17 21:45:28 2023 +0530

    bpf: Fix subprog idx logic in check_max_stack_depth
    
    [ Upstream commit ba7b3e7d5f9014be65879ede8fd599cb222901c9 ]
    
    The assignment to idx in check_max_stack_depth happens once we see a
    bpf_pseudo_call or bpf_pseudo_func. This is not an issue as the rest of
    the code performs a few checks and then pushes the frame to the frame
    stack, except the case of async callbacks. If the async callback case
    causes the loop iteration to be skipped, the idx assignment will be
    incorrect on the next iteration of the loop. The value stored in the
    frame stack (as the subprogno of the current subprog) will be incorrect.
    
    This leads to incorrect checks and incorrect tail_call_reachable
    marking. Save the target subprog in a new variable and only assign to
    idx once we are done with the is_async_cb check which may skip pushing
    of frame to the frame stack and subsequent stack depth checks and tail
    call markings.
    
    Fixes: 7ddc80a476c2 ("bpf: Teach stack depth check about async callbacks.")
    Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Link: https://lore.kernel.org/r/20230717161530.1238-2-memxor@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 521c84b9e107437cc38087ac1575ef11423b55ae
Author: Geetha sowjanya <gakula@marvell.com>
Date:   Sun Jul 16 15:07:41 2023 +0530

    octeontx2-pf: Dont allocate BPIDs for LBK interfaces
    
    [ Upstream commit 8fcd7c7b3a38ab5e452f542fda8f7940e77e479a ]
    
    Current driver enables backpressure for LBK interfaces.
    But these interfaces do not support this feature.
    Hence, this patch fixes the issue by skipping the
    backpressure configuration for these interfaces.
    
    Fixes: 75f36270990c ("octeontx2-pf: Support to enable/disable pause frames via ethtool").
    Signed-off-by: Geetha sowjanya <gakula@marvell.com>
    Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
    Link: https://lore.kernel.org/r/20230716093741.28063-1-gakula@marvell.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a183c72f106f20245d2e5617daeb9a4f8194b99
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Sat Jul 15 18:36:05 2023 +0300

    vrf: Fix lockdep splat in output path
    
    [ Upstream commit 2033ab90380d46e0e9f0520fd6776a73d107fd95 ]
    
    Cited commit converted the neighbour code to use the standard RCU
    variant instead of the RCU-bh variant, but the VRF code still uses
    rcu_read_lock_bh() / rcu_read_unlock_bh() around the neighbour lookup
    code in its IPv4 and IPv6 output paths, resulting in lockdep splats
    [1][2]. Can be reproduced using [3].
    
    Fix by switching to rcu_read_lock() / rcu_read_unlock().
    
    [1]
    =============================
    WARNING: suspicious RCU usage
    6.5.0-rc1-custom-g9c099e6dbf98 #403 Not tainted
    -----------------------------
    include/net/neighbour.h:302 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    2 locks held by ping/183:
     #0: ffff888105ea1d80 (sk_lock-AF_INET){+.+.}-{0:0}, at: raw_sendmsg+0xc6c/0x33c0
     #1: ffffffff85b46820 (rcu_read_lock_bh){....}-{1:2}, at: vrf_output+0x2e3/0x2030
    
    stack backtrace:
    CPU: 0 PID: 183 Comm: ping Not tainted 6.5.0-rc1-custom-g9c099e6dbf98 #403
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-1.fc37 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0xc1/0xf0
     lockdep_rcu_suspicious+0x211/0x3b0
     vrf_output+0x1380/0x2030
     ip_push_pending_frames+0x125/0x2a0
     raw_sendmsg+0x200d/0x33c0
     inet_sendmsg+0xa2/0xe0
     __sys_sendto+0x2aa/0x420
     __x64_sys_sendto+0xe5/0x1c0
     do_syscall_64+0x38/0x80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    [2]
    =============================
    WARNING: suspicious RCU usage
    6.5.0-rc1-custom-g9c099e6dbf98 #403 Not tainted
    -----------------------------
    include/net/neighbour.h:302 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    2 locks held by ping6/182:
     #0: ffff888114b63000 (sk_lock-AF_INET6){+.+.}-{0:0}, at: rawv6_sendmsg+0x1602/0x3e50
     #1: ffffffff85b46820 (rcu_read_lock_bh){....}-{1:2}, at: vrf_output6+0xe9/0x1310
    
    stack backtrace:
    CPU: 0 PID: 182 Comm: ping6 Not tainted 6.5.0-rc1-custom-g9c099e6dbf98 #403
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-1.fc37 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0xc1/0xf0
     lockdep_rcu_suspicious+0x211/0x3b0
     vrf_output6+0xd32/0x1310
     ip6_local_out+0xb4/0x1a0
     ip6_send_skb+0xbc/0x340
     ip6_push_pending_frames+0xe5/0x110
     rawv6_sendmsg+0x2e6e/0x3e50
     inet_sendmsg+0xa2/0xe0
     __sys_sendto+0x2aa/0x420
     __x64_sys_sendto+0xe5/0x1c0
     do_syscall_64+0x38/0x80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    [3]
    #!/bin/bash
    
    ip link add name vrf-red up numtxqueues 2 type vrf table 10
    ip link add name swp1 up master vrf-red type dummy
    ip address add 192.0.2.1/24 dev swp1
    ip address add 2001:db8:1::1/64 dev swp1
    ip neigh add 192.0.2.2 lladdr 00:11:22:33:44:55 nud perm dev swp1
    ip neigh add 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud perm dev swp1
    ip vrf exec vrf-red ping 192.0.2.2 -c 1 &> /dev/null
    ip vrf exec vrf-red ping6 2001:db8:1::2 -c 1 &> /dev/null
    
    Fixes: 09eed1192cec ("neighbour: switch to standard rcu, instead of rcu_bh")
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Link: https://lore.kernel.org/netdev/CA+G9fYtEr-=GbcXNDYo3XOkwR+uYgehVoDjsP0pFLUpZ_AZcyg@mail.gmail.com/
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230715153605.4068066-1-idosch@nvidia.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cecb533d126d5e4f9ab53c148d24e58d2ef555e4
Author: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Date:   Wed Jun 14 10:18:25 2023 +0800

    security: keys: Modify mismatched function name
    
    [ Upstream commit 2a4152742025c5f21482e8cebc581702a0fa5b01 ]
    
    No functional modification involved.
    
    security/keys/trusted-keys/trusted_tpm2.c:203: warning: expecting prototype for tpm_buf_append_auth(). Prototype was for tpm2_buf_append_auth() instead.
    
    Fixes: 2e19e10131a0 ("KEYS: trusted: Move TPM2 trusted keys code")
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=5524
    Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Reviewed-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 532fbfc96d9745c7678bc270458e0b4dc8b99dea
Author: Ahmed Zaki <ahmed.zaki@intel.com>
Date:   Mon Jun 5 10:52:26 2023 -0400

    iavf: fix reset task race with iavf_remove()
    
    [ Upstream commit c34743daca0eb1dc855831a5210f0800a850088e ]
    
    The reset task is currently scheduled from the watchdog or adminq tasks.
    First, all direct calls to schedule the reset task are replaced with the
    iavf_schedule_reset(), which is modified to accept the flag showing the
    type of reset.
    
    To prevent the reset task from starting once iavf_remove() starts, we need
    to check the __IAVF_IN_REMOVE_TASK bit before we schedule it. This is now
    easily added to iavf_schedule_reset().
    
    Finally, remove the check for IAVF_FLAG_RESET_NEEDED in the watchdog task.
    It is redundant since all callers who set the flag immediately schedules
    the reset task.
    
    Fixes: 3ccd54ef44eb ("iavf: Fix init state closure on remove")
    Fixes: 14756b2ae265 ("iavf: Fix __IAVF_RESETTING state usage")
    Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@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 63d14a43128540016ebd4f7fa3ad3a2f0d6e642c
Author: Ahmed Zaki <ahmed.zaki@intel.com>
Date:   Mon Jun 5 10:52:25 2023 -0400

    iavf: fix a deadlock caused by rtnl and driver's lock circular dependencies
    
    [ Upstream commit d1639a17319ba78a018280cd2df6577a7e5d9fab ]
    
    A driver's lock (crit_lock) is used to serialize all the driver's tasks.
    Lockdep, however, shows a circular dependency between rtnl and
    crit_lock. This happens when an ndo that already holds the rtnl requests
    the driver to reset, since the reset task (in some paths) tries to grab
    rtnl to either change real number of queues of update netdev features.
    
      [566.241851] ======================================================
      [566.241893] WARNING: possible circular locking dependency detected
      [566.241936] 6.2.14-100.fc36.x86_64+debug #1 Tainted: G           OE
      [566.241984] ------------------------------------------------------
      [566.242025] repro.sh/2604 is trying to acquire lock:
      [566.242061] ffff9280fc5ceee8 (&adapter->crit_lock){+.+.}-{3:3}, at: iavf_close+0x3c/0x240 [iavf]
      [566.242167]
                   but task is already holding lock:
      [566.242209] ffffffff9976d350 (rtnl_mutex){+.+.}-{3:3}, at: iavf_remove+0x6b5/0x730 [iavf]
      [566.242300]
                   which lock already depends on the new lock.
    
      [566.242353]
                   the existing dependency chain (in reverse order) is:
      [566.242401]
                   -> #1 (rtnl_mutex){+.+.}-{3:3}:
      [566.242451]        __mutex_lock+0xc1/0xbb0
      [566.242489]        iavf_init_interrupt_scheme+0x179/0x440 [iavf]
      [566.242560]        iavf_watchdog_task+0x80b/0x1400 [iavf]
      [566.242627]        process_one_work+0x2b3/0x560
      [566.242663]        worker_thread+0x4f/0x3a0
      [566.242696]        kthread+0xf2/0x120
      [566.242730]        ret_from_fork+0x29/0x50
      [566.242763]
                   -> #0 (&adapter->crit_lock){+.+.}-{3:3}:
      [566.242815]        __lock_acquire+0x15ff/0x22b0
      [566.242869]        lock_acquire+0xd2/0x2c0
      [566.242901]        __mutex_lock+0xc1/0xbb0
      [566.242934]        iavf_close+0x3c/0x240 [iavf]
      [566.242997]        __dev_close_many+0xac/0x120
      [566.243036]        dev_close_many+0x8b/0x140
      [566.243071]        unregister_netdevice_many_notify+0x165/0x7c0
      [566.243116]        unregister_netdevice_queue+0xd3/0x110
      [566.243157]        iavf_remove+0x6c1/0x730 [iavf]
      [566.243217]        pci_device_remove+0x33/0xa0
      [566.243257]        device_release_driver_internal+0x1bc/0x240
      [566.243299]        pci_stop_bus_device+0x6c/0x90
      [566.243338]        pci_stop_and_remove_bus_device+0xe/0x20
      [566.243380]        pci_iov_remove_virtfn+0xd1/0x130
      [566.243417]        sriov_disable+0x34/0xe0
      [566.243448]        ice_free_vfs+0x2da/0x330 [ice]
      [566.244383]        ice_sriov_configure+0x88/0xad0 [ice]
      [566.245353]        sriov_numvfs_store+0xde/0x1d0
      [566.246156]        kernfs_fop_write_iter+0x15e/0x210
      [566.246921]        vfs_write+0x288/0x530
      [566.247671]        ksys_write+0x74/0xf0
      [566.248408]        do_syscall_64+0x58/0x80
      [566.249145]        entry_SYSCALL_64_after_hwframe+0x72/0xdc
      [566.249886]
                     other info that might help us debug this:
    
      [566.252014]  Possible unsafe locking scenario:
    
      [566.253432]        CPU0                    CPU1
      [566.254118]        ----                    ----
      [566.254800]   lock(rtnl_mutex);
      [566.255514]                                lock(&adapter->crit_lock);
      [566.256233]                                lock(rtnl_mutex);
      [566.256897]   lock(&adapter->crit_lock);
      [566.257388]
                      *** DEADLOCK ***
    
    The deadlock can be triggered by a script that is continuously resetting
    the VF adapter while doing other operations requiring RTNL, e.g:
    
            while :; do
                    ip link set $VF up
                    ethtool --set-channels $VF combined 2
                    ip link set $VF down
                    ip link set $VF up
                    ethtool --set-channels $VF combined 4
                    ip link set $VF down
            done
    
    Any operation that triggers a reset can substitute "ethtool --set-channles"
    
    As a fix, add a new task "finish_config" that do all the work which
    needs rtnl lock. With the exception of iavf_remove(), all work that
    require rtnl should be called from this task.
    
    As for iavf_remove(), at the point where we need to call
    unregister_netdevice() (and grab rtnl_lock), we make sure the finish_config
    task is not running (cancel_work_sync()) to safely grab rtnl. Subsequent
    finish_config work cannot restart after that since the task is guarded
    by the __IAVF_IN_REMOVE_TASK bit in iavf_schedule_finish_config().
    
    Fixes: 5ac49f3c2702 ("iavf: use mutexes for locking of critical sections")
    Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@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 d55495756d950d493397d4443c8b9cba74fc801e
Author: Marcin Szycik <marcin.szycik@linux.intel.com>
Date:   Mon Jun 5 10:52:22 2023 -0400

    iavf: Wait for reset in callbacks which trigger it
    
    [ Upstream commit c2ed2403f12c74a74a0091ed5d830e72c58406e8 ]
    
    There was a fail when trying to add the interface to bonding
    right after changing the MTU on the interface. It was caused
    by bonding interface unable to open the interface due to
    interface being in __RESETTING state because of MTU change.
    
    Add new reset_waitqueue to indicate that reset has finished.
    
    Add waiting for reset to finish in callbacks which trigger hw reset:
    iavf_set_priv_flags(), iavf_change_mtu() and iavf_set_ringparam().
    We use a 5000ms timeout period because on Hyper-V based systems,
    this operation takes around 3000-4000ms. In normal circumstances,
    it doesn't take more than 500ms to complete.
    
    Add a function iavf_wait_for_reset() to reuse waiting for reset code and
    use it also in iavf_set_channels(), which already waits for reset.
    We don't use error handling in iavf_set_channels() as this could
    cause the device to be in incorrect state if the reset was scheduled
    but hit timeout or the waitng function was interrupted by a signal.
    
    Fixes: 4e5e6b5d9d13 ("iavf: Fix return of set the new channel count")
    Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
    Co-developed-by: Dawid Wesierski <dawidx.wesierski@intel.com>
    Signed-off-by: Dawid Wesierski <dawidx.wesierski@intel.com>
    Signed-off-by: Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
    Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@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 e631b18cc5703beb9bd221dc13b61719ceec8ad4
Author: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Date:   Wed Jun 21 08:54:05 2023 -0700

    iavf: make functions static where possible
    
    [ Upstream commit a4aadf0f5905661cd25c366b96cc1c840f05b756 ]
    
    Make all possible functions static.
    
    Move iavf_force_wb() up to avoid forward declaration.
    
    Suggested-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: c2ed2403f12c ("iavf: Wait for reset in callbacks which trigger it")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e9db32eec628481f5da97a5b1aedb84a5240d18
Author: Ahmed Zaki <ahmed.zaki@intel.com>
Date:   Fri May 19 15:46:02 2023 -0600

    iavf: use internal state to free traffic IRQs
    
    [ Upstream commit a77ed5c5b768e9649be240a2d864e5cd9c6a2015 ]
    
    If the system tries to close the netdev while iavf_reset_task() is
    running, __LINK_STATE_START will be cleared and netif_running() will
    return false in iavf_reinit_interrupt_scheme(). This will result in
    iavf_free_traffic_irqs() not being called and a leak as follows:
    
        [7632.489326] remove_proc_entry: removing non-empty directory 'irq/999', leaking at least 'iavf-enp24s0f0v0-TxRx-0'
        [7632.490214] WARNING: CPU: 0 PID: 10 at fs/proc/generic.c:718 remove_proc_entry+0x19b/0x1b0
    
    is shown when pci_disable_msix() is later called. Fix by using the
    internal adapter state. The traffic IRQs will always exist if
    state == __IAVF_RUNNING.
    
    Fixes: 5b36e8d04b44 ("i40evf: Enable VF to request an alternate queue allocation")
    Signed-off-by: Ahmed Zaki <ahmed.zaki@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 65ecebc9ac09427b2c65f271cd5e5bd536c3fe38
Author: Ding Hui <dinghui@sangfor.com.cn>
Date:   Tue May 9 19:11:48 2023 +0800

    iavf: Fix out-of-bounds when setting channels on remove
    
    [ Upstream commit 7c4bced3caa749ce468b0c5de711c98476b23a52 ]
    
    If we set channels greater during iavf_remove(), and waiting reset done
    would be timeout, then returned with error but changed num_active_queues
    directly, that will lead to OOB like the following logs. Because the
    num_active_queues is greater than tx/rx_rings[] allocated actually.
    
    Reproducer:
    
      [root@host ~]# cat repro.sh
      #!/bin/bash
    
      pf_dbsf="0000:41:00.0"
      vf0_dbsf="0000:41:02.0"
      g_pids=()
    
      function do_set_numvf()
      {
          echo 2 >/sys/bus/pci/devices/${pf_dbsf}/sriov_numvfs
          sleep $((RANDOM%3+1))
          echo 0 >/sys/bus/pci/devices/${pf_dbsf}/sriov_numvfs
          sleep $((RANDOM%3+1))
      }
    
      function do_set_channel()
      {
          local nic=$(ls -1 --indicator-style=none /sys/bus/pci/devices/${vf0_dbsf}/net/)
          [ -z "$nic" ] && { sleep $((RANDOM%3)) ; return 1; }
          ifconfig $nic 192.168.18.5 netmask 255.255.255.0
          ifconfig $nic up
          ethtool -L $nic combined 1
          ethtool -L $nic combined 4
          sleep $((RANDOM%3))
      }
    
      function on_exit()
      {
          local pid
          for pid in "${g_pids[@]}"; do
              kill -0 "$pid" &>/dev/null && kill "$pid" &>/dev/null
          done
          g_pids=()
      }
    
      trap "on_exit; exit" EXIT
    
      while :; do do_set_numvf ; done &
      g_pids+=($!)
      while :; do do_set_channel ; done &
      g_pids+=($!)
    
      wait
    
    Result:
    
    [ 3506.152887] iavf 0000:41:02.0: Removing device
    [ 3510.400799] ==================================================================
    [ 3510.400820] BUG: KASAN: slab-out-of-bounds in iavf_free_all_tx_resources+0x156/0x160 [iavf]
    [ 3510.400823] Read of size 8 at addr ffff88b6f9311008 by task repro.sh/55536
    [ 3510.400823]
    [ 3510.400830] CPU: 101 PID: 55536 Comm: repro.sh Kdump: loaded Tainted: G           O     --------- -t - 4.18.0 #1
    [ 3510.400832] Hardware name: Powerleader PR2008AL/H12DSi-N6, BIOS 2.0 04/09/2021
    [ 3510.400835] Call Trace:
    [ 3510.400851]  dump_stack+0x71/0xab
    [ 3510.400860]  print_address_description+0x6b/0x290
    [ 3510.400865]  ? iavf_free_all_tx_resources+0x156/0x160 [iavf]
    [ 3510.400868]  kasan_report+0x14a/0x2b0
    [ 3510.400873]  iavf_free_all_tx_resources+0x156/0x160 [iavf]
    [ 3510.400880]  iavf_remove+0x2b6/0xc70 [iavf]
    [ 3510.400884]  ? iavf_free_all_rx_resources+0x160/0x160 [iavf]
    [ 3510.400891]  ? wait_woken+0x1d0/0x1d0
    [ 3510.400895]  ? notifier_call_chain+0xc1/0x130
    [ 3510.400903]  pci_device_remove+0xa8/0x1f0
    [ 3510.400910]  device_release_driver_internal+0x1c6/0x460
    [ 3510.400916]  pci_stop_bus_device+0x101/0x150
    [ 3510.400919]  pci_stop_and_remove_bus_device+0xe/0x20
    [ 3510.400924]  pci_iov_remove_virtfn+0x187/0x420
    [ 3510.400927]  ? pci_iov_add_virtfn+0xe10/0xe10
    [ 3510.400929]  ? pci_get_subsys+0x90/0x90
    [ 3510.400932]  sriov_disable+0xed/0x3e0
    [ 3510.400936]  ? bus_find_device+0x12d/0x1a0
    [ 3510.400953]  i40e_free_vfs+0x754/0x1210 [i40e]
    [ 3510.400966]  ? i40e_reset_all_vfs+0x880/0x880 [i40e]
    [ 3510.400968]  ? pci_get_device+0x7c/0x90
    [ 3510.400970]  ? pci_get_subsys+0x90/0x90
    [ 3510.400982]  ? pci_vfs_assigned.part.7+0x144/0x210
    [ 3510.400987]  ? __mutex_lock_slowpath+0x10/0x10
    [ 3510.400996]  i40e_pci_sriov_configure+0x1fa/0x2e0 [i40e]
    [ 3510.401001]  sriov_numvfs_store+0x214/0x290
    [ 3510.401005]  ? sriov_totalvfs_show+0x30/0x30
    [ 3510.401007]  ? __mutex_lock_slowpath+0x10/0x10
    [ 3510.401011]  ? __check_object_size+0x15a/0x350
    [ 3510.401018]  kernfs_fop_write+0x280/0x3f0
    [ 3510.401022]  vfs_write+0x145/0x440
    [ 3510.401025]  ksys_write+0xab/0x160
    [ 3510.401028]  ? __ia32_sys_read+0xb0/0xb0
    [ 3510.401031]  ? fput_many+0x1a/0x120
    [ 3510.401032]  ? filp_close+0xf0/0x130
    [ 3510.401038]  do_syscall_64+0xa0/0x370
    [ 3510.401041]  ? page_fault+0x8/0x30
    [ 3510.401043]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    [ 3510.401073] RIP: 0033:0x7f3a9bb842c0
    [ 3510.401079] Code: 73 01 c3 48 8b 0d d8 cb 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 89 24 2d 00 00 75 10 b8 01 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 fe dd 01 00 48 89 04 24
    [ 3510.401080] RSP: 002b:00007ffc05f1fe18 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [ 3510.401083] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f3a9bb842c0
    [ 3510.401085] RDX: 0000000000000002 RSI: 0000000002327408 RDI: 0000000000000001
    [ 3510.401086] RBP: 0000000002327408 R08: 00007f3a9be53780 R09: 00007f3a9c8a4700
    [ 3510.401086] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000002
    [ 3510.401087] R13: 0000000000000001 R14: 00007f3a9be52620 R15: 0000000000000001
    [ 3510.401090]
    [ 3510.401093] Allocated by task 76795:
    [ 3510.401098]  kasan_kmalloc+0xa6/0xd0
    [ 3510.401099]  __kmalloc+0xfb/0x200
    [ 3510.401104]  iavf_init_interrupt_scheme+0x26f/0x1310 [iavf]
    [ 3510.401108]  iavf_watchdog_task+0x1d58/0x4050 [iavf]
    [ 3510.401114]  process_one_work+0x56a/0x11f0
    [ 3510.401115]  worker_thread+0x8f/0xf40
    [ 3510.401117]  kthread+0x2a0/0x390
    [ 3510.401119]  ret_from_fork+0x1f/0x40
    [ 3510.401122]  0xffffffffffffffff
    [ 3510.401123]
    
    In timeout handling, we should keep the original num_active_queues
    and reset num_req_queues to 0.
    
    Fixes: 4e5e6b5d9d13 ("iavf: Fix return of set the new channel count")
    Signed-off-by: Ding Hui <dinghui@sangfor.com.cn>
    Cc: Donglin Peng <pengdonglin@sangfor.com.cn>
    Cc: Huang Cun <huangcun@sangfor.com.cn>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.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 8d781a9c53034813c3194b7d94409c7d24ac73eb
Author: Ding Hui <dinghui@sangfor.com.cn>
Date:   Tue May 9 19:11:47 2023 +0800

    iavf: Fix use-after-free in free_netdev
    
    [ Upstream commit 5f4fa1672d98fe99d2297b03add35346f1685d6b ]
    
    We do netif_napi_add() for all allocated q_vectors[], but potentially
    do netif_napi_del() for part of them, then kfree q_vectors and leave
    invalid pointers at dev->napi_list.
    
    Reproducer:
    
      [root@host ~]# cat repro.sh
      #!/bin/bash
    
      pf_dbsf="0000:41:00.0"
      vf0_dbsf="0000:41:02.0"
      g_pids=()
    
      function do_set_numvf()
      {
          echo 2 >/sys/bus/pci/devices/${pf_dbsf}/sriov_numvfs
          sleep $((RANDOM%3+1))
          echo 0 >/sys/bus/pci/devices/${pf_dbsf}/sriov_numvfs
          sleep $((RANDOM%3+1))
      }
    
      function do_set_channel()
      {
          local nic=$(ls -1 --indicator-style=none /sys/bus/pci/devices/${vf0_dbsf}/net/)
          [ -z "$nic" ] && { sleep $((RANDOM%3)) ; return 1; }
          ifconfig $nic 192.168.18.5 netmask 255.255.255.0
          ifconfig $nic up
          ethtool -L $nic combined 1
          ethtool -L $nic combined 4
          sleep $((RANDOM%3))
      }
    
      function on_exit()
      {
          local pid
          for pid in "${g_pids[@]}"; do
              kill -0 "$pid" &>/dev/null && kill "$pid" &>/dev/null
          done
          g_pids=()
      }
    
      trap "on_exit; exit" EXIT
    
      while :; do do_set_numvf ; done &
      g_pids+=($!)
      while :; do do_set_channel ; done &
      g_pids+=($!)
    
      wait
    
    Result:
    
    [ 4093.900222] ==================================================================
    [ 4093.900230] BUG: KASAN: use-after-free in free_netdev+0x308/0x390
    [ 4093.900232] Read of size 8 at addr ffff88b4dc145640 by task repro.sh/6699
    [ 4093.900233]
    [ 4093.900236] CPU: 10 PID: 6699 Comm: repro.sh Kdump: loaded Tainted: G           O     --------- -t - 4.18.0 #1
    [ 4093.900238] Hardware name: Powerleader PR2008AL/H12DSi-N6, BIOS 2.0 04/09/2021
    [ 4093.900239] Call Trace:
    [ 4093.900244]  dump_stack+0x71/0xab
    [ 4093.900249]  print_address_description+0x6b/0x290
    [ 4093.900251]  ? free_netdev+0x308/0x390
    [ 4093.900252]  kasan_report+0x14a/0x2b0
    [ 4093.900254]  free_netdev+0x308/0x390
    [ 4093.900261]  iavf_remove+0x825/0xd20 [iavf]
    [ 4093.900265]  pci_device_remove+0xa8/0x1f0
    [ 4093.900268]  device_release_driver_internal+0x1c6/0x460
    [ 4093.900271]  pci_stop_bus_device+0x101/0x150
    [ 4093.900273]  pci_stop_and_remove_bus_device+0xe/0x20
    [ 4093.900275]  pci_iov_remove_virtfn+0x187/0x420
    [ 4093.900277]  ? pci_iov_add_virtfn+0xe10/0xe10
    [ 4093.900278]  ? pci_get_subsys+0x90/0x90
    [ 4093.900280]  sriov_disable+0xed/0x3e0
    [ 4093.900282]  ? bus_find_device+0x12d/0x1a0
    [ 4093.900290]  i40e_free_vfs+0x754/0x1210 [i40e]
    [ 4093.900298]  ? i40e_reset_all_vfs+0x880/0x880 [i40e]
    [ 4093.900299]  ? pci_get_device+0x7c/0x90
    [ 4093.900300]  ? pci_get_subsys+0x90/0x90
    [ 4093.900306]  ? pci_vfs_assigned.part.7+0x144/0x210
    [ 4093.900309]  ? __mutex_lock_slowpath+0x10/0x10
    [ 4093.900315]  i40e_pci_sriov_configure+0x1fa/0x2e0 [i40e]
    [ 4093.900318]  sriov_numvfs_store+0x214/0x290
    [ 4093.900320]  ? sriov_totalvfs_show+0x30/0x30
    [ 4093.900321]  ? __mutex_lock_slowpath+0x10/0x10
    [ 4093.900323]  ? __check_object_size+0x15a/0x350
    [ 4093.900326]  kernfs_fop_write+0x280/0x3f0
    [ 4093.900329]  vfs_write+0x145/0x440
    [ 4093.900330]  ksys_write+0xab/0x160
    [ 4093.900332]  ? __ia32_sys_read+0xb0/0xb0
    [ 4093.900334]  ? fput_many+0x1a/0x120
    [ 4093.900335]  ? filp_close+0xf0/0x130
    [ 4093.900338]  do_syscall_64+0xa0/0x370
    [ 4093.900339]  ? page_fault+0x8/0x30
    [ 4093.900341]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    [ 4093.900357] RIP: 0033:0x7f16ad4d22c0
    [ 4093.900359] Code: 73 01 c3 48 8b 0d d8 cb 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 89 24 2d 00 00 75 10 b8 01 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 fe dd 01 00 48 89 04 24
    [ 4093.900360] RSP: 002b:00007ffd6491b7f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [ 4093.900362] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f16ad4d22c0
    [ 4093.900363] RDX: 0000000000000002 RSI: 0000000001a41408 RDI: 0000000000000001
    [ 4093.900364] RBP: 0000000001a41408 R08: 00007f16ad7a1780 R09: 00007f16ae1f2700
    [ 4093.900364] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000002
    [ 4093.900365] R13: 0000000000000001 R14: 00007f16ad7a0620 R15: 0000000000000001
    [ 4093.900367]
    [ 4093.900368] Allocated by task 820:
    [ 4093.900371]  kasan_kmalloc+0xa6/0xd0
    [ 4093.900373]  __kmalloc+0xfb/0x200
    [ 4093.900376]  iavf_init_interrupt_scheme+0x63b/0x1320 [iavf]
    [ 4093.900380]  iavf_watchdog_task+0x3d51/0x52c0 [iavf]
    [ 4093.900382]  process_one_work+0x56a/0x11f0
    [ 4093.900383]  worker_thread+0x8f/0xf40
    [ 4093.900384]  kthread+0x2a0/0x390
    [ 4093.900385]  ret_from_fork+0x1f/0x40
    [ 4093.900387]  0xffffffffffffffff
    [ 4093.900387]
    [ 4093.900388] Freed by task 6699:
    [ 4093.900390]  __kasan_slab_free+0x137/0x190
    [ 4093.900391]  kfree+0x8b/0x1b0
    [ 4093.900394]  iavf_free_q_vectors+0x11d/0x1a0 [iavf]
    [ 4093.900397]  iavf_remove+0x35a/0xd20 [iavf]
    [ 4093.900399]  pci_device_remove+0xa8/0x1f0
    [ 4093.900400]  device_release_driver_internal+0x1c6/0x460
    [ 4093.900401]  pci_stop_bus_device+0x101/0x150
    [ 4093.900402]  pci_stop_and_remove_bus_device+0xe/0x20
    [ 4093.900403]  pci_iov_remove_virtfn+0x187/0x420
    [ 4093.900404]  sriov_disable+0xed/0x3e0
    [ 4093.900409]  i40e_free_vfs+0x754/0x1210 [i40e]
    [ 4093.900415]  i40e_pci_sriov_configure+0x1fa/0x2e0 [i40e]
    [ 4093.900416]  sriov_numvfs_store+0x214/0x290
    [ 4093.900417]  kernfs_fop_write+0x280/0x3f0
    [ 4093.900418]  vfs_write+0x145/0x440
    [ 4093.900419]  ksys_write+0xab/0x160
    [ 4093.900420]  do_syscall_64+0xa0/0x370
    [ 4093.900421]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    [ 4093.900422]  0xffffffffffffffff
    [ 4093.900422]
    [ 4093.900424] The buggy address belongs to the object at ffff88b4dc144200
                    which belongs to the cache kmalloc-8k of size 8192
    [ 4093.900425] The buggy address is located 5184 bytes inside of
                    8192-byte region [ffff88b4dc144200, ffff88b4dc146200)
    [ 4093.900425] The buggy address belongs to the page:
    [ 4093.900427] page:ffffea00d3705000 refcount:1 mapcount:0 mapping:ffff88bf04415c80 index:0x0 compound_mapcount: 0
    [ 4093.900430] flags: 0x10000000008100(slab|head)
    [ 4093.900433] raw: 0010000000008100 dead000000000100 dead000000000200 ffff88bf04415c80
    [ 4093.900434] raw: 0000000000000000 0000000000030003 00000001ffffffff 0000000000000000
    [ 4093.900434] page dumped because: kasan: bad access detected
    [ 4093.900435]
    [ 4093.900435] Memory state around the buggy address:
    [ 4093.900436]  ffff88b4dc145500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 4093.900437]  ffff88b4dc145580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 4093.900438] >ffff88b4dc145600: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 4093.900438]                                            ^
    [ 4093.900439]  ffff88b4dc145680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 4093.900440]  ffff88b4dc145700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 4093.900440] ==================================================================
    
    Although the patch #2 (of 2) can avoid the issue triggered by this
    repro.sh, there still are other potential risks that if num_active_queues
    is changed to less than allocated q_vectors[] by unexpected, the
    mismatched netif_napi_add/del() can also cause UAF.
    
    Since we actually call netif_napi_add() for all allocated q_vectors
    unconditionally in iavf_alloc_q_vectors(), so we should fix it by
    letting netif_napi_del() match to netif_napi_add().
    
    Fixes: 5eae00c57f5e ("i40evf: main driver core")
    Signed-off-by: Ding Hui <dinghui@sangfor.com.cn>
    Cc: Donglin Peng <pengdonglin@sangfor.com.cn>
    Cc: Huang Cun <huangcun@sangfor.com.cn>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Reviewed-by: Madhu Chittim <madhu.chittim@intel.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.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 21d92025e80629fd5c25cd6751f8cf38c784dd4a
Author: Andrzej Hajda <andrzej.hajda@intel.com>
Date:   Tue Jul 11 17:34:10 2023 +0200

    drm/i915/perf: add sentinel to xehp_oa_b_counters
    
    [ Upstream commit 785b3f667b4bf98804cad135005e964df0c750de ]
    
    Arrays passed to reg_in_range_table should end with empty record.
    
    The patch solves KASAN detected bug with signature:
    BUG: KASAN: global-out-of-bounds in xehp_is_valid_b_counter_addr+0x2c7/0x350 [i915]
    Read of size 4 at addr ffffffffa1555d90 by task perf/1518
    
    CPU: 4 PID: 1518 Comm: perf Tainted: G U 6.4.0-kasan_438-g3303d06107f3+ #1
    Hardware name: Intel Corporation Meteor Lake Client Platform/MTL-P DDR5 SODIMM SBS RVP, BIOS MTLPFWI1.R00.3223.D80.2305311348 05/31/2023
    Call Trace:
    <TASK>
    ...
    xehp_is_valid_b_counter_addr+0x2c7/0x350 [i915]
    
    Fixes: 0fa9349dda03 ("drm/i915/perf: complete programming whitelisting for XEHPSDV")
    Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
    Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
    Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230711153410.1224997-1-andrzej.hajda@intel.com
    (cherry picked from commit 2f42c5afb34b5696cf5fe79e744f99be9b218798)
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 899057ac0fed609d9469e26d5072e5b6bf284b50
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Fri Jul 14 07:39:36 2023 +0200

    r8169: fix ASPM-related problem for chip version 42 and 43
    
    [ Upstream commit 162d626f3013215b82b6514ca14f20932c7ccce5 ]
    
    Referenced commit missed that for chip versions 42 and 43 ASPM
    remained disabled in the respective rtl_hw_start_...() routines.
    This resulted in problems as described in the referenced bug
    ticket. Therefore re-instantiate the previous logic.
    
    Fixes: 5fc3f6c90cca ("r8169: consolidate disabling ASPM before EPHY access")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217635
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 024825dfdc6234f84bf0464631b74b4ee3db01a2
Author: Tristram Ha <Tristram.Ha@microchip.com>
Date:   Thu Jul 13 17:46:22 2023 -0700

    net: dsa: microchip: correct KSZ8795 static MAC table access
    
    [ Upstream commit 4bdf79d686b49ac49373b36466acfb93972c7d7c ]
    
    The KSZ8795 driver code was modified to use on KSZ8863/73, which has
    different register definitions.  Some of the new KSZ8795 register
    information are wrong compared to previous code.
    
    KSZ8795 also behaves differently in that the STATIC_MAC_TABLE_USE_FID
    and STATIC_MAC_TABLE_FID bits are off by 1 when doing MAC table reading
    than writing.  To compensate that a special code was added to shift the
    register value by 1 before applying those bits.  This is wrong when the
    code is running on KSZ8863, so this special code is only executed when
    KSZ8795 is detected.
    
    Fixes: 4b20a07e103f ("net: dsa: microchip: ksz8795: add support for ksz88xx chips")
    Signed-off-by: Tristram Ha <Tristram.Ha@microchip.com>
    Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6777dfaf7c5abd2af7542a904c5f9b1a734ccde2
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Thu Jul 13 15:05:13 2023 -0300

    net: sched: cls_bpf: Undo tcf_bind_filter in case of an error
    
    [ Upstream commit 26a22194927e8521e304ed75c2f38d8068d55fc7 ]
    
    If cls_bpf_offload errors out, we must also undo tcf_bind_filter that
    was done before the error.
    
    Fix that by calling tcf_unbind_filter in errout_parms.
    
    Fixes: eadb41489fd2 ("net: cls_bpf: add support for marking filters as hardware-only")
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cec095b3387e9a1f079badf3660c4ccefe8f9cf9
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Thu Jul 13 15:05:12 2023 -0300

    net: sched: cls_u32: Undo refcount decrement in case update failed
    
    [ Upstream commit e8d3d78c19be0264a5692bed477c303523aead31 ]
    
    In the case of an update, when TCA_U32_LINK is set, u32_set_parms will
    decrement the refcount of the ht_down (struct tc_u_hnode) pointer
    present in the older u32 filter which we are replacing. However, if
    u32_replace_hw_knode errors out, the update command fails and that
    ht_down pointer continues decremented. To fix that, when
    u32_replace_hw_knode fails, check if ht_down's refcount was decremented
    and undo the decrement.
    
    Fixes: d34e3e181395 ("net: cls_u32: Add support for skip-sw flag to tc u32 classifier.")
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 025159ed118ba5145b241d574edadb0e00d3c20f
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Thu Jul 13 15:05:11 2023 -0300

    net: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode
    
    [ Upstream commit 9cb36faedeafb9720ac236aeae2ea57091d90a09 ]
    
    When u32_replace_hw_knode fails, we need to undo the tcf_bind_filter
    operation done at u32_set_parms.
    
    Fixes: d34e3e181395 ("net: cls_u32: Add support for skip-sw flag to tc u32 classifier.")
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1134ceab9192f7054e7f1a4e8758c8220ec742c9
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Thu Jul 13 15:05:10 2023 -0300

    net: sched: cls_matchall: Undo tcf_bind_filter in case of failure after mall_set_parms
    
    [ Upstream commit b3d0e0489430735e2e7626aa37e6462cdd136e9d ]
    
    In case an error occurred after mall_set_parms executed successfully, we
    must undo the tcf_bind_filter call it issues.
    
    Fix that by calling tcf_unbind_filter in err_replace_hw_filter label.
    
    Fixes: ec2507d2a306 ("net/sched: cls_matchall: Fix error path")
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04a025b17d83d07924e5e32508c72536ab8f42d9
Author: Martin Fuzzey <martin.fuzzey@flowbird.group>
Date:   Fri Jun 16 16:36:28 2023 +0200

    regulator: da9063: fix null pointer deref with partial DT config
    
    [ Upstream commit 98e2dd5f7a8be5cb2501a897e96910393a49f0ff ]
    
    When some of the da9063 regulators do not have corresponding DT nodes
    a null pointer dereference occurs on boot because such regulators have
    no init_data causing the pointers calculated in
    da9063_check_xvp_constraints() to be invalid.
    
    Do not dereference them in this case.
    
    Fixes: b8717a80e6ee ("regulator: da9063: implement setter for voltage monitoring")
    Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
    Link: https://lore.kernel.org/r/20230616143736.2946173-1-martin.fuzzey@flowbird.group
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d923485630d07374588f73e5fc28c173c9fbb286
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri Jul 7 14:25:23 2023 +0300

    ASoC: SOF: ipc3-dtrace: uninitialized data in dfsentry_trace_filter_write()
    
    [ Upstream commit 469e2f28c2cbee2430058c1c9bb6d1675d7195fb ]
    
    This doesn't check how many bytes the simple_write_to_buffer() writes to
    the buffer.  The only thing that we know is that the first byte is
    initialized and the last byte of the buffer is set to NUL.  However
    the middle bytes could be uninitialized.
    
    There is no need to use simple_write_to_buffer().  This code does not
    support partial writes but instead passes "pos = 0" as the starting
    offset regardless of what the user passed as "*ppos".  Just use the
    copy_from_user() function and initialize the whole buffer.
    
    Fixes: 671e0b90051e ("ASoC: SOF: Clone the trace code to ipc3-dtrace as fw_tracing implementation")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/74148292-ce4d-4e01-a1a7-921e6767da14@moroto.mountain
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca03b327224ed6be2d07f42ee6ee1cdd586cfd5b
Author: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Date:   Thu Jul 6 08:25:51 2023 +0200

    ice: prevent NULL pointer deref during reload
    
    [ Upstream commit b3e7b3a6ee92ab927f750a6b19615ce88ece808f ]
    
    Calling ethtool during reload can lead to call trace, because VSI isn't
    configured for some time, but netdev is alive.
    
    To fix it add rtnl lock for VSI deconfig and config. Set ::num_q_vectors
    to 0 after freeing and add a check for ::tx/rx_rings in ring related
    ethtool ops.
    
    Add proper unroll of filters in ice_start_eth().
    
    Reproduction:
    $watch -n 0.1 -d 'ethtool -g enp24s0f0np0'
    $devlink dev reload pci/0000:18:00.0 action driver_reinit
    
    Call trace before fix:
    [66303.926205] BUG: kernel NULL pointer dereference, address: 0000000000000000
    [66303.926259] #PF: supervisor read access in kernel mode
    [66303.926286] #PF: error_code(0x0000) - not-present page
    [66303.926311] PGD 0 P4D 0
    [66303.926332] Oops: 0000 [#1] PREEMPT SMP PTI
    [66303.926358] CPU: 4 PID: 933821 Comm: ethtool Kdump: loaded Tainted: G           OE      6.4.0-rc5+ #1
    [66303.926400] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.00.01.0014.070920180847 07/09/2018
    [66303.926446] RIP: 0010:ice_get_ringparam+0x22/0x50 [ice]
    [66303.926649] Code: 90 90 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 48 8b 87 c0 09 00 00 c7 46 04 e0 1f 00 00 c7 46 10 e0 1f 00 00 48 8b 50 20 <48> 8b 12 0f b7 52 3a 89 56 14 48 8b 40 28 48 8b 00 0f b7 40 58 48
    [66303.926722] RSP: 0018:ffffad40472f39c8 EFLAGS: 00010246
    [66303.926749] RAX: ffff98a8ada05828 RBX: ffff98a8c46dd060 RCX: ffffad40472f3b48
    [66303.926781] RDX: 0000000000000000 RSI: ffff98a8c46dd068 RDI: ffff98a8b23c4000
    [66303.926811] RBP: ffffad40472f3b48 R08: 00000000000337b0 R09: 0000000000000000
    [66303.926843] R10: 0000000000000001 R11: 0000000000000100 R12: ffff98a8b23c4000
    [66303.926874] R13: ffff98a8c46dd060 R14: 000000000000000f R15: ffffad40472f3a50
    [66303.926906] FS:  00007f6397966740(0000) GS:ffff98b390900000(0000) knlGS:0000000000000000
    [66303.926941] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [66303.926967] CR2: 0000000000000000 CR3: 000000011ac20002 CR4: 00000000007706e0
    [66303.926999] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [66303.927029] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [66303.927060] PKRU: 55555554
    [66303.927075] Call Trace:
    [66303.927094]  <TASK>
    [66303.927111]  ? __die+0x23/0x70
    [66303.927140]  ? page_fault_oops+0x171/0x4e0
    [66303.927176]  ? exc_page_fault+0x7f/0x180
    [66303.927209]  ? asm_exc_page_fault+0x26/0x30
    [66303.927244]  ? ice_get_ringparam+0x22/0x50 [ice]
    [66303.927433]  rings_prepare_data+0x62/0x80
    [66303.927469]  ethnl_default_doit+0xe2/0x350
    [66303.927501]  genl_family_rcv_msg_doit.isra.0+0xe3/0x140
    [66303.927538]  genl_rcv_msg+0x1b1/0x2c0
    [66303.927561]  ? __pfx_ethnl_default_doit+0x10/0x10
    [66303.927590]  ? __pfx_genl_rcv_msg+0x10/0x10
    [66303.927615]  netlink_rcv_skb+0x58/0x110
    [66303.927644]  genl_rcv+0x28/0x40
    [66303.927665]  netlink_unicast+0x19e/0x290
    [66303.927691]  netlink_sendmsg+0x254/0x4d0
    [66303.927717]  sock_sendmsg+0x93/0xa0
    [66303.927743]  __sys_sendto+0x126/0x170
    [66303.927780]  __x64_sys_sendto+0x24/0x30
    [66303.928593]  do_syscall_64+0x5d/0x90
    [66303.929370]  ? __count_memcg_events+0x60/0xa0
    [66303.930146]  ? count_memcg_events.constprop.0+0x1a/0x30
    [66303.930920]  ? handle_mm_fault+0x9e/0x350
    [66303.931688]  ? do_user_addr_fault+0x258/0x740
    [66303.932452]  ? exc_page_fault+0x7f/0x180
    [66303.933193]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
    
    Fixes: 5b246e533d01 ("ice: split probe into smaller functions")
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9751240ec462ce665fd064f493abd741c7651365
Author: Petr Oros <poros@redhat.com>
Date:   Mon Jun 19 12:58:13 2023 +0200

    ice: Unregister netdev and devlink_port only once
    
    [ Upstream commit 24a3298ac9e6bd8de838ab79f7868207170d556d ]
    
    Since commit 6624e780a577fc ("ice: split ice_vsi_setup into smaller
    functions") ice_vsi_release does things twice. There is unregister
    netdev which is unregistered in ice_deinit_eth also.
    
    It also unregisters the devlink_port twice which is also unregistered
    in ice_deinit_eth(). This double deregistration is hidden because
    devl_port_unregister ignores the return value of xa_erase.
    
    [   68.642167] Call Trace:
    [   68.650385]  ice_devlink_destroy_pf_port+0xe/0x20 [ice]
    [   68.655656]  ice_vsi_release+0x445/0x690 [ice]
    [   68.660147]  ice_deinit+0x99/0x280 [ice]
    [   68.664117]  ice_remove+0x1b6/0x5c0 [ice]
    
    [  171.103841] Call Trace:
    [  171.109607]  ice_devlink_destroy_pf_port+0xf/0x20 [ice]
    [  171.114841]  ice_remove+0x158/0x270 [ice]
    [  171.118854]  pci_device_remove+0x3b/0xc0
    [  171.122779]  device_release_driver_internal+0xc7/0x170
    [  171.127912]  driver_detach+0x54/0x8c
    [  171.131491]  bus_remove_driver+0x77/0xd1
    [  171.135406]  pci_unregister_driver+0x2d/0xb0
    [  171.139670]  ice_module_exit+0xc/0x55f [ice]
    
    Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
    Signed-off-by: Petr Oros <poros@redhat.com>
    Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57d25e9905c71133e201f6d06b56a3403d4ad433
Author: Shyam Prasad N <nspmangalore@gmail.com>
Date:   Fri Jul 14 08:56:33 2023 +0000

    cifs: fix mid leak during reconnection after timeout threshold
    
    [ Upstream commit 69cba9d3c1284e0838ae408830a02c4a063104bc ]
    
    When the number of responses with status of STATUS_IO_TIMEOUT
    exceeds a specified threshold (NUM_STATUS_IO_TIMEOUT), we reconnect
    the connection. But we do not return the mid, or the credits
    returned for the mid, or reduce the number of in-flight requests.
    
    This bug could result in the server->in_flight count to go bad,
    and also cause a leak in the mids.
    
    This change moves the check to a few lines below where the
    response is decrypted, even of the response is read from the
    transform header. This way, the code for returning the mids
    can be reused.
    
    Also, the cifs_reconnect was reconnecting just the transport
    connection before. In case of multi-channel, this may not be
    what we want to do after several timeouts. Changed that to
    reconnect the session and the tree too.
    
    Also renamed NUM_STATUS_IO_TIMEOUT to a more appropriate name
    MAX_STATUS_IO_TIMEOUT.
    
    Fixes: 8e670f77c4a5 ("Handle STATUS_IO_TIMEOUT gracefully")
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ee1fce29fe69b4dd3cdc5bed1c1db9fa721205b
Author: Dan Carpenter <error27@gmail.com>
Date:   Thu Apr 6 11:55:31 2023 +0300

    iommu/sva: Fix signedness bug in iommu_sva_alloc_pasid()
    
    [ Upstream commit c20ecf7bb6153149b81a9277eda23398957656f2 ]
    
    The ida_alloc_range() function returns negative error codes on error.
    On success it returns values in the min to max range (inclusive).  It
    never returns more then INT_MAX even if "max" is higher.  It never
    returns values in the 0 to (min - 1) range.
    
    The bug is that "min" is an unsigned int so negative error codes will
    be promoted to high positive values errors treated as success.
    
    Fixes: 1a14bf0fc7ed ("iommu/sva: Use GFP_KERNEL for pasid allocation")
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/6b32095d-7491-4ebb-a850-12e96209eaaf@kili.mountain
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52367a236fed5d4e8de8371cdbdc6b3a82531316
Author: Yan Zhai <yan@cloudflare.com>
Date:   Thu Jul 13 10:28:00 2023 -0700

    gso: fix dodgy bit handling for GSO_UDP_L4
    
    [ Upstream commit 9840036786d90cea11a90d1f30b6dc003b34ee67 ]
    
    Commit 1fd54773c267 ("udp: allow header check for dodgy GSO_UDP_L4
    packets.") checks DODGY bit for UDP, but for packets that can be fed
    directly to the device after gso_segs reset, it actually falls through
    to fragmentation:
    
    https://lore.kernel.org/all/CAJPywTKDdjtwkLVUW6LRA2FU912qcDmQOQGt2WaDo28KzYDg+A@mail.gmail.com/
    
    This change restores the expected behavior of GSO_UDP_L4 packets.
    
    Fixes: 1fd54773c267 ("udp: allow header check for dodgy GSO_UDP_L4 packets.")
    Suggested-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
    Signed-off-by: Yan Zhai <yan@cloudflare.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2fffd17951a1f2b7c884ba1de30ae5f6af1921ea
Author: Daniel Golle <daniel@makrotopia.org>
Date:   Thu Jul 13 03:42:29 2023 +0100

    net: ethernet: mtk_eth_soc: handle probe deferral
    
    [ Upstream commit 1d6d537dc55d1f42d16290f00157ac387985b95b ]
    
    Move the call to of_get_ethdev_address to mtk_add_mac which is part of
    the probe function and can hence itself return -EPROBE_DEFER should
    of_get_ethdev_address return -EPROBE_DEFER. This allows us to entirely
    get rid of the mtk_init function.
    
    The problem of of_get_ethdev_address returning -EPROBE_DEFER surfaced
    in situations in which the NVMEM provider holding the MAC address has
    not yet be loaded at the time mtk_eth_soc is initially probed. In this
    case probing of mtk_eth_soc should be deferred instead of falling back
    to use a random MAC address, so once the NVMEM provider becomes
    available probing can be repeated.
    
    Fixes: 656e705243fd ("net-next: mediatek: add support for MT7623 ethernet")
    Signed-off-by: Daniel Golle <daniel@makrotopia.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d8415abc62b1d6cb01ec1e1e188ebce87c47b33a
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Wed Jul 12 08:44:49 2023 -0700

    bridge: Add extack warning when enabling STP in netns.
    
    [ Upstream commit 56a16035bb6effb37177867cea94c13a8382f745 ]
    
    When we create an L2 loop on a bridge in netns, we will see packets storm
    even if STP is enabled.
    
      # unshare -n
      # ip link add br0 type bridge
      # ip link add veth0 type veth peer name veth1
      # ip link set veth0 master br0 up
      # ip link set veth1 master br0 up
      # ip link set br0 type bridge stp_state 1
      # ip link set br0 up
      # sleep 30
      # ip -s link show br0
      2: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
          link/ether b6:61:98:1c:1c:b5 brd ff:ff:ff:ff:ff:ff
          RX: bytes  packets  errors  dropped missed  mcast
          956553768  12861249 0       0       0       12861249  <-. Keep
          TX: bytes  packets  errors  dropped carrier collsns     |  increasing
          1027834    11951    0       0       0       0         <-'   rapidly
    
    This is because llc_rcv() drops all packets in non-root netns and BPDU
    is dropped.
    
    Let's add extack warning when enabling STP in netns.
    
      # unshare -n
      # ip link add br0 type bridge
      # ip link set br0 type bridge stp_state 1
      Warning: bridge: STP does not work in non-root netns.
    
    Note this commit will be reverted later when we namespacify the whole LLC
    infra.
    
    Fixes: e730c15519d0 ("[NET]: Make packet reception network namespace safe")
    Suggested-by: Harry Coin <hcoin@quietfountain.com>
    Link: https://lore.kernel.org/netdev/0f531295-e289-022d-5add-5ceffa0df9bc@quietfountain.com/
    Suggested-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.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 92348447546fc2c3b13f9f60567cbc9ef43a9c39
Author: Tanmay Patil <t-patil@ti.com>
Date:   Wed Jul 12 16:36:57 2023 +0530

    net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field()
    
    [ Upstream commit b685f1a58956fa36cc01123f253351b25bfacfda ]
    
    CPSW ALE has 75 bit ALE entries which are stored within three 32 bit words.
    The cpsw_ale_get_field() and cpsw_ale_set_field() functions assume that the
    field will be strictly contained within one word. However, this is not
    guaranteed to be the case and it is possible for ALE field entries to span
    across up to two words at the most.
    
    Fix the methods to handle getting/setting fields spanning up to two words.
    
    Fixes: db82173f23c5 ("netdev: driver: ethernet: add cpsw address lookup engine support")
    Signed-off-by: Tanmay Patil <t-patil@ti.com>
    [s-vadapalli@ti.com: rephrased commit message and added Fixes tag]
    Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 445b30171d1f33b4d1c4c1a005d633f16306c6bb
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Thu Jul 13 00:34:05 2023 +0200

    dsa: mv88e6xxx: Do a final check before timing out
    
    [ Upstream commit 95ce158b6c93b28842b54b42ad1cb221b9844062 ]
    
    I get sporadic timeouts from the driver when using the
    MV88E6352. Reading the status again after the loop fixes the
    problem: the operation is successful but goes undetected.
    
    Some added prints show things like this:
    
    [   58.356209] mv88e6085 mdio_mux-0.1:00: Timeout while waiting
        for switch, addr 1b reg 0b, mask 8000, val 0000, data c000
    [   58.367487] mv88e6085 mdio_mux-0.1:00: Timeout waiting for
        ATU op 4000, fid 0001
    (...)
    [   61.826293] mv88e6085 mdio_mux-0.1:00: Timeout while waiting
        for switch, addr 1c reg 18, mask 8000, val 0000, data 9860
    [   61.837560] mv88e6085 mdio_mux-0.1:00: Timeout waiting
        for PHY command 1860 to complete
    
    The reason is probably not the commands: I think those are
    mostly fine with the 50+50ms timeout, but the problem
    appears when OpenWrt brings up several interfaces in
    parallel on a system with 7 populated ports: if one of
    them take more than 50 ms and waits one or more of the
    others can get stuck on the mutex for the switch and then
    this can easily multiply.
    
    As we sleep and wait, the function loop needs a final
    check after exiting the loop if we were successful.
    
    Suggested-by: Andrew Lunn <andrew@lunn.ch>
    Cc: Tobias Waldekranz <tobias@waldekranz.com>
    Fixes: 35da1dfd9484 ("net: dsa: mv88e6xxx: Improve performance of busy bit polling")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20230712223405.861899-1-linus.walleij@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 052459702231bc906a110613d620c7f9c905c7c5
Author: Marc Zyngier <maz@kernel.org>
Date:   Mon Jul 3 14:04:16 2023 +0100

    arm64: Fix HFGxTR_EL2 field naming
    
    [ Upstream commit 55b87b74996383230586f4f9f801ae304c70e649 ]
    
    The HFGxTR_EL2 fields do not always follow the naming described
    in the spec, nor do they match the name of the register they trap
    in the rest of the kernel.
    
    It is a bit sad that they were written by hand despite the availability
    of a machine readable version...
    
    Fixes: cc077e7facbe ("arm64/sysreg: Convert HFG[RW]TR_EL2 to automatic generation")
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20230703130416.1495307-1-maz@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb382196e6f6e05cfafdab797840e5a96c6e7bf0
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Tue Jul 11 14:15:10 2023 -0300

    smb: client: fix missed ses refcounting
    
    [ Upstream commit bf99f6be2d20146942bce6f9e90a0ceef12cbc1e ]
    
    Use new cifs_smb_ses_inc_refcount() helper to get an active reference
    of @ses and @ses->dfs_root_ses (if set).  This will prevent
    @ses->dfs_root_ses of being put in the next call to cifs_put_smb_ses()
    and thus potentially causing an use-after-free bug.
    
    Fixes: 8e3554150d6c ("cifs: fix sharing of DFS connections")
    Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 224ff8d6cab5071a04ed0cffafd323a0320b08bd
Author: Yonghong Song <yhs@fb.com>
Date:   Wed Jun 28 11:19:26 2023 -0700

    kallsyms: strip LTO-only suffixes from promoted global functions
    
    [ Upstream commit 8cc32a9bbf2934d90762d9de0187adcb5ad46a11 ]
    
    Commit 6eb4bd92c1ce ("kallsyms: strip LTO suffixes from static functions")
    stripped all function/variable suffixes started with '.' regardless
    of whether those suffixes are generated at LTO mode or not. In fact,
    as far as I know, in LTO mode, when a static function/variable is
    promoted to the global scope, '.llvm.<...>' suffix is added.
    
    The existing mechanism breaks live patch for a LTO kernel even if
    no <symbol>.llvm.<...> symbols are involved. For example, for the following
    kernel symbols:
      $ grep bpf_verifier_vlog /proc/kallsyms
      ffffffff81549f60 t bpf_verifier_vlog
      ffffffff8268b430 d bpf_verifier_vlog._entry
      ffffffff8282a958 d bpf_verifier_vlog._entry_ptr
      ffffffff82e12a1f d bpf_verifier_vlog.__already_done
    'bpf_verifier_vlog' is a static function. '_entry', '_entry_ptr' and
    '__already_done' are static variables used inside 'bpf_verifier_vlog',
    so llvm promotes them to file-level static with prefix 'bpf_verifier_vlog.'.
    Note that the func-level to file-level static function promotion also
    happens without LTO.
    
    Given a symbol name 'bpf_verifier_vlog', with LTO kernel, current mechanism will
    return 4 symbols to live patch subsystem which current live patching
    subsystem cannot handle it. With non-LTO kernel, only one symbol
    is returned.
    
    In [1], we have a lengthy discussion, the suggestion is to separate two
    cases:
      (1). new symbols with suffix which are generated regardless of whether
           LTO is enabled or not, and
      (2). new symbols with suffix generated only when LTO is enabled.
    
    The cleanup_symbol_name() should only remove suffixes for case (2).
    Case (1) should not be changed so it can work uniformly with or without LTO.
    
    This patch removed LTO-only suffix '.llvm.<...>' so live patching and
    tracing should work the same way for non-LTO kernel.
    The cleanup_symbol_name() in scripts/kallsyms.c is also changed to have the same
    filtering pattern so both kernel and kallsyms tool have the same
    expectation on the order of symbols.
    
     [1] https://lore.kernel.org/live-patching/20230615170048.2382735-1-song@kernel.org/T/#u
    
    Fixes: 6eb4bd92c1ce ("kallsyms: strip LTO suffixes from static functions")
    Reported-by: Song Liu <song@kernel.org>
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Reviewed-by: Zhen Lei <thunder.leizhen@huawei.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Acked-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20230628181926.4102448-1-yhs@fb.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03e37c96e95bdf0b40b979eaa74ccad724f3cacb
Author: Jaewon Kim <jaewon02.kim@samsung.com>
Date:   Tue Jul 11 17:20:20 2023 +0900

    spi: s3c64xx: clear loopback bit after loopback test
    
    [ Upstream commit 9ec3c5517e22a12d2ff1b71e844f7913641460c6 ]
    
    When SPI loopback transfer is performed, S3C64XX_SPI_MODE_SELF_LOOPBACK
    bit still remained. It works as loopback even if the next transfer is
    not spi loopback mode.
    If not SPI_LOOP, needs to clear S3C64XX_SPI_MODE_SELF_LOOPBACK bit.
    
    Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
    Fixes: ffb7bcd3b27e ("spi: s3c64xx: support loopback mode")
    Reviewed-by: Chanho Park <chanho61.park@samsung.com>
    Link: https://lore.kernel.org/r/20230711082020.138165-1-jaewon02.kim@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0d7c5934f01cd8e69d5da38bb024302ad6c3843f
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Jun 27 08:13:23 2023 +0200

    btrfs: be a bit more careful when setting mirror_num_ret in btrfs_map_block
    
    [ Upstream commit 4e7de35eb7d1a1d4f2dda15f39fbedd4798a0b8d ]
    
    The mirror_num_ret is allowed to be NULL, although it has to be set when
    smap is set.  Unfortunately that is not a well enough specifiable
    invariant for static type checkers, so add a NULL check to make sure they
    are fine.
    
    Fixes: 03793cbbc80f ("btrfs: add fast path for single device io in __btrfs_map_block")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b1297c4b8405bc9d9549534a28dbbd3cbfcf99e
Author: James Clark <james.clark@arm.com>
Date:   Fri Jul 7 16:45:46 2023 +0100

    perf build: Fix library not found error when using CSLIBS
    
    [ Upstream commit 1feece2780ac2f8de45177fe53979726cee4b3d1 ]
    
    -L only specifies the search path for libraries directly provided in the
    link line with -l. Because -lopencsd isn't specified, it's only linked
    because it's a dependency of -lopencsd_c_api. Dependencies like this are
    resolved using the default system search paths or -rpath-link=... rather
    than -L. This means that compilation only works if OpenCSD is installed
    to the system rather than provided with the CSLIBS (-L) option.
    
    This could be fixed by adding -Wl,-rpath-link=$(CSLIBS) but that is less
    conventional than just adding -lopencsd to the link line so that it uses
    -L. -lopencsd seems to have been removed in commit ed17b1914978eddb
    ("perf tools: Drop requirement for libstdc++.so for libopencsd check")
    because it was thought that there was a chance compilation would work
    even if it didn't exist, but I think that only applies to libstdc++ so
    there is no harm to add it back. libopencsd.so and libopencsd_c_api.so
    would always exist together.
    
    Testing
    =======
    
    The following scenarios now all work:
    
     * Cross build with OpenCSD installed
     * Cross build using CSLIBS=...
     * Native build with OpenCSD installed
     * Native build using CSLIBS=...
     * Static cross build with OpenCSD installed
     * Static cross build with CSLIBS=...
    
    Committer testing:
    
      ⬢[acme@toolbox perf-tools]$ alias m
      alias m='make -k BUILD_BPF_SKEL=1 CORESIGHT=1 O=/tmp/build/perf-tools -C tools/perf install-bin && git status && perf test python ;  perf record -o /dev/null sleep 0.01 ; perf stat --null sleep 0.01'
      ⬢[acme@toolbox perf-tools]$ ldd ~/bin/perf | grep csd
            libopencsd_c_api.so.1 => /lib64/libopencsd_c_api.so.1 (0x00007fd49c44e000)
            libopencsd.so.1 => /lib64/libopencsd.so.1 (0x00007fd49bd56000)
      ⬢[acme@toolbox perf-tools]$ cat /etc/redhat-release
      Fedora release 36 (Thirty Six)
      ⬢[acme@toolbox perf-tools]$
    
    Fixes: ed17b1914978eddb ("perf tools: Drop requirement for libstdc++.so for libopencsd check")
    Reported-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
    Signed-off-by: James Clark <james.clark@arm.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Tested-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Uwe Kleine-König <uwe@kleine-koenig.org>
    Cc: coresight@lists.linaro.org
    Closes: https://lore.kernel.org/linux-arm-kernel/56905d7a-a91e-883a-b707-9d5f686ba5f1@arm.com/
    Link: https://lore.kernel.org/all/36cc4dc6-bf4b-1093-1c0a-876e368af183@kleine-koenig.org/
    Link: https://lore.kernel.org/r/20230707154546.456720-1-james.clark@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38282a92c30422836d49e519bd109237f86a0888
Author: Yangtao Li <frank.li@vivo.com>
Date:   Mon Jul 10 21:19:58 2023 +0800

    fbdev: imxfb: Removed unneeded release_mem_region
    
    [ Upstream commit 45fcc058a75bf5d65cf4c32da44a252fbe873cd4 ]
    
    Remove unnecessary release_mem_region from the error path to prevent
    mem region from being released twice, which could avoid resource leak
    or other unexpected issues.
    
    Fixes: b083c22d5114 ("video: fbdev: imxfb: Convert request_mem_region + ioremap to devm_ioremap_resource")
    Signed-off-by: Yangtao Li <frank.li@vivo.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a7ea3b012263e8dcfe4f467d975e79c00ae3b40
Author: Martin Kaiser <martin@kaiser.cx>
Date:   Wed Jun 28 15:24:37 2023 +0200

    fbdev: imxfb: warn about invalid left/right margin
    
    [ Upstream commit 4e47382fbca916d7db95cbf9e2d7ca2e9d1ca3fe ]
    
    Warn about invalid var->left_margin or var->right_margin. Their values
    are read from the device tree.
    
    We store var->left_margin-3 and var->right_margin-1 in register
    fields. These fields should be >= 0.
    
    Fixes: 7e8549bcee00 ("imxfb: Fix margin settings")
    Signed-off-by: Martin Kaiser <martin@kaiser.cx>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 46d461f21e34d2ed5d881f9d4bd9d5f6d5b65372
Author: Jonas Gorski <jonas.gorski@gmail.com>
Date:   Thu Jun 29 09:14:52 2023 +0200

    spi: bcm63xx: fix max prepend length
    
    [ Upstream commit 5158814cbb37bbb38344b3ecddc24ba2ed0365f2 ]
    
    The command word is defined as following:
    
        /* Command */
        #define SPI_CMD_COMMAND_SHIFT           0
        #define SPI_CMD_DEVICE_ID_SHIFT         4
        #define SPI_CMD_PREPEND_BYTE_CNT_SHIFT  8
        #define SPI_CMD_ONE_BYTE_SHIFT          11
        #define SPI_CMD_ONE_WIRE_SHIFT          12
    
    If the prepend byte count field starts at bit 8, and the next defined
    bit is SPI_CMD_ONE_BYTE at bit 11, it can be at most 3 bits wide, and
    thus the max value is 7, not 15.
    
    Fixes: b17de076062a ("spi/bcm63xx: work around inability to keep CS up")
    Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
    Link: https://lore.kernel.org/r/20230629071453.62024-1-jonas.gorski@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d65f4a71479f756272fbbb074020d382edac659
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Tue Jul 4 12:18:58 2023 +0100

    pinctrl: renesas: rzg2l: Handle non-unique subnode names
    
    [ Upstream commit bfc374a145ae133613e05b9b89be561f169cb58d ]
    
    Currently, sd1 and sd0 have unique subnode names 'sd1_mux' and 'sd0_mux'.
    If we change these to non-unique subnode names such as 'mux' this can
    lead to the below conflict as the RZ/G2L pin control driver considers
    only the names of the subnodes.
    
       pinctrl-rzg2l 11030000.pinctrl: pin P47_0 already requested by 11c00000.mmc; cannot claim for 11c10000.mmc
       pinctrl-rzg2l 11030000.pinctrl: pin-376 (11c10000.mmc) status -22
       pinctrl-rzg2l 11030000.pinctrl: could not request pin 376 (P47_0) from group mux  on device pinctrl-rzg2l
       renesas_sdhi_internal_dmac 11c10000.mmc: Error applying setting, reverse things back
    
    Fix this by constructing unique names from the node names of both the
    pin control configuration node and its child node, where appropriate.
    
    Based on the work done by Geert for the RZ/V2M pinctrl driver.
    
    Fixes: c4c4637eb57f ("pinctrl: renesas: Add RZ/G2L pin and gpio controller driver")
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20230704111858.215278-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3775d589ed99eb55276142d68c61bbb311bba566
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jul 3 17:07:06 2023 +0200

    pinctrl: renesas: rzv2m: Handle non-unique subnode names
    
    [ Upstream commit f46a0b47cc0829acd050213194c5a77351e619b2 ]
    
    The eMMC and SDHI pin control configuration nodes in DT have subnodes
    with the same names ("data" and "ctrl").  As the RZ/V2M pin control
    driver considers only the names of the subnodes, this leads to
    conflicts:
    
        pinctrl-rzv2m b6250000.pinctrl: pin P8_2 already requested by 85000000.mmc; cannot claim for 85020000.mmc
        pinctrl-rzv2m b6250000.pinctrl: pin-130 (85020000.mmc) status -22
        renesas_sdhi_internal_dmac 85020000.mmc: Error applying setting, reverse things back
    
    Fix this by constructing unique names from the node names of both the
    pin control configuration node and its child node, where appropriate.
    
    Reported by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
    
    Fixes: 92a9b825257614af ("pinctrl: renesas: Add RZ/V2M pin and gpio controller driver")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
    Link: https://lore.kernel.org/r/607bd6ab4905b0b1b119a06ef953fa1184505777.1688396717.git.geert+renesas@glider.be
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d124ab17024cc85a1079b7810a018a497ebc13da
Author: Suren Baghdasaryan <surenb@google.com>
Date:   Thu Jun 29 17:56:12 2023 -0700

    sched/psi: use kernfs polling functions for PSI trigger polling
    
    [ Upstream commit aff037078ecaecf34a7c2afab1341815f90fba5e ]
    
    Destroying psi trigger in cgroup_file_release causes UAF issues when
    a cgroup is removed from under a polling process. This is happening
    because cgroup removal causes a call to cgroup_file_release while the
    actual file is still alive. Destroying the trigger at this point would
    also destroy its waitqueue head and if there is still a polling process
    on that file accessing the waitqueue, it will step on the freed pointer:
    
    do_select
      vfs_poll
                               do_rmdir
                                 cgroup_rmdir
                                   kernfs_drain_open_files
                                     cgroup_file_release
                                       cgroup_pressure_release
                                         psi_trigger_destroy
                                           wake_up_pollfree(&t->event_wait)
    // vfs_poll is unblocked
                                           synchronize_rcu
                                           kfree(t)
      poll_freewait -> UAF access to the trigger's waitqueue head
    
    Patch [1] fixed this issue for epoll() case using wake_up_pollfree(),
    however the same issue exists for synchronous poll() case.
    The root cause of this issue is that the lifecycles of the psi trigger's
    waitqueue and of the file associated with the trigger are different. Fix
    this by using kernfs_generic_poll function when polling on cgroup-specific
    psi triggers. It internally uses kernfs_open_node->poll waitqueue head
    with its lifecycle tied to the file's lifecycle. This also renders the
    fix in [1] obsolete, so revert it.
    
    [1] commit c2dbe32d5db5 ("sched/psi: Fix use-after-free in ep_remove_wait_queue()")
    
    Fixes: 0e94682b73bf ("psi: introduce psi monitor")
    Closes: https://lore.kernel.org/all/20230613062306.101831-1-lujialin4@huawei.com/
    Reported-by: Lu Jialin <lujialin4@huawei.com>
    Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20230630005612.1014540-1-surenb@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cf954dd718e3a282b28f255283c7401f0c00f37c
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Tue Jun 20 16:07:47 2023 +0800

    sched/fair: Use recent_used_cpu to test p->cpus_ptr
    
    [ Upstream commit ae2ad293d6be143ad223f5f947cca07bcbe42595 ]
    
    When checking whether a recently used CPU can be a potential idle
    candidate, recent_used_cpu should be used to test p->cpus_ptr as
    p->recent_used_cpu is not equal to recent_used_cpu and candidate
    decision is made based on recent_used_cpu here.
    
    Fixes: 89aafd67f28c ("sched/fair: Use prev instead of new target as recent_used_cpu")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Phil Auld <pauld@redhat.com>
    Acked-by: Mel Gorman <mgorman@suse.de>
    Link: https://lore.kernel.org/r/20230620080747.359122-1-linmiaohe@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04db1d8aa6e389ac93c093c26c4dbc2fbbe747aa
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Jun 16 14:43:55 2023 +0200

    iov_iter: Mark copy_iovec_from_user() noclone
    
    [ Upstream commit 719a937b7003933de1298ffa4b881dd6a234e244 ]
    
    Extend commit 50f9a76ef127 ("iov_iter: Mark
    copy_compat_iovec_from_user() noinline") to also cover
    copy_iovec_from_user(). Different compiler versions cause the same
    problem on different functions.
    
    lib/iov_iter.o: warning: objtool: .altinstr_replacement+0x1f: redundant UACCESS disable
    lib/iov_iter.o: warning: objtool: iovec_from_user+0x84: call to copy_iovec_from_user.part.0() with UACCESS enabled
    lib/iov_iter.o: warning: objtool: __import_iovec+0x143: call to copy_iovec_from_user.part.0() with UACCESS enabled
    
    Fixes: 50f9a76ef127 ("iov_iter: Mark copy_compat_iovec_from_user() noinline")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lkml.kernel.org/r/20230616124354.GD4253@hirez.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea5f73dc7e7378e77500490f78d4e57a5ff2b5b8
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Wed Jul 5 14:18:42 2023 +0100

    ASoC: qcom: q6apm: do not close GPR port before closing graph
    
    [ Upstream commit c1be62923d4d86e7c06b1224626e27eb8d9ab32e ]
    
    Closing GPR port before graph close can result in un handled notifications
    from DSP, this results in spam of errors from GPR driver as there is no
    one to handle these notification at that point in time.
    
    Fix this by closing GPR port after graph close is finished.
    
    Fixes: 5477518b8a0e ("ASoC: qdsp6: audioreach: add q6apm support")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705131842.41584-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 35e3982b5edcb41d0737e5bed3c1e34805c532a7
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Wed Jul 5 13:57:23 2023 +0100

    ASoC: codecs: wcd938x: fix dB range for HPHL and HPHR
    
    [ Upstream commit c03226ba15fe3c42d13907ec7d8536396602557b ]
    
    dB range for HPHL and HPHR gains are from +6dB to -30dB in steps of
    1.5dB with register values range from 0 to 24.
    
    Current code maps these dB ranges incorrectly, fix them to allow proper
    volume setting.
    
    Fixes: e8ba1e05bdc0 ("ASoC: codecs: wcd938x: add basic controls")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705125723.40464-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a5a0585c6b1b9485f09ba0883e3ee02fe73abfc
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Jun 30 16:27:13 2023 +0200

    ASoC: codecs: wcd938x: fix mbhc impedance loglevel
    
    [ Upstream commit e5ce198bd5c6923b6a51e1493b1401f84c24b26d ]
    
    Demote the MBHC impedance measurement printk, which is not an error
    message, from error to debug level.
    
    While at it, fix the capitalisation of "ohm" and add the missing space
    before the opening parenthesis.
    
    Fixes: bcee7ed09b8e ("ASoC: codecs: wcd938x: add Multi Button Headset Control support")
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230630142717.5314-2-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e7b00649d934731bab79b1d696ab57347508491
Author: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Date:   Mon Jun 26 16:23:54 2023 +0530

    ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count()
    
    [ Upstream commit 85aeab362201cf52c34cd429e4f6c75a0b42f9a3 ]
    
    For invalid dai id, instead of returning -EINVAL
    return bytes count as zero in acp_get_byte_count() function.
    
    Fixes: 623621a9f9e1 ("ASoC: amd: Add common framework to support I2S on ACP SOC")
    
    Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
    Link: https://lore.kernel.org/r/20230626105356.2580125-6-Vijendar.Mukunda@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14621889cf11d1d5abbaed7ea4293da8ec60e9d4
Author: Hao Chen <chenhao418@huawei.com>
Date:   Wed Jun 21 20:33:08 2023 +0800

    net: hns3: fix strncpy() not using dest-buf length as length issue
    
    [ Upstream commit 1cf3d5567f273a8746d1bade00633a93204f80f0 ]
    
    Now, strncpy() in hns3_dbg_fill_content() use src-length as copy-length,
    it may result in dest-buf overflow.
    
    This patch is to fix intel compile warning for csky-linux-gcc (GCC) 12.1.0
    compiler.
    
    The warning reports as below:
    
    hclge_debugfs.c:92:25: warning: 'strncpy' specified bound depends on
    the length of the source argument [-Wstringop-truncation]
    
    strncpy(pos, items[i].name, strlen(items[i].name));
    
    hclge_debugfs.c:90:25: warning: 'strncpy' output truncated before
    terminating nul copying as many bytes from a string as its length
    [-Wstringop-truncation]
    
    strncpy(pos, result[i], strlen(result[i]));
    
    strncpy() use src-length as copy-length, it may result in
    dest-buf overflow.
    
    So,this patch add some values check to avoid this issue.
    
    Signed-off-by: Hao Chen <chenhao418@huawei.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/lkml/202207170606.7WtHs9yS-lkp@intel.com/T/
    Signed-off-by: Hao Lan <lanhao@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41f63b72a01c0e0ac59ab83fd2d921fcce0f602d
Author: Ying Hsu <yinghsu@chromium.org>
Date:   Tue Jun 20 10:47:32 2023 -0700

    igb: Fix igb_down hung on surprise removal
    
    [ Upstream commit 004d25060c78fc31f66da0fa439c544dda1ac9d5 ]
    
    In a setup where a Thunderbolt hub connects to Ethernet and a display
    through USB Type-C, users may experience a hung task timeout when they
    remove the cable between the PC and the Thunderbolt hub.
    This is because the igb_down function is called multiple times when
    the Thunderbolt hub is unplugged. For example, the igb_io_error_detected
    triggers the first call, and the igb_remove triggers the second call.
    The second call to igb_down will block at napi_synchronize.
    Here's the call trace:
        __schedule+0x3b0/0xddb
        ? __mod_timer+0x164/0x5d3
        schedule+0x44/0xa8
        schedule_timeout+0xb2/0x2a4
        ? run_local_timers+0x4e/0x4e
        msleep+0x31/0x38
        igb_down+0x12c/0x22a [igb 6615058754948bfde0bf01429257eb59f13030d4]
        __igb_close+0x6f/0x9c [igb 6615058754948bfde0bf01429257eb59f13030d4]
        igb_close+0x23/0x2b [igb 6615058754948bfde0bf01429257eb59f13030d4]
        __dev_close_many+0x95/0xec
        dev_close_many+0x6e/0x103
        unregister_netdevice_many+0x105/0x5b1
        unregister_netdevice_queue+0xc2/0x10d
        unregister_netdev+0x1c/0x23
        igb_remove+0xa7/0x11c [igb 6615058754948bfde0bf01429257eb59f13030d4]
        pci_device_remove+0x3f/0x9c
        device_release_driver_internal+0xfe/0x1b4
        pci_stop_bus_device+0x5b/0x7f
        pci_stop_bus_device+0x30/0x7f
        pci_stop_bus_device+0x30/0x7f
        pci_stop_and_remove_bus_device+0x12/0x19
        pciehp_unconfigure_device+0x76/0xe9
        pciehp_disable_slot+0x6e/0x131
        pciehp_handle_presence_or_link_change+0x7a/0x3f7
        pciehp_ist+0xbe/0x194
        irq_thread_fn+0x22/0x4d
        ? irq_thread+0x1fd/0x1fd
        irq_thread+0x17b/0x1fd
        ? irq_forced_thread_fn+0x5f/0x5f
        kthread+0x142/0x153
        ? __irq_get_irqchip_state+0x46/0x46
        ? kthread_associate_blkcg+0x71/0x71
        ret_from_fork+0x1f/0x30
    
    In this case, igb_io_error_detected detaches the network interface
    and requests a PCIE slot reset, however, the PCIE reset callback is
    not being invoked and thus the Ethernet connection breaks down.
    As the PCIE error in this case is a non-fatal one, requesting a
    slot reset can be avoided.
    This patch fixes the task hung issue and preserves Ethernet
    connection by ignoring non-fatal PCIE errors.
    
    Signed-off-by: Ying Hsu <yinghsu@chromium.org>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/20230620174732.4145155-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed64a07d88c32af7eadcc5805b9bb41ef7dac5a7
Author: Yi Kuo <yi@yikuo.dev>
Date:   Wed Jun 21 13:12:20 2023 +0300

    wifi: iwlwifi: pcie: add device id 51F1 for killer 1675
    
    [ Upstream commit f4daceae4087bbb3e9a56044b44601d520d009d2 ]
    
    Intel Killer AX1675i/s with device id 51f1 would show
    "No config found for PCI dev 51f1/1672" in dmesg and refuse to work.
    Add the new device id 51F1 for 1675i/s to fix the issue.
    
    Signed-off-by: Yi Kuo <yi@yikuo.dev>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230621130444.ee224675380b.I921c905e21e8d041ad808def8f454f27b5ebcd8b@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65b76a252b6e77924349f93a6413863e59523113
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Jun 20 13:04:02 2023 +0300

    wifi: iwlwifi: mvm: avoid baid size integer overflow
    
    [ Upstream commit 1a528ab1da324d078ec60283c34c17848580df24 ]
    
    Roee reported various hard-to-debug crashes with pings in
    EHT aggregation scenarios. Enabling KASAN showed that we
    access the BAID allocation out of bounds, and looking at
    the code a bit shows that since the reorder buffer entry
    (struct iwl_mvm_reorder_buf_entry) is 128 bytes if debug
    such as lockdep is enabled, then staring from an agg size
    512 we overflow the size calculation, and allocate a much
    smaller structure than we should, causing slab corruption
    once we initialize this.
    
    Fix this by simply using u32 instead of u16.
    
    Reported-by: Roee Goldfiner <roee.h.goldfiner@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230620125813.f428c856030d.I2c2bb808e945adb71bc15f5b2bac2d8957ea90eb@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 418344157a381df9e6f008c116e03d1cec6e3b5f
Author: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
Date:   Tue Jun 20 13:03:59 2023 +0300

    wifi: iwlwifi: Add support for new PCI Id
    
    [ Upstream commit 35bd6f1d043d089fcb60450e1287cc65f0095787 ]
    
    Add support for the PCI Id 51F1 without IMR support.
    
    Signed-off-by: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230620125813.9800e652e789.Ic06a085832ac3f988c8ef07d856c8e281563295d@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8c3178d23156b65569e1ed458b045653b8188692
Author: Gustavo A. R. Silva <gustavoars@kernel.org>
Date:   Thu Jun 15 12:04:07 2023 -0600

    wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point()
    
    [ Upstream commit 71e7552c90db2a2767f5c17c7ec72296b0d92061 ]
    
    -Wstringop-overflow is legitimately warning us about extra_size
    pontentially being zero at some point, hence potenially ending
    up _allocating_ zero bytes of memory for extra pointer and then
    trying to access such object in a call to copy_from_user().
    
    Fix this by adding a sanity check to ensure we never end up
    trying to allocate zero bytes of data for extra pointer, before
    continue executing the rest of the code in the function.
    
    Address the following -Wstringop-overflow warning seen when built
    m68k architecture with allyesconfig configuration:
                     from net/wireless/wext-core.c:11:
    In function '_copy_from_user',
        inlined from 'copy_from_user' at include/linux/uaccess.h:183:7,
        inlined from 'ioctl_standard_iw_point' at net/wireless/wext-core.c:825:7:
    arch/m68k/include/asm/string.h:48:25: warning: '__builtin_memset' writing 1 or more bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
       48 | #define memset(d, c, n) __builtin_memset(d, c, n)
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
    include/linux/uaccess.h:153:17: note: in expansion of macro 'memset'
      153 |                 memset(to + (n - res), 0, res);
          |                 ^~~~~~
    In function 'kmalloc',
        inlined from 'kzalloc' at include/linux/slab.h:694:9,
        inlined from 'ioctl_standard_iw_point' at net/wireless/wext-core.c:819:10:
    include/linux/slab.h:577:16: note: at offset 1 into destination object of size 0 allocated by '__kmalloc'
      577 |         return __kmalloc(size, flags);
          |                ^~~~~~~~~~~~~~~~~~~~~~
    
    This help with the ongoing efforts to globally enable
    -Wstringop-overflow.
    
    Link: https://github.com/KSPP/linux/issues/315
    Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/ZItSlzvIpjdjNfd8@work
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb4d473bab7d97a11eb10453ebfc6e47cdda9f19
Author: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
Date:   Wed Jun 14 15:50:08 2023 +0300

    wifi: iwlwifi: mvm: Add NULL check before dereferencing the pointer
    
    [ Upstream commit 7dd50fd5478056929a012c6bf8b3c6f87c7e9e87 ]
    
    While vif pointers are protected by the corresponding "*active"
    fields, static checkers can get confused sometimes. Add an explicit
    check.
    
    Signed-off-by: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230614154951.78749ae91fb5.Id3c05d13eeee6638f0930f750e93fb928d5c9dee@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21b9e0efb38eac1fe7bed369e96980cad45aa9c7
Author: Petr Oros <poros@redhat.com>
Date:   Thu Jun 15 11:54:47 2023 +0200

    devlink: report devlink_port_type_warn source device
    
    [ Upstream commit a52305a81d6bb74b90b400dfa56455d37872fe4b ]
    
    devlink_port_type_warn is scheduled for port devlink and warning
    when the port type is not set. But from this warning it is not easy
    found out which device (driver) has no devlink port set.
    
    [ 3709.975552] Type was not set for devlink port.
    [ 3709.975579] WARNING: CPU: 1 PID: 13092 at net/devlink/leftover.c:6775 devlink_port_type_warn+0x11/0x20
    [ 3709.993967] Modules linked in: openvswitch nf_conncount nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nfnetlink bluetooth rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs vhost_net vhost vhost_iotlb tap tun bridge stp llc qrtr intel_rapl_msr intel_rapl_common i10nm_edac nfit libnvdimm x86_pkg_temp_thermal mlx5_ib intel_powerclamp coretemp dell_wmi ledtrig_audio sparse_keymap ipmi_ssif kvm_intel ib_uverbs rfkill ib_core video kvm iTCO_wdt acpi_ipmi intel_vsec irqbypass ipmi_si iTCO_vendor_support dcdbas ipmi_devintf mei_me ipmi_msghandler rapl mei intel_cstate isst_if_mmio isst_if_mbox_pci dell_smbios intel_uncore isst_if_common i2c_i801 dell_wmi_descriptor wmi_bmof i2c_smbus intel_pch_thermal pcspkr acpi_power_meter xfs libcrc32c sd_mod sg nvme_tcp mgag200 i2c_algo_bit nvme_fabrics drm_shmem_helper drm_kms_helper nvme syscopyarea ahci sysfillrect sysimgblt nvme_core fb_sys_fops crct10dif_pclmul libahci mlx5_core sfc crc32_pclmul nvme_common drm
    [ 3709.994030]  crc32c_intel mtd t10_pi mlxfw libata tg3 mdio megaraid_sas psample ghash_clmulni_intel pci_hyperv_intf wmi dm_multipath sunrpc dm_mirror dm_region_hash dm_log dm_mod be2iscsi bnx2i cnic uio cxgb4i cxgb4 tls libcxgbi libcxgb qla4xxx iscsi_boot_sysfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi fuse
    [ 3710.108431] CPU: 1 PID: 13092 Comm: kworker/1:1 Kdump: loaded Not tainted 5.14.0-319.el9.x86_64 #1
    [ 3710.108435] Hardware name: Dell Inc. PowerEdge R750/0PJ80M, BIOS 1.8.2 09/14/2022
    [ 3710.108437] Workqueue: events devlink_port_type_warn
    [ 3710.108440] RIP: 0010:devlink_port_type_warn+0x11/0x20
    [ 3710.108443] Code: 84 76 fe ff ff 48 c7 03 20 0e 1a ad 31 c0 e9 96 fd ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 48 c7 c7 18 24 4e ad e8 ef 71 62 ff <0f> 0b c3 cc cc cc cc 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f6 87
    [ 3710.108445] RSP: 0018:ff3b6d2e8b3c7e90 EFLAGS: 00010282
    [ 3710.108447] RAX: 0000000000000000 RBX: ff366d6580127080 RCX: 0000000000000027
    [ 3710.108448] RDX: 0000000000000027 RSI: 00000000ffff86de RDI: ff366d753f41f8c8
    [ 3710.108449] RBP: ff366d658ff5a0c0 R08: ff366d753f41f8c0 R09: ff3b6d2e8b3c7e18
    [ 3710.108450] R10: 0000000000000001 R11: 0000000000000023 R12: ff366d753f430600
    [ 3710.108451] R13: ff366d753f436900 R14: 0000000000000000 R15: ff366d753f436905
    [ 3710.108452] FS:  0000000000000000(0000) GS:ff366d753f400000(0000) knlGS:0000000000000000
    [ 3710.108453] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 3710.108454] CR2: 00007f1c57bc74e0 CR3: 000000111d26a001 CR4: 0000000000773ee0
    [ 3710.108456] PKRU: 55555554
    [ 3710.108457] Call Trace:
    [ 3710.108458]  <TASK>
    [ 3710.108459]  process_one_work+0x1e2/0x3b0
    [ 3710.108466]  ? rescuer_thread+0x390/0x390
    [ 3710.108468]  worker_thread+0x50/0x3a0
    [ 3710.108471]  ? rescuer_thread+0x390/0x390
    [ 3710.108473]  kthread+0xdd/0x100
    [ 3710.108477]  ? kthread_complete_and_exit+0x20/0x20
    [ 3710.108479]  ret_from_fork+0x1f/0x30
    [ 3710.108485]  </TASK>
    [ 3710.108486] ---[ end trace 1b4b23cd0c65d6a0 ]---
    
    After patch:
    [  402.473064] ice 0000:41:00.0: Type was not set for devlink port.
    [  402.473064] ice 0000:41:00.1: Type was not set for devlink port.
    
    Signed-off-by: Petr Oros <poros@redhat.com>
    Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Link: https://lore.kernel.org/r/20230615095447.8259-1-poros@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 46393b829d1e2bba78df571d6da13cd03fccfa04
Author: Jisheng Zhang <jszhang@kernel.org>
Date:   Thu Jun 15 00:20:35 2023 +0800

    net: ethernet: litex: add support for 64 bit stats
    
    [ Upstream commit 18da174d865a87d47d2f33f5b0a322efcf067728 ]
    
    Implement 64 bit per cpu stats to fix the overflow of netdev->stats
    on 32 bit platforms. To simplify the code, we use net core
    pcpu_sw_netstats infrastructure. One small drawback is some memory
    overhead because litex uses just one queue, but we allocate the
    counters per cpu.
    
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Acked-by: Gabriel Somlo <gsomlo@gmail.com>
    Link: https://lore.kernel.org/r/20230614162035.300-1-jszhang@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 133b1cd4d98bb8b272335c8e6b0e0c399c0b2ffa
Author: Gregory Greenman <gregory.greenman@intel.com>
Date:   Tue Jun 13 15:57:21 2023 +0300

    wifi: iwlwifi: mvm: fix potential array out of bounds access
    
    [ Upstream commit 637452360ecde9ac972d19416e9606529576b302 ]
    
    Account for IWL_SEC_WEP_KEY_OFFSET when needed while verifying
    key_len size in iwl_mvm_sec_key_add().
    
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230613155501.f193b7493a93.I6948ba625b9318924b96a5e22602ac75d2bd0125@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55248d36beb79d3a61c9fb3122dc377fff523c89
Author: P Praneesh <quic_ppranees@quicinc.com>
Date:   Tue Jun 6 14:41:28 2023 +0530

    wifi: ath11k: fix memory leak in WMI firmware stats
    
    [ Upstream commit 6aafa1c2d3e3fea2ebe84c018003f2a91722e607 ]
    
    Memory allocated for firmware pdev, vdev and beacon statistics
    are not released during rmmod.
    
    Fix it by calling ath11k_fw_stats_free() function before hardware
    unregister.
    
    While at it, avoid calling ath11k_fw_stats_free() while processing
    the firmware stats received in the WMI event because the local list
    is getting spliced and reinitialised and hence there are no elements
    in the list after splicing.
    
    Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
    Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230606091128.14202-1-quic_adisi@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7382d02160ef93c806fe1c1d4ef1fec445266747
Author: Balamurugan S <quic_bselvara@quicinc.com>
Date:   Thu Jun 1 13:35:15 2023 +0300

    wifi: ath12k: Avoid NULL pointer access during management transmit cleanup
    
    [ Upstream commit 054b5580a36e435692c203c19abdcb9f7734320e ]
    
    Currently 'ar' reference is not added in skb_cb.
    Though this is generally not used during transmit completion
    callbacks, on interface removal the remaining idr cleanup callback
    uses the ar pointer from skb_cb from management txmgmt_idr. Hence fill them
    during transmit call for proper usage to avoid NULL pointer dereference.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Balamurugan S <quic_bselvara@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230518071046.14337-1-quic_bselvara@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5fc72f4ca44d4b1f4d269df493b1b1b231984220
Author: Abe Kohandel <abe.kohandel@intel.com>
Date:   Tue Jun 6 07:54:01 2023 -0700

    spi: dw: Add compatible for Intel Mount Evans SoC
    
    [ Upstream commit 0760d5d0e9f0c0e2200a0323a61d1995bb745dee ]
    
    The Intel Mount Evans SoC's Integrated Management Complex uses the SPI
    controller for access to a NOR SPI FLASH. However, the SoC doesn't
    provide a mechanism to override the native chip select signal.
    
    This driver doesn't use DMA for memory operations when a chip select
    override is not provided due to the native chip select timing behavior.
    As a result no DMA configuration is done for the controller and this
    configuration is not tested.
    
    The controller also has an errata where a full TX FIFO can result in
    data corruption. The suggested workaround is to never completely fill
    the FIFO. The TX FIFO has a size of 32 so the fifo_len is set to 31.
    
    Signed-off-by: Abe Kohandel <abe.kohandel@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20230606145402.474866-2-abe.kohandel@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8a20fed3e05b3a6866c5c58855deaf3c217ccd6
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Sun Jun 4 12:11:27 2023 +0300

    wifi: mac80211_hwsim: Fix possible NULL dereference
    
    [ Upstream commit 0cc80943ef518a1c51a1111e9346d1daf11dd545 ]
    
    In a call to mac80211_hwsim_select_tx_link() the sta pointer might
    be NULL, thus need to check that it is not NULL before accessing it.
    
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230604120651.f4d889fc98c4.Iae85f527ed245a37637a874bb8b8c83d79812512@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 22f675f335aa851f9e8796751e91c3c92e67477d
Author: Wen Gong <quic_wgong@quicinc.com>
Date:   Fri May 26 12:41:06 2023 +0300

    wifi: ath11k: add support default regdb while searching board-2.bin for WCN6855
    
    [ Upstream commit 88ca89202f8e8afb5225eb5244d79cd67c15d744 ]
    
    Sometimes board-2.bin does not have the regdb data which matched the
    parameters such as vendor, device, subsystem-vendor, subsystem-device
    and etc. Add default regdb data with 'bus=%s' into board-2.bin for
    WCN6855, then ath11k use 'bus=pci' to search regdb data in board-2.bin
    for WCN6855.
    
    kernel: [  122.515808] ath11k_pci 0000:03:00.0: boot using board name 'bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262'
    kernel: [  122.517240] ath11k_pci 0000:03:00.0: boot firmware request ath11k/WCN6855/hw2.0/board-2.bin size 6179564
    kernel: [  122.517280] ath11k_pci 0000:03:00.0: failed to fetch regdb data for bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262 from ath11k/WCN6855/hw2.0/board-2.bin
    kernel: [  122.517464] ath11k_pci 0000:03:00.0: boot using board name 'bus=pci'
    kernel: [  122.518901] ath11k_pci 0000:03:00.0: boot firmware request ath11k/WCN6855/hw2.0/board-2.bin size 6179564
    kernel: [  122.518915] ath11k_pci 0000:03:00.0: board name
    kernel: [  122.518917] ath11k_pci 0000:03:00.0: 00000000: 62 75 73 3d 70 63 69                             bus=pci
    kernel: [  122.518918] ath11k_pci 0000:03:00.0: boot found match regdb data for name 'bus=pci'
    kernel: [  122.518920] ath11k_pci 0000:03:00.0: boot found regdb data for 'bus=pci'
    kernel: [  122.518921] ath11k_pci 0000:03:00.0: fetched regdb
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
    
    Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230517133959.8224-1-quic_wgong@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3534c7b7b329dfba8c0273419cd0f43bda9fa6bd
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Tue May 30 18:55:23 2023 -0700

    devlink: make health report on unregistered instance warn just once
    
    [ Upstream commit 6f4b98147b8dfcabacb19b5c6abd087af66d0049 ]
    
    Devlink health is involved in error recovery. Machines in bad
    state tend to be fairly unreliable, and occasionally get stuck
    in error loops. Even with a reasonable grace period devlink health
    may get a thousand reports in an hour.
    
    In case of reporting on an unregistered devlink instance
    the subsequent reports don't add much value. Switch to
    WARN_ON_ONCE() to avoid flooding dmesg and fleet monitoring
    dashboards.
    
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Link: https://lore.kernel.org/r/20230531015523.48961-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c4f5ab63e7962812505cbd38cc765168a223acb
Author: Yonghong Song <yhs@fb.com>
Date:   Tue May 30 13:50:29 2023 -0700

    bpf: Silence a warning in btf_type_id_size()
    
    [ Upstream commit e6c2f594ed961273479505b42040782820190305 ]
    
    syzbot reported a warning in [1] with the following stacktrace:
      WARNING: CPU: 0 PID: 5005 at kernel/bpf/btf.c:1988 btf_type_id_size+0x2d9/0x9d0 kernel/bpf/btf.c:1988
      ...
      RIP: 0010:btf_type_id_size+0x2d9/0x9d0 kernel/bpf/btf.c:1988
      ...
      Call Trace:
       <TASK>
       map_check_btf kernel/bpf/syscall.c:1024 [inline]
       map_create+0x1157/0x1860 kernel/bpf/syscall.c:1198
       __sys_bpf+0x127f/0x5420 kernel/bpf/syscall.c:5040
       __do_sys_bpf kernel/bpf/syscall.c:5162 [inline]
       __se_sys_bpf kernel/bpf/syscall.c:5160 [inline]
       __x64_sys_bpf+0x79/0xc0 kernel/bpf/syscall.c:5160
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    With the following btf
      [1] DECL_TAG 'a' type_id=4 component_idx=-1
      [2] PTR '(anon)' type_id=0
      [3] TYPE_TAG 'a' type_id=2
      [4] VAR 'a' type_id=3, linkage=static
    and when the bpf_attr.btf_key_type_id = 1 (DECL_TAG),
    the following WARN_ON_ONCE in btf_type_id_size() is triggered:
      if (WARN_ON_ONCE(!btf_type_is_modifier(size_type) &&
                       !btf_type_is_var(size_type)))
              return NULL;
    
    Note that 'return NULL' is the correct behavior as we don't want
    a DECL_TAG type to be used as a btf_{key,value}_type_id even
    for the case like 'DECL_TAG -> STRUCT'. So there
    is no correctness issue here, we just want to silence warning.
    
    To silence the warning, I added DECL_TAG as one of kinds in
    btf_type_nosize() which will cause btf_type_id_size() returning
    NULL earlier without the warning.
    
      [1] https://lore.kernel.org/bpf/000000000000e0df8d05fc75ba86@google.com/
    
    Reported-by: syzbot+958967f249155967d42a@syzkaller.appspotmail.com
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/r/20230530205029.264910-1-yhs@fb.com
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79e43714e686ccec2b2692547dc1fd9e60eeb55a
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Mon May 22 22:24:22 2023 +0200

    wifi: rtw88: sdio: Check the HISR RX_REQUEST bit in rtw_sdio_rx_isr()
    
    [ Upstream commit e967229ead0e6c5047a1cfd5a0db58ceb930800b ]
    
    rtw_sdio_rx_isr() is responsible for receiving data from the wifi chip
    and is called from the SDIO interrupt handler when the interrupt status
    register (HISR) has the RX_REQUEST bit set. After the first batch of
    data has been processed by the driver the wifi chip may have more data
    ready to be read, which is managed by a loop in rtw_sdio_rx_isr().
    
    It turns out that there are cases where the RX buffer length (from the
    REG_SDIO_RX0_REQ_LEN register) does not match the data we receive. The
    following two cases were observed with a RTL8723DS card:
    - RX length is smaller than the total packet length including overhead
      and actual data bytes (whose length is part of the buffer we read from
      the wifi chip and is stored in rtw_rx_pkt_stat.pkt_len). This can
      result in errors like:
        skbuff: skb_over_panic: text:ffff8000011924ac len:3341 put:3341
      (one case observed was: RX buffer length = 1536 bytes but
       rtw_rx_pkt_stat.pkt_len = 1546 bytes, this is not valid as it means
       we need to read beyond the end of the buffer)
    - RX length looks valid but rtw_rx_pkt_stat.pkt_len is zero
    
    Check if the RX_REQUEST is set in the HISR register for each iteration
    inside rtw_sdio_rx_isr(). This mimics what the RTL8723DS vendor driver
    does and makes the driver only read more data if the RX_REQUEST bit is
    set (which seems to be a way for the card's hardware or firmware to
    tell the host that data is ready to be processed).
    
    For RTW_WCPU_11AC chips this check is not needed. The RTL8822BS vendor
    driver for example states that this check is unnecessary (but still uses
    it) and the RTL8822CS drops this check entirely.
    
    Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230522202425.1827005-2-martin.blumenstingl@googlemail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a844d873bf81b96b459e5fbda6c4e0fdf730d6d
Author: Aditi Ghag <aditi.ghag@isovalent.com>
Date:   Fri May 19 22:51:49 2023 +0000

    bpf: tcp: Avoid taking fast sock lock in iterator
    
    [ Upstream commit 9378096e8a656fb5c4099b26b1370c56f056eab9 ]
    
    This is a preparatory commit to replace `lock_sock_fast` with
    `lock_sock`,and facilitate BPF programs executed from the TCP sockets
    iterator to be able to destroy TCP sockets using the bpf_sock_destroy
    kfunc (implemented in follow-up commits).
    
    Previously, BPF TCP iterator was acquiring the sock lock with BH
    disabled. This led to scenarios where the sockets hash table bucket lock
    can be acquired with BH enabled in some path versus disabled in other.
    In such situation, kernel issued a warning since it thinks that in the
    BH enabled path the same bucket lock *might* be acquired again in the
    softirq context (BH disabled), which will lead to a potential dead lock.
    Since bpf_sock_destroy also happens in a process context, the potential
    deadlock warning is likely a false alarm.
    
    Here is a snippet of annotated stack trace that motivated this change:
    
    ```
    
    Possible interrupt unsafe locking scenario:
    
          CPU0                    CPU1
          ----                    ----
     lock(&h->lhash2[i].lock);
                                  local_bh_disable();
                                  lock(&h->lhash2[i].lock);
    kernel imagined possible scenario:
      local_bh_disable();  /* Possible softirq */
      lock(&h->lhash2[i].lock);
    *** Potential Deadlock ***
    
    process context:
    
    lock_acquire+0xcd/0x330
    _raw_spin_lock+0x33/0x40
    ------> Acquire (bucket) lhash2.lock with BH enabled
    __inet_hash+0x4b/0x210
    inet_csk_listen_start+0xe6/0x100
    inet_listen+0x95/0x1d0
    __sys_listen+0x69/0xb0
    __x64_sys_listen+0x14/0x20
    do_syscall_64+0x3c/0x90
    entry_SYSCALL_64_after_hwframe+0x72/0xdc
    
    bpf_sock_destroy run from iterator:
    
    lock_acquire+0xcd/0x330
    _raw_spin_lock+0x33/0x40
    ------> Acquire (bucket) lhash2.lock with BH disabled
    inet_unhash+0x9a/0x110
    tcp_set_state+0x6a/0x210
    tcp_abort+0x10d/0x200
    bpf_prog_6793c5ca50c43c0d_iter_tcp6_server+0xa4/0xa9
    bpf_iter_run_prog+0x1ff/0x340
    ------> lock_sock_fast that acquires sock lock with BH disabled
    bpf_iter_tcp_seq_show+0xca/0x190
    bpf_seq_read+0x177/0x450
    
    ```
    
    Also, Yonghong reported a deadlock for non-listening TCP sockets that
    this change resolves. Previously, `lock_sock_fast` held the sock spin
    lock with BH which was again being acquired in `tcp_abort`:
    
    ```
    watchdog: BUG: soft lockup - CPU#0 stuck for 86s! [test_progs:2331]
    RIP: 0010:queued_spin_lock_slowpath+0xd8/0x500
    Call Trace:
     <TASK>
     _raw_spin_lock+0x84/0x90
     tcp_abort+0x13c/0x1f0
     bpf_prog_88539c5453a9dd47_iter_tcp6_client+0x82/0x89
     bpf_iter_run_prog+0x1aa/0x2c0
     ? preempt_count_sub+0x1c/0xd0
     ? from_kuid_munged+0x1c8/0x210
     bpf_iter_tcp_seq_show+0x14e/0x1b0
     bpf_seq_read+0x36c/0x6a0
    
    bpf_iter_tcp_seq_show
       lock_sock_fast
         __lock_sock_fast
           spin_lock_bh(&sk->sk_lock.slock);
            /* * Fast path return with bottom halves disabled and * sock::sk_lock.slock held.* */
    
     ...
     tcp_abort
       local_bh_disable();
       spin_lock(&((sk)->sk_lock.slock)); // from bh_lock_sock(sk)
    
    ```
    
    With the switch to `lock_sock`, it calls `spin_unlock_bh` before returning:
    
    ```
    lock_sock
        lock_sock_nested
           spin_lock_bh(&sk->sk_lock.slock);
           :
           spin_unlock_bh(&sk->sk_lock.slock);
    ```
    
    Acked-by: Yonghong Song <yhs@meta.com>
    Acked-by: Stanislav Fomichev <sdf@google.com>
    Signed-off-by: Aditi Ghag <aditi.ghag@isovalent.com>
    Link: https://lore.kernel.org/r/20230519225157.760788-2-aditi.ghag@isovalent.com
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 926a175026fed5d534f587ea4ec3ec49265cd3c5
Author: Andrii Nakryiko <andrii@kernel.org>
Date:   Tue May 16 11:04:09 2023 -0700

    bpf: drop unnecessary user-triggerable WARN_ONCE in verifierl log
    
    [ Upstream commit cff36398bd4c7d322d424433db437f3c3391c491 ]
    
    It's trivial for user to trigger "verifier log line truncated" warning,
    as verifier has a fixed-sized buffer of 1024 bytes (as of now), and there are at
    least two pieces of user-provided information that can be output through
    this buffer, and both can be arbitrarily sized by user:
      - BTF names;
      - BTF.ext source code lines strings.
    
    Verifier log buffer should be properly sized for typical verifier state
    output. But it's sort-of expected that this buffer won't be long enough
    in some circumstances. So let's drop the check. In any case code will
    work correctly, at worst truncating a part of a single line output.
    
    Reported-by: syzbot+8b2a08dfbd25fd933d75@syzkaller.appspotmail.com
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20230516180409.3549088-1-andrii@kernel.org
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9acda85c7d0e601d32715702370eeecf1dfc4ea8
Author: Brad Larson <blarson@amd.com>
Date:   Mon May 15 11:16:05 2023 -0700

    spi: cadence-quadspi: Add compatible for AMD Pensando Elba SoC
    
    [ Upstream commit f5c2f9f9584353bc816d76a65c97dd03dc61678c ]
    
    The AMD Pensando Elba SoC has the Cadence QSPI controller integrated.
    
    The quirk CQSPI_NEEDS_APB_AHB_HAZARD_WAR is added and if enabled
    a dummy readback from the controller is performed to ensure
    synchronization.
    
    Signed-off-by: Brad Larson <blarson@amd.com
    Link: https://lore.kernel.org/r/20230515181606.65953-8-blarson@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e5e83b56f50fbd1c8f7dca7df7d72c67be25571
Author: Martin KaFai Lau <martin.lau@kernel.org>
Date:   Wed May 10 21:37:48 2023 -0700

    bpf: Address KCSAN report on bpf_lru_list
    
    [ Upstream commit ee9fd0ac3017c4313be91a220a9ac4c99dde7ad4 ]
    
    KCSAN reported a data-race when accessing node->ref.
    Although node->ref does not have to be accurate,
    take this chance to use a more common READ_ONCE() and WRITE_ONCE()
    pattern instead of data_race().
    
    There is an existing bpf_lru_node_is_ref() and bpf_lru_node_set_ref().
    This patch also adds bpf_lru_node_clear_ref() to do the
    WRITE_ONCE(node->ref, 0) also.
    
    ==================================================================
    BUG: KCSAN: data-race in __bpf_lru_list_rotate / __htab_lru_percpu_map_update_elem
    
    write to 0xffff888137038deb of 1 bytes by task 11240 on cpu 1:
    __bpf_lru_node_move kernel/bpf/bpf_lru_list.c:113 [inline]
    __bpf_lru_list_rotate_active kernel/bpf/bpf_lru_list.c:149 [inline]
    __bpf_lru_list_rotate+0x1bf/0x750 kernel/bpf/bpf_lru_list.c:240
    bpf_lru_list_pop_free_to_local kernel/bpf/bpf_lru_list.c:329 [inline]
    bpf_common_lru_pop_free kernel/bpf/bpf_lru_list.c:447 [inline]
    bpf_lru_pop_free+0x638/0xe20 kernel/bpf/bpf_lru_list.c:499
    prealloc_lru_pop kernel/bpf/hashtab.c:290 [inline]
    __htab_lru_percpu_map_update_elem+0xe7/0x820 kernel/bpf/hashtab.c:1316
    bpf_percpu_hash_update+0x5e/0x90 kernel/bpf/hashtab.c:2313
    bpf_map_update_value+0x2a9/0x370 kernel/bpf/syscall.c:200
    generic_map_update_batch+0x3ae/0x4f0 kernel/bpf/syscall.c:1687
    bpf_map_do_batch+0x2d9/0x3d0 kernel/bpf/syscall.c:4534
    __sys_bpf+0x338/0x810
    __do_sys_bpf kernel/bpf/syscall.c:5096 [inline]
    __se_sys_bpf kernel/bpf/syscall.c:5094 [inline]
    __x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5094
    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
    
    read to 0xffff888137038deb of 1 bytes by task 11241 on cpu 0:
    bpf_lru_node_set_ref kernel/bpf/bpf_lru_list.h:70 [inline]
    __htab_lru_percpu_map_update_elem+0x2f1/0x820 kernel/bpf/hashtab.c:1332
    bpf_percpu_hash_update+0x5e/0x90 kernel/bpf/hashtab.c:2313
    bpf_map_update_value+0x2a9/0x370 kernel/bpf/syscall.c:200
    generic_map_update_batch+0x3ae/0x4f0 kernel/bpf/syscall.c:1687
    bpf_map_do_batch+0x2d9/0x3d0 kernel/bpf/syscall.c:4534
    __sys_bpf+0x338/0x810
    __do_sys_bpf kernel/bpf/syscall.c:5096 [inline]
    __se_sys_bpf kernel/bpf/syscall.c:5094 [inline]
    __x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5094
    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: 0x01 -> 0x00
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 11241 Comm: syz-executor.3 Not tainted 6.3.0-rc7-syzkaller-00136-g6a66fdd29ea1 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/30/2023
    ==================================================================
    
    Reported-by: syzbot+ebe648a84e8784763f82@syzkaller.appspotmail.com
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/r/20230511043748.1384166-1-martin.lau@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7f54ef43499f9b10771459058f1361d37b3e3e1
Author: Kui-Feng Lee <thinker.li@gmail.com>
Date:   Tue May 2 11:14:18 2023 -0700

    bpf: Print a warning only if writing to unprivileged_bpf_disabled.
    
    [ Upstream commit fedf99200ab086c42a572fca1d7266b06cdc3e3f ]
    
    Only print the warning message if you are writing to
    "/proc/sys/kernel/unprivileged_bpf_disabled".
    
    The kernel may print an annoying warning when you read
    "/proc/sys/kernel/unprivileged_bpf_disabled" saying
    
      WARNING: Unprivileged eBPF is enabled with eIBRS on, data leaks possible
      via Spectre v2 BHB attacks!
    
    However, this message is only meaningful when the feature is
    disabled or enabled.
    
    Signed-off-by: Kui-Feng Lee <kuifeng@meta.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20230502181418.308479-1-kuifeng@meta.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 32ca096e712a78b2f0d2e48d33dc0caaba9f9866
Author: Maxime Bizon <mbizon@freebox.fr>
Date:   Fri Apr 21 16:54:45 2023 +0200

    wifi: ath11k: fix registration of 6Ghz-only phy without the full channel range
    
    [ Upstream commit e2ceb1de2f83aafd8003f0b72dfd4b7441e97d14 ]
    
    Because of what seems to be a typo, a 6Ghz-only phy for which the BDF
    does not allow the 7115Mhz channel will fail to register:
    
      WARNING: CPU: 2 PID: 106 at net/wireless/core.c:907 wiphy_register+0x914/0x954
      Modules linked in: ath11k_pci sbsa_gwdt
      CPU: 2 PID: 106 Comm: kworker/u8:5 Not tainted 6.3.0-rc7-next-20230418-00549-g1e096a17625a-dirty #9
      Hardware name: Freebox V7R Board (DT)
      Workqueue: ath11k_qmi_driver_event ath11k_qmi_driver_event_work
      pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : wiphy_register+0x914/0x954
      lr : ieee80211_register_hw+0x67c/0xc10
      sp : ffffff800b123aa0
      x29: ffffff800b123aa0 x28: 0000000000000000 x27: 0000000000000000
      x26: 0000000000000000 x25: 0000000000000006 x24: ffffffc008d51418
      x23: ffffffc008cb0838 x22: ffffff80176c2460 x21: 0000000000000168
      x20: ffffff80176c0000 x19: ffffff80176c03e0 x18: 0000000000000014
      x17: 00000000cbef338c x16: 00000000d2a26f21 x15: 00000000ad6bb85f
      x14: 0000000000000020 x13: 0000000000000020 x12: 00000000ffffffbd
      x11: 0000000000000208 x10: 00000000fffffdf7 x9 : ffffffc009394718
      x8 : ffffff80176c0528 x7 : 000000007fffffff x6 : 0000000000000006
      x5 : 0000000000000005 x4 : ffffff800b304284 x3 : ffffff800b304284
      x2 : ffffff800b304d98 x1 : 0000000000000000 x0 : 0000000000000000
      Call trace:
       wiphy_register+0x914/0x954
       ieee80211_register_hw+0x67c/0xc10
       ath11k_mac_register+0x7c4/0xe10
       ath11k_core_qmi_firmware_ready+0x1f4/0x570
       ath11k_qmi_driver_event_work+0x198/0x590
       process_one_work+0x1b8/0x328
       worker_thread+0x6c/0x414
       kthread+0x100/0x104
       ret_from_fork+0x10/0x20
      ---[ end trace 0000000000000000 ]---
      ath11k_pci 0002:01:00.0: ieee80211 registration failed: -22
      ath11k_pci 0002:01:00.0: failed register the radio with mac80211: -22
      ath11k_pci 0002:01:00.0: failed to create pdev core: -22
    
    Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230421145445.2612280-1-mbizon@freebox.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34eb902050d473bb2befa15714fb1d30a0991c15
Author: Yicong Yang <yangyicong@hisilicon.com>
Date:   Tue May 30 16:25:07 2023 +0800

    sched/fair: Don't balance task to its current running CPU
    
    [ Upstream commit 0dd37d6dd33a9c23351e6115ae8cdac7863bc7de ]
    
    We've run into the case that the balancer tries to balance a migration
    disabled task and trigger the warning in set_task_cpu() like below:
    
     ------------[ cut here ]------------
     WARNING: CPU: 7 PID: 0 at kernel/sched/core.c:3115 set_task_cpu+0x188/0x240
     Modules linked in: hclgevf xt_CHECKSUM ipt_REJECT nf_reject_ipv4 <...snip>
     CPU: 7 PID: 0 Comm: swapper/7 Kdump: loaded Tainted: G           O       6.1.0-rc4+ #1
     Hardware name: Huawei TaiShan 2280 V2/BC82AMDC, BIOS 2280-V2 CS V5.B221.01 12/09/2021
     pstate: 604000c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : set_task_cpu+0x188/0x240
     lr : load_balance+0x5d0/0xc60
     sp : ffff80000803bc70
     x29: ffff80000803bc70 x28: ffff004089e190e8 x27: ffff004089e19040
     x26: ffff007effcabc38 x25: 0000000000000000 x24: 0000000000000001
     x23: ffff80000803be84 x22: 000000000000000c x21: ffffb093e79e2a78
     x20: 000000000000000c x19: ffff004089e19040 x18: 0000000000000000
     x17: 0000000000001fad x16: 0000000000000030 x15: 0000000000000000
     x14: 0000000000000003 x13: 0000000000000000 x12: 0000000000000000
     x11: 0000000000000001 x10: 0000000000000400 x9 : ffffb093e4cee530
     x8 : 00000000fffffffe x7 : 0000000000ce168a x6 : 000000000000013e
     x5 : 00000000ffffffe1 x4 : 0000000000000001 x3 : 0000000000000b2a
     x2 : 0000000000000b2a x1 : ffffb093e6d6c510 x0 : 0000000000000001
     Call trace:
      set_task_cpu+0x188/0x240
      load_balance+0x5d0/0xc60
      rebalance_domains+0x26c/0x380
      _nohz_idle_balance.isra.0+0x1e0/0x370
      run_rebalance_domains+0x6c/0x80
      __do_softirq+0x128/0x3d8
      ____do_softirq+0x18/0x24
      call_on_irq_stack+0x2c/0x38
      do_softirq_own_stack+0x24/0x3c
      __irq_exit_rcu+0xcc/0xf4
      irq_exit_rcu+0x18/0x24
      el1_interrupt+0x4c/0xe4
      el1h_64_irq_handler+0x18/0x2c
      el1h_64_irq+0x74/0x78
      arch_cpu_idle+0x18/0x4c
      default_idle_call+0x58/0x194
      do_idle+0x244/0x2b0
      cpu_startup_entry+0x30/0x3c
      secondary_start_kernel+0x14c/0x190
      __secondary_switched+0xb0/0xb4
     ---[ end trace 0000000000000000 ]---
    
    Further investigation shows that the warning is superfluous, the migration
    disabled task is just going to be migrated to its current running CPU.
    This is because that on load balance if the dst_cpu is not allowed by the
    task, we'll re-select a new_dst_cpu as a candidate. If no task can be
    balanced to dst_cpu we'll try to balance the task to the new_dst_cpu
    instead. In this case when the migration disabled task is not on CPU it
    only allows to run on its current CPU, load balance will select its
    current CPU as new_dst_cpu and later triggers the warning above.
    
    The new_dst_cpu is chosen from the env->dst_grpmask. Currently it
    contains CPUs in sched_group_span() and if we have overlapped groups it's
    possible to run into this case. This patch makes env->dst_grpmask of
    group_balance_mask() which exclude any CPUs from the busiest group and
    solve the issue. For balancing in a domain with no overlapped groups
    the behaviour keeps same as before.
    
    Suggested-by: Vincent Guittot <vincent.guittot@linaro.org>
    Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
    Link: https://lore.kernel.org/r/20230530082507.10444-1-yangyicong@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 047bbb3730c608f988e1e850fcd9ac5e26ad8346
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sun May 21 11:36:31 2023 +0200

    tools/nolibc: ensure stack protector guard is never zero
    
    [ Upstream commit 88fc7eb54ecc6db8b773341ce39ad201066fa7da ]
    
    The all-zero pattern is one of the more probable out-of-bound writes so
    add a special case to not accidentally accept it.
    
    Also it enables the reliable detection of stack protector initialization
    during testing.
    
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c57c2786ffb14d06fbbdb70a2fc69bbf754e7ebd
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Fri Apr 7 16:05:38 2023 -0700

    rcu: Mark additional concurrent load from ->cpu_no_qs.b.exp
    
    [ Upstream commit 9146eb25495ea8bfb5010192e61e3ed5805ce9ef ]
    
    The per-CPU rcu_data structure's ->cpu_no_qs.b.exp field is updated
    only on the instance corresponding to the current CPU, but can be read
    more widely.  Unmarked accesses are OK from the corresponding CPU, but
    only if interrupts are disabled, given that interrupt handlers can and
    do modify this field.
    
    Unfortunately, although the load from rcu_preempt_deferred_qs() is always
    carried out from the corresponding CPU, interrupts are not necessarily
    disabled.  This commit therefore upgrades this load to READ_ONCE.
    
    Similarly, the diagnostic access from synchronize_rcu_expedited_wait()
    might run with interrupts disabled and from some other CPU.  This commit
    therefore marks this load with data_race().
    
    Finally, the C-language access in rcu_preempt_ctxt_queue() is OK as
    is because interrupts are disabled and this load is always from the
    corresponding CPU.  This commit adds a comment giving the rationale for
    this access being safe.
    
    This data race was reported by KCSAN.  Not appropriate for backporting
    due to failure being unlikely.
    
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea9b81c7d9104040b46a84d2303045de267f5557
Author: Shigeru Yoshida <syoshida@redhat.com>
Date:   Wed Aug 3 01:22:05 2022 +0900

    rcu-tasks: Avoid pr_info() with spin lock in cblist_init_generic()
    
    [ Upstream commit 5fc8cbe4cf0fd34ded8045c385790c3bf04f6785 ]
    
    pr_info() is called with rtp->cbs_gbl_lock spin lock locked.  Because
    pr_info() calls printk() that might sleep, this will result in BUG
    like below:
    
    [    0.206455] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.206463]
    [    0.206464] =============================
    [    0.206464] [ BUG: Invalid wait context ]
    [    0.206465] 5.19.0-00428-g9de1f9c8ca51 #5 Not tainted
    [    0.206466] -----------------------------
    [    0.206466] swapper/0/1 is trying to lock:
    [    0.206467] ffffffffa0167a58 (&port_lock_key){....}-{3:3}, at: serial8250_console_write+0x327/0x4a0
    [    0.206473] other info that might help us debug this:
    [    0.206473] context-{5:5}
    [    0.206474] 3 locks held by swapper/0/1:
    [    0.206474]  #0: ffffffff9eb597e0 (rcu_tasks.cbs_gbl_lock){....}-{2:2}, at: cblist_init_generic.constprop.0+0x14/0x1f0
    [    0.206478]  #1: ffffffff9eb579c0 (console_lock){+.+.}-{0:0}, at: _printk+0x63/0x7e
    [    0.206482]  #2: ffffffff9ea77780 (console_owner){....}-{0:0}, at: console_emit_next_record.constprop.0+0x111/0x330
    [    0.206485] stack backtrace:
    [    0.206486] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.19.0-00428-g9de1f9c8ca51 #5
    [    0.206488] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.0-1.fc36 04/01/2014
    [    0.206489] Call Trace:
    [    0.206490]  <TASK>
    [    0.206491]  dump_stack_lvl+0x6a/0x9f
    [    0.206493]  __lock_acquire.cold+0x2d7/0x2fe
    [    0.206496]  ? stack_trace_save+0x46/0x70
    [    0.206497]  lock_acquire+0xd1/0x2f0
    [    0.206499]  ? serial8250_console_write+0x327/0x4a0
    [    0.206500]  ? __lock_acquire+0x5c7/0x2720
    [    0.206502]  _raw_spin_lock_irqsave+0x3d/0x90
    [    0.206504]  ? serial8250_console_write+0x327/0x4a0
    [    0.206506]  serial8250_console_write+0x327/0x4a0
    [    0.206508]  console_emit_next_record.constprop.0+0x180/0x330
    [    0.206511]  console_unlock+0xf7/0x1f0
    [    0.206512]  vprintk_emit+0xf7/0x330
    [    0.206514]  _printk+0x63/0x7e
    [    0.206516]  cblist_init_generic.constprop.0.cold+0x24/0x32
    [    0.206518]  rcu_init_tasks_generic+0x5/0xd9
    [    0.206522]  kernel_init_freeable+0x15b/0x2a2
    [    0.206523]  ? rest_init+0x160/0x160
    [    0.206526]  kernel_init+0x11/0x120
    [    0.206527]  ret_from_fork+0x1f/0x30
    [    0.206530]  </TASK>
    [    0.207018] cblist_init_generic: Setting shift to 1 and lim to 1.
    
    This patch moves pr_info() so that it is called without
    rtp->cbs_gbl_lock locked.
    
    Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
    Tested-by: "Zhang, Qiang1" <qiang1.zhang@intel.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c5b5d3f9a4a08f21b4420c301f2aacff0cef7c2
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Jun 20 20:45:04 2023 +0200

    ACPI: video: Add backlight=native DMI quirk for Dell Studio 1569
    
    [ Upstream commit 23d28cc0444be3f694eb986cd653b6888b78431d ]
    
    The Dell Studio 1569 predates Windows 8, so it defaults to using
    acpi_video# for backlight control, but this is non functional on
    this model.
    
    Add a DMI quirk to use the native intel_backlight interface which
    does work properly.
    
    Reported-by: raycekarneal <raycekarneal@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b03c7fcc5ed854d0e1b27e9abf12428bfa751a37
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Thu Jun 15 11:26:28 2023 +0100

    arm64: mm: fix VA-range sanity check
    
    [ Upstream commit ab9b4008092c86dc12497af155a0901cc1156999 ]
    
    Both create_mapping_noalloc() and update_mapping_prot() sanity-check
    their 'virt' parameter, but the check itself doesn't make much sense.
    The condition used today appears to be a historical accident.
    
    The sanity-check condition:
    
            if ((virt >= PAGE_END) && (virt < VMALLOC_START)) {
                    [ ... warning here ... ]
                    return;
            }
    
    ... can only be true for the KASAN shadow region or the module region,
    and there's no reason to exclude these specifically for creating and
    updateing mappings.
    
    When arm64 support was first upstreamed in commit:
    
      c1cc1552616d0f35 ("arm64: MMU initialisation")
    
    ... the condition was:
    
            if (virt < VMALLOC_START) {
                    [ ... warning here ... ]
                    return;
            }
    
    At the time, VMALLOC_START was the lowest kernel address, and this was
    checking whether 'virt' would be translated via TTBR1.
    
    Subsequently in commit:
    
      14c127c957c1c607 ("arm64: mm: Flip kernel VA space")
    
    ... the condition was changed to:
    
            if ((virt >= VA_START) && (virt < VMALLOC_START)) {
                    [ ... warning here ... ]
                    return;
            }
    
    This appear to have been a thinko. The commit moved the linear map to
    the bottom of the kernel address space, with VMALLOC_START being at the
    halfway point. The old condition would warn for changes to the linear
    map below this, and at the time VA_START was the end of the linear map.
    
    Subsequently we cleaned up the naming of VA_START in commit:
    
      77ad4ce69321abbe ("arm64: memory: rename VA_START to PAGE_END")
    
    ... keeping the erroneous condition as:
    
            if ((virt >= PAGE_END) && (virt < VMALLOC_START)) {
                    [ ... warning here ... ]
                    return;
            }
    
    Correct the condition to check against the start of the TTBR1 address
    space, which is currently PAGE_OFFSET. This simplifies the logic, and
    more clearly matches the "outside kernel range" message in the warning.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Steve Capper <steve.capper@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/20230615102628.1052103-1-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d3b219e504fc5c5a25fa7c04c8589ff34baef9a8
Author: Youngmin Nam <youngmin.nam@samsung.com>
Date:   Mon Apr 24 10:04:36 2023 +0900

    arm64: set __exception_irq_entry with __irq_entry as a default
    
    [ Upstream commit f6794950f0e5ba37e3bbedda4d6ab0aad7395dd3 ]
    
    filter_irq_stacks() is supposed to cut entries which are related irq entries
    from its call stack.
    And in_irqentry_text() which is called by filter_irq_stacks()
    uses __irqentry_text_start/end symbol to find irq entries in callstack.
    
    But it doesn't work correctly as without "CONFIG_FUNCTION_GRAPH_TRACER",
    arm64 kernel doesn't include gic_handle_irq which is entry point of arm64 irq
    between __irqentry_text_start and __irqentry_text_end as we discussed in below link.
    https://lore.kernel.org/all/CACT4Y+aReMGLYua2rCLHgFpS9io5cZC04Q8GLs-uNmrn1ezxYQ@mail.gmail.com/#t
    
    This problem can makes unintentional deep call stack entries especially
    in KASAN enabled situation as below.
    
    [ 2479.383395]I[0:launcher-loader: 1719] Stack depot reached limit capacity
    [ 2479.383538]I[0:launcher-loader: 1719] WARNING: CPU: 0 PID: 1719 at lib/stackdepot.c:129 __stack_depot_save+0x464/0x46c
    [ 2479.385693]I[0:launcher-loader: 1719] pstate: 624000c5 (nZCv daIF +PAN -UAO +TCO -DIT -SSBS BTYPE=--)
    [ 2479.385724]I[0:launcher-loader: 1719] pc : __stack_depot_save+0x464/0x46c
    [ 2479.385751]I[0:launcher-loader: 1719] lr : __stack_depot_save+0x460/0x46c
    [ 2479.385774]I[0:launcher-loader: 1719] sp : ffffffc0080073c0
    [ 2479.385793]I[0:launcher-loader: 1719] x29: ffffffc0080073e0 x28: ffffffd00b78a000 x27: 0000000000000000
    [ 2479.385839]I[0:launcher-loader: 1719] x26: 000000000004d1dd x25: ffffff891474f000 x24: 00000000ca64d1dd
    [ 2479.385882]I[0:launcher-loader: 1719] x23: 0000000000000200 x22: 0000000000000220 x21: 0000000000000040
    [ 2479.385925]I[0:launcher-loader: 1719] x20: ffffffc008007440 x19: 0000000000000000 x18: 0000000000000000
    [ 2479.385969]I[0:launcher-loader: 1719] x17: 2065726568207475 x16: 000000000000005e x15: 2d2d2d2d2d2d2d20
    [ 2479.386013]I[0:launcher-loader: 1719] x14: 5d39313731203a72 x13: 00000000002f6b30 x12: 00000000002f6af8
    [ 2479.386057]I[0:launcher-loader: 1719] x11: 00000000ffffffff x10: ffffffb90aacf000 x9 : e8a74a6c16008800
    [ 2479.386101]I[0:launcher-loader: 1719] x8 : e8a74a6c16008800 x7 : 00000000002f6b30 x6 : 00000000002f6af8
    [ 2479.386145]I[0:launcher-loader: 1719] x5 : ffffffc0080070c8 x4 : ffffffd00b192380 x3 : ffffffd0092b313c
    [ 2479.386189]I[0:launcher-loader: 1719] x2 : 0000000000000001 x1 : 0000000000000004 x0 : 0000000000000022
    [ 2479.386231]I[0:launcher-loader: 1719] Call trace:
    [ 2479.386248]I[0:launcher-loader: 1719]  __stack_depot_save+0x464/0x46c
    [ 2479.386273]I[0:launcher-loader: 1719]  kasan_save_stack+0x58/0x70
    [ 2479.386303]I[0:launcher-loader: 1719]  save_stack_info+0x34/0x138
    [ 2479.386331]I[0:launcher-loader: 1719]  kasan_save_free_info+0x18/0x24
    [ 2479.386358]I[0:launcher-loader: 1719]  ____kasan_slab_free+0x16c/0x170
    [ 2479.386385]I[0:launcher-loader: 1719]  __kasan_slab_free+0x10/0x20
    [ 2479.386410]I[0:launcher-loader: 1719]  kmem_cache_free+0x238/0x53c
    [ 2479.386435]I[0:launcher-loader: 1719]  mempool_free_slab+0x1c/0x28
    [ 2479.386460]I[0:launcher-loader: 1719]  mempool_free+0x7c/0x1a0
    [ 2479.386484]I[0:launcher-loader: 1719]  bvec_free+0x34/0x80
    [ 2479.386514]I[0:launcher-loader: 1719]  bio_free+0x60/0x98
    [ 2479.386540]I[0:launcher-loader: 1719]  bio_put+0x50/0x21c
    [ 2479.386567]I[0:launcher-loader: 1719]  f2fs_write_end_io+0x4ac/0x4d0
    [ 2479.386594]I[0:launcher-loader: 1719]  bio_endio+0x2dc/0x300
    [ 2479.386622]I[0:launcher-loader: 1719]  __dm_io_complete+0x324/0x37c
    [ 2479.386650]I[0:launcher-loader: 1719]  dm_io_dec_pending+0x60/0xa4
    [ 2479.386676]I[0:launcher-loader: 1719]  clone_endio+0xf8/0x2f0
    [ 2479.386700]I[0:launcher-loader: 1719]  bio_endio+0x2dc/0x300
    [ 2479.386727]I[0:launcher-loader: 1719]  blk_update_request+0x258/0x63c
    [ 2479.386754]I[0:launcher-loader: 1719]  scsi_end_request+0x50/0x304
    [ 2479.386782]I[0:launcher-loader: 1719]  scsi_io_completion+0x88/0x160
    [ 2479.386808]I[0:launcher-loader: 1719]  scsi_finish_command+0x17c/0x194
    [ 2479.386833]I[0:launcher-loader: 1719]  scsi_complete+0xcc/0x158
    [ 2479.386859]I[0:launcher-loader: 1719]  blk_mq_complete_request+0x4c/0x5c
    [ 2479.386885]I[0:launcher-loader: 1719]  scsi_done_internal+0xf4/0x1e0
    [ 2479.386910]I[0:launcher-loader: 1719]  scsi_done+0x14/0x20
    [ 2479.386935]I[0:launcher-loader: 1719]  ufshcd_compl_one_cqe+0x578/0x71c
    [ 2479.386963]I[0:launcher-loader: 1719]  ufshcd_mcq_poll_cqe_nolock+0xc8/0x150
    [ 2479.386991]I[0:launcher-loader: 1719]  ufshcd_intr+0x868/0xc0c
    [ 2479.387017]I[0:launcher-loader: 1719]  __handle_irq_event_percpu+0xd0/0x348
    [ 2479.387044]I[0:launcher-loader: 1719]  handle_irq_event_percpu+0x24/0x74
    [ 2479.387068]I[0:launcher-loader: 1719]  handle_irq_event+0x74/0xe0
    [ 2479.387091]I[0:launcher-loader: 1719]  handle_fasteoi_irq+0x174/0x240
    [ 2479.387118]I[0:launcher-loader: 1719]  handle_irq_desc+0x7c/0x2c0
    [ 2479.387147]I[0:launcher-loader: 1719]  generic_handle_domain_irq+0x1c/0x28
    [ 2479.387174]I[0:launcher-loader: 1719]  gic_handle_irq+0x64/0x158
    [ 2479.387204]I[0:launcher-loader: 1719]  call_on_irq_stack+0x2c/0x54
    [ 2479.387231]I[0:launcher-loader: 1719]  do_interrupt_handler+0x70/0xa0
    [ 2479.387258]I[0:launcher-loader: 1719]  el1_interrupt+0x34/0x68
    [ 2479.387283]I[0:launcher-loader: 1719]  el1h_64_irq_handler+0x18/0x24
    [ 2479.387308]I[0:launcher-loader: 1719]  el1h_64_irq+0x68/0x6c
    [ 2479.387332]I[0:launcher-loader: 1719]  blk_attempt_bio_merge+0x8/0x170
    [ 2479.387356]I[0:launcher-loader: 1719]  blk_mq_attempt_bio_merge+0x78/0x98
    [ 2479.387383]I[0:launcher-loader: 1719]  blk_mq_submit_bio+0x324/0xa40
    [ 2479.387409]I[0:launcher-loader: 1719]  __submit_bio+0x104/0x138
    [ 2479.387436]I[0:launcher-loader: 1719]  submit_bio_noacct_nocheck+0x1d0/0x4a0
    [ 2479.387462]I[0:launcher-loader: 1719]  submit_bio_noacct+0x618/0x804
    [ 2479.387487]I[0:launcher-loader: 1719]  submit_bio+0x164/0x180
    [ 2479.387511]I[0:launcher-loader: 1719]  f2fs_submit_read_bio+0xe4/0x1c4
    [ 2479.387537]I[0:launcher-loader: 1719]  f2fs_mpage_readpages+0x888/0xa4c
    [ 2479.387563]I[0:launcher-loader: 1719]  f2fs_readahead+0xd4/0x19c
    [ 2479.387587]I[0:launcher-loader: 1719]  read_pages+0xb0/0x4ac
    [ 2479.387614]I[0:launcher-loader: 1719]  page_cache_ra_unbounded+0x238/0x288
    [ 2479.387642]I[0:launcher-loader: 1719]  do_page_cache_ra+0x60/0x6c
    [ 2479.387669]I[0:launcher-loader: 1719]  page_cache_ra_order+0x318/0x364
    [ 2479.387695]I[0:launcher-loader: 1719]  ondemand_readahead+0x30c/0x3d8
    [ 2479.387722]I[0:launcher-loader: 1719]  page_cache_sync_ra+0xb4/0xc8
    [ 2479.387749]I[0:launcher-loader: 1719]  filemap_read+0x268/0xd24
    [ 2479.387777]I[0:launcher-loader: 1719]  f2fs_file_read_iter+0x1a0/0x62c
    [ 2479.387806]I[0:launcher-loader: 1719]  vfs_read+0x258/0x34c
    [ 2479.387831]I[0:launcher-loader: 1719]  ksys_pread64+0x8c/0xd0
    [ 2479.387857]I[0:launcher-loader: 1719]  __arm64_sys_pread64+0x48/0x54
    [ 2479.387881]I[0:launcher-loader: 1719]  invoke_syscall+0x58/0x158
    [ 2479.387909]I[0:launcher-loader: 1719]  el0_svc_common+0xf0/0x134
    [ 2479.387935]I[0:launcher-loader: 1719]  do_el0_svc+0x44/0x114
    [ 2479.387961]I[0:launcher-loader: 1719]  el0_svc+0x2c/0x80
    [ 2479.387985]I[0:launcher-loader: 1719]  el0t_64_sync_handler+0x48/0x114
    [ 2479.388010]I[0:launcher-loader: 1719]  el0t_64_sync+0x190/0x194
    [ 2479.388038]I[0:launcher-loader: 1719] Kernel panic - not syncing: kernel: panic_on_warn set ...
    
    So let's set __exception_irq_entry with __irq_entry as a default.
    Applying this patch, we can see gic_hande_irq is included in Systemp.map as below.
    
    * Before
    ffffffc008010000 T __do_softirq
    ffffffc008010000 T __irqentry_text_end
    ffffffc008010000 T __irqentry_text_start
    ffffffc008010000 T __softirqentry_text_start
    ffffffc008010000 T _stext
    ffffffc00801066c T __softirqentry_text_end
    ffffffc008010670 T __entry_text_start
    
    * After
    ffffffc008010000 T __irqentry_text_start
    ffffffc008010000 T _stext
    ffffffc008010000 t gic_handle_irq
    ffffffc00801013c t gic_handle_irq
    ffffffc008010294 T __irqentry_text_end
    ffffffc008010298 T __do_softirq
    ffffffc008010298 T __softirqentry_text_start
    ffffffc008010904 T __softirqentry_text_end
    ffffffc008010908 T __entry_text_start
    
    Signed-off-by: Youngmin Nam <youngmin.nam@samsung.com>
    Signed-off-by: SEO HOYOUNG <hy50.seo@samsung.com>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Link: https://lore.kernel.org/r/20230424010436.779733-1-youngmin.nam@samsung.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aeb3c9a1f3a0cb43ec204824b90099c91845772d
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Thu Jun 1 17:11:51 2023 -0500

    ACPI: resource: Remove "Zen" specific match and quirks
    
    [ Upstream commit a9c4a912b7dc7ff922d4b9261160c001558f9755 ]
    
    commit 9946e39fe8d0 ("ACPI: resource: skip IRQ override on
    AMD Zen platforms") attempted to overhaul the override logic so it
    didn't apply on X86 AMD Zen systems.  This was intentional so that
    systems would prefer DSDT values instead of default MADT value for
    IRQ 1 on Ryzen 6000 systems which typically uses ActiveLow for IRQ1.
    
    This turned out to be a bad assumption because several vendors
    add Interrupt Source Override but don't fix the DSDT. A pile of
    quirks was collecting that proved this wasn't sustaintable.
    
    Furthermore some vendors have used ActiveHigh for IRQ1.
    To solve this problem revert the following commits:
    * commit 17bb7046e7ce ("ACPI: resource: Do IRQ override on all TongFang
    GMxRGxx")
    * commit f3cb9b740869 ("ACPI: resource: do IRQ override on Lenovo 14ALC7")
    * commit bfcdf58380b1 ("ACPI: resource: do IRQ override on LENOVO IdeaPad")
    * commit 7592b79ba4a9 ("ACPI: resource: do IRQ override on XMG Core 15")
    * commit 9946e39fe8d0 ("ACPI: resource: skip IRQ override on AMD Zen
    platforms")
    
    Reported-by: evilsnoo@proton.me
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217394
    Reported-by: ruinairas1992@gmail.com
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217406
    Reported-by: nmschulte@gmail.com
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217336
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Tested-by: Werner Sembach <wse@tuxedocomputers.com>
    Tested-by: Chuanhong Guo <gch981213@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e29d9106c83050788335a722eb52ee28607dea5
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed May 17 11:23:59 2023 +0200

    ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 AMD version)
    
    [ Upstream commit bd5d93df86a7ddf98a2a37e9c3751e3cb334a66c ]
    
    Linux defaults to picking the non-working ACPI video backlight interface
    on the Lenovo ThinkPad X131e (3371 AMD version).
    
    Add a DMI quirk to pick the working native radeon_bl0 interface instead.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dfde1a0d7f99450ac0333c44e33faaf7e0d1269f
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed May 17 11:23:58 2023 +0200

    ACPI: video: Add backlight=native DMI quirk for Apple iMac11,3
    
    [ Upstream commit 48436f2e9834b46b47b038b605c8142a1c07bc85 ]
    
    Linux defaults to picking the non-working ACPI video backlight interface
    on the Apple iMac11,3 .
    
    Add a DMI quirk to pick the working native radeon_bl0 interface instead.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 33a43f6247ffb28180d3c1210300130595a0ccea
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Apr 29 18:34:58 2023 +0200

    ACPI: x86: Add ACPI_QUIRK_UART1_SKIP for Lenovo Yoga Book yb1-x90f/l
    
    [ Upstream commit f91280f35895d6dcb53f504968fafd1da0b00397 ]
    
    The Lenovo Yoga Book yb1-x90f/l 2-in-1 which ships with Android as
    Factory OS has (another) bug in its DSDT where the UART resource for
    the BTH0 ACPI device contains "\\_SB.PCIO.URT1" as path to the UART.
    
    Note that is with a letter 'O' instead of the number '0' which is wrong.
    
    This causes Linux to instantiate a standard /dev/ttyS? device for
    the UART instead of a /sys/bus/serial device, which in turn causes
    bluetooth to not work.
    
    Similar DSDT bugs have been encountered before and to work around those
    the acpi_quirk_skip_serdev_enumeration() helper exists.
    
    Previous devices had the broken resource pointing to the first UART, while
    the BT HCI was on the second UART, which ACPI_QUIRK_UART1_TTY_UART2_SKIP
    deals with. Add a new ACPI_QUIRK_UART1_SKIP quirk for skipping enumeration
    of UART1 instead for the Yoga Book case and add this quirk to the
    existing DMI quirk table entry for the yb1-x90f/l .
    
    This leaves the UART1 controller unbound allowing the x86-android-tablets
    module to manually instantiate a serdev for it fixing bluetooth.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c643c2ff7c3aabb6fc3e096dabe552d374c4288c
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Apr 29 12:38:41 2023 +0200

    ACPI: button: Add lid disable DMI quirk for Nextbook Ares 8A
    
    [ Upstream commit 4fd5556608bfa9c2bf276fc115ef04288331aded ]
    
    The LID0 device on the Nextbook Ares 8A tablet always reports lid
    closed causing userspace to suspend the device as soon as booting
    is complete.
    
    Add a DMI quirk to disable the broken lid functionality.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 285941d0d5e7a37fb1f7adbd5777ce432c32d9d5
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Apr 29 12:38:40 2023 +0200

    ACPI: x86: Add skip i2c clients quirk for Nextbook Ares 8A
    
    [ Upstream commit 69d6b37695c1f2320cfa330e1e1636d50dd5040a ]
    
    The Nextbook Ares 8A is a x86 ACPI tablet which ships with Android x86
    as factory OS. Its DSDT contains a bunch of I2C devices which are not
    actually there (the Android x86 kernel fork ignores I2C devices described
    in the DSDT).
    
    On this specific model this just not cause resource conflicts, one of
    the probe() calls for the non existing i2c_clients actually ends up
    toggling a GPIO or executing a _PS3 after a failed probe which turns
    the tablet off.
    
    Add a ACPI_QUIRK_SKIP_I2C_CLIENTS for the Nextbook Ares 8 to the
    acpi_quirk_skip_dmi_ids table to avoid the bogus i2c_clients and
    to fix the tablet turning off during boot because of this.
    
    Also add the "10EC5651" HID for the RealTek ALC5651 codec used
    in this tablet to the list of HIDs for which not to skipi2c_client
    instantiation, since the Intel SST sound driver relies on
    the codec being instantiated through ACPI.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 597fb60c75132719687e173b75cab8f6eb1ca657
Author: Sandeep Dhavale <dhavale@google.com>
Date:   Wed Jun 21 15:08:47 2023 -0700

    erofs: Fix detection of atomic context
    
    [ Upstream commit 12d0a24afd9ea58e581ea64d64e066f2027b28d9 ]
    
    Current check for atomic context is not sufficient as
    z_erofs_decompressqueue_endio can be called under rcu lock
    from blk_mq_flush_plug_list(). See the stacktrace [1]
    
    In such case we should hand off the decompression work for async
    processing rather than trying to do sync decompression in current
    context. Patch fixes the detection by checking for
    rcu_read_lock_any_held() and while at it use more appropriate
    !in_task() check than in_atomic().
    
    Background: Historically erofs would always schedule a kworker for
    decompression which would incur the scheduling cost regardless of
    the context. But z_erofs_decompressqueue_endio() may not always
    be in atomic context and we could actually benefit from doing the
    decompression in z_erofs_decompressqueue_endio() if we are in
    thread context, for example when running with dm-verity.
    This optimization was later added in patch [2] which has shown
    improvement in performance benchmarks.
    
    ==============================================
    [1] Problem stacktrace
    [name:core&]BUG: sleeping function called from invalid context at kernel/locking/mutex.c:291
    [name:core&]in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 1615, name: CpuMonitorServi
    [name:core&]preempt_count: 0, expected: 0
    [name:core&]RCU nest depth: 1, expected: 0
    CPU: 7 PID: 1615 Comm: CpuMonitorServi Tainted: G S      W  OE      6.1.25-android14-5-maybe-dirty-mainline #1
    Hardware name: MT6897 (DT)
    Call trace:
     dump_backtrace+0x108/0x15c
     show_stack+0x20/0x30
     dump_stack_lvl+0x6c/0x8c
     dump_stack+0x20/0x48
     __might_resched+0x1fc/0x308
     __might_sleep+0x50/0x88
     mutex_lock+0x2c/0x110
     z_erofs_decompress_queue+0x11c/0xc10
     z_erofs_decompress_kickoff+0x110/0x1a4
     z_erofs_decompressqueue_endio+0x154/0x180
     bio_endio+0x1b0/0x1d8
     __dm_io_complete+0x22c/0x280
     clone_endio+0xe4/0x280
     bio_endio+0x1b0/0x1d8
     blk_update_request+0x138/0x3a4
     blk_mq_plug_issue_direct+0xd4/0x19c
     blk_mq_flush_plug_list+0x2b0/0x354
     __blk_flush_plug+0x110/0x160
     blk_finish_plug+0x30/0x4c
     read_pages+0x2fc/0x370
     page_cache_ra_unbounded+0xa4/0x23c
     page_cache_ra_order+0x290/0x320
     do_sync_mmap_readahead+0x108/0x2c0
     filemap_fault+0x19c/0x52c
     __do_fault+0xc4/0x114
     handle_mm_fault+0x5b4/0x1168
     do_page_fault+0x338/0x4b4
     do_translation_fault+0x40/0x60
     do_mem_abort+0x60/0xc8
     el0_da+0x4c/0xe0
     el0t_64_sync_handler+0xd4/0xfc
     el0t_64_sync+0x1a0/0x1a4
    
    [2] Link: https://lore.kernel.org/all/20210317035448.13921-1-huangjianan@oppo.com/
    
    Reported-by: Will Shiu <Will.Shiu@mediatek.com>
    Suggested-by: Gao Xiang <xiang@kernel.org>
    Signed-off-by: Sandeep Dhavale <dhavale@google.com>
    Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
    Link: https://lore.kernel.org/r/20230621220848.3379029-1-dhavale@google.com
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 951b87d8ba6afadf4da6085f2f00531ced02c160
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Jun 8 11:27:45 2023 +0100

    btrfs: abort transaction at update_ref_for_cow() when ref count is zero
    
    [ Upstream commit eced687e224eb3cc5a501cf53ad9291337c8dbc5 ]
    
    At update_ref_for_cow() we are calling btrfs_handle_fs_error() if we find
    that the extent buffer has an unexpected ref count of zero, however we can
    simply use btrfs_abort_transaction(), which achieves the same purposes: to
    turn the fs to error state, abort the current transaction and turn the fs
    to RO mode as well. Besides that, btrfs_abort_transaction() also prints a
    stack trace which makes it more useful.
    
    Also, as this is a very unexpected situation, indicating a serious
    corruption/inconsistency, tag the if branch as 'unlikely', set the error
    code to -EUCLEAN instead of -EROFS, and log an explicit message.
    
    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 d40be032ecd8ee1ca033bee43c7755d21fb4d72a
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed May 31 08:04:56 2023 +0200

    btrfs: don't check PageError in __extent_writepage
    
    [ Upstream commit 3e92499e3b004baffb479d61e191b41b604ece9a ]
    
    __extent_writepage currenly sets PageError whenever any error happens,
    and the also checks for PageError to decide if to call error handling.
    This leads to very unclear responsibility for cleaning up on errors.
    In the VM and generic writeback helpers the basic idea is that once
    I/O is fired off all error handling responsibility is delegated to the
    end I/O handler.  But if that end I/O handler sets the PageError bit,
    and the submitter checks it, the bit could in some cases leak into the
    submission context for fast enough I/O.
    
    Fix this by simply not checking PageError and just using the local
    ret variable to check for submission errors.  This also fundamentally
    solves the long problem documented in a comment in __extent_writepage
    by never leaking the error bit into the submission context.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 689f5fbd897b6d9bdc58cb54c0eb3c0b0613ac3e
Author: David Sterba <dsterba@suse.com>
Date:   Tue Apr 4 00:06:02 2023 +0200

    btrfs: add xxhash to fast checksum implementations
    
    [ Upstream commit efcfcbc6a36195c42d98e0ee697baba36da94dc8 ]
    
    The implementation of XXHASH is now CPU only but still fast enough to be
    considered for the synchronous checksumming, like non-generic crc32c.
    
    A userspace benchmark comparing it to various implementations (patched
    hash-speedtest from btrfs-progs):
    
      Block size:     4096
      Iterations:     1000000
      Implementation: builtin
      Units:          CPU cycles
    
            NULL-NOP: cycles:     73384294, cycles/i       73
         NULL-MEMCPY: cycles:    228033868, cycles/i      228,    61664.320 MiB/s
          CRC32C-ref: cycles:  24758559416, cycles/i    24758,      567.950 MiB/s
           CRC32C-NI: cycles:   1194350470, cycles/i     1194,    11773.433 MiB/s
      CRC32C-ADLERSW: cycles:   6150186216, cycles/i     6150,     2286.372 MiB/s
      CRC32C-ADLERHW: cycles:    626979180, cycles/i      626,    22427.453 MiB/s
          CRC32C-PCL: cycles:    466746732, cycles/i      466,    30126.699 MiB/s
              XXHASH: cycles:    860656400, cycles/i      860,    16338.188 MiB/s
    
    Comparing purely software implementation (ref), current outdated
    accelerated using crc32q instruction (NI), optimized implementations by
    M. Adler (https://stackoverflow.com/questions/17645167/implementing-sse-4-2s-crc32c-in-software/17646775#17646775)
    and the best one that was taken from kernel using the PCLMULQDQ
    instruction (PCL).
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37175e25edf7cc0d5a2cd2c2a1cbe2dcbf4a1937
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jun 1 20:58:47 2023 +0200

    posix-timers: Ensure timer ID search-loop limit is valid
    
    [ Upstream commit 8ce8849dd1e78dadcee0ec9acbd259d239b7069f ]
    
    posix_timer_add() tries to allocate a posix timer ID by starting from the
    cached ID which was stored by the last successful allocation.
    
    This is done in a loop searching the ID space for a free slot one by
    one. The loop has to terminate when the search wrapped around to the
    starting point.
    
    But that's racy vs. establishing the starting point. That is read out
    lockless, which leads to the following problem:
    
    CPU0                               CPU1
    posix_timer_add()
      start = sig->posix_timer_id;
      lock(hash_lock);
      ...                              posix_timer_add()
      if (++sig->posix_timer_id < 0)
                                         start = sig->posix_timer_id;
         sig->posix_timer_id = 0;
    
    So CPU1 can observe a negative start value, i.e. -1, and the loop break
    never happens because the condition can never be true:
    
      if (sig->posix_timer_id == start)
         break;
    
    While this is unlikely to ever turn into an endless loop as the ID space is
    huge (INT_MAX), the racy read of the start value caught the attention of
    KCSAN and Dmitry unearthed that incorrectness.
    
    Rewrite it so that all id operations are under the hash lock.
    
    Reported-by: syzbot+5c54bd3eb218bb595aa9@syzkaller.appspotmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
    Link: https://lore.kernel.org/r/87bkhzdn6g.ffs@tglx
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e977386521b71471e66ec2ba82efdfcc456adf2
Author: Ming Lei <ming.lei@redhat.com>
Date:   Fri Jun 16 21:23:54 2023 +0800

    blk-mq: fix NULL dereference on q->elevator in blk_mq_elv_switch_none
    
    [ Upstream commit 245165658e1c9f95c0fecfe02b9b1ebd30a1198a ]
    
    After grabbing q->sysfs_lock, q->elevator may become NULL because of
    elevator switch.
    
    Fix the NULL dereference on q->elevator by checking it with lock.
    
    Reported-by: Guangwu Zhang <guazhang@redhat.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20230616132354.415109-1-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4cc664e59bf2553771e4c9e90f758f7434cfdc22
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Sat Jun 10 10:20:02 2023 +0800

    scsi: sg: fix blktrace debugfs entries leakage
    
    [ Upstream commit db59133e927916d8a25ee1fd8264f2808040909d ]
    
    sg_ioctl() support to enable blktrace, which will create debugfs entries
    "/sys/kernel/debug/block/sgx/", however, there is no guarantee that user
    will remove these entries through ioctl, and deleting sg device doesn't
    cleanup these blktrace entries.
    
    This problem can be fixed by cleanup blktrace while releasing
    request_queue, however, it's not a good idea to do this special handling
    in common layer just for sg device.
    
    Fix this problem by shutdown bltkrace in sg_device_destroy(), where the
    device is deleted and all the users close the device, also grab a
    scsi_device reference from sg_add_device() to prevent scsi_device to be
    freed before sg_device_destroy();
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Link: https://lore.kernel.org/r/20230610022003.2557284-3-yukuai1@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fbf50184190d55f8717bd29aa9530c399be96f30
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Mon May 29 21:11:00 2023 +0800

    md/raid10: prevent soft lockup while flush writes
    
    [ Upstream commit 010444623e7f4da6b4a4dd603a7da7469981e293 ]
    
    Currently, there is no limit for raid1/raid10 plugged bio. While flushing
    writes, raid1 has cond_resched() while raid10 doesn't, and too many
    writes can cause soft lockup.
    
    Follow up soft lockup can be triggered easily with writeback test for
    raid10 with ramdisks:
    
    watchdog: BUG: soft lockup - CPU#10 stuck for 27s! [md0_raid10:1293]
    Call Trace:
     <TASK>
     call_rcu+0x16/0x20
     put_object+0x41/0x80
     __delete_object+0x50/0x90
     delete_object_full+0x2b/0x40
     kmemleak_free+0x46/0xa0
     slab_free_freelist_hook.constprop.0+0xed/0x1a0
     kmem_cache_free+0xfd/0x300
     mempool_free_slab+0x1f/0x30
     mempool_free+0x3a/0x100
     bio_free+0x59/0x80
     bio_put+0xcf/0x2c0
     free_r10bio+0xbf/0xf0
     raid_end_bio_io+0x78/0xb0
     one_write_done+0x8a/0xa0
     raid10_end_write_request+0x1b4/0x430
     bio_endio+0x175/0x320
     brd_submit_bio+0x3b9/0x9b7 [brd]
     __submit_bio+0x69/0xe0
     submit_bio_noacct_nocheck+0x1e6/0x5a0
     submit_bio_noacct+0x38c/0x7e0
     flush_pending_writes+0xf0/0x240
     raid10d+0xac/0x1ed0
    
    Fix the problem by adding cond_resched() to raid10 like what raid1 did.
    
    Note that unlimited plugged bio still need to be optimized, for example,
    in the case of lots of dirty pages writeback, this will take lots of
    memory and io will spend a long time in plug, hence io latency is bad.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20230529131106.2123367-2-yukuai1@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5df4edc59c33fd2b8465b5f4b55b8f05ea630446
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Fri May 12 09:56:07 2023 +0800

    md: fix data corruption for raid456 when reshape restart while grow up
    
    [ Upstream commit 873f50ece41aad5c4f788a340960c53774b5526e ]
    
    Currently, if reshape is interrupted, echo "reshape" to sync_action will
    restart reshape from scratch, for example:
    
    echo frozen > sync_action
    echo reshape > sync_action
    
    This will corrupt data before reshape_position if the array is growing,
    fix the problem by continue reshape from reshape_position.
    
    Reported-by: Peter Neuwirth <reddunur@online.de>
    Link: https://lore.kernel.org/linux-raid/e2f96772-bfbc-f43b-6da1-f520e5164536@online.de/
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20230512015610.821290-3-yukuai1@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0ed8ed0428ee96092da6fefa5cfacbe4abed701
Author: Immad Mir <mirimmad17@gmail.com>
Date:   Fri Jun 23 19:17:08 2023 +0530

    FS: JFS: Check for read-only mounted filesystem in txBegin
    
    [ Upstream commit 95e2b352c03b0a86c5717ba1d24ea20969abcacc ]
    
     This patch adds a check for read-only mounted filesystem
     in txBegin before starting a transaction potentially saving
     from NULL pointer deref.
    
    Signed-off-by: Immad Mir <mirimmad17@gmail.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd2db13fb72ff18c633a48229589d42ceb89d1f8
Author: Immad Mir <mirimmad17@gmail.com>
Date:   Fri Jun 23 19:14:01 2023 +0530

    FS: JFS: Fix null-ptr-deref Read in txBegin
    
    [ Upstream commit 47cfdc338d674d38f4b2f22b7612cc6a2763ba27 ]
    
     Syzkaller reported an issue where txBegin may be called
     on a superblock in a read-only mounted filesystem which leads
     to NULL pointer deref. This could be solved by checking if
     the filesystem is read-only before calling txBegin, and returning
     with appropiate error code.
    
    Reported-By: syzbot+f1faa20eec55e0c8644c@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?id=be7e52c50c5182cc09a09ea6fc456446b2039de3
    
    Signed-off-by: Immad Mir <mirimmad17@gmail.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a4d22d8d1bc3a9b8e65c34574be37adba7ac913
Author: Gustavo A. R. Silva <gustavoars@kernel.org>
Date:   Thu Jun 22 17:43:57 2023 -0600

    MIPS: dec: prom: Address -Warray-bounds warning
    
    [ Upstream commit 7b191b9b55df2a844bd32d1d380f47a7df1c2896 ]
    
    Zero-length arrays are deprecated, and we are replacing them with flexible
    array members instead. So, replace zero-length array with flexible-array
    member in struct memmap.
    
    Address the following warning found after building (with GCC-13) mips64
    with decstation_64_defconfig:
    In function 'rex_setup_memory_region',
        inlined from 'prom_meminit' at arch/mips/dec/prom/memory.c:91:3:
    arch/mips/dec/prom/memory.c:72:31: error: array subscript i is outside array bounds of 'unsigned char[0]' [-Werror=array-bounds=]
       72 |                 if (bm->bitmap[i] == 0xff)
          |                     ~~~~~~~~~~^~~
    In file included from arch/mips/dec/prom/memory.c:16:
    ./arch/mips/include/asm/dec/prom.h: In function 'prom_meminit':
    ./arch/mips/include/asm/dec/prom.h:73:23: note: while referencing 'bitmap'
       73 |         unsigned char bitmap[0];
    
    This helps with the ongoing efforts to globally enable -Warray-bounds.
    
    This results in no differences in binary output.
    
    Link: https://github.com/KSPP/linux/issues/79
    Link: https://github.com/KSPP/linux/issues/323
    Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2af019091f904ca08b3572ab0111238ad6d17b3
Author: Yogesh <yogi.kernel@gmail.com>
Date:   Thu Jun 22 00:07:03 2023 +0530

    fs: jfs: Fix UBSAN: array-index-out-of-bounds in dbAllocDmapLev
    
    [ Upstream commit 4e302336d5ca1767a06beee7596a72d3bdc8d983 ]
    
    Syzkaller reported the following issue:
    
    UBSAN: array-index-out-of-bounds in fs/jfs/jfs_dmap.c:1965:6
    index -84 is out of range for type 's8[341]' (aka 'signed char[341]')
    CPU: 1 PID: 4995 Comm: syz-executor146 Not tainted 6.4.0-rc6-syzkaller-00037-gb6dad5178cea #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/27/2023
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106
     ubsan_epilogue lib/ubsan.c:217 [inline]
     __ubsan_handle_out_of_bounds+0x11c/0x150 lib/ubsan.c:348
     dbAllocDmapLev+0x3e5/0x430 fs/jfs/jfs_dmap.c:1965
     dbAllocCtl+0x113/0x920 fs/jfs/jfs_dmap.c:1809
     dbAllocAG+0x28f/0x10b0 fs/jfs/jfs_dmap.c:1350
     dbAlloc+0x658/0xca0 fs/jfs/jfs_dmap.c:874
     dtSplitUp fs/jfs/jfs_dtree.c:974 [inline]
     dtInsert+0xda7/0x6b00 fs/jfs/jfs_dtree.c:863
     jfs_create+0x7b6/0xbb0 fs/jfs/namei.c:137
     lookup_open fs/namei.c:3492 [inline]
     open_last_lookups fs/namei.c:3560 [inline]
     path_openat+0x13df/0x3170 fs/namei.c:3788
     do_filp_open+0x234/0x490 fs/namei.c:3818
     do_sys_openat2+0x13f/0x500 fs/open.c:1356
     do_sys_open fs/open.c:1372 [inline]
     __do_sys_openat fs/open.c:1388 [inline]
     __se_sys_openat fs/open.c:1383 [inline]
     __x64_sys_openat+0x247/0x290 fs/open.c:1383
     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
    RIP: 0033:0x7f1f4e33f7e9
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 51 14 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007ffc21129578 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f1f4e33f7e9
    RDX: 000000000000275a RSI: 0000000020000040 RDI: 00000000ffffff9c
    RBP: 00007f1f4e2ff080 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f1f4e2ff110
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    The bug occurs when the dbAllocDmapLev()function attempts to access
    dp->tree.stree[leafidx + LEAFIND] while the leafidx value is negative.
    
    To rectify this, the patch introduces a safeguard within the
    dbAllocDmapLev() function. A check has been added to verify if leafidx is
    negative. If it is, the function immediately returns an I/O error, preventing
    any further execution that could potentially cause harm.
    
    Tested via syzbot.
    
    Reported-by: syzbot+853a6f4dfa3cf37d3aea@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?extid=ae2f5a27a07ae44b0f17
    Signed-off-by: Yogesh <yogi.kernel@gmail.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8374bcb27120253f710216cd1cc1be25adfcdea3
Author: Matthew Anderson <ruinairas1992@gmail.com>
Date:   Wed Jun 21 11:17:14 2023 -0500

    ALSA: hda/realtek: Add quirks for ROG ALLY CS35l41 audio
    
    [ Upstream commit 724418b84e6248cd27599607b7e5fac365b8e3f5 ]
    
    This requires a patched ACPI table or a firmware from ASUS to work because
    the system does not come with the _DSD field for the CSC3551.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217550
    Signed-off-by: Matthew Anderson <ruinairas1992@gmail.com>
    Tested-by: Philip Mueller <philm@manjaro.org>
    Link: https://lore.kernel.org/r/20230621161714.9442-1-ruinairas1992@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d50988da0db167aed6f38685145cb5cd526c4f8
Author: Jan Kara <jack@suse.cz>
Date:   Wed Jun 21 11:32:35 2023 +0200

    udf: Fix uninitialized array access for some pathnames
    
    [ Upstream commit 028f6055c912588e6f72722d89c30b401bbcf013 ]
    
    For filenames that begin with . and are between 2 and 5 characters long,
    UDF charset conversion code would read uninitialized memory in the
    output buffer. The only practical impact is that the name may be prepended a
    "unification hash" when it is not actually needed but still it is good
    to fix this.
    
    Reported-by: syzbot+cd311b1e43cc25f90d18@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/all/000000000000e2638a05fe9dc8f9@google.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da2b6f919aa014bde4d8f564e9b3b7d09e85c5d1
Author: Christian Brauner <brauner@kernel.org>
Date:   Tue Jun 13 10:13:37 2023 +0200

    ovl: check type and offset of struct vfsmount in ovl_entry
    
    [ Upstream commit f723edb8a532cd26e1ff0a2b271d73762d48f762 ]
    
    Porting overlayfs to the new amount api I started experiencing random
    crashes that couldn't be explained easily. So after much debugging and
    reasoning it became clear that struct ovl_entry requires the point to
    struct vfsmount to be the first member and of type struct vfsmount.
    
    During the port I added a new member at the beginning of struct
    ovl_entry which broke all over the place in the form of random crashes
    and cache corruptions. While there's a comment in ovl_free_fs() to the
    effect of "Hack! Reuse ofs->layers as a vfsmount array before freeing
    it" there's no such comment on struct ovl_entry which makes this easy to
    trip over.
    
    Add a comment and two static asserts for both the offset and the type of
    pointer in struct ovl_entry.
    
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1af064b17479f732b29c7f3201588766ad9c9e70
Author: Marco Morandini <marco.morandini@polimi.it>
Date:   Tue May 30 15:40:08 2023 +0200

    HID: add quirk for 03f0:464a HP Elite Presenter Mouse
    
    [ Upstream commit 0db117359e47750d8bd310d19f13e1c4ef7fc26a ]
    
    HP Elite Presenter Mouse HID Record Descriptor shows
    two mouses (Repord ID 0x1 and 0x2), one keypad (Report ID 0x5),
    two Consumer Controls (Report IDs 0x6 and 0x3).
    Previous to this commit it registers one mouse, one keypad
    and one Consumer Control, and it was usable only as a
    digitl laser pointer (one of the two mouses). This patch defines
    the 464a USB device ID and enables the HID_QUIRK_MULTI_INPUT
    quirk for it, allowing to use the device both as a mouse
    and a digital laser pointer.
    
    Signed-off-by: Marco Morandini <marco.morandini@polimi.it>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f4e543d277a12dfeff027e6ab24a170e1bfc160
Author: Ye Bin <yebin10@huawei.com>
Date:   Mon Jun 5 22:07:31 2023 +0800

    quota: fix warning in dqgrab()
    
    [ Upstream commit d6a95db3c7ad160bc16b89e36449705309b52bcb ]
    
    There's issue as follows when do fault injection:
    WARNING: CPU: 1 PID: 14870 at include/linux/quotaops.h:51 dquot_disable+0x13b7/0x18c0
    Modules linked in:
    CPU: 1 PID: 14870 Comm: fsconfig Not tainted 6.3.0-next-20230505-00006-g5107a9c821af-dirty #541
    RIP: 0010:dquot_disable+0x13b7/0x18c0
    RSP: 0018:ffffc9000acc79e0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff88825e41b980
    RDX: 0000000000000000 RSI: ffff88825e41b980 RDI: 0000000000000002
    RBP: ffff888179f68000 R08: ffffffff82087ca7 R09: 0000000000000000
    R10: 0000000000000001 R11: ffffed102f3ed026 R12: ffff888179f68130
    R13: ffff888179f68110 R14: dffffc0000000000 R15: ffff888179f68118
    FS:  00007f450a073740(0000) GS:ffff88882fc00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ffe96f2efd8 CR3: 000000025c8ad000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     dquot_load_quota_sb+0xd53/0x1060
     dquot_resume+0x172/0x230
     ext4_reconfigure+0x1dc6/0x27b0
     reconfigure_super+0x515/0xa90
     __x64_sys_fsconfig+0xb19/0xd20
     do_syscall_64+0x39/0xb0
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Above issue may happens as follows:
    ProcessA              ProcessB                    ProcessC
    sys_fsconfig
      vfs_fsconfig_locked
       reconfigure_super
         ext4_remount
          dquot_suspend -> suspend all type quota
    
                     sys_fsconfig
                      vfs_fsconfig_locked
                        reconfigure_super
                         ext4_remount
                          dquot_resume
                           ret = dquot_load_quota_sb
                            add_dquot_ref
                                               do_open  -> open file O_RDWR
                                                vfs_open
                                                 do_dentry_open
                                                  get_write_access
                                                   atomic_inc_unless_negative(&inode->i_writecount)
                                                  ext4_file_open
                                                   dquot_file_open
                                                    dquot_initialize
                                                      __dquot_initialize
                                                       dqget
                                                        atomic_inc(&dquot->dq_count);
    
                              __dquot_initialize
                               __dquot_initialize
                                dqget
                                 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
                                   ext4_acquire_dquot
                                    -> Return error DQ_ACTIVE_B flag isn't set
                             dquot_disable
                              invalidate_dquots
                               if (atomic_read(&dquot->dq_count))
                                dqgrab
                                 WARN_ON_ONCE(!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
                                  -> Trigger warning
    
    In the above scenario, 'dquot->dq_flags' has no DQ_ACTIVE_B is normal when
    dqgrab().
    To solve above issue just replace the dqgrab() use in invalidate_dquots() with
    atomic_inc(&dquot->dq_count).
    
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Message-Id: <20230605140731.2427629-3-yebin10@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50ff4ede9afdb86dbfaf15cd7825f30c0a80f80e
Author: Jan Kara <jack@suse.cz>
Date:   Mon Jun 5 22:07:30 2023 +0800

    quota: Properly disable quotas when add_dquot_ref() fails
    
    [ Upstream commit 6a4e3363792e30177cc3965697e34ddcea8b900b ]
    
    When add_dquot_ref() fails (usually due to IO error or ENOMEM), we want
    to disable quotas we are trying to enable. However dquot_disable() call
    was passed just the flags we are enabling so in case flags ==
    DQUOT_USAGE_ENABLED dquot_disable() call will just fail with EINVAL
    instead of properly disabling quotas. Fix the problem by always passing
    DQUOT_LIMITS_ENABLED | DQUOT_USAGE_ENABLED to dquot_disable() in this
    case.
    
    Reported-and-tested-by: Ye Bin <yebin10@huawei.com>
    Reported-by: syzbot+e633c79ceaecbf479854@syzkaller.appspotmail.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Message-Id: <20230605140731.2427629-2-yebin10@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03a67caf8e8d13b699ddc468a55ec7cd21a71369
Author: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date:   Wed May 10 19:39:05 2023 +0200

    ALSA: emu10k1: roll up loops in DSP setup code for Audigy
    
    [ Upstream commit 8cabf83c7aa54530e699be56249fb44f9505c4f3 ]
    
    There is no apparent reason for the massive code duplication.
    
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    Link: https://lore.kernel.org/r/20230510173917.3073107-3-oswald.buddenhagen@gmx.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25e634d7f44eb13113139040e5366bebe48c882f
Author: hackyzh002 <hackyzh002@gmail.com>
Date:   Wed Apr 19 20:20:58 2023 +0800

    drm/radeon: Fix integer overflow in radeon_cs_parser_init
    
    [ Upstream commit f828b681d0cd566f86351c0b913e6cb6ed8c7b9c ]
    
    The type of size is unsigned, if size is 0x40000000, there will be an
    integer overflow, size will be zero after size *= sizeof(uint32_t),
    will cause uninitialized memory to be referenced later
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: hackyzh002 <hackyzh002@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f07cd59268cdbf09ecadd95ddef2823fe841591
Author: Eric Whitney <enwlinux@gmail.com>
Date:   Mon May 22 14:15:20 2023 -0400

    ext4: correct inline offset when handling xattrs in inode body
    
    commit 6909cf5c4101214f4305a62d582a5b93c7e1eb9a upstream.
    
    When run on a file system where the inline_data feature has been
    enabled, xfstests generic/269, generic/270, and generic/476 cause ext4
    to emit error messages indicating that inline directory entries are
    corrupted.  This occurs because the inline offset used to locate
    inline directory entries in the inode body is not updated when an
    xattr in that shared region is deleted and the region is shifted in
    memory to recover the space it occupied.  If the deleted xattr precedes
    the system.data attribute, which points to the inline directory entries,
    that attribute will be moved further up in the region.  The inline
    offset continues to point to whatever is located in system.data's former
    location, with unfortunate effects when used to access directory entries
    or (presumably) inline data in the inode body.
    
    Cc: stable@kernel.org
    Signed-off-by: Eric Whitney <enwlinux@gmail.com>
    Link: https://lore.kernel.org/r/20230522181520.1570360-1-enwlinux@gmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4368f59a292ff0c0211e0742a70ec8604f340ed7
Author: Marc Zyngier <maz@kernel.org>
Date:   Thu Jul 13 08:06:57 2023 +0100

    KVM: arm64: vgic-v4: Make the doorbell request robust w.r.t preemption
    
    commit b321c31c9b7b309dcde5e8854b741c8e6a9a05f0 upstream.
    
    Xiang reports that VMs occasionally fail to boot on GICv4.1 systems when
    running a preemptible kernel, as it is possible that a vCPU is blocked
    without requesting a doorbell interrupt.
    
    The issue is that any preemption that occurs between vgic_v4_put() and
    schedule() on the block path will mark the vPE as nonresident and *not*
    request a doorbell irq. This occurs because when the vcpu thread is
    resumed on its way to block, vcpu_load() will make the vPE resident
    again. Once the vcpu actually blocks, we don't request a doorbell
    anymore, and the vcpu won't be woken up on interrupt delivery.
    
    Fix it by tracking that we're entering WFI, and key the doorbell
    request on that flag. This allows us not to make the vPE resident
    when going through a preempt/schedule cycle, meaning we don't lose
    any state.
    
    Cc: stable@vger.kernel.org
    Fixes: 8e01d9a396e6 ("KVM: arm64: vgic-v4: Move the GICv4 residency flow to be driven by vcpu_load/put")
    Reported-by: Xiang Chen <chenxiang66@hisilicon.com>
    Suggested-by: Zenghui Yu <yuzenghui@huawei.com>
    Tested-by: Xiang Chen <chenxiang66@hisilicon.com>
    Co-developed-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Acked-by: Zenghui Yu <yuzenghui@huawei.com>
    Link: https://lore.kernel.org/r/20230713070657.3873244-1-maz@kernel.org
    Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4649d3da3dac3de3a94fcac98c3da2c3f6229ae
Author: Marc Zyngier <maz@kernel.org>
Date:   Mon Jul 3 17:35:48 2023 +0100

    KVM: arm64: Disable preemption in kvm_arch_hardware_enable()
    
    commit 970dee09b230895fe2230d2b32ad05a2826818c6 upstream.
    
    Since 0bf50497f03b ("KVM: Drop kvm_count_lock and instead protect
    kvm_usage_count with kvm_lock"), hotplugging back a CPU whilst
    a guest is running results in a number of ugly splats as most
    of this code expects to run with preemption disabled, which isn't
    the case anymore.
    
    While the context is preemptable, it isn't migratable, which should
    be enough. But we have plenty of preemptible() checks all over
    the place, and our per-CPU accessors also disable preemption.
    
    Since this affects released versions, let's do the easy fix first,
    disabling preemption in kvm_arch_hardware_enable(). We can always
    revisit this with a more invasive fix in the future.
    
    Fixes: 0bf50497f03b ("KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock")
    Reported-by: Kristina Martsenko <kristina.martsenko@arm.com>
    Tested-by: Kristina Martsenko <kristina.martsenko@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/aeab7562-2d39-e78e-93b1-4711f8cc3fa5@arm.com
    Cc: stable@vger.kernel.org # v6.3, v6.4
    Link: https://lore.kernel.org/r/20230703163548.1498943-1-maz@kernel.org
    Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1023d9be1745f765ad7bc74a86aa2e614d6d709
Author: Oliver Upton <oliver.upton@linux.dev>
Date:   Tue Jun 27 23:54:05 2023 +0000

    KVM: arm64: Correctly handle page aging notifiers for unaligned memslot
    
    commit df6556adf27b7372cfcd97e1c0afb0d516c8279f upstream.
    
    Userspace is allowed to select any PAGE_SIZE aligned hva to back guest
    memory. This is even the case with hugepages, although it is a rather
    suboptimal configuration as PTE level mappings are used at stage-2.
    
    The arm64 page aging handlers have an assumption that the specified
    range is exactly one page/block of memory, which in the aforementioned
    case is not necessarily true. All together this leads to the WARN() in
    kvm_age_gfn() firing.
    
    However, the WARN is only part of the issue as the table walkers visit
    at most a single leaf PTE. For hugepage-backed memory in a memslot that
    isn't hugepage-aligned, page aging entirely misses accesses to the
    hugepage beyond the first page in the memslot.
    
    Add a new walker dedicated to handling page aging MMU notifiers capable
    of walking a range of PTEs. Convert kvm(_test)_age_gfn() over to the new
    walker and drop the WARN that caught the issue in the first place. The
    implementation of this walker was inspired by the test_clear_young()
    implementation by Yu Zhao [*], but repurposed to address a bug in the
    existing aging implementation.
    
    Cc: stable@vger.kernel.org # v5.15
    Fixes: 056aad67f836 ("kvm: arm/arm64: Rework gpa callback handlers")
    Link: https://lore.kernel.org/kvmarm/20230526234435.662652-6-yuzhao@google.com/
    Co-developed-by: Yu Zhao <yuzhao@google.com>
    Signed-off-by: Yu Zhao <yuzhao@google.com>
    Reported-by: Reiji Watanabe <reijiw@google.com>
    Reviewed-by: Marc Zyngier <maz@kernel.org>
    Reviewed-by: Shaoqin Huang <shahuang@redhat.com>
    Link: https://lore.kernel.org/r/20230627235405.4069823-1-oliver.upton@linux.dev
    Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88430130cc8cdc4528b0e3ecb3da7982bde5a010
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Jun 27 15:05:57 2023 +0100

    KVM: arm64: timers: Use CNTHCTL_EL2 when setting non-CNTKCTL_EL1 bits
    
    commit fe769e6c1f80f542d6f4e7f7c8c6bf20c1307f99 upstream.
    
    It recently appeared that, when running VHE, there is a notable
    difference between using CNTKCTL_EL1 and CNTHCTL_EL2, despite what
    the architecture documents:
    
    - When accessed from EL2, bits [19:18] and [16:10] of CNTKCTL_EL1 have
      the same assignment as CNTHCTL_EL2
    - When accessed from EL1, bits [19:18] and [16:10] are RES0
    
    It is all OK, until you factor in NV, where the EL2 guest runs at EL1.
    In this configuration, CNTKCTL_EL11 doesn't trap, nor ends up in
    the VNCR page. This means that any write from the guest affecting
    CNTHCTL_EL2 using CNTKCTL_EL1 ends up losing some state. Not good.
    
    The fix it obvious: don't use CNTKCTL_EL1 if you want to change bits
    that are not part of the EL1 definition of CNTKCTL_EL1, and use
    CNTHCTL_EL2 instead. This doesn't change anything for a bare-metal OS,
    and fixes it when running under NV. The NV hypervisor will itself
    have to work harder to merge the two accessors.
    
    Note that there is a pending update to the architecture to address
    this issue by making the affected bits UNKNOWN when CNTKCTL_EL1 is
    used from EL2 with VHE enabled.
    
    Fixes: c605ee245097 ("KVM: arm64: timers: Allow physical offset without CNTPOFF_EL2")
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org # v6.4
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Link: https://lore.kernel.org/r/20230627140557.544885-1-maz@kernel.org
    Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 898540115bed98079f68e8a12bd0b393b43411b8
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Sat Jul 1 11:47:23 2023 +0200

    ASoC: codecs: wcd938x: fix soundwire initialisation race
    
    commit 6f49256897083848ce9a59651f6b53fc80462397 upstream.
    
    Make sure that the soundwire device used for register accesses has been
    enumerated and initialised before trying to read the codec variant
    during component probe.
    
    This specifically avoids interpreting (a masked and shifted) -EBUSY
    errno as the variant:
    
            wcd938x_codec audio-codec: ASoC: error at soc_component_read_no_lock on audio-codec for register: [0x000034b0] -16
    
    in case the soundwire device has not yet been initialised, which in turn
    prevents some headphone controls from being registered.
    
    Fixes: 8d78602aa87a ("ASoC: codecs: wcd938x: add basic driver")
    Cc: stable@vger.kernel.org      # 5.14
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Reported-by: Steev Klimaszewski <steev@kali.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Steev Klimaszewski <steev@kali.org>
    Link: https://lore.kernel.org/r/20230701094723.29379-1-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f1c9f311858c40d7dcca912167ee6d197681788
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Jun 30 14:03:18 2023 +0200

    ASoC: codecs: wcd938x: fix codec initialisation race
    
    commit 85a61b1ce461a3f62f1019e5e6423c393c542bff upstream.
    
    Make sure to resume the codec and soundwire device before trying to read
    the codec variant and configure the device during component probe.
    
    This specifically avoids interpreting (a masked and shifted) -EBUSY
    errno as the variant:
    
            wcd938x_codec audio-codec: ASoC: error at soc_component_read_no_lock on audio-codec for register: [0x000034b0] -16
    
    when the soundwire device happens to be suspended, which in turn
    prevents some headphone controls from being registered.
    
    Fixes: 8d78602aa87a ("ASoC: codecs: wcd938x: add basic driver")
    Cc: stable@vger.kernel.org      # 5.14
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Reported-by: Steev Klimaszewski <steev@kali.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20230630120318.6571-1-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 825fe837519aec082dd136bcd52ce13f6489dcbf
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Wed Jul 5 14:30:15 2023 +0200

    ASoC: codecs: wcd934x: fix resource leaks on component remove
    
    commit 798590cc7d3c2b5f3a7548d96dd4d8a081c1bc39 upstream.
    
    Make sure to release allocated MBHC resources also on component remove.
    
    This is specifically needed to allow probe deferrals of the sound card
    which otherwise fails when reprobing the codec component.
    
    Fixes: 9fb9b1690f0b ("ASoC: codecs: wcd934x: add mbhc support")
    Cc: stable@vger.kernel.org      # 5.14
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705123018.30903-6-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31ee704c84c4bf4df8521ef1478c161f710d0f94
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Mon Jul 3 14:47:01 2023 +0200

    ASoC: codecs: wcd938x: fix missing mbhc init error handling
    
    commit 7dfae2631bfbdebecd35fe7b472ab3cc95c9ed66 upstream.
    
    MBHC initialisation can fail so add the missing error handling to avoid
    dereferencing an error pointer when later configuring the jack:
    
        Unable to handle kernel paging request at virtual address fffffffffffffff8
    
        pc : wcd_mbhc_start+0x28/0x380 [snd_soc_wcd_mbhc]
        lr : wcd938x_codec_set_jack+0x28/0x48 [snd_soc_wcd938x]
    
        Call trace:
         wcd_mbhc_start+0x28/0x380 [snd_soc_wcd_mbhc]
         wcd938x_codec_set_jack+0x28/0x48 [snd_soc_wcd938x]
         snd_soc_component_set_jack+0x28/0x8c [snd_soc_core]
         qcom_snd_wcd_jack_setup+0x7c/0x19c [snd_soc_qcom_common]
         sc8280xp_snd_init+0x20/0x2c [snd_soc_sc8280xp]
         snd_soc_link_init+0x28/0x90 [snd_soc_core]
         snd_soc_bind_card+0x628/0xbfc [snd_soc_core]
         snd_soc_register_card+0xec/0x104 [snd_soc_core]
         devm_snd_soc_register_card+0x4c/0xa4 [snd_soc_core]
         sc8280xp_platform_probe+0xf0/0x108 [snd_soc_sc8280xp]
    
    Fixes: bcee7ed09b8e ("ASoC: codecs: wcd938x: add Multi Button Headset Control support")
    Cc: stable@vger.kernel.org      # 5.15
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20230703124701.11734-1-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3586c7b613e5ccc00636eacbba8be38125a3a18
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Wed Jul 5 14:30:14 2023 +0200

    ASoC: codecs: wcd938x: fix resource leaks on component remove
    
    commit a3406f87775fee986876e03f93a84385f54d5999 upstream.
    
    Make sure to release allocated resources on component probe failure and
    on remove.
    
    This is specifically needed to allow probe deferrals of the sound card
    which otherwise fails when reprobing the codec component:
    
        snd-sc8280xp sound: ASoC: failed to instantiate card -517
        genirq: Flags mismatch irq 289. 00002001 (HPHR PDM WD INT) vs. 00002001 (HPHR PDM WD INT)
        wcd938x_codec audio-codec: Failed to request HPHR WD interrupt (-16)
        genirq: Flags mismatch irq 290. 00002001 (HPHL PDM WD INT) vs. 00002001 (HPHL PDM WD INT)
        wcd938x_codec audio-codec: Failed to request HPHL WD interrupt (-16)
        genirq: Flags mismatch irq 291. 00002001 (AUX PDM WD INT) vs. 00002001 (AUX PDM WD INT)
        wcd938x_codec audio-codec: Failed to request Aux WD interrupt (-16)
        genirq: Flags mismatch irq 292. 00002001 (mbhc sw intr) vs. 00002001 (mbhc sw intr)
        wcd938x_codec audio-codec: Failed to request mbhc interrupts -16
    
    Fixes: 8d78602aa87a ("ASoC: codecs: wcd938x: add basic driver")
    Cc: stable@vger.kernel.org      # 5.14
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705123018.30903-5-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dacc3c6baedaa4455feb8cfdcf70eaddcf45174
Author: Sheetal <sheetal@nvidia.com>
Date:   Thu Jun 29 10:42:13 2023 +0530

    ASoC: tegra: Fix AMX byte map
    
    commit 49bd7b08149417a30aa7d92c8c85b3518de44a76 upstream.
    
    Byte mask for channel-1 of stream-1 is not getting enabled and this
    causes failures during AMX use cases. This happens because the byte
    map value 0 matches the byte map array and put() callback returns
    without enabling the corresponding bits in the byte mask.
    
    AMX supports 4 input streams and each stream can take a maximum of
    16 channels. Each byte in the output frame is uniquely mapped to a
    byte in one of these 4 inputs. This mapping is done with the help of
    byte map array via user space control setting. The byte map array
    size in the driver is 16 and each array element is of size 4 bytes.
    This corresponds to 64 byte map values.
    
    Each byte in the byte map array can have any value between 0 to 255
    to enable the corresponding bits in the byte mask. The value 256 is
    used as a way to disable the byte map. However the byte map array
    element cannot store this value. The put() callback disables the byte
    mask for 256 value and byte map value is reset to 0 for this case.
    This causes problems during subsequent runs since put() callback,
    for value of 0, just returns without enabling the byte mask. In short,
    the problem is coming because 0 and 256 control values are stored as
    0 in the byte map array.
    
    Right now fix the put() callback by actually looking at the byte mask
    array state to identify if any change is needed and update the fields
    accordingly. The get() callback needs an update as well to return the
    correct control value that user has set before. Note that when user
    sets 256, the value is stored as 0 and byte mask is disabled. So byte
    mask state is used to either return 256 or the value from byte map
    array.
    
    Given above, this looks bit complicated and all this happens because
    the byte map array is tightly packed and cannot actually store the 256
    value. Right now the priority is to fix the existing failure and a TODO
    item is put to improve this logic.
    
    Fixes: 8db78ace1ba8 ("ASoC: tegra: Fix kcontrol put callback in AMX")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sheetal <sheetal@nvidia.com>
    Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
    Reviewed-by: Sameer Pujar <spujar@nvidia.com>
    Link: https://lore.kernel.org/r/1688015537-31682-2-git-send-email-spujar@nvidia.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39f1fe576e2233a7198127551df77d357e7ab7c3
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Wed Jul 5 14:30:12 2023 +0200

    ASoC: qdsp6: audioreach: fix topology probe deferral
    
    commit 46ec420573cefa1fc98025e7e6841bdafd6f1e20 upstream.
    
    Propagate errors when failing to load the topology component so that
    probe deferrals can be handled.
    
    Fixes: 36ad9bf1d93d ("ASoC: qdsp6: audioreach: add topology support")
    Cc: stable@vger.kernel.org      # 5.17
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705123018.30903-3-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce4059e1c0aca972446e06c09ee09a0d2ba5df54
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Wed Jul 5 14:30:16 2023 +0200

    ASoC: codecs: wcd-mbhc-v2: fix resource leaks on component remove
    
    commit a5475829adcc600bc69ee9ff7c9e3e43fb4f8d30 upstream.
    
    The MBHC resources must be released on component probe failure and
    removal so can not be tied to the lifetime of the component device.
    
    This is specifically needed to allow probe deferrals of the sound card
    which otherwise fails when reprobing the codec component:
    
        snd-sc8280xp sound: ASoC: failed to instantiate card -517
        genirq: Flags mismatch irq 299. 00002001 (mbhc sw intr) vs. 00002001 (mbhc sw intr)
        wcd938x_codec audio-codec: Failed to request mbhc interrupts -16
        wcd938x_codec audio-codec: mbhc initialization failed
        wcd938x_codec audio-codec: ASoC: error at snd_soc_component_probe on audio-codec: -16
        snd-sc8280xp sound: ASoC: failed to instantiate card -16
    
    Fixes: 0e5c9e7ff899 ("ASoC: codecs: wcd: add multi button Headset detection support")
    Cc: stable@vger.kernel.org      # 5.14
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705123018.30903-7-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feedc8f580a67b164e6281f40516323023d14fec
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Mon Jul 3 14:43:15 2023 -0700

    ASoC: cs35l45: Select REGMAP_IRQ
    
    commit d9ba2975e98a4bec0a9f8d4be4c1de8883fccb71 upstream.
    
    After commit 6085f9e6dc19 ("ASoC: cs35l45: IRQ support"), without any
    other configuration that selects CONFIG_REGMAP_IRQ, modpost errors out
    with:
    
      ERROR: modpost: "regmap_irq_get_virq" [sound/soc/codecs/snd-soc-cs35l45.ko] undefined!
      ERROR: modpost: "devm_regmap_add_irq_chip" [sound/soc/codecs/snd-soc-cs35l45.ko] undefined!
    
    Add the Kconfig selection to ensure these functions get built and
    included, which resolves the build failure.
    
    Cc: stable@vger.kernel.org
    Fixes: 6085f9e6dc19 ("ASoC: cs35l45: IRQ support")
    Reported-by: Marcus Seyfarth <m.seyfarth@gmail.com>
    Closes: https://github.com/ClangBuiltLinux/linux/issues/1882
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20230703-cs35l45-select-regmap_irq-v1-1-37d7e838b614@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ecc785bf08e8be20a2569166d81e801cad1079a
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Wed Jul 5 14:30:13 2023 +0200

    ASoC: codecs: wcd938x: fix missing clsh ctrl error handling
    
    commit ed0dd9205bf69593edb495cb4b086dbae96a3f05 upstream.
    
    Allocation of the clash control structure may fail so add the missing
    error handling to avoid dereferencing an error pointer.
    
    Fixes: 8d78602aa87a ("ASoC: codecs: wcd938x: add basic driver")
    Cc: stable@vger.kernel.org      # 5.14
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230705123018.30903-4-johan+linaro@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37272bc55bca9ae9e50fb99205b1f2f8fa6a059f
Author: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date:   Thu Jul 13 13:21:12 2023 +0200

    ASoC: cs42l51: fix driver to properly autoload with automatic module loading
    
    commit e51df4f81b02bcdd828a04de7c1eb6a92988b61e upstream.
    
    In commit 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table
    pointer"), 9 years ago, some random guy fixed the cs42l51 after it was
    split into a core part and an I2C part to properly match based on a
    Device Tree compatible string.
    
    However, the fix in this commit is wrong: the MODULE_DEVICE_TABLE(of,
    ....) is in the core part of the driver, not the I2C part. Therefore,
    automatic module loading based on module.alias, based on matching with
    the DT compatible string, loads the core part of the driver, but not
    the I2C part. And threfore, the i2c_driver is not registered, and the
    codec is not known to the system, nor matched with a DT node with the
    corresponding compatible string.
    
    In order to fix that, we move the MODULE_DEVICE_TABLE(of, ...) into
    the I2C part of the driver. The cs42l51_of_match[] array is also moved
    as well, as it is not possible to have this definition in one file,
    and the MODULE_DEVICE_TABLE(of, ...) invocation in another file, due
    to how MODULE_DEVICE_TABLE works.
    
    Thanks to this commit, the I2C part of the driver now properly
    autoloads, and thanks to its dependency on the core part, the core
    part gets autoloaded as well, resulting in a functional sound card
    without having to manually load kernel modules.
    
    Fixes: 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table pointer")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Link: https://lore.kernel.org/r/20230713112112.778576-1-thomas.petazzoni@bootlin.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b22f3782210badaf7b7947e1fce835c0381fd469
Author: Sameer Pujar <spujar@nvidia.com>
Date:   Thu Jun 29 10:42:15 2023 +0530

    ASoC: rt5640: Fix sleep in atomic context
    
    commit 70a6404ff610aa4889d98977da131c37f9ff9d1f upstream.
    
    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().
    
    Fix this by running IRQ handler, rt5640_irq(), in thread context.
    Hence replace request_irq() calls with devm_request_threaded_irq().
    
    Fixes: 051dade34695 ("ASoC: rt5640: Fix the wrong state of JD1 and JD2")
    Cc: stable@vger.kernel.org
    Cc: Oder Chiou <oder_chiou@realtek.com>
    Signed-off-by: Sameer Pujar <spujar@nvidia.com>
    Link: https://lore.kernel.org/r/1688015537-31682-4-git-send-email-spujar@nvidia.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feb7df1084454bfa8787714a9050d9f3886f17dc
Author: Sheetal <sheetal@nvidia.com>
Date:   Thu Jun 29 10:42:14 2023 +0530

    ASoC: tegra: Fix ADX byte map
    
    commit 6dfe70be0b0dec0f9297811501bec26c05fd96ad upstream.
    
    Byte mask for channel-1 of stream-1 is not getting enabled and this
    causes failures during ADX use cases. This happens because the byte
    map value 0 matches the byte map array and put() callback returns
    without enabling the corresponding bits in the byte mask.
    
    ADX supports 4 output streams and each stream can have a maximum of
    16 channels. Each byte in the input frame is uniquely mapped to a
    byte in one of these 4 outputs. This mapping is done with the help of
    byte map array via user space control setting. The byte map array
    size in the driver is 16 and each array element is of size 4 bytes.
    This corresponds to 64 byte map values.
    
    Each byte in the byte map array can have any value between 0 to 255
    to enable the corresponding bits in the byte mask. The value 256 is
    used as a way to disable the byte map. However the byte map array
    element cannot store this value. The put() callback disables the byte
    mask for 256 value and byte map value is reset to 0 for this case.
    This causes problems during subsequent runs since put() callback,
    for value of 0, just returns without enabling the byte mask. In short,
    the problem is coming because 0 and 256 control values are stored as
    0 in the byte map array.
    
    Right now fix the put() callback by actually looking at the byte mask
    array state to identify if any change is needed and update the fields
    accordingly. The get() callback needs an update as well to return the
    correct control value that user has set before. Note that when user
    set 256, the value is stored as 0 and byte mask is disabled. So byte
    mask state is used to either return 256 or the value from byte map
    array.
    
    Given above, this looks bit complicated and all this happens because
    the byte map array is tightly packed and cannot actually store the 256
    value. Right now the priority is to fix the existing failure and a TODO
    item is put to improve this logic.
    
    Fixes: 3c97881b8c8a ("ASoC: tegra: Fix kcontrol put callback in ADX")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sheetal <sheetal@nvidia.com>
    Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
    Reviewed-by: Sameer Pujar <spujar@nvidia.com>
    Link: https://lore.kernel.org/r/1688015537-31682-3-git-send-email-spujar@nvidia.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d43985c83dd9a8b1fb9fde9489b9444148e891f
Author: Fabio Estevam <festevam@denx.de>
Date:   Thu Jul 6 19:18:27 2023 -0300

    ASoC: fsl_sai: Revert "ASoC: fsl_sai: Enable MCTL_MCLK_EN bit for master mode"
    
    commit 86867aca7330e4fbcfa2a117e20b48bbb6c758a9 upstream.
    
    This reverts commit ff87d619ac180444db297f043962a5c325ded47b.
    
    Andreas reports that on an i.MX8MP-based system where MCLK needs to be
    used as an input, the MCLK pin is actually an output, despite not having
    the 'fsl,sai-mclk-direction-output' property present in the devicetree.
    
    This is caused by commit ff87d619ac18 ("ASoC: fsl_sai: Enable
    MCTL_MCLK_EN bit for master mode") that sets FSL_SAI_MCTL_MCLK_EN
    unconditionally for imx8mm/8mn/8mp/93, causing the MCLK to always
    be configured as output.
    
    FSL_SAI_MCTL_MCLK_EN corresponds to the MOE (MCLK Output Enable) bit
    of register MCR and the drivers sets it when the
    'fsl,sai-mclk-direction-output' devicetree property is present.
    
    Revert the commit to allow SAI to use MCLK as input as well.
    
    Cc: stable@vger.kernel.org
    Fixes: ff87d619ac18 ("ASoC: fsl_sai: Enable MCTL_MCLK_EN bit for master mode")
    Reported-by: Andreas Henriksson <andreas@fatal.se>
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com>
    Link: https://lore.kernel.org/r/20230706221827.1938990-1-festevam@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f75eaaff30fa4257877a49e5987151566c3d3ba1
Author: Matus Gajdos <matuszpd@gmail.com>
Date:   Wed Jul 12 14:49:33 2023 +0200

    ASoC: fsl_sai: Disable bit clock with transmitter
    
    commit 269f399dc19f0e5c51711c3ba3bd06e0ef6ef403 upstream.
    
    Otherwise bit clock remains running writing invalid data to the DAC.
    
    Signed-off-by: Matus Gajdos <matuszpd@gmail.com>
    Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230712124934.32232-1-matuszpd@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a14eeaefb850c4116ac0930d339a5942c309cf22
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Thu Jun 29 10:35:59 2023 -0400

    drm/amd/display: Keep PHY active for DP displays on DCN31
    
    commit 2387ccf43e3c6cb5dbd757c5ef410cca9f14b971 upstream.
    
    [Why & How]
    Port of a change that went into DCN314 to keep the PHY enabled
    when we have a connected and active DP display.
    
    The PHY can hang if PHY refclk is disabled inadvertently.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Josip Pavic <josip.pavic@amd.com>
    Acked-by: Alan Liu <haoping.liu@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1caa548d82c45e78d3a27b36a00ef0fc3681d7c8
Author: Taimur Hassan <syed.hassan@amd.com>
Date:   Tue Jun 20 17:00:28 2023 -0400

    drm/amd/display: check TG is non-null before checking if enabled
    
    commit 5a25cefc0920088bb9afafeb80ad3dcd84fe278b upstream.
    
    [Why & How]
    If there is no TG allocation we can dereference a NULL pointer when
    checking if the TG is enabled.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Acked-by: Alan Liu <haoping.liu@amd.com>
    Signed-off-by: Taimur Hassan <syed.hassan@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 951c565c21fbf195953843618128fb6b70d9efe2
Author: Zhikai Zhai <zhikai.zhai@amd.com>
Date:   Fri Jun 30 11:35:14 2023 +0800

    drm/amd/display: Disable MPC split by default on special asic
    
    commit a460beefe77d780ac48f19d39333852a7f93ffc1 upstream.
    
    [WHY]
    All of pipes will be used when the MPC split enable on the dcn
    which just has 2 pipes. Then MPO enter will trigger the minimal
    transition which need programe dcn from 2 pipes MPC split to 2
    pipes MPO. This action will cause lag if happen frequently.
    
    [HOW]
    Disable the MPC split for the platform which dcn resource is limited
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
    Acked-by: Alan Liu <haoping.liu@amd.com>
    Signed-off-by: Zhikai Zhai <zhikai.zhai@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd013a58cf6416c14e67cd3e7c338de35c84bf07
Author: Simon Ser <contact@emersion.fr>
Date:   Wed Jun 21 17:24:59 2023 -0300

    drm/amd/display: only accept async flips for fast updates
    
    commit 1ca67aba8d11c2849d395013e1fdce02918d5657 upstream.
    
    Up until now, amdgpu was silently degrading to vsync when
    user-space requested an async flip but the hardware didn't support
    it.
    
    The hardware doesn't support immediate flips when the update changes
    the FB pitch, the DCC state, the rotation, enables or disables CRTCs
    or planes, etc. This is reflected in the dm_crtc_state.update_type
    field: UPDATE_TYPE_FAST means that immediate flip is supported.
    
    Silently degrading async flips to vsync is not the expected behavior
    from a uAPI point-of-view. Xorg expects async flips to fail if
    unsupported, to be able to fall back to a blit. i915 already behaves
    this way.
    
    This patch aligns amdgpu with uAPI expectations and returns a failure
    when an async flip is not possible.
    
    Signed-off-by: Simon Ser <contact@emersion.fr>
    Reviewed-by: André Almeida <andrealmeid@igalia.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: André Almeida <andrealmeid@igalia.com>
    Signed-off-by: Hamza Mahfooz <hamza.mahfooz@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 8108a494639e56aea77e7196a1d6ea89792b9d4a
Author: Jocelyn Falempe <jfalempe@redhat.com>
Date:   Tue Jul 11 11:20:44 2023 +0200

    drm/client: Fix memory leak in drm_client_modeset_probe
    
    commit 2329cc7a101af1a844fbf706c0724c0baea38365 upstream.
    
    When a new mode is set to modeset->mode, the previous mode should be freed.
    This fixes the following kmemleak report:
    
    drm_mode_duplicate+0x45/0x220 [drm]
    drm_client_modeset_probe+0x944/0xf50 [drm]
    __drm_fb_helper_initial_config_and_unlock+0xb4/0x2c0 [drm_kms_helper]
    drm_fbdev_client_hotplug+0x2bc/0x4d0 [drm_kms_helper]
    drm_client_register+0x169/0x240 [drm]
    ast_pci_probe+0x142/0x190 [ast]
    local_pci_probe+0xdc/0x180
    work_for_cpu_fn+0x4e/0xa0
    process_one_work+0x8b7/0x1540
    worker_thread+0x70a/0xed0
    kthread+0x29f/0x340
    ret_from_fork+0x1f/0x30
    
    cc: <stable@vger.kernel.org>
    Reported-by: Zhang Yi <yizhan@redhat.com>
    Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230711092203.68157-3-jfalempe@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b596a6e2d2e0f9c14e4122506dd715f43fcd727
Author: Jocelyn Falempe <jfalempe@redhat.com>
Date:   Tue Jul 11 11:20:43 2023 +0200

    drm/client: Fix memory leak in drm_client_target_cloned
    
    commit c2a88e8bdf5f6239948d75283d0ae7e0c7945b03 upstream.
    
    dmt_mode is allocated and never freed in this function.
    It was found with the ast driver, but most drivers using generic fbdev
    setup are probably affected.
    
    This fixes the following kmemleak report:
      backtrace:
        [<00000000b391296d>] drm_mode_duplicate+0x45/0x220 [drm]
        [<00000000e45bb5b3>] drm_client_target_cloned.constprop.0+0x27b/0x480 [drm]
        [<00000000ed2d3a37>] drm_client_modeset_probe+0x6bd/0xf50 [drm]
        [<0000000010e5cc9d>] __drm_fb_helper_initial_config_and_unlock+0xb4/0x2c0 [drm_kms_helper]
        [<00000000909f82ca>] drm_fbdev_client_hotplug+0x2bc/0x4d0 [drm_kms_helper]
        [<00000000063a69aa>] drm_client_register+0x169/0x240 [drm]
        [<00000000a8c61525>] ast_pci_probe+0x142/0x190 [ast]
        [<00000000987f19bb>] local_pci_probe+0xdc/0x180
        [<000000004fca231b>] work_for_cpu_fn+0x4e/0xa0
        [<0000000000b85301>] process_one_work+0x8b7/0x1540
        [<000000003375b17c>] worker_thread+0x70a/0xed0
        [<00000000b0d43cd9>] kthread+0x29f/0x340
        [<000000008d770833>] ret_from_fork+0x1f/0x30
    unreferenced object 0xff11000333089a00 (size 128):
    
    cc: <stable@vger.kernel.org>
    Fixes: 1d42bbc8f7f9 ("drm/fbdev: fix cloning on fbcon")
    Reported-by: Zhang Yi <yizhan@redhat.com>
    Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230711092203.68157-2-jfalempe@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef21043605e609878f7a7db3ce539bdb28c80aec
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jul 19 14:40:49 2023 +1000

    drm/nouveau/i2c: fix number of aux event slots
    
    commit 752a281032b2d6f4564be827e082bde6f7d2fd4f upstream.
    
    This was completely bogus before, using maximum DCB device index rather
    than maximum AUX ID to size the buffer that stores event refcounts.
    
    *Pretty* unlikely to have been an actual problem on most configurations,
    that is, unless you've got one of the rare boards that have off-chip DP.
    
    There, it'll likely crash.
    
    Cc: stable@vger.kernel.org # 6.4+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230719044051.6975-1-skeggsb@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92d48ce21645267c574268678131cd2b648dad0f
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jul 19 14:40:51 2023 +1000

    drm/nouveau/kms/nv50-: init hpd_irq_lock for PIOR DP
    
    commit ea293f823a8805735d9e00124df81a8f448ed1ae upstream.
    
    Fixes OOPS on boards with ANX9805 DP encoders.
    
    Cc: stable@vger.kernel.org # 6.4+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230719044051.6975-3-skeggsb@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f01f7f27ca06411fed0dc5b118c767591f9436ae
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jul 19 14:40:50 2023 +1000

    drm/nouveau/disp: PIOR DP uses GPIO for HPD, not PMGR AUX interrupts
    
    commit 2b5d1c29f6c4cb19369ef92881465e5ede75f4ef upstream.
    
    Fixes crash on boards with ANX9805 TMDS/DP encoders.
    
    Cc: stable@vger.kernel.org # 6.4+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230719044051.6975-2-skeggsb@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f155c402e9cb0b7723fd9dbc37d75f01855c6a5d
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Jun 13 12:36:17 2023 -0400

    drm/amdgpu/pm: make mclk consistent for smu 13.0.7
    
    commit 068c8bb10f37bb84824625dbbda053a3a3e0d6e1 upstream.
    
    Use current uclk to be consistent with other dGPUs.
    
    Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org # 6.1.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d28f75c986de3d3c7099d1fc6b71b7c2e5a0cbba
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Jun 13 12:15:38 2023 -0400

    drm/amdgpu/pm: make gfxclock consistent for sienna cichlid
    
    commit a4eb11824170d742531998f4ebd1c6a18b63db47 upstream.
    
    Use average gfxclock for consistency with other dGPUs.
    
    Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org # 6.1.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ac157c8a7ea5868c47da9b43de7c10708c31df2
Author: Guchun Chen <guchun.chen@amd.com>
Date:   Thu Jul 6 15:57:21 2023 +0800

    drm/amdgpu/vkms: relax timer deactivation by hrtimer_try_to_cancel
    
    commit b42ae87a7b3878afaf4c3852ca66c025a5b996e0 upstream.
    
    In below thousands of screen rotation loop tests with virtual display
    enabled, a CPU hard lockup issue may happen, leading system to unresponsive
    and crash.
    
    do {
            xrandr --output Virtual --rotate inverted
            xrandr --output Virtual --rotate right
            xrandr --output Virtual --rotate left
            xrandr --output Virtual --rotate normal
    } while (1);
    
    NMI watchdog: Watchdog detected hard LOCKUP on cpu 1
    
    ? hrtimer_run_softirq+0x140/0x140
    ? store_vblank+0xe0/0xe0 [drm]
    hrtimer_cancel+0x15/0x30
    amdgpu_vkms_disable_vblank+0x15/0x30 [amdgpu]
    drm_vblank_disable_and_save+0x185/0x1f0 [drm]
    drm_crtc_vblank_off+0x159/0x4c0 [drm]
    ? record_print_text.cold+0x11/0x11
    ? wait_for_completion_timeout+0x232/0x280
    ? drm_crtc_wait_one_vblank+0x40/0x40 [drm]
    ? bit_wait_io_timeout+0xe0/0xe0
    ? wait_for_completion_interruptible+0x1d7/0x320
    ? mutex_unlock+0x81/0xd0
    amdgpu_vkms_crtc_atomic_disable
    
    It's caused by a stuck in lock dependency in such scenario on different
    CPUs.
    
    CPU1                                             CPU2
    drm_crtc_vblank_off                              hrtimer_interrupt
        grab event_lock (irq disabled)                   __hrtimer_run_queues
            grab vbl_lock/vblank_time_block                  amdgpu_vkms_vblank_simulate
                amdgpu_vkms_disable_vblank                       drm_handle_vblank
                    hrtimer_cancel                                         grab dev->event_lock
    
    So CPU1 stucks in hrtimer_cancel as timer callback is running endless on
    current clock base, as that timer queue on CPU2 has no chance to finish it
    because of failing to hold the lock. So NMI watchdog will throw the errors
    after its threshold, and all later CPUs are impacted/blocked.
    
    So use hrtimer_try_to_cancel to fix this, as disable_vblank callback
    does not need to wait the handler to finish. And also it's not necessary
    to check the return value of hrtimer_try_to_cancel, because even if it's
    -1 which means current timer callback is running, it will be reprogrammed
    in hrtimer_start with calling enable_vblank to make it works.
    
    v2: only re-arm timer when vblank is enabled (Christian) and add a Fixes
    tag as well
    
    v3: drop warn printing (Christian)
    
    v4: drop superfluous check of blank->enabled in timer function, as it's
    guaranteed in drm_handle_vblank (Christian)
    
    Fixes: 84ec374bd580 ("drm/amdgpu: create amdgpu_vkms (v4)")
    Cc: stable@vger.kernel.org
    Suggested-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 819656cc03dec7f7f7800274dfbc8eb49f888e9f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Jul 13 22:47:45 2023 +0300

    dma-buf/dma-resv: Stop leaking on krealloc() failure
    
    commit 05abb3be91d8788328231ee02973ab3d47f5e3d2 upstream.
    
    Currently dma_resv_get_fences() will leak the previously
    allocated array if the fence iteration got restarted and
    the krealloc_array() fails.
    
    Free the old array by hand, and make sure we still clear
    the returned *fences so the caller won't end up accessing
    freed memory. Some (but not all) of the callers of
    dma_resv_get_fences() seem to still trawl through the
    array even when dma_resv_get_fences() failed. And let's
    zero out *num_fences as well for good measure.
    
    Cc: Sumit Semwal <sumit.semwal@linaro.org>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: linux-media@vger.kernel.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: linaro-mm-sig@lists.linaro.org
    Fixes: d3c80698c9f5 ("dma-buf: use new iterator in dma_resv_get_fences v3")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20230713194745.1751-1-ville.syrjala@linux.intel.com
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d036b9530750b91cd69fdf85f80f3684b4484c3
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Jul 11 11:21:00 2023 +0300

    accel/qaic: Add consistent integer overflow checks
    
    commit 47d87f71d00b7091b43a56f608f7151b33e5772e upstream.
    
    The encode_dma() function has integer overflow checks.  The
    encode_passthrough(), encode_activate() and encode_status() functions
    did not.  I added integer overflow checking everywhere.  I also
    updated the integer overflow checking in encode_dma() to use size_add()
    so everything is consistent.
    
    Fixes: 129776ac2e38 ("accel/qaic: Add control path")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
    Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Cc: stable@vger.kernel.org # 6.4.x
    [jhugo: tweak if in encode_dma() to match existing style]
    Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/ZK0Q7IsPkj6WSCcL@moroto
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57d14cb3bae4619ce2fb5235cb318c3d5d8f53fd
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Jul 11 11:20:54 2023 +0300

    accel/qaic: tighten bounds checking in decode_message()
    
    commit 51b56382ed2a2b03347372272362b3baa623ed1e upstream.
    
    Copy the bounds checking from encode_message() to decode_message().
    
    This patch addresses the following concerns.  Ensure that there is
    enough space for at least one header so that we don't have a negative
    size later.
    
            if (msg_hdr_len < sizeof(*trans_hdr))
    
    Ensure that we have enough space to read the next header from the
    msg->data.
    
            if (msg_len > msg_hdr_len - sizeof(*trans_hdr))
                    return -EINVAL;
    
    Check that the trans_hdr->len is not below the minimum size:
    
            if (hdr_len < sizeof(*trans_hdr))
    
    This minimum check ensures that we don't corrupt memory in
    decode_passthrough() when we do.
    
            memcpy(out_trans->data, in_trans->data, len - sizeof(in_trans->hdr));
    
    And finally, use size_add() to prevent an integer overflow:
    
            if (size_add(msg_len, hdr_len) > msg_hdr_len)
    
    Fixes: 129776ac2e38 ("accel/qaic: Add control path")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
    Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Cc: stable@vger.kernel.org # 6.4.x
    Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/ZK0Q5nbLyDO7kJa+@moroto
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1072bace37fff66a3cbc7d8ac757d840ee7acc49
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Jul 11 11:20:44 2023 +0300

    accel/qaic: tighten bounds checking in encode_message()
    
    commit ea33cb6fc2788f9fe248d49e1c0b2553a58436ef upstream.
    
    There are several issues in this code.  The check at the start of the
    loop:
    
            if (user_len >= user_msg->len) {
    
    This check does not ensure that we have enough space for the trans_hdr
    (8 bytes).  Instead the check needs to be:
    
            if (user_len > user_msg->len - sizeof(*trans_hdr)) {
    
    That subtraction is done as an unsigned long we want to avoid
    negatives.  Add a lower bound to the start of the function.
    
            if (user_msg->len < sizeof(*trans_hdr))
    
    There is a second integer underflow which can happen if
    trans_hdr->len is zero inside the encode_passthrough() function.
    
            memcpy(out_trans->data, in_trans->data, in_trans->hdr.len - sizeof(in_trans->hdr));
    
    Instead of adding a check to encode_passthrough() it's better to check
    in this central place.  Add that check:
    
            if (trans_hdr->len < sizeof(trans_hdr)
    
    The final concern is that the "user_len + trans_hdr->len" might have an
    integer overflow bug.  Use size_add() to prevent that.
    
    -       if (user_len + trans_hdr->len > user_msg->len) {
    +       if (size_add(user_len, trans_hdr->len) > user_msg->len) {
    
    Fixes: 129776ac2e38 ("accel/qaic: Add control path")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
    Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Cc: stable@vger.kernel.org # 6.4.x
    Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/9a0cb0c1-a974-4f10-bc8d-94437983639a@moroto.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ea5bb40511f18f4ed37a93a04a97f9269520470
Author: Matthieu Baerts <matthieu.baerts@tessares.net>
Date:   Thu Jul 13 23:16:46 2023 +0200

    selftests: tc: add ConnTrack procfs kconfig
    
    commit 031c99e71fedcce93b6785d38b7d287bf59e3952 upstream.
    
    When looking at the TC selftest reports, I noticed one test was failing
    because /proc/net/nf_conntrack was not available.
    
      not ok 373 3992 - Add ct action triggering DNAT tuple conflict
            Could not match regex pattern. Verify command output:
      cat: /proc/net/nf_conntrack: No such file or directory
    
    It is only available if NF_CONNTRACK_PROCFS kconfig is set. So the issue
    can be fixed simply by adding it to the list of required kconfig.
    
    Fixes: e46905641316 ("tc-testing: add test for ct DNAT tuple collision")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/netdev/0e061d4a-9a23-9f58-3b35-d8919de332d7@tessares.net/T/ [1]
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Tested-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Link: https://lore.kernel.org/r/20230713-tc-selftests-lkft-v1-3-1eb4fd3a96e7@tessares.net
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93e9a67757614e3fc63f158a8d22f8cecdcc492e
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Tue Jul 18 13:12:32 2023 +0200

    Revert "r8169: disable ASPM during NAPI poll"
    
    commit e31a9fedc7d8d80722b19628e66fcb5a36981780 upstream.
    
    This reverts commit e1ed3e4d91112027b90c7ee61479141b3f948e6a.
    
    Turned out the change causes a performance regression.
    
    Link: https://lore.kernel.org/netdev/20230713124914.GA12924@green245/T/
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/055c6bc2-74fa-8c67-9897-3f658abb5ae7@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 210a8cffc9c1b044281c0a868485c870c9c11374
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Fri Jul 7 18:44:23 2023 +0200

    can: gs_usb: fix time stamp counter initialization
    
    commit 5886e4d5ecec3e22844efed90b2dd383ef804b3a upstream.
    
    If the gs_usb device driver is unloaded (or unbound) before the
    interface is shut down, the USB stack first calls the struct
    usb_driver::disconnect and then the struct net_device_ops::ndo_stop
    callback.
    
    In gs_usb_disconnect() all pending bulk URBs are killed, i.e. no more
    RX'ed CAN frames are send from the USB device to the host. Later in
    gs_can_close() a reset control message is send to each CAN channel to
    remove the controller from the CAN bus. In this race window the USB
    device can still receive CAN frames from the bus and internally queue
    them to be send to the host.
    
    At least in the current version of the candlelight firmware, the queue
    of received CAN frames is not emptied during the reset command. After
    loading (or binding) the gs_usb driver, new URBs are submitted during
    the struct net_device_ops::ndo_open callback and the candlelight
    firmware starts sending its already queued CAN frames to the host.
    
    However, this scenario was not considered when implementing the
    hardware timestamp function. The cycle counter/time counter
    infrastructure is set up (gs_usb_timestamp_init()) after the USBs are
    submitted, resulting in a NULL pointer dereference if
    timecounter_cyc2time() (via the call chain:
    gs_usb_receive_bulk_callback() -> gs_usb_set_timestamp() ->
    gs_usb_skb_set_timestamp()) is called too early.
    
    Move the gs_usb_timestamp_init() function before the URBs are
    submitted to fix this problem.
    
    For a comprehensive solution, we need to consider gs_usb devices with
    more than 1 channel. The cycle counter/time counter infrastructure is
    setup per channel, but the RX URBs are per device. Once gs_can_open()
    of _a_ channel has been called, and URBs have been submitted, the
    gs_usb_receive_bulk_callback() can be called for _all_ available
    channels, even for channels that are not running, yet. As cycle
    counter/time counter has not set up, this will again lead to a NULL
    pointer dereference.
    
    Convert the cycle counter/time counter from a "per channel" to a "per
    device" functionality. Also set it up, before submitting any URBs to
    the device.
    
    Further in gs_usb_receive_bulk_callback(), don't process any URBs for
    not started CAN channels, only resubmit the URB.
    
    Fixes: 45dfa45f52e6 ("can: gs_usb: add RX and TX hardware timestamp support")
    Closes: https://github.com/candle-usb/candleLight_fw/issues/137#issuecomment-1623532076
    Cc: stable@vger.kernel.org
    Cc: John Whittington <git@jbrengineering.co.uk>
    Link: https://lore.kernel.org/all/20230716-gs_usb-fix-time-stamp-counter-v1-2-9017cefcd9d5@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3083a981487cb28e08490e2f6d691311ca67bf2
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Fri Jul 7 13:43:10 2023 +0200

    can: gs_usb: gs_can_open(): improve error handling
    
    commit 2603be9e8167ddc7bea95dcfab9ffc33414215aa upstream.
    
    The gs_usb driver handles USB devices with more than 1 CAN channel.
    The RX path for all channels share the same bulk endpoint (the
    transmitted bulk data encodes the channel number). These per-device
    resources are allocated and submitted by the first opened channel.
    
    During this allocation, the resources are either released immediately
    in case of a failure or the URBs are anchored. All anchored URBs are
    finally killed with gs_usb_disconnect().
    
    Currently, gs_can_open() returns with an error if the allocation of a
    URB or a buffer fails. However, if usb_submit_urb() fails, the driver
    continues with the URBs submitted so far, even if no URBs were
    successfully submitted.
    
    Treat every error as fatal and free all allocated resources
    immediately.
    
    Switch to goto-style error handling, to prepare the driver for more
    per-device resource allocation.
    
    Cc: stable@vger.kernel.org
    Cc: John Whittington <git@jbrengineering.co.uk>
    Link: https://lore.kernel.org/all/20230716-gs_usb-fix-time-stamp-counter-v1-1-9017cefcd9d5@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfd0aa26e9a07f2ce546ccf8304ead6a2914e8a7
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat Jul 15 17:25:43 2023 +0800

    can: bcm: Fix UAF in bcm_proc_show()
    
    commit 55c3b96074f3f9b0aee19bf93cd71af7516582bb upstream.
    
    BUG: KASAN: slab-use-after-free in bcm_proc_show+0x969/0xa80
    Read of size 8 at addr ffff888155846230 by task cat/7862
    
    CPU: 1 PID: 7862 Comm: cat Not tainted 6.5.0-rc1-00153-gc8746099c197 #230
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0xd5/0x150
     print_report+0xc1/0x5e0
     kasan_report+0xba/0xf0
     bcm_proc_show+0x969/0xa80
     seq_read_iter+0x4f6/0x1260
     seq_read+0x165/0x210
     proc_reg_read+0x227/0x300
     vfs_read+0x1d5/0x8d0
     ksys_read+0x11e/0x240
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Allocated by task 7846:
     kasan_save_stack+0x1e/0x40
     kasan_set_track+0x21/0x30
     __kasan_kmalloc+0x9e/0xa0
     bcm_sendmsg+0x264b/0x44e0
     sock_sendmsg+0xda/0x180
     ____sys_sendmsg+0x735/0x920
     ___sys_sendmsg+0x11d/0x1b0
     __sys_sendmsg+0xfa/0x1d0
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Freed by task 7846:
     kasan_save_stack+0x1e/0x40
     kasan_set_track+0x21/0x30
     kasan_save_free_info+0x27/0x40
     ____kasan_slab_free+0x161/0x1c0
     slab_free_freelist_hook+0x119/0x220
     __kmem_cache_free+0xb4/0x2e0
     rcu_core+0x809/0x1bd0
    
    bcm_op is freed before procfs entry be removed in bcm_release(),
    this lead to bcm_proc_show() may read the freed bcm_op.
    
    Fixes: ffd980f976e7 ("[CAN]: Add broadcast manager (bcm) protocol")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Link: https://lore.kernel.org/all/20230715092543.15548-1-yuehaibing@huawei.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f615640f6b23523714d9a17535ff0fe7a3c9a14
Author: Fedor Ross <fedor.ross@ifm.com>
Date:   Thu May 4 21:50:59 2023 +0200

    can: mcp251xfd: __mcp251xfd_chip_set_mode(): increase poll timeout
    
    commit 9efa1a5407e81265ea502cab83be4de503decc49 upstream.
    
    The mcp251xfd controller needs an idle bus to enter 'Normal CAN 2.0
    mode' or . The maximum length of a CAN frame is 736 bits (64 data
    bytes, CAN-FD, EFF mode, worst case bit stuffing and interframe
    spacing). For low bit rates like 10 kbit/s the arbitrarily chosen
    MCP251XFD_POLL_TIMEOUT_US of 1 ms is too small.
    
    Otherwise during polling for the CAN controller to enter 'Normal CAN
    2.0 mode' the timeout limit is exceeded and the configuration fails
    with:
    
    | $ ip link set dev can1 up type can bitrate 10000
    | [  731.911072] mcp251xfd spi2.1 can1: Controller failed to enter mode CAN 2.0 Mode (6) and stays in Configuration Mode (4) (con=0x068b0760, osc=0x00000468).
    | [  731.927192] mcp251xfd spi2.1 can1: CRC read error at address 0x0e0c (length=4, data=00 00 00 00, CRC=0x0000) retrying.
    | [  731.938101] A link change request failed with some changes committed already. Interface can1 may have been left with an inconsistent configuration, please check.
    | RTNETLINK answers: Connection timed out
    
    Make MCP251XFD_POLL_TIMEOUT_US timeout calculation dynamic. Use
    maximum of 1ms and bit time of 1 full 64 data bytes CAN-FD frame in
    EFF mode, worst case bit stuffing and interframe spacing at the
    current bit rate.
    
    For easier backporting define the macro MCP251XFD_FRAME_LEN_MAX_BITS
    that holds the max frame length in bits, which is 736. This can be
    replaced by can_frame_bits(true, true, true, true, CANFD_MAX_DLEN) in
    a cleanup patch later.
    
    Fixes: 55e5b97f003e8 ("can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN")
    Signed-off-by: Fedor Ross <fedor.ross@ifm.com>
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20230717-mcp251xfd-fix-increase-poll-timeout-v5-1-06600f34c684@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 292f0453b0d021bb1d3f64648bfdfca093512214
Author: Mark Brown <broonie@kernel.org>
Date:   Thu Jul 20 19:38:58 2023 +0100

    arm64/fpsimd: Ensure SME storage is allocated after SVE VL changes
    
    commit d4d5be94a87872421ea2569044092535aff0b886 upstream.
    
    When we reconfigure the SVE vector length we discard the backing storage
    for the SVE vectors and then reallocate on next SVE use, leaving the SME
    specific state alone. This means that we do not enable SME traps if they
    were already disabled. That means that userspace code can enter streaming
    mode without trapping, putting the task in a state where if we try to save
    the state of the task we will fault.
    
    Since the ABI does not specify that changing the SVE vector length disturbs
    SME state, and since SVE code may not be aware of SME code in the process,
    we shouldn't simply discard any ZA state. Instead immediately reallocate
    the storage for SVE, and disable SME if we change the SVE vector length
    while there is no SME state active.
    
    Disabling SME traps on SVE vector length changes would make the overall
    code more complex since we would have a state where we have valid SME state
    stored but might get a SME trap.
    
    Fixes: 9e4ab6c89109 ("arm64/sme: Implement vector length configuration prctl()s")
    Reported-by: David Spickett <David.Spickett@arm.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230720-arm64-fix-sve-sme-vl-change-v2-1-8eea06b82d57@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9dd213e3c2d6c3e03669f598c7b8fad1ec8c45a
Author: Helge Deller <deller@gmx.de>
Date:   Fri Jul 21 17:24:32 2023 +0200

    ia64: mmap: Consider pgoff when searching for free mapping
    
    commit 07e981137f17e5275b6fa5fd0c28b0ddb4519702 upstream.
    
    IA64 is the only architecture which does not consider the pgoff value when
    searching for a possible free memory region with vm_unmapped_area().
    Adding this seems to have no negative side effect on IA64, so add it now
    to make IA64 consistent with all other architectures.
    
    Cc: stable@vger.kernel.org # 6.4
    Signed-off-by: Helge Deller <deller@gmx.de>
    Tested-by: matoro <matoro_mailinglist_kernel@matoro.tk>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: linux-ia64@vger.kernel.org
    Link: https://lore.kernel.org/r/20230721152432.196382-3-deller@gmx.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c64ef6d440db70465549a2ee1dd086361f5bc074
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Jul 12 12:16:40 2023 +0100

    regmap: Account for register length in SMBus I/O limits
    
    commit 0c9d2eb5e94792fe64019008a04d4df5e57625af upstream.
    
    The SMBus I2C buses have limits on the size of transfers they can do but
    do not factor in the register length meaning we may try to do a transfer
    longer than our length limit, the core will not take care of this.
    Future changes will factor this out into the core but there are a number
    of users that assume current behaviour so let's just do something
    conservative here.
    
    This does not take account padding bits but practically speaking these
    are very rarely if ever used on I2C buses given that they generally run
    slowly enough to mean there's no issue.
    
    Cc: stable@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Reviewed-by: Xu Yilun <yilun.xu@intel.com>
    Link: https://lore.kernel.org/r/20230712-regmap-max-transfer-v1-2-80e2aed22e83@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cc626d346d3646ed7706c9227403f62ea4447f0
Author: Rob Herring <robh@kernel.org>
Date:   Mon Jul 10 11:40:07 2023 -0600

    of: Preserve "of-display" device name for compatibility
    
    commit 0bb8f49cd2cc8cb32ac51189ff9fcbe7ec3d9d65 upstream.
    
    Since commit 241d2fb56a18 ("of: Make OF framebuffer device names unique"),
    as spotted by Frédéric Bonnard, the historical "of-display" device is
    gone: the updated logic creates "of-display.0" instead, then as many
    "of-display.N" as required.
    
    This means that offb no longer finds the expected device, which prevents
    the Debian Installer from setting up its interface, at least on ppc64el.
    
    Fix this by keeping "of-display" for the first device and "of-display.N"
    for subsequent devices.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217328
    Link: https://bugs.debian.org/1033058
    Fixes: 241d2fb56a18 ("of: Make OF framebuffer device names unique")
    Cc: stable@vger.kernel.org
    Cc: Cyril Brulebois <cyril@debamax.com>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Helge Deller <deller@gmx.de>
    Acked-by: Helge Deller <deller@gmx.de>
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Michal Suchánek <msuchanek@suse.de>
    Link: https://lore.kernel.org/r/20230710174007.2291013-1-robh@kernel.org
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e12b9c3eb831a1f315ecdf0a5b6513277f32a94
Author: Harald Freudenberger <freude@linux.ibm.com>
Date:   Mon Jul 17 16:55:29 2023 +0200

    s390/zcrypt: fix reply buffer calculations for CCA replies
    
    commit 4cfca532ddc3474b3fc42592d0e4237544344b1a upstream.
    
    The length information for available buffer space for CCA
    replies is covered with two fields in the T6 header prepended
    on each CCA reply: fromcardlen1 and fromcardlen2. The sum of
    these both values must not exceed the AP bus limit for this
    card (24KB for CEX8, 12KB CEX7 and older) minus the always
    present headers.
    
    The current code adjusted the fromcardlen2 value in case
    of exceeding the AP bus limit when there was a non-zero
    value given from userspace. Some tests now showed that this
    was the wrong assumption. Instead the userspace value given for
    this field should always be trusted and if the sum of the
    two fields exceeds the AP bus limit for this card the first
    field fromcardlen1 should be adjusted instead.
    
    So now the calculation is done with this new insight in mind.
    Also some additional checks for overflow have been introduced
    and some comments to provide some documentation for future
    maintainers of this complicated calculation code.
    
    Furthermore the 128 bytes of fix overhead which is used
    in the current code is not correct. Investigations showed
    that for a reply always the same two header structs are
    prepended before a possible payload. So this is also fixed
    with this patch.
    
    Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
    Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a3d22e23a9f3746b24657bd26d94bc0a366ddde
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Jul 12 12:16:39 2023 +0100

    regmap: Drop initial version of maximum transfer length fixes
    
    commit bc64734825c59e18a27ac266b07e14944c111fd8 upstream.
    
    When problems were noticed with the register address not being taken
    into account when limiting raw transfers with I2C devices we fixed this
    in the core.  Unfortunately it has subsequently been realised that a lot
    of buses were relying on the prior behaviour, partly due to unclear
    documentation not making it obvious what was intended in the core.  This
    is all more involved to fix than is sensible for a fix commit so let's
    just drop the original fixes, a separate commit will fix the originally
    observed problem in an I2C specific way
    
    Fixes: 3981514180c9 ("regmap: Account for register length when chunking")
    Fixes: c8e796895e23 ("regmap: spi-avmm: Fix regmap_bus max_raw_write")
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Reviewed-by: Xu Yilun <yilun.xu@intel.com>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20230712-regmap-max-transfer-v1-1-80e2aed22e83@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc3f1650d56e967f393e88ad810d6d94f1a60485
Author: Matthieu Baerts <matthieu.baerts@tessares.net>
Date:   Thu Jul 13 23:16:45 2023 +0200

    selftests: tc: add 'ct' action kconfig dep
    
    commit 719b4774a8cb1a501e2d22a5a4a3a0a870e427d5 upstream.
    
    When looking for something else in LKFT reports [1], I noticed most of
    the tests were skipped because the "teardown stage" did not complete
    successfully.
    
    Pedro found out this is due to the fact CONFIG_NF_FLOW_TABLE is required
    but not listed in the 'config' file. Adding it to the list fixes the
    issues on LKFT side. CONFIG_NET_ACT_CT is now set to 'm' in the final
    kconfig.
    
    Fixes: c34b961a2492 ("net/sched: act_ct: Create nf flow table per zone")
    Cc: stable@vger.kernel.org
    Link: https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20230711/testrun/18267241/suite/kselftest-tc-testing/test/tc-testing_tdc_sh/log [1]
    Link: https://lore.kernel.org/netdev/0e061d4a-9a23-9f58-3b35-d8919de332d7@tessares.net/T/ [2]
    Suggested-by: Pedro Tammela <pctammela@mojatatu.com>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Tested-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Link: https://lore.kernel.org/r/20230713-tc-selftests-lkft-v1-2-1eb4fd3a96e7@tessares.net
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdcba752a3d48fbe6f05cf2c91ab9497c8daad0c
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Jul 11 11:21:13 2023 +0300

    accel/qaic: Fix a leak in map_user_pages()
    
    commit 73274c33d961f4aa0f968f763e2c9f4210b4f4a3 upstream.
    
    If get_user_pages_fast() allocates some pages but not as many as we
    wanted, then the current code leaks those pages.  Call put_page() on
    the pages before returning.
    
    Fixes: 129776ac2e38 ("accel/qaic: Add control path")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
    Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Reviewed-by: Dafna Hirschfeld <dhirschfeld@habana.ai>
    Cc: stable@vger.kernel.org # 6.4.x
    Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/ZK0Q+ZuONTsBG+1T@moroto
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53db3632025540e92c18495950e3feb865fffca4
Author: Matthieu Baerts <matthieu.baerts@tessares.net>
Date:   Thu Jul 13 23:16:44 2023 +0200

    selftests: tc: set timeout to 15 minutes
    
    commit fda05798c22a354efde09a76bdfc276b2d591829 upstream.
    
    When looking for something else in LKFT reports [1], I noticed that the
    TC selftest ended with a timeout error:
    
      not ok 1 selftests: tc-testing: tdc.sh # TIMEOUT 45 seconds
    
    The timeout had been introduced 3 years ago, see the Fixes commit below.
    
    This timeout is only in place when executing the selftests via the
    kselftests runner scripts. I guess this is not what most TC devs are
    using and nobody noticed the issue before.
    
    The new timeout is set to 15 minutes as suggested by Pedro [2]. It looks
    like it is plenty more time than what it takes in "normal" conditions.
    
    Fixes: 852c8cbf34d3 ("selftests/kselftest/runner.sh: Add 45 second timeout per test")
    Cc: stable@vger.kernel.org
    Link: https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20230711/testrun/18267241/suite/kselftest-tc-testing/test/tc-testing_tdc_sh/log [1]
    Link: https://lore.kernel.org/netdev/0e061d4a-9a23-9f58-3b35-d8919de332d7@tessares.net/T/ [2]
    Suggested-by: Pedro Tammela <pctammela@mojatatu.com>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Reviewed-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Link: https://lore.kernel.org/r/20230713-tc-selftests-lkft-v1-1-1eb4fd3a96e7@tessares.net
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72efe5d44821e38540888a5fe3ff3d0faab6acad
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Jun 23 01:05:41 2023 -0400

    btrfs: fix race between balance and cancel/pause
    
    commit b19c98f237cd76981aaded52c258ce93f7daa8cb upstream.
    
    Syzbot reported a panic that looks like this:
    
      assertion failed: fs_info->exclusive_operation == BTRFS_EXCLOP_BALANCE_PAUSED, in fs/btrfs/ioctl.c:465
      ------------[ cut here ]------------
      kernel BUG at fs/btrfs/messages.c:259!
      RIP: 0010:btrfs_assertfail+0x2c/0x30 fs/btrfs/messages.c:259
      Call Trace:
       <TASK>
       btrfs_exclop_balance fs/btrfs/ioctl.c:465 [inline]
       btrfs_ioctl_balance fs/btrfs/ioctl.c:3564 [inline]
       btrfs_ioctl+0x531e/0x5b30 fs/btrfs/ioctl.c:4632
       vfs_ioctl fs/ioctl.c:51 [inline]
       __do_sys_ioctl fs/ioctl.c:870 [inline]
       __se_sys_ioctl fs/ioctl.c:856 [inline]
       __x64_sys_ioctl+0x197/0x210 fs/ioctl.c:856
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The reproducer is running a balance and a cancel or pause in parallel.
    The way balance finishes is a bit wonky, if we were paused we need to
    save the balance_ctl in the fs_info, but clear it otherwise and cleanup.
    However we rely on the return values being specific errors, or having a
    cancel request or no pause request.  If balance completes and returns 0,
    but we have a pause or cancel request we won't do the appropriate
    cleanup, and then the next time we try to start a balance we'll trip
    this ASSERT.
    
    The error handling is just wrong here, we always want to clean up,
    unless we got -ECANCELLED and we set the appropriate pause flag in the
    exclusive op.  With this patch the reproducer ran for an hour without
    tripping, previously it would trip in less than a few minutes.
    
    Reported-by: syzbot+c0f3acf145cb465426d5@syzkaller.appspotmail.com
    CC: stable@vger.kernel.org # 6.1+
    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 4bef9a6a75bc13293b7f7f1d6302de6424be8143
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Jun 7 17:49:21 2023 +0200

    fuse: ioctl: translate ENOSYS in outarg
    
    commit 6a567e920fd0451bf29abc418df96c3365925770 upstream.
    
    Fuse shouldn't return ENOSYS from its ioctl implementation. If userspace
    responds with ENOSYS it should be translated to ENOTTY.
    
    There are two ways to return an error from the IOCTL request:
    
     - fuse_out_header.error
     - fuse_ioctl_out.result
    
    Commit 02c0cab8e734 ("fuse: ioctl: translate ENOSYS") already fixed this
    issue for the first case, but missed the second case.  This patch fixes the
    second case.
    
    Reported-by: Jonathan Katz <jkatz@eitmlabs.org>
    Closes: https://lore.kernel.org/all/CALKgVmcC1VUV_gJVq70n--omMJZUb4HSh_FqvLTHgNBc+HCLFQ@mail.gmail.com/
    Fixes: 02c0cab8e734 ("fuse: ioctl: translate ENOSYS")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cca627afb463a4b47721eac017516ba200de85c3
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jul 3 12:03:21 2023 +0100

    btrfs: zoned: fix memory leak after finding block group with super blocks
    
    commit f1a07c2b4e2c473ec322b8b9ece071b8c88a3512 upstream.
    
    At exclude_super_stripes(), if we happen to find a block group that has
    super blocks mapped to it and we are on a zoned filesystem, we error out
    as this is not supposed to happen, indicating either a bug or maybe some
    memory corruption for example. However we are exiting the function without
    freeing the memory allocated for the logical address of the super blocks.
    Fix this by freeing the logical address.
    
    Fixes: 12659251ca5d ("btrfs: implement log-structured superblock for ZONED mode")
    CC: stable@vger.kernel.org # 5.10+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40150056dc10045b8825b0458917a0007742168a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jul 3 18:15:30 2023 +0100

    btrfs: fix double iput() on inode after an error during orphan cleanup
    
    commit b777d279ff31979add57e8a3f810bceb7ef0cfb7 upstream.
    
    At btrfs_orphan_cleanup(), if we were able to find the inode, we do an
    iput() on the inode, then if btrfs_drop_verity_items() succeeds and then
    either btrfs_start_transaction() or btrfs_del_orphan_item() fail, we do
    another iput() in the respective error paths, resulting in an extra iput()
    on the inode.
    
    Fix this by setting inode to NULL after the first iput(), as iput()
    ignores a NULL inode pointer argument.
    
    Fixes: a13bb2c03848 ("btrfs: add missing iputs on orphan cleanup failure")
    CC: stable@vger.kernel.org # 6.4
    Reviewed-by: Boris Burkov <boris@bur.io>
    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 a5880e69cf7fe4a0bb1eabae02205352d1b59b7b
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Jul 12 12:44:12 2023 -0400

    btrfs: set_page_extent_mapped after read_folio in btrfs_cont_expand
    
    commit 17b17fcd6d446b95904a6929c40012ee7f0afc0c upstream.
    
    While trying to get the subpage blocksize tests running, I hit the
    following panic on generic/476
    
      assertion failed: PagePrivate(page) && page->private, in fs/btrfs/subpage.c:229
      kernel BUG at fs/btrfs/subpage.c:229!
      Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
      CPU: 1 PID: 1453 Comm: fsstress Not tainted 6.4.0-rc7+ #12
      Hardware name: QEMU KVM Virtual Machine, BIOS edk2-20230301gitf80f052277c8-26.fc38 03/01/2023
      pstate: 61400005 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
      pc : btrfs_subpage_assert+0xbc/0xf0
      lr : btrfs_subpage_assert+0xbc/0xf0
      Call trace:
       btrfs_subpage_assert+0xbc/0xf0
       btrfs_subpage_clear_checked+0x38/0xc0
       btrfs_page_clear_checked+0x48/0x98
       btrfs_truncate_block+0x5d0/0x6a8
       btrfs_cont_expand+0x5c/0x528
       btrfs_write_check.isra.0+0xf8/0x150
       btrfs_buffered_write+0xb4/0x760
       btrfs_do_write_iter+0x2f8/0x4b0
       btrfs_file_write_iter+0x1c/0x30
       do_iter_readv_writev+0xc8/0x158
       do_iter_write+0x9c/0x210
       vfs_iter_write+0x24/0x40
       iter_file_splice_write+0x224/0x390
       direct_splice_actor+0x38/0x68
       splice_direct_to_actor+0x12c/0x260
       do_splice_direct+0x90/0xe8
       generic_copy_file_range+0x50/0x90
       vfs_copy_file_range+0x29c/0x470
       __arm64_sys_copy_file_range+0xcc/0x498
       invoke_syscall.constprop.0+0x80/0xd8
       do_el0_svc+0x6c/0x168
       el0_svc+0x50/0x1b0
       el0t_64_sync_handler+0x114/0x120
       el0t_64_sync+0x194/0x198
    
    This happens because during btrfs_cont_expand we'll get a page, set it
    as mapped, and if it's not Uptodate we'll read it.  However between the
    read and re-locking the page we could have called release_folio() on the
    page, but left the page in the file mapping.  release_folio() can clear
    the page private, and thus further down we blow up when we go to modify
    the subpage bits.
    
    Fix this by putting the set_page_extent_mapped() after the read.  This
    is safe because read_folio() will call set_page_extent_mapped() before
    it does the read, and then if we clear page private but leave it on the
    mapping we're completely safe re-setting set_page_extent_mapped().  With
    this patch I can now run generic/476 without panicing.
    
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a981a8b5d3563544625154050d766c7ecac453bd
Author: Qu Wenruo <wqu@suse.com>
Date:   Fri Jun 30 08:56:40 2023 +0800

    btrfs: raid56: always verify the P/Q contents for scrub
    
    commit 486c737f7fdc0c3f6464cf27ede811daec2769a1 upstream.
    
    [REGRESSION]
    Commit 75b470332965 ("btrfs: raid56: migrate recovery and scrub recovery
    path to use error_bitmap") changed the behavior of scrub_rbio().
    
    Initially if we have no error reading the raid bio, we will assign
    @need_check to true, then finish_parity_scrub() would later verify the
    content of P/Q stripes before writeback.
    
    But after that commit we never verify the content of P/Q stripes and
    just writeback them.
    
    This can lead to unrepaired P/Q stripes during scrub, or already
    corrupted P/Q copied to the dev-replace target.
    
    [FIX]
    The situation is more complex than the regression, in fact the initial
    behavior is not 100% correct either.
    
    If we have the following rare case, it can still lead to the same
    problem using the old behavior:
    
                    0       16K     32K     48K     64K
            Data 1: |IIIIIII|                       |
            Data 2: |                               |
            Parity: |       |CCCCCCC|               |
    
    Where "I" means IO error, "C" means corruption.
    
    In the above case, we're scrubbing the parity stripe, then read out all
    the contents of Data 1, Data 2, Parity stripes.
    
    But found IO error in Data 1, which leads to rebuild using Data 2 and
    Parity and got the correct data.
    
    In that case, we would not verify if the Parity is correct for range
    [16K, 32K).
    
    So here we have to always verify the content of Parity no matter if we
    did recovery or not.
    
    This patch would remove the @need_check parameter of
    finish_parity_scrub() completely, and would always do the P/Q
    verification before writeback.
    
    Fixes: 75b470332965 ("btrfs: raid56: migrate recovery and scrub recovery path to use error_bitmap")
    CC: stable@vger.kernel.org # 6.2+
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1b3f504dcd883dc9059db5dc6528b2b3821720f
Author: Bernd Schubert <bschubert@ddn.com>
Date:   Fri Apr 15 13:53:56 2022 +0200

    fuse: Apply flags2 only when userspace set the FUSE_INIT_EXT
    
    commit 3066ff93476c35679cb07a97cce37d9bb07632ff upstream.
    
    This is just a safety precaution to avoid checking flags on memory that was
    initialized on the user space side.  libfuse zeroes struct fuse_init_out
    outarg, but this is not guranteed to be done in all implementations.
    Better is to act on flags and to only apply flags2 when FUSE_INIT_EXT is
    set.
    
    There is a risk with this change, though - it might break existing user
    space libraries, which are already using flags2 without setting
    FUSE_INIT_EXT.
    
    The corresponding libfuse patch is here
    https://github.com/libfuse/libfuse/pull/662
    
    Signed-off-by: Bernd Schubert <bschubert@ddn.com>
    Fixes: 53db28933e95 ("fuse: extend init flags")
    Cc: <stable@vger.kernel.org> # v5.17
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5f559674cc08554486ccafbbbe1f9086d1b4062
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Mon Mar 27 16:14:49 2023 +0200

    fuse: add feature flag for expire-only
    
    commit 5cadfbd5a11e5495cac217534c5f788168b1afd7 upstream.
    
    Add an init flag idicating whether the FUSE_EXPIRE_ONLY flag of
    FUSE_NOTIFY_INVAL_ENTRY is effective.
    
    This is needed for backports of this feature, otherwise the server could
    just check the protocol version.
    
    Fixes: 4f8d37020e1f ("fuse: add "expire only" mode to FUSE_NOTIFY_INVAL_ENTRY")
    Cc: <stable@vger.kernel.org> # v6.2
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 371b35073197f223b60adc3ce04d11cfefa67d3f
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Jun 7 17:49:20 2023 +0200

    fuse: revalidate: don't invalidate if interrupted
    
    commit a9d1c4c6df0e568207907c04aed9e7beb1294c42 upstream.
    
    If the LOOKUP request triggered from fuse_dentry_revalidate() is
    interrupted, then the dentry will be invalidated, possibly resulting in
    submounts being unmounted.
    
    Reported-by: Xu Rongbo <xurongbo@baidu.com>
    Closes: https://lore.kernel.org/all/CAJfpegswN_CJJ6C3RZiaK6rpFmNyWmXfaEpnQUJ42KCwNF5tWw@mail.gmail.com/
    Fixes: 9e6268db496a ("[PATCH] FUSE - read-write operations")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62dd82bc7a90b5052c062a0ad5be6d8a479a3cfb
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Jul 14 13:42:06 2023 +0100

    btrfs: fix warning when putting transaction with qgroups enabled after abort
    
    commit aa84ce8a78a1a5c10cdf9c7a5fb0c999fbc2c8d6 upstream.
    
    If we have a transaction abort with qgroups enabled we get a warning
    triggered when doing the final put on the transaction, like this:
    
      [552.6789] ------------[ cut here ]------------
      [552.6815] WARNING: CPU: 4 PID: 81745 at fs/btrfs/transaction.c:144 btrfs_put_transaction+0x123/0x130 [btrfs]
      [552.6817] Modules linked in: btrfs blake2b_generic xor (...)
      [552.6819] CPU: 4 PID: 81745 Comm: btrfs-transacti Tainted: G        W          6.4.0-rc6-btrfs-next-134+ #1
      [552.6819] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014
      [552.6819] RIP: 0010:btrfs_put_transaction+0x123/0x130 [btrfs]
      [552.6821] Code: bd a0 01 00 (...)
      [552.6821] RSP: 0018:ffffa168c0527e28 EFLAGS: 00010286
      [552.6821] RAX: ffff936042caed00 RBX: ffff93604a3eb448 RCX: 0000000000000000
      [552.6821] RDX: ffff93606421b028 RSI: ffffffff92ff0878 RDI: ffff93606421b010
      [552.6821] RBP: ffff93606421b000 R08: 0000000000000000 R09: ffffa168c0d07c20
      [552.6821] R10: 0000000000000000 R11: ffff93608dc52950 R12: ffffa168c0527e70
      [552.6821] R13: ffff93606421b000 R14: ffff93604a3eb420 R15: ffff93606421b028
      [552.6821] FS:  0000000000000000(0000) GS:ffff93675fb00000(0000) knlGS:0000000000000000
      [552.6821] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [552.6821] CR2: 0000558ad262b000 CR3: 000000014feda005 CR4: 0000000000370ee0
      [552.6822] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [552.6822] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [552.6822] Call Trace:
      [552.6822]  <TASK>
      [552.6822]  ? __warn+0x80/0x130
      [552.6822]  ? btrfs_put_transaction+0x123/0x130 [btrfs]
      [552.6824]  ? report_bug+0x1f4/0x200
      [552.6824]  ? handle_bug+0x42/0x70
      [552.6824]  ? exc_invalid_op+0x14/0x70
      [552.6824]  ? asm_exc_invalid_op+0x16/0x20
      [552.6824]  ? btrfs_put_transaction+0x123/0x130 [btrfs]
      [552.6826]  btrfs_cleanup_transaction+0xe7/0x5e0 [btrfs]
      [552.6828]  ? _raw_spin_unlock_irqrestore+0x23/0x40
      [552.6828]  ? try_to_wake_up+0x94/0x5e0
      [552.6828]  ? __pfx_process_timeout+0x10/0x10
      [552.6828]  transaction_kthread+0x103/0x1d0 [btrfs]
      [552.6830]  ? __pfx_transaction_kthread+0x10/0x10 [btrfs]
      [552.6832]  kthread+0xee/0x120
      [552.6832]  ? __pfx_kthread+0x10/0x10
      [552.6832]  ret_from_fork+0x29/0x50
      [552.6832]  </TASK>
      [552.6832] ---[ end trace 0000000000000000 ]---
    
    This corresponds to this line of code:
    
      void btrfs_put_transaction(struct btrfs_transaction *transaction)
      {
          (...)
              WARN_ON(!RB_EMPTY_ROOT(
                              &transaction->delayed_refs.dirty_extent_root));
          (...)
      }
    
    The warning happens because btrfs_qgroup_destroy_extent_records(), called
    in the transaction abort path, we free all entries from the rbtree
    "dirty_extent_root" with rbtree_postorder_for_each_entry_safe(), but we
    don't actually empty the rbtree - it's still pointing to nodes that were
    freed.
    
    So set the rbtree's root node to NULL to avoid this warning (assign
    RB_ROOT).
    
    Fixes: 81f7eb00ff5b ("btrfs: destroy qgroup extent records on transaction abort")
    CC: stable@vger.kernel.org # 5.10+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    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 a21a43e4338f21bd3bd4c6d065f2e0ad9743c97b
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jul 3 18:15:31 2023 +0100

    btrfs: fix iput() on error pointer after error during orphan cleanup
    
    commit cbaee87f2ef628c10331b69a2f3def6bc32402d7 upstream.
    
    At btrfs_orphan_cleanup(), if we can't find an inode (btrfs_iget() returns
    an -ENOENT error pointer), we proceed with 'ret' set to -ENOENT and the
    inode pointer set to ERR_PTR(-ENOENT). Later when we proceed to the body
    of the following if statement:
    
        if (ret == -ENOENT || inode->i_nlink) {
            (...)
            trans = btrfs_start_transaction(root, 1);
            if (IS_ERR(trans)) {
                ret = PTR_ERR(trans);
                iput(inode);
                goto out;
            }
            (...)
            ret = btrfs_del_orphan_item(trans, root,
                                        found_key.objectid);
            btrfs_end_transaction(trans);
            if (ret) {
                iput(inode);
                goto out;
            }
            continue;
        }
    
    If we get an error from btrfs_start_transaction() or from the call to
    btrfs_del_orphan_item() we end calling iput() against an inode pointer
    that has a value of ERR_PTR(-ENOENT), resulting in a crash with the
    following trace:
    
      [876.667] BUG: kernel NULL pointer dereference, address: 0000000000000096
      [876.667] #PF: supervisor read access in kernel mode
      [876.667] #PF: error_code(0x0000) - not-present page
      [876.667] PGD 0 P4D 0
      [876.668] Oops: 0000 [#1] PREEMPT SMP PTI
      [876.668] CPU: 0 PID: 2356187 Comm: mount Tainted: G        W          6.4.0-rc6-btrfs-next-134+ #1
      [876.668] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014
      [876.668] RIP: 0010:iput+0xa/0x20
      [876.668] Code: ff ff ff 66 (...)
      [876.669] RSP: 0018:ffffafa9c0c9f9d0 EFLAGS: 00010282
      [876.669] RAX: ffffffffffffffe4 RBX: 000000000009453b RCX: 0000000000000000
      [876.669] RDX: 0000000000000001 RSI: ffffafa9c0c9f930 RDI: fffffffffffffffe
      [876.669] RBP: ffff95c612f3b800 R08: 0000000000000001 R09: ffffffffffffffe4
      [876.670] R10: 00018f2a71010000 R11: 000000000ead96e3 R12: ffff95cb7d6909a0
      [876.670] R13: fffffffffffffffe R14: ffff95c60f477000 R15: 00000000ffffffe4
      [876.670] FS:  00007f5fbe30a840(0000) GS:ffff95ccdfa00000(0000) knlGS:0000000000000000
      [876.670] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [876.671] CR2: 0000000000000096 CR3: 000000055e9f6004 CR4: 0000000000370ef0
      [876.671] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [876.671] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [876.672] Call Trace:
      [876.744]  <TASK>
      [876.744]  ? __die_body+0x1b/0x60
      [876.744]  ? page_fault_oops+0x15d/0x450
      [876.745]  ? __kmem_cache_alloc_node+0x47/0x410
      [876.745]  ? do_user_addr_fault+0x65/0x8a0
      [876.745]  ? exc_page_fault+0x74/0x170
      [876.746]  ? asm_exc_page_fault+0x22/0x30
      [876.746]  ? iput+0xa/0x20
      [876.746]  btrfs_orphan_cleanup+0x221/0x330 [btrfs]
      [876.746]  btrfs_lookup_dentry+0x58f/0x5f0 [btrfs]
      [876.747]  btrfs_lookup+0xe/0x30 [btrfs]
      [876.747]  __lookup_slow+0x82/0x130
      [876.785]  walk_component+0xe5/0x160
      [876.786]  path_lookupat.isra.0+0x6e/0x150
      [876.786]  filename_lookup+0xcf/0x1a0
      [876.786]  ? mod_objcg_state+0xd2/0x360
      [876.786]  ? obj_cgroup_charge+0xf5/0x110
      [876.787]  ? should_failslab+0xa/0x20
      [876.787]  ? kmem_cache_alloc+0x47/0x450
      [876.787]  vfs_path_lookup+0x51/0x90
      [876.788]  mount_subtree+0x8d/0x130
      [876.788]  btrfs_mount+0x149/0x410 [btrfs]
      [876.788]  ? __kmem_cache_alloc_node+0x47/0x410
      [876.788]  ? vfs_parse_fs_param+0xc0/0x110
      [876.789]  legacy_get_tree+0x24/0x50
      [876.834]  vfs_get_tree+0x22/0xd0
      [876.852]  path_mount+0x2d8/0x9c0
      [876.852]  do_mount+0x79/0x90
      [876.852]  __x64_sys_mount+0x8e/0xd0
      [876.853]  do_syscall_64+0x38/0x90
      [876.899]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
      [876.958] RIP: 0033:0x7f5fbe50b76a
      [876.959] Code: 48 8b 0d a9 (...)
      [876.959] RSP: 002b:00007fff01925798 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
      [876.959] RAX: ffffffffffffffda RBX: 00007f5fbe694264 RCX: 00007f5fbe50b76a
      [876.960] RDX: 0000561bde6c8720 RSI: 0000561bde6bdec0 RDI: 0000561bde6c31a0
      [876.960] RBP: 0000561bde6bdc70 R08: 0000000000000000 R09: 0000000000000001
      [876.960] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      [876.960] R13: 0000561bde6c31a0 R14: 0000561bde6c8720 R15: 0000561bde6bdc70
      [876.960]  </TASK>
    
    So fix this by setting 'inode' to NULL whenever we get an error from
    btrfs_iget(), and to make the code simpler, stop testing for 'ret' being
    -ENOENT to check if we have an inode - instead test for 'inode' being NULL
    or not. Having a NULL 'inode' prevents any iput() call from crashing, as
    iput() ignores NULL inode pointers. Also, stop testing for a NULL return
    value from btrfs_iget() with PTR_ERR_OR_ZERO(), because btrfs_iget() never
    returns NULL - in case an inode is not found, it returns ERR_PTR(-ENOENT),
    and in case of memory allocation failure, it returns ERR_PTR(-ENOMEM).
    We also don't need the extra iput() calls on the error branches for the
    btrfs_start_transaction() and btrfs_del_orphan_item() calls, as we have
    already called iput() before, so remove them.
    
    Fixes: a13bb2c03848 ("btrfs: add missing iputs on orphan cleanup failure")
    CC: stable@vger.kernel.org # 6.4
    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 c3e395fe7cb1844747ab1f781267bc53cc9a3508
Author: Georg Müller <georgmueller@gmx.net>
Date:   Wed Jun 28 10:45:51 2023 +0200

    perf probe: Read DWARF files from the correct CU
    
    commit c66e1c68c13b872505f25ab641c44b77313ee7fe upstream.
    
    After switching from dwarf_decl_file() to die_get_decl_file(), it is not
    possible to add probes for certain functions:
    
      $ perf probe -x /usr/lib/systemd/systemd-logind match_unit_removed
      A function DIE doesn't have decl_line. Maybe broken DWARF?
      A function DIE doesn't have decl_line. Maybe broken DWARF?
      Probe point 'match_unit_removed' not found.
         Error: Failed to add events.
    
    The problem is that die_get_decl_file() uses the wrong CU to search for
    the file. elfutils commit e1db5cdc9f has some good explanation for this:
    
        dwarf_decl_file uses dwarf_attr_integrate to get the DW_AT_decl_file
        attribute. This means the attribute might come from a different DIE
        in a different CU. If so, we need to use the CU associated with the
        attribute, not the original DIE, to resolve the file name.
    
    This patch uses the same source of information as elfutils: use attribute
    DW_AT_decl_file and use this CU to search for the file.
    
    Fixes: dc9a5d2ccd5c823c ("perf probe: Fix to get declared file name from clang DWARF5")
    Signed-off-by: Georg Müller <georgmueller@gmx.net>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: regressions@lists.linux.dev
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230628084551.1860532-6-georgmueller@gmx.net
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6869b2f022a57ab8d1dfd62f175e7dd679c554a6
Author: Georg Müller <georgmueller@gmx.net>
Date:   Wed Jun 28 10:45:50 2023 +0200

    perf probe: Add test for regression introduced by switch to die_get_decl_file()
    
    commit 56cbeacf143530576905623ac72ae0964f3293a6 upstream.
    
    This patch adds a test to validate that 'perf probe' works for binaries
    where DWARF info is split into multiple CUs
    
    Signed-off-by: Georg Müller <georgmueller@gmx.net>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: regressions@lists.linux.dev
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230628084551.1860532-5-georgmueller@gmx.net
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffb4aa1c05645cdd50657dd605c0ad5188126533
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Sun Jul 9 01:33:44 2023 +0200

    prctl: move PR_GET_AUXV out of PR_MCE_KILL
    
    commit 636e348353a7cc52609fdba5ff3270065da140d5 upstream.
    
    Somehow PR_GET_AUXV got added into PR_MCE_KILL's switch when the patch was
    applied [1].
    
    Thus move it out of the switch, to the place the patch added it.
    
    In the recently released v6.4 kernel some user could, in principle, be
    already using this feature by mapping the right page and passing the
    PR_GET_AUXV constant as a pointer:
    
        prctl(PR_MCE_KILL, PR_GET_AUXV, ...)
    
    So this does change the behavior for users.  We could keep the bug since
    the other subcases in PR_MCE_KILL (PR_MCE_KILL_CLEAR and PR_MCE_KILL_SET)
    do not overlap.
    
    However, v6.4 may be recent enough (2 weeks old) that moving the lines
    (rather than just adding a new case) does not break anybody?  Moreover,
    the documentation in man-pages was just committed today [2].
    
    Link: https://lkml.kernel.org/r/20230708233344.361854-1-ojeda@kernel.org
    Fixes: ddc65971bb67 ("prctl: add PR_GET_AUXV to copy auxv to userspace")
    Link: https://lore.kernel.org/all/d81864a7f7f43bca6afa2a09fc2e850e4050ab42.1680611394.git.josh@joshtriplett.org/ [1]
    Link: https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/?id=8cf0c06bfd3c2b219b044d4151c96f0da50af9ad [2]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Cc: Josh Triplett <josh@joshtriplett.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 e091bb55af9a930801f83df78195a908a76e1479
Author: Petr Pavlu <petr.pavlu@suse.com>
Date:   Thu Mar 23 14:04:12 2023 +0100

    keys: Fix linking a duplicate key to a keyring's assoc_array
    
    commit d55901522f96082a43b9842d34867363c0cdbac5 upstream.
    
    When making a DNS query inside the kernel using dns_query(), the request
    code can in rare cases end up creating a duplicate index key in the
    assoc_array of the destination keyring. It is eventually found by
    a BUG_ON() check in the assoc_array implementation and results in
    a crash.
    
    Example report:
    [2158499.700025] kernel BUG at ../lib/assoc_array.c:652!
    [2158499.700039] invalid opcode: 0000 [#1] SMP PTI
    [2158499.700065] CPU: 3 PID: 31985 Comm: kworker/3:1 Kdump: loaded Not tainted 5.3.18-150300.59.90-default #1 SLE15-SP3
    [2158499.700096] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020
    [2158499.700351] Workqueue: cifsiod cifs_resolve_server [cifs]
    [2158499.700380] RIP: 0010:assoc_array_insert+0x85f/0xa40
    [2158499.700401] Code: ff 74 2b 48 8b 3b 49 8b 45 18 4c 89 e6 48 83 e7 fe e8 95 ec 74 00 3b 45 88 7d db 85 c0 79 d4 0f 0b 0f 0b 0f 0b e8 41 f2 be ff <0f> 0b 0f 0b 81 7d 88 ff ff ff 7f 4c 89 eb 4c 8b ad 58 ff ff ff 0f
    [2158499.700448] RSP: 0018:ffffc0bd6187faf0 EFLAGS: 00010282
    [2158499.700470] RAX: ffff9f1ea7da2fe8 RBX: ffff9f1ea7da2fc1 RCX: 0000000000000005
    [2158499.700492] RDX: 0000000000000000 RSI: 0000000000000005 RDI: 0000000000000000
    [2158499.700515] RBP: ffffc0bd6187fbb0 R08: ffff9f185faf1100 R09: 0000000000000000
    [2158499.700538] R10: ffff9f1ea7da2cc0 R11: 000000005ed8cec8 R12: ffffc0bd6187fc28
    [2158499.700561] R13: ffff9f15feb8d000 R14: ffff9f1ea7da2fc0 R15: ffff9f168dc0d740
    [2158499.700585] FS:  0000000000000000(0000) GS:ffff9f185fac0000(0000) knlGS:0000000000000000
    [2158499.700610] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [2158499.700630] CR2: 00007fdd94fca238 CR3: 0000000809d8c006 CR4: 00000000003706e0
    [2158499.700702] Call Trace:
    [2158499.700741]  ? key_alloc+0x447/0x4b0
    [2158499.700768]  ? __key_link_begin+0x43/0xa0
    [2158499.700790]  __key_link_begin+0x43/0xa0
    [2158499.700814]  request_key_and_link+0x2c7/0x730
    [2158499.700847]  ? dns_resolver_read+0x20/0x20 [dns_resolver]
    [2158499.700873]  ? key_default_cmp+0x20/0x20
    [2158499.700898]  request_key_tag+0x43/0xa0
    [2158499.700926]  dns_query+0x114/0x2ca [dns_resolver]
    [2158499.701127]  dns_resolve_server_name_to_ip+0x194/0x310 [cifs]
    [2158499.701164]  ? scnprintf+0x49/0x90
    [2158499.701190]  ? __switch_to_asm+0x40/0x70
    [2158499.701211]  ? __switch_to_asm+0x34/0x70
    [2158499.701405]  reconn_set_ipaddr_from_hostname+0x81/0x2a0 [cifs]
    [2158499.701603]  cifs_resolve_server+0x4b/0xd0 [cifs]
    [2158499.701632]  process_one_work+0x1f8/0x3e0
    [2158499.701658]  worker_thread+0x2d/0x3f0
    [2158499.701682]  ? process_one_work+0x3e0/0x3e0
    [2158499.701703]  kthread+0x10d/0x130
    [2158499.701723]  ? kthread_park+0xb0/0xb0
    [2158499.701746]  ret_from_fork+0x1f/0x40
    
    The situation occurs as follows:
    * Some kernel facility invokes dns_query() to resolve a hostname, for
      example, "abcdef". The function registers its global DNS resolver
      cache as current->cred.thread_keyring and passes the query to
      request_key_net() -> request_key_tag() -> request_key_and_link().
    * Function request_key_and_link() creates a keyring_search_context
      object. Its match_data.cmp method gets set via a call to
      type->match_preparse() (resolves to dns_resolver_match_preparse()) to
      dns_resolver_cmp().
    * Function request_key_and_link() continues and invokes
      search_process_keyrings_rcu() which returns that a given key was not
      found. The control is then passed to request_key_and_link() ->
      construct_alloc_key().
    * Concurrently to that, a second task similarly makes a DNS query for
      "abcdef." and its result gets inserted into the DNS resolver cache.
    * Back on the first task, function construct_alloc_key() first runs
      __key_link_begin() to determine an assoc_array_edit operation to
      insert a new key. Index keys in the array are compared exactly as-is,
      using keyring_compare_object(). The operation finds that "abcdef" is
      not yet present in the destination keyring.
    * Function construct_alloc_key() continues and checks if a given key is
      already present on some keyring by again calling
      search_process_keyrings_rcu(). This search is done using
      dns_resolver_cmp() and "abcdef" gets matched with now present key
      "abcdef.".
    * The found key is linked on the destination keyring by calling
      __key_link() and using the previously calculated assoc_array_edit
      operation. This inserts the "abcdef." key in the array but creates
      a duplicity because the same index key is already present.
    
    Fix the problem by postponing __key_link_begin() in
    construct_alloc_key() until an actual key which should be linked into
    the destination keyring is determined.
    
    [jarkko@kernel.org: added a fixes tag and cc to stable]
    Cc: stable@vger.kernel.org # v5.3+
    Fixes: df593ee23e05 ("keys: Hoist locking out of __key_link_begin()")
    Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
    Reviewed-by: Joey Lee <jlee@suse.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f947a6f41c82f1d1df802f829d68fb589664636d
Author: Colin Ian King <colin.i.king@gmail.com>
Date:   Wed Jul 12 14:46:48 2023 +0100

    selftests/mm: mkdirty: fix incorrect position of #endif
    
    commit 25b5949c30938c7f26dbadc948b491e0e0811c78 upstream.
    
    The #endif is the wrong side of a } causing a build failure when
    __NR_userfaultfd is not defined.  Fix this by moving the #end to enclose
    the }
    
    Link: https://lkml.kernel.org/r/20230712134648.456349-1-colin.i.king@gmail.com
    Fixes: 9eac40fc0cc7 ("selftests/mm: mkdirty: test behavior of (pte|pmd)_mkdirty on VMAs without write permissions")
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Reviewed-by: David Hildenbrand <david@redhat.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 b724e834032b981ff2ad4e049d3e8fe505fbd98b
Author: Liam R. Howlett <Liam.Howlett@oracle.com>
Date:   Wed Jul 12 13:39:16 2023 -0400

    maple_tree: fix node allocation testing on 32 bit
    
    commit ef5c3de5211b5a3a8102b25aa83eb4cde65ac2fd upstream.
    
    Internal node counting was altered and the 64 bit test was updated,
    however the 32bit test was missed.
    
    Restore the 32bit test to a functional state.
    
    Link: https://lore.kernel.org/linux-mm/CAMuHMdV4T53fOw7VPoBgPR7fP6RYqf=CBhD_y_vOg53zZX_DnA@mail.gmail.com/
    Link: https://lkml.kernel.org/r/20230712173916.168805-2-Liam.Howlett@oracle.com
    Fixes: 541e06b772c1 ("maple_tree: remove GFP_ZERO from kmem_cache_alloc() and kmem_cache_alloc_bulk()")
    Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.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 74da0d9708fbf407aba48eb51d8159de8fa83610
Author: Liam R. Howlett <Liam.Howlett@oracle.com>
Date:   Tue Jul 11 13:50:20 2023 -0400

    mm/mlock: fix vma iterator conversion of apply_vma_lock_flags()
    
    commit 2658f94d679243209889cdfa8de3743cde1abea9 upstream.
    
    apply_vma_lock_flags() calls mlock_fixup(), which could merge the VMA
    after where the vma iterator is located.  Although this is not an issue,
    the next iteration of the loop will check the start of the vma to be equal
    to the locally saved 'tmp' variable and cause an incorrect failure
    scenario.  Fix the error by setting tmp to the end of the vma iterator
    value before restarting the loop.
    
    There is also a potential of the error code being overwritten when the
    loop terminates early.  Fix the return issue by directly returning when an
    error is encountered since there is nothing to undo after the loop.
    
    Link: https://lkml.kernel.org/r/20230711175020.4091336-1-Liam.Howlett@oracle.com
    Fixes: 37598f5a9d8b ("mlock: convert mlock to vma iterator")
    Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Reported-by: Ryan Roberts <ryan.roberts@arm.com>
      Link: https://lore.kernel.org/linux-mm/50341ca1-d582-b33a-e3d0-acb08a65166f@arm.com/
    Tested-by: Ryan Roberts <ryan.roberts@arm.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 01cba7fcf57fccf1176e46ea6b1f2ed8f2530dab
Author: Peng Zhang <zhangpeng.00@bytedance.com>
Date:   Tue Jul 11 11:54:37 2023 +0800

    maple_tree: set the node limit when creating a new root node
    
    commit 3c769fd88b9742954763a968e84de09f7ad78cfe upstream.
    
    Set the node limit of the root node so that the last pivot of all nodes is
    the node limit (if the node is not full).
    
    This patch also fixes a bug in mas_rev_awalk().  Effectively, always
    setting a maximum makes mas_logical_pivot() behave as mas_safe_pivot().
    Without this fix, it is possible that very small tasks would fail to find
    the correct gap.  Although this has not been observed with real tasks, it
    has been reported to happen in m68k nommu running the maple tree tests.
    
    Link: https://lkml.kernel.org/r/20230711035444.526-1-zhangpeng.00@bytedance.com
    Link: https://lore.kernel.org/linux-mm/CAMuHMdV4T53fOw7VPoBgPR7fP6RYqf=CBhD_y_vOg53zZX_DnA@mail.gmail.com/
    Link: https://lkml.kernel.org/r/20230711035444.526-2-zhangpeng.00@bytedance.com
    Fixes: 54a611b60590 ("Maple Tree: add new data structure")
    Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com>
    Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Tested-by: Geert Uytterhoeven <geert@linux-m68k.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 33e76576be14704cb8b76abf0c1b031ce3e4c17e
Author: Luka Guzenko <l.guzenko@web.de>
Date:   Tue Jul 18 18:12:41 2023 +0200

    ALSA: hda/realtek: Enable Mute LED on HP Laptop 15s-eq2xxx
    
    commit 0659400f18c0e6c0c69d74fe5d09e7f6fbbd52a2 upstream.
    
    The HP Laptop 15s-eq2xxx uses ALC236 codec and controls the mute LED using
    COEF 0x07 index 1. No existing quirk covers this configuration.
    Adds a new quirk and enables it for the device.
    
    Signed-off-by: Luka Guzenko <l.guzenko@web.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230718161241.393181-1-l.guzenko@web.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 194690a2db2581fb7abd418b2c6fa6824f622610
Author: Christoffer Sandberg <cs@tuxedo.de>
Date:   Tue Jul 18 16:57:22 2023 +0200

    ALSA: hda/realtek: Add quirk for Clevo NS70AU
    
    commit c250ef8954eda2024c8861c36e9fc1b589481fe7 upstream.
    
    Fixes headset detection on Clevo NS70AU.
    
    Co-developed-by: Werner Sembach <wse@tuxedocomputers.com>
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Signed-off-by: Christoffer Sandberg <cs@tuxedo.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230718145722.10592-1-wse@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b699e3c54d13e6d9ef3a6454559bde07dcedb8de
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu Jul 13 15:57:13 2023 +0800

    ALSA: hda/realtek - remove 3k pull low procedure
    
    commit 69ea4c9d02b7947cdd612335a61cc1a02e544ccd upstream.
    
    This was the ALC283 depop procedure.
    Maybe this procedure wasn't suitable with new codec.
    So, let us remove it. But HP 15z-fc000 must do 3k pull low. If it
    reboot with plugged headset,
    it will have errors show don't find codec error messages. Run 3k pull
    low will solve issues.
    So, let AMD chipset will run this for workarround.
    
    Fixes: 5aec98913095 ("ALSA: hda/realtek - ALC236 headset MIC recording issue")
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Reported-by: Joseph C. Sible <josephcsible@gmail.com>
    Closes: https://lore.kernel.org/r/CABpewhE4REgn9RJZduuEU6Z_ijXNeQWnrxO1tg70Gkw=F8qNYg@mail.gmail.com/
    Link: https://lore.kernel.org/r/4678992299664babac4403d9978e7ba7@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 450d9315d28085f72dc1b1075fc46ed8a1426e39
Author: Helge Deller <deller@gmx.de>
Date:   Fri Jul 21 17:24:31 2023 +0200

    io_uring: Fix io_uring mmap() by using architecture-provided get_unmapped_area()
    
    commit 32832a407a7178eec3215fad9b1a3298c14b0d69 upstream.
    
    The io_uring testcase is broken on IA-64 since commit d808459b2e31
    ("io_uring: Adjust mapping wrt architecture aliasing requirements").
    
    The reason is, that this commit introduced an own architecture
    independend get_unmapped_area() search algorithm which finds on IA-64 a
    memory region which is outside of the regular memory region used for
    shared userspace mappings and which can't be used on that platform
    due to aliasing.
    
    To avoid similar problems on IA-64 and other platforms in the future,
    it's better to switch back to the architecture-provided
    get_unmapped_area() function and adjust the needed input parameters
    before the call. Beside fixing the issue, the function now becomes
    easier to understand and maintain.
    
    This patch has been successfully tested with the io_uring testcase on
    physical x86-64, ppc64le, IA-64 and PA-RISC machines. On PA-RISC the LTP
    mmmap testcases did not report any regressions.
    
    Cc: stable@vger.kernel.org # 6.4
    Signed-off-by: Helge Deller <deller@gmx.de>
    Reported-by: matoro <matoro_mailinglist_kernel@matoro.tk>
    Fixes: d808459b2e31 ("io_uring: Adjust mapping wrt architecture aliasing requirements")
    Link: https://lore.kernel.org/r/20230721152432.196382-2-deller@gmx.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3f59cbeaa5d6f92025cd6df21074086ffe0009d
Author: Jens Axboe <axboe@kernel.dk>
Date:   Thu Jul 20 13:16:53 2023 -0600

    io_uring: treat -EAGAIN for REQ_F_NOWAIT as final for io-wq
    
    commit a9be202269580ca611c6cebac90eaf1795497800 upstream.
    
    io-wq assumes that an issue is blocking, but it may not be if the
    request type has asked for a non-blocking attempt. If we get
    -EAGAIN for that case, then we need to treat it as a final result
    and not retry or arm poll for it.
    
    Cc: stable@vger.kernel.org # 5.10+
    Link: https://github.com/axboe/liburing/issues/897
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>