commit f60d5fd5e950c89a38578ae6f25877de511bb031
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 6 21:25:33 2023 +0100

    Linux 6.4.15
    
    Link: https://lore.kernel.org/r/20230904182947.899158313@linuxfoundation.org
    Tested-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12ac1448ab77d6d81f47633f41b5e7d7028cfb50
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Mon Jul 17 15:16:52 2023 -0500

    pinctrl: amd: Don't show `Invalid config param` errors
    
    commit 87b549efcb0f7934b0916d2a00607a878b6f1e0f upstream.
    
    On some systems amd_pinconf_set() is called with parameters
    0x8 (PIN_CONFIG_DRIVE_PUSH_PULL) or 0x14 (PIN_CONFIG_PERSIST_STATE)
    which are not supported by pinctrl-amd.
    
    Don't show an err message when called with an invalid parameter,
    downgrade this to debug instead.
    
    Cc: stable@vger.kernel.org # 6.1
    Fixes: 635a750d958e1 ("pinctrl: amd: Use amd_pinconf_set() for all config options")
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20230717201652.17168-1-mario.limonciello@amd.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 120e477de917bed0a500c51671460620ca3552f2
Author: Marco Felsch <m.felsch@pengutronix.de>
Date:   Wed Aug 16 14:25:02 2023 -0300

    usb: typec: tcpci: clear the fault status bit
    
    commit 23e60c8daf5ec2ab1b731310761b668745fcf6ed upstream.
    
    According the "USB Type-C Port Controller Interface Specification v2.0"
    the TCPC sets the fault status register bit-7
    (AllRegistersResetToDefault) once the registers have been reset to
    their default values.
    
    This triggers an alert(-irq) on PTN5110 devices albeit we do mask the
    fault-irq, which may cause a kernel hang. Fix this generically by writing
    a one to the corresponding bit-7.
    
    Cc: stable@vger.kernel.org
    Fixes: 74e656d6b055 ("staging: typec: Type-C Port Controller Interface driver (tcpci)")
    Reported-by: "Angus Ainslie (Purism)" <angus@akkea.ca>
    Closes: https://lore.kernel.org/all/20190508002749.14816-2-angus@akkea.ca/
    Reported-by: Christian Bach <christian.bach@scs.ch>
    Closes: https://lore.kernel.org/regressions/ZR0P278MB07737E5F1D48632897D51AC3EB329@ZR0P278MB0773.CHEP278.PROD.OUTLOOK.COM/t/
    Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20230816172502.1155079-1-festevam@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46c11be2dca295742a5508ea910a77f7733fb7f4
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Fri Aug 18 22:18:04 2023 +0900

    nilfs2: fix WARNING in mark_buffer_dirty due to discarded buffer reuse
    
    commit cdaac8e7e5a059f9b5e816cda257f08d0abffacd upstream.
    
    A syzbot stress test using a corrupted disk image reported that
    mark_buffer_dirty() called from __nilfs_mark_inode_dirty() or
    nilfs_palloc_commit_alloc_entry() may output a kernel warning, and can
    panic if the kernel is booted with panic_on_warn.
    
    This is because nilfs2 keeps buffer pointers in local structures for some
    metadata and reuses them, but such buffers may be forcibly discarded by
    nilfs_clear_dirty_page() in some critical situations.
    
    This issue is reported to appear after commit 28a65b49eb53 ("nilfs2: do
    not write dirty data after degenerating to read-only"), but the issue has
    potentially existed before.
    
    Fix this issue by checking the uptodate flag when attempting to reuse an
    internally held buffer, and reloading the metadata instead of reusing the
    buffer if the flag was lost.
    
    Link: https://lkml.kernel.org/r/20230818131804.7758-1-konishi.ryusuke@gmail.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Reported-by: syzbot+cdfcae656bac88ba0e2d@syzkaller.appspotmail.com
    Closes: https://lkml.kernel.org/r/0000000000003da75f05fdeffd12@google.com
    Fixes: 8c26c4e2694a ("nilfs2: fix issue with flush kernel thread after remount in RO mode because of driver's internal error or metadata corruption")
    Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: <stable@vger.kernel.org> # 3.10+
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d53a0a737639be972d6cdfa81812a2cc54362c20
Author: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Date:   Mon Aug 7 17:45:53 2023 -0400

    dt-bindings: sc16is7xx: Add property to change GPIO function
    
    commit 4cf478dc5d707e56aefa258c049872eff054a353 upstream.
    
    Some variants in this series of UART controllers have GPIO pins that
    are shared between GPIO and modem control lines.
    
    The pin mux mode (GPIO or modem control lines) can be set for each
    ports (channels) supported by the variant.
    
    This adds a property to the device tree to set the GPIO pin mux to
    modem control lines on selected ports if needed.
    
    Cc: stable@vger.kernel.org # 6.1.x
    Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Reviewed-by: Lech Perczak <lech.perczak@camlingroup.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/20230807214556.540627-4-hugo@hugovil.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f75a9a53327b9ed1ad7725ddbe63cd5f0ad0067e
Author: Badhri Jagan Sridharan <badhri@google.com>
Date:   Sun Aug 20 04:44:48 2023 +0000

    tcpm: Avoid soft reset when partner does not support get_status
    
    commit 78e0ea4277546debf7e96797ac3b768539cc44f6 upstream.
    
    When partner does not support get_status message, tcpm right now
    responds with soft reset message. This causes PD renegotiation to
    happen and resets PPS link. Avoid soft resetting the link when
    partner does not support get_status message to mitigate PPS resets.
    
    [  208.926752] Setting voltage/current limit 9500 mV 2450 mA
    [  208.930407] set_auto_vbus_discharge_threshold mode:3 pps_active:y vbus:9500 ret:0
    [  208.930418] state change SNK_TRANSITION_SINK -> SNK_READY [rev3 POWER_NEGOTIATION]
    [  208.930455] AMS POWER_NEGOTIATION finished
    
    // ALERT message from the Source
    [  213.948442] PD RX, header: 0x19a6 [1]
    [  213.948451] state change SNK_READY -> GET_STATUS_SEND [rev3 GETTING_SOURCE_SINK_STATUS]
    [  213.948457] PD TX, header: 0x492
    [  213.950402] PD TX complete, status: 0
    [  213.950427] pending state change GET_STATUS_SEND -> GET_STATUS_SEND_TIMEOUT @ 60 ms [rev3 GETTING_SOURCE_SINK_STATUS]
    
    // NOT_SUPPORTED from the Source
    [  213.959954] PD RX, header: 0xbb0 [1]
    
    // sink sends SOFT_RESET
    [  213.959958] state change GET_STATUS_SEND -> SNK_SOFT_RESET [rev3 GETTING_SOURCE_SINK_STATUS]
    [  213.959962] AMS GETTING_SOURCE_SINK_STATUS finished
    [  213.959964] AMS SOFT_RESET_AMS start
    [  213.959966] state change SNK_SOFT_RESET -> AMS_START [rev3 SOFT_RESET_AMS]
    [  213.959969] state change AMS_START -> SOFT_RESET_SEND [rev3 SOFT_RESET_AMS]
    
    Cc: stable@vger.kernel.org
    Fixes: 8dea75e11380 ("usb: typec: tcpm: Protocol Error handling")
    Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20230820044449.1005889-1-badhri@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c95605d5ed235bf83bdd99a165b557034ff6e7b5
Author: Juerg Haefliger <juerg.haefliger@canonical.com>
Date:   Wed Jun 28 11:50:39 2023 +0200

    fsi: master-ast-cf: Add MODULE_FIRMWARE macro
    
    commit 3a1d7aff6e65ad6e285e28abe55abbfd484997ee upstream.
    
    The module loads firmware so add a MODULE_FIRMWARE macro to provide that
    information via modinfo.
    
    Fixes: 6a794a27daca ("fsi: master-ast-cf: Add new FSI master using Aspeed ColdFire")
    Cc: stable@vger.kernel.org # 4.19+
    Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
    Link: https://lore.kernel.org/r/20230628095039.26218-1-juerg.haefliger@canonical.com
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c0dc67881c60a0bcf06089153e3740ebfb0f4a7
Author: Wang Ming <machel@vivo.com>
Date:   Thu Jul 27 14:37:50 2023 -0500

    firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe
    
    commit dd218433f2b635d97e8fda3eed047151fd528ce4 upstream.
    
    The devm_memremap() function returns error pointers.
    It never returns NULL. Fix the check.
    
    Fixes: 7ca5ce896524 ("firmware: add Intel Stratix10 service layer driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Wang Ming <machel@vivo.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Link: https://lore.kernel.org/r/20230727193750.983795-1-dinguyen@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43b5cedc35644874b772784170fee0d7fe4c98a2
Author: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Date:   Mon Aug 7 17:45:55 2023 -0400

    serial: sc16is7xx: fix bug when first setting GPIO direction
    
    commit 9baeea723c0fb9c3ba9a336369f758ed9bc6831d upstream.
    
    When configuring a pin as an output pin with a value of logic 0, we
    end up as having a value of logic 1 on the output pin. Setting a
    logic 0 a second time (or more) after that will correctly output a
    logic 0 on the output pin.
    
    By default, all GPIO pins are configured as inputs. When we enter
    sc16is7xx_gpio_direction_output() for the first time, we first set the
    desired value in IOSTATE, and then we configure the pin as an output.
    The datasheet states that writing to IOSTATE register will trigger a
    transfer of the value to the I/O pin configured as output, so if the
    pin is configured as an input, nothing will be transferred.
    
    Therefore, set the direction first in IODIR, and then set the desired
    value in IOSTATE.
    
    This is what is done in NXP application note AN10587.
    
    Fixes: dfeae619d781 ("serial: sc16is7xx")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
    Reviewed-by: Lech Perczak <lech.perczak@camlingroup.com>
    Tested-by: Lech Perczak <lech.perczak@camlingroup.com>
    Link: https://lore.kernel.org/r/20230807214556.540627-6-hugo@hugovil.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e534d3e986fc33202f2252b82f27b20562382c07
Author: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Date:   Mon Aug 7 17:45:51 2023 -0400

    serial: sc16is7xx: fix broken port 0 uart init
    
    commit 2861ed4d6e6d1a2c9de9bf5b0abd996c2dc673d0 upstream.
    
    The sc16is7xx_config_rs485() function is called only for the second
    port (index 1, channel B), causing initialization problems for the
    first port.
    
    For the sc16is7xx driver, port->membase and port->mapbase are not set,
    and their default values are 0. And we set port->iobase to the device
    index. This means that when the first device is registered using the
    uart_add_one_port() function, the following values will be in the port
    structure:
        port->membase = 0
        port->mapbase = 0
        port->iobase  = 0
    
    Therefore, the function uart_configure_port() in serial_core.c will
    exit early because of the following check:
            /*
             * If there isn't a port here, don't do anything further.
             */
            if (!port->iobase && !port->mapbase && !port->membase)
                    return;
    
    Typically, I2C and SPI drivers do not set port->membase and
    port->mapbase.
    
    The max310x driver sets port->membase to ~0 (all ones). By
    implementing the same change in this driver, uart_configure_port() is
    now correctly executed for all ports.
    
    Fixes: dfeae619d781 ("serial: sc16is7xx")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Lech Perczak <lech.perczak@camlingroup.com>
    Tested-by: Lech Perczak <lech.perczak@camlingroup.com>
    Link: https://lore.kernel.org/r/20230807214556.540627-2-hugo@hugovil.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e02214399ef444529318d416994e50442185e24b
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Jul 14 15:02:13 2023 +0200

    serial: qcom-geni: fix opp vote on shutdown
    
    commit 8ece7b754bc34ffd7fcc8269ccb9128e72ca76d8 upstream.
    
    The operating-performance-point vote needs to be dropped when shutting
    down the port to avoid wasting power by keeping resources like power
    domains in an unnecessarily high performance state (e.g. when a UART
    connected Bluetooth controller is not in use).
    
    Fixes: a5819b548af0 ("tty: serial: qcom_geni_serial: Use OPP API to set clk/perf state")
    Cc: stable@vger.kernel.org      # 5.9
    Cc: Rajendra Nayak <quic_rjendra@quicinc.com>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Link: https://lore.kernel.org/r/20230714130214.14552-2-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f2b1f63a76030305c7f9f34bb74b63223175f41
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Aug 22 16:42:24 2023 +0300

    wifi: ath11k: Cleanup mac80211 references on failure during tx_complete
    
    commit 29d15589f084d71a4ea8c544039c5839db0236e2 upstream.
    
    When a function is using functions from mac80211 to free an skb then it
    should do it consistently and not switch to the generic dev_kfree_skb_any
    (or similar functions). Otherwise (like in the error handlers), mac80211
    will will not be aware of the freed skb and thus not clean up related
    information in its internal data structures.
    
    Not doing so lead in the past to filled up structure which then prevented
    new clients to connect.
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Fixes: 6257c702264c ("wifi: ath11k: fix tx status reporting in encap offload mode")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230802-ath11k-ack_status_leak-v2-2-c0af729d6229@narfation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6909803263c1463064ead98710538cdcd323360
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Aug 22 16:42:24 2023 +0300

    wifi: ath11k: Don't drop tx_status when peer cannot be found
    
    commit 400ece6c7f346b0a30867bd00b03b5b2563d4357 upstream.
    
    When a station idles for a long time, hostapd will try to send a QoS Null
    frame to the station as "poll". NL80211_CMD_PROBE_CLIENT is used for this
    purpose. And the skb will be added to ack_status_frame - waiting for a
    completion via ieee80211_report_ack_skb().
    
    But when the peer was already removed before the tx_complete arrives, the
    peer will be missing. And when using dev_kfree_skb_any (instead of going
    through mac80211), the entry will stay inside ack_status_frames. This IDR
    will therefore run full after 8K request were generated for such clients.
    At this point, the access point will then just stall and not allow any new
    clients because idr_alloc() for ack_status_frame will fail.
    
    ieee80211_free_txskb() on the other hand will (when required) call
    ieee80211_report_ack_skb() and make sure that (when required) remove the
    entry from the ack_status_frame.
    
    Tested-on: IPQ6018 hw1.0 WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1
    
    Fixes: 6257c702264c ("wifi: ath11k: fix tx status reporting in encap offload mode")
    Fixes: 94739d45c388 ("ath11k: switch to using ieee80211_tx_status_ext()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230802-ath11k-ack_status_leak-v2-1-c0af729d6229@narfation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c32e118debe9efb013e9afb883985be694e1d011
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Wed Aug 23 09:50:21 2023 +0200

    wifi: rtw88: usb: kill and free rx urbs on probe failure
    
    commit 290564367ab7fa7e2048bdc00d9c0ad016b41eea upstream.
    
    After rtw_usb_alloc_rx_bufs() has been called rx urbs have been
    allocated and must be freed in the error path. After rtw_usb_init_rx()
    has been called they are submitted, so they also must be killed.
    
    Add these forgotten steps to the probe error path.
    
    Besides the lost memory this also fixes a problem when the driver
    fails to download the firmware in rtw_chip_info_setup(). In this
    case it can happen that the completion of the rx urbs handler runs
    at a time when we already freed our data structures resulting in
    a kernel crash.
    
    Fixes: a82dfd33d123 ("wifi: rtw88: Add common USB chip support")
    Cc: stable@vger.kernel.org
    Reported-by: Ilgaz Öcal <ilgaz@ilgaz.gen.tr>
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230823075021.588596-1-s.hauer@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e74778e91fedc3b2a0143264887bbb32508c5000
Author: Deren Wu <deren.wu@mediatek.com>
Date:   Wed May 17 17:18:24 2023 +0800

    wifi: mt76: mt7921: fix skb leak by txs missing in AMSDU
    
    commit b642f4c5f3de0a8f47808d32b1ebd9c427a42a66 upstream.
    
    txs may be dropped if the frame is aggregated in AMSDU. When the problem
    shows up, some SKBs would be hold in driver to cause network stopped
    temporarily. Even if the problem can be recovered by txs timeout handling,
    mt7921 still need to disable txs in AMSDU to avoid this issue.
    
    Cc: stable@vger.kernel.org
    Fixes: 163f4d22c118 ("mt76: mt7921: add MAC support")
    Reviewed-by: Shayne Chen <shayne.chen@mediatek.com>
    Signed-off-by: Deren Wu <deren.wu@mediatek.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 046378bdf9de00a1c61000c9b7514e59e36db445
Author: Deren Wu <deren.wu@mediatek.com>
Date:   Wed May 10 14:51:13 2023 +0800

    wifi: mt76: mt7921: do not support one stream on secondary antenna only
    
    commit d616d3680264beb9a9d2c4fc681064b06f447eeb upstream.
    
    mt7921 support following antenna combiantions only.
    * primary + secondary (2x2)
    * primary only        (1x1)
    
    Since we cannot work on secondary antenna only, return error if the
    antenna bitmap is 0x2 in .set_antenna().
    
    For example:
    iw phy0 set antenna 3 3 /* valid */
    iw phy0 set antenna 1 1 /* valid */
    iw phy0 set antenna 2 2 /* invalid */
    
    Cc: stable@vger.kernel.org
    Fixes: e0f9fdda81bd ("mt76: mt7921: add ieee80211_ops")
    Suggested-by: Knox Chiou <knoxchiou@google.com>
    Signed-off-by: Deren Wu <deren.wu@mediatek.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18a9d16f2fbe9a82b45d537786194c014882b7d3
Author: Nam Cao <namcaov@gmail.com>
Date:   Mon Jul 31 13:06:20 2023 +0200

    staging: rtl8712: fix race condition
    
    commit 1422b526fba994cf05fd288a152106563b875fce upstream.
    
    In probe function, request_firmware_nowait() is called to load firmware
    asynchronously. At completion of firmware loading, register_netdev() is
    called. However, a mutex needed by netdev is initialized after the call
    to request_firmware_nowait(). Consequently, it can happen that
    register_netdev() is called before the driver is ready.
    
    Move the mutex initialization into r8712_init_drv_sw(), which is called
    before request_firmware_nowait().
    
    Reported-by: syzbot+b08315e8cf5a78eed03c@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-staging/000000000000d9d4560601b8e0d7@google.com/T/#u
    Fixes: 8c213fa59199 ("staging: r8712u: Use asynchronous firmware loading")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Nam Cao <namcaov@gmail.com>
    Link: https://lore.kernel.org/r/20230731110620.116562-1-namcaov@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5db7c0f7fb51bc5a16601941391f161503717cb8
Author: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
Date:   Tue Jul 25 15:20:25 2023 -0700

    HID: wacom: remove the battery when the EKR is off
    
    commit 9ac6678b95b0dd9458a7a6869f46e51cd55a1d84 upstream.
    
    Currently the EKR battery remains even after we stop getting information
    from the device. This can lead to a stale battery persisting indefinitely
    in userspace.
    
    The remote sends a heartbeat every 10 seconds. Delete the battery if we
    miss two heartbeats (after 21 seconds). Restore the battery once we see
    a heartbeat again.
    
    Signed-off-by: Aaron Skomra <skomra@gmail.com>
    Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
    Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
    Fixes: 9f1015d45f62 ("HID: wacom: EKR: attach the power_supply on first connection")
    CC: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae3f94d539a35aaba4ad846a4c1fcb9f50319291
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Tue Jun 27 19:21:24 2023 +0800

    usb: chipidea: imx: improve logic if samsung,picophy-* parameter is 0
    
    commit 36668515d56bf73f06765c71e08c8f7465f1e5c4 upstream.
    
    In current driver, the value of tuning parameter will not take effect
    if samsung,picophy-* is assigned as 0. Because 0 is also a valid value
    acccording to the description of USB_PHY_CFG1 register, this will improve
    the logic to let it work.
    
    Fixes: 58a3cefb3840 ("usb: chipidea: imx: add two samsung picophy parameters tuning implementation")
    cc: <stable@vger.kernel.org>
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Link: https://lore.kernel.org/r/20230627112126.1882666-1-xu.yang_2@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce06713e64e3cfe6e9dc86e2f749212654f82d4e
Author: Luke Lu <luke.lu@libre.computer>
Date:   Wed Aug 9 21:29:11 2023 +0000

    usb: dwc3: meson-g12a: do post init to fix broken usb after resumption
    
    commit 1fa206bb764f37d2ab4bf671e483153ef0659b34 upstream.
    
    Device connected to usb otg port of GXL-based boards can not be
    recognised after resumption, doesn't recover even if disconnect and
    reconnect the device. dmesg shows it disconnects during resumption.
    
    [   41.492911] usb 1-2: USB disconnect, device number 3
    [   41.499346] usb 1-2: unregistering device
    [   41.511939] usb 1-2: unregistering interface 1-2:1.0
    
    Calling usb_post_init() will fix this issue, and it's tested and
    verified on libretech's aml-s905x-cc board.
    
    Cc: stable@vger.kernel.org # v5.8+
    Fixes: c99993376f72 ("usb: dwc3: Add Amlogic G12A DWC3 glue")
    Signed-off-by: Luke Lu <luke.lu@libre.computer>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20230809212911.18903-1-luke.lu@libre.computer
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 596b16ee3f9ac774a78c152a96c84e761da2172c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Aug 21 13:18:57 2023 +0200

    ALSA: usb-audio: Fix init call orders for UAC1
    
    commit 5fadc941d07530d681f3b7ec91e56d8445bc3825 upstream.
    
    There have been reports of USB-audio driver spewing errors at the
    probe time on a few devices like Jabra and Logitech.  The suggested
    fix there couldn't be applied as is, unfortunately, because it'll
    likely break other devices.
    
    But, the patch suggested an interesting point: looking at the current
    init code in stream.c, one may notice that it does initialize
    differently from the device setup in endpoint.c.  Namely, for UAC1, we
    should call snd_usb_init_pitch() and snd_usb_init_sample_rate() after
    setting the interface, while the init sequence at parsing calls them
    before setting the interface blindly.
    
    This patch changes the init sequence at parsing for UAC1 (and other
    devices that need a similar behavior) to be aligned with the rest of
    the code, setting the interface at first.  And, this fixes the
    long-standing problems on a few UAC1 devices like Jabra / Logitech,
    as reported, too.
    
    Reported-and-tested-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Closes: https://lore.kernel.org/r/202bbbc0f51522e8545783c4c5577d12a8e2d56d.camel@infinera.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230821111857.28926-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c72b4c1c2407b2286eb63cd733ae28c241116625
Author: Slark Xiao <slark_xiao@163.com>
Date:   Wed Aug 23 15:57:51 2023 +0800

    USB: serial: option: add FOXCONN T99W368/T99W373 product
    
    commit 4d9488b294e1f8353bbcadc4c7172a7f7490199b upstream.
    
    The difference of T99W368 and T99W373 is the chip solution.
    T99W368 is designed based on Qualcomm SDX65 and T99W373 is SDX62.
    
    Test evidence as below:
    T:  Bus=01 Lev=02 Prnt=05 Port=00 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0489 ProdID=e0f0 Rev=05.04
    S:  Manufacturer=FII
    S:  Product=OLYMPIC USB WWAN Adapter
    S:  SerialNumber=78ada8c4
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    
    T:  Bus=01 Lev=02 Prnt=05 Port=00 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0489 ProdID=e0ee Rev=05.04
    S:  Manufacturer=FII
    S:  Product=OLYMPIC USB WWAN Adapter
    S:  SerialNumber=78ada8d5
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    
    Both of them share the same port configuration:
    0&1: MBIM, 2: Modem, 3:GNSS, 4:NMEA, 5:Diag
    GNSS port don't use serial driver.
    
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7114ed5e53b0ab1446607b94d0b8c81a36fb2ab5
Author: Martin Kohn <m.kohn@welotec.com>
Date:   Thu Jul 27 22:23:00 2023 +0000

    USB: serial: option: add Quectel EM05G variant (0x030e)
    
    commit 873854c02364ebb991fc06f7148c14dfb5419e1b upstream.
    
    Add Quectel EM05G with product ID 0x030e.
    Interface 4 is used for qmi.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=030e Rev= 3.18
    S:  Manufacturer=Quectel
    S:  Product=Quectel EM05-G
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Martin Kohn <m.kohn@welotec.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 784a1fd76b74d4c6849a7f2cd8cd3b48c56642bb
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Aug 1 19:35:44 2023 +0200

    modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules
    
    commit 9011e49d54dcc7653ebb8a1e05b5badb5ecfa9f9 upstream.
    
    It has recently come to my attention that nvidia is circumventing the
    protection added in 262e6ae7081d ("modules: inherit
    TAINT_PROPRIETARY_MODULE") by importing exports from their proprietary
    modules into an allegedly GPL licensed module and then rexporting them.
    
    Given that symbol_get was only ever intended for tightly cooperating
    modules using very internal symbols it is logical to restrict it to
    being used on EXPORT_SYMBOL_GPL and prevent nvidia from costly DMCA
    Circumvention of Access Controls law suites.
    
    All symbols except for four used through symbol_get were already exported
    as EXPORT_SYMBOL_GPL, and the remaining four ones were switched over in
    the preparation patches.
    
    Fixes: 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2114d34d6bbb93cdba6bc531a38bc5a9e96777b
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Aug 1 19:35:43 2023 +0200

    rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff
    
    commit 95e7ebc6823170256a8ce19fad87912805bfa001 upstream.
    
    ds1685_rtc_poweroff is only used externally via symbol_get, which was
    only ever intended for very internal symbols like this one.  Use
    EXPORT_SYMBOL_GPL for it so that symbol_get can enforce only being used
    on EXPORT_SYMBOL_GPL symbols.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Joshua Kinard <kumba@gentoo.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68a2c15de31196b5e8c2e1926b9336465e02fc8a
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Aug 1 19:35:42 2023 +0200

    net: enetc: use EXPORT_SYMBOL_GPL for enetc_phc_index
    
    commit 569820befb16ffc755ab7af71f4f08cc5f68f0fe upstream.
    
    enetc_phc_index is only used via symbol_get, which was only ever
    intended for very internal symbols like this one.  Use EXPORT_SYMBOL_GPL
    for it so that symbol_get can enforce only being used on
    EXPORT_SYMBOL_GPL symbols.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95dca60f39a65b97403014219d2c800e7bb2c8f8
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Aug 1 19:35:41 2023 +0200

    mmc: au1xmmc: force non-modular build and remove symbol_get usage
    
    commit d4a5c59a955bba96b273ec1a5885bada24c56979 upstream.
    
    au1xmmc is split somewhat awkwardly into the main mmc subsystem driver,
    and callbacks in platform_data that sit under arch/mips/ and are
    always built in.  The latter than call mmc_detect_change through
    symbol_get.  Remove the use of symbol_get by requiring the driver
    to be built in.  In the future the interrupt handlers for card
    insert/eject detection should probably be moved into the main driver,
    and which point it can be built modular again.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Manuel Lauss <manuel.lauss@gmail.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    [mcgrof: squashed in depends on MMC=y suggested by Arnd]
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 245bc3e5329e535c739584e27f8e1c6752affbb0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Aug 1 19:35:40 2023 +0200

    ARM: pxa: remove use of symbol_get()
    
    commit 0faa29c4207e6e29cfc81b427df60e326c37083a upstream.
    
    The spitz board file uses the obscure symbol_get() function
    to optionally call a function from sharpsl_pm.c if that is
    built. However, the two files are always built together
    these days, and have been for a long time, so this can
    be changed to a normal function call.
    
    Link: https://lore.kernel.org/lkml/20230731162639.GA9441@lst.de/
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c660940f525279bb23b5d99a591535e7c359efe
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Tue Aug 29 23:40:37 2023 +0900

    ksmbd: reduce descriptor size if remaining bytes is less than request size
    
    commit e628bf939aafb61fbc56e9bdac8795cea5127e25 upstream.
    
    Create 3 kinds of files to reproduce this problem.
    
    dd if=/dev/urandom of=127k.bin bs=1024 count=127
    dd if=/dev/urandom of=128k.bin bs=1024 count=128
    dd if=/dev/urandom of=129k.bin bs=1024 count=129
    
    When copying files from ksmbd share to windows or cifs.ko, The following
    error message happen from windows client.
    
    "The file '129k.bin' is too large for the destination filesystem."
    
    We can see the error logs from ksmbd debug prints
    
    [48394.611537] ksmbd: RDMA r/w request 0x0: token 0x669d, length 0x20000
    [48394.612054] ksmbd: smb_direct: RDMA write, len 0x20000, needed credits 0x1
    [48394.612572] ksmbd: filename 129k.bin, offset 131072, len 131072
    [48394.614189] ksmbd: nbytes 1024, offset 132096 mincount 0
    [48394.614585] ksmbd: Failed to process 8 [-22]
    
    And we can reproduce it with cifs.ko,
    e.g. dd if=129k.bin of=/dev/null bs=128KB count=2
    
    This problem is that ksmbd rdma return error if remaining bytes is less
    than Length of Buffer Descriptor V1 Structure.
    
    smb_direct_rdma_xmit()
    ...
         if (desc_buf_len == 0 || total_length > buf_len ||
               total_length > t->max_rdma_rw_size)
                   return -EINVAL;
    
    This patch reduce descriptor size with remaining bytes and remove the
    check for total_length and buf_len.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a13ecb96230e8b7b91967e292836f7b01ec8111
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Fri Aug 25 23:41:58 2023 +0900

    ksmbd: replace one-element array with flex-array member in struct smb2_ea_info
    
    commit 0ba5439d9afa2722e7728df56f272c89987540a4 upstream.
    
    UBSAN complains about out-of-bounds array indexes on 1-element arrays in
    struct smb2_ea_info.
    
    UBSAN: array-index-out-of-bounds in fs/smb/server/smb2pdu.c:4335:15
    index 1 is out of range for type 'char [1]'
    CPU: 1 PID: 354 Comm: kworker/1:4 Not tainted 6.5.0-rc4 #1
    Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop
    Reference Platform, BIOS 6.00 07/22/2020
    Workqueue: ksmbd-io handle_ksmbd_work [ksmbd]
    Call Trace:
     <TASK>
     __dump_stack linux/lib/dump_stack.c:88
     dump_stack_lvl+0x48/0x70 linux/lib/dump_stack.c:106
     dump_stack+0x10/0x20 linux/lib/dump_stack.c:113
     ubsan_epilogue linux/lib/ubsan.c:217
     __ubsan_handle_out_of_bounds+0xc6/0x110 linux/lib/ubsan.c:348
     smb2_get_ea linux/fs/smb/server/smb2pdu.c:4335
     smb2_get_info_file linux/fs/smb/server/smb2pdu.c:4900
     smb2_query_info+0x63ae/0x6b20 linux/fs/smb/server/smb2pdu.c:5275
     __process_request linux/fs/smb/server/server.c:145
     __handle_ksmbd_work linux/fs/smb/server/server.c:213
     handle_ksmbd_work+0x348/0x10b0 linux/fs/smb/server/server.c:266
     process_one_work+0x85a/0x1500 linux/kernel/workqueue.c:2597
     worker_thread+0xf3/0x13a0 linux/kernel/workqueue.c:2748
     kthread+0x2b7/0x390 linux/kernel/kthread.c:389
     ret_from_fork+0x44/0x90 linux/arch/x86/kernel/process.c:145
     ret_from_fork_asm+0x1b/0x30 linux/arch/x86/entry/entry_64.S:304
     </TASK>
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f1d6cb0eb6af3a8088dc24b7ddee9a9711538c4
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Fri Aug 25 23:40:31 2023 +0900

    ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob()
    
    commit 4b081ce0d830b684fdf967abc3696d1261387254 upstream.
    
    If authblob->SessionKey.Length is bigger than session key
    size(CIFS_KEY_SIZE), slub overflow can happen in key exchange codes.
    cifs_arc4_crypt copy to session key array from SessionKey from client.
    
    Cc: stable@vger.kernel.org
    Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21940
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a43bf41344d06a1eb5cfa13c09d0eca091db8ca4
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Fri Aug 25 23:39:40 2023 +0900

    ksmbd: fix wrong DataOffset validation of create context
    
    commit 17d5b135bb720832364e8f55f6a887a3c7ec8fdb upstream.
    
    If ->DataOffset of create context is 0, DataBuffer size is not correctly
    validated. This patch change wrong validation code and consider tag
    length in request.
    
    Cc: stable@vger.kernel.org
    Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21824
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9535cd211933302b843be32a0cdba2244fbee610
Author: Gao Xiang <xiang@kernel.org>
Date:   Thu Aug 31 19:29:58 2023 +0800

    erofs: ensure that the post-EOF tails are all zeroed
    
    commit e4c1cf523d820730a86cae2c6d55924833b6f7ac upstream.
    
    This was accidentally fixed up in commit e4c1cf523d82 but we can't
    take the full change due to other dependancy issues, so here is just
    the actual bugfix that is needed.
    
    [Background]
    
    keltargw reported an issue [1] that with mmaped I/Os, sometimes the
    tail of the last page (after file ends) is not filled with zeroes.
    
    The root cause is that such tail page could be wrongly selected for
    inplace I/Os so the zeroed part will then be filled with compressed
    data instead of zeroes.
    
    A simple fix is to avoid doing inplace I/Os for such tail parts,
    actually that was already fixed upstream in commit e4c1cf523d82
    ("erofs: tidy up z_erofs_do_read_page()") by accident.
    
    [1] https://lore.kernel.org/r/3ad8b469-25db-a297-21f9-75db2d6ad224@linux.alibaba.com
    
    Reported-by: keltargw <keltar.gw@gmail.com>
    Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression support")
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>