commit bcecd2ee19efeae47519e0fd4126559feeea129e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Sep 8 12:28:08 2022 +0200

    Linux 5.15.66
    
    Link: https://lore.kernel.org/r/20220906132821.713989422@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1779c25e48bc9eb4edb47d2c8e04459ef19d681
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Sep 6 14:21:27 2022 +0200

    USB: serial: ch341: fix disabled rx timer on older devices
    
    commit 41ca302a697b64a3dab4676e01d0d11bb184737d upstream.
    
    At least one older CH341 appears to have the RX timer enable bit
    inverted so that setting it disables the RX timer and prevents the FIFO
    from emptying until it is full.
    
    Only set the RX timer enable bit for devices with version newer than
    0x27 (even though this probably affects all pre-0x30 devices).
    
    Reported-by: Jonathan Woithe <jwoithe@just42.net>
    Tested-by: Jonathan Woithe <jwoithe@just42.net>
    Link: https://lore.kernel.org/r/Ys1iPTfiZRWj2gXs@marvin.atrad.com.au
    Fixes: 4e46c410e050 ("USB: serial: ch341: reinitialize chip on reconfiguration")
    Cc: stable@vger.kernel.org      # 4.10
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0923b4f38df5f9c2c5d511227e23873d7293906
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Sep 6 14:21:26 2022 +0200

    USB: serial: ch341: fix lost character on LCR updates
    
    commit 8e83622ae7ca481c76c8fd9579877f6abae64ca2 upstream.
    
    Disable LCR updates for pre-0x30 devices which use a different (unknown)
    protocol for line control and where the current register write causes
    the next received character to be lost.
    
    Note that updating LCR using the INIT command has no effect on these
    devices either.
    
    Reported-by: Jonathan Woithe <jwoithe@just42.net>
    Tested-by: Jonathan Woithe <jwoithe@just42.net>
    Link: https://lore.kernel.org/r/Ys1iPTfiZRWj2gXs@marvin.atrad.com.au
    Fixes: 4e46c410e050 ("USB: serial: ch341: reinitialize chip on reconfiguration")
    Fixes: 55fa15b5987d ("USB: serial: ch341: fix baud rate and line-control handling")
    Cc: stable@vger.kernel.org      # 4.10
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [ johan: adjust context to 5.15 ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55d328924347dfb315fe096efdb59567a9a7a362
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Tue Sep 6 14:07:02 2022 +0200

    usb: dwc3: disable USB core PHY management
    
    commit 6000b8d900cd5f52fbcd0776d0cc396e88c8c2ea upstream.
    
    The dwc3 driver manages its PHYs itself so the USB core PHY management
    needs to be disabled.
    
    Use the struct xhci_plat_priv hack added by commits 46034a999c07 ("usb:
    host: xhci-plat: add platform data support") and f768e718911e ("usb:
    host: xhci-plat: add priv quirk for skip PHY initialization") to
    propagate the setting for now.
    
    Fixes: 4e88d4c08301 ("usb: add a flag to skip PHY initialization to struct usb_hcd")
    Fixes: 178a0bce05cb ("usb: core: hcd: integrate the PHY wrapper into the HCD core")
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Cc: stable <stable@kernel.org>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20220825131836.19769-1-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ johan: adjust context to 5.15 ]
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 121c6e37da76f07385d490ee525ab3231f2c6b86
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Tue Sep 6 14:07:01 2022 +0200

    usb: dwc3: qcom: fix use-after-free on runtime-PM wakeup
    
    commit  a872ab303d5ddd4c965f9cd868677781a33ce35a upstream.
    
    The Qualcomm dwc3 runtime-PM implementation checks the xhci
    platform-device pointer in the wakeup-interrupt handler to determine
    whether the controller is in host mode and if so triggers a resume.
    
    After a role switch in OTG mode the xhci platform-device would have been
    freed and the next wakeup from runtime suspend would access the freed
    memory.
    
    Note that role switching is executed from a freezable workqueue, which
    guarantees that the pointer is stable during suspend.
    
    Also note that runtime PM has been broken since commit 2664deb09306
    ("usb: dwc3: qcom: Honor wakeup enabled/disabled state"), which
    incidentally also prevents this issue from being triggered.
    
    Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
    Cc: stable@vger.kernel.org      # 4.18
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20220804151001.23612-5-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ johan: adjust context for 5.15 ]
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d6a2d022010196f07d1f8b7ddcd248726dfe2d5
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Tue Sep 6 14:07:00 2022 +0200

    usb: dwc3: fix PHY disable sequence
    
    commit d2ac7bef95c9ead307801ccb6cb6dfbeb14247bf upstream.
    
    Generic PHYs must be powered-off before they can be tore down.
    
    Similarly, suspending legacy PHYs after having powered them off makes no
    sense.
    
    Fix the dwc3_core_exit() (e.g. called during suspend) and open-coded
    dwc3_probe() error-path sequences that got this wrong.
    
    Note that this makes dwc3_core_exit() match the dwc3_core_init() error
    path with respect to powering off the PHYs.
    
    Fixes: 03c1fd622f72 ("usb: dwc3: core: add phy cleanup for probe error handling")
    Fixes: c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
    Cc: stable@vger.kernel.org      # 4.8
    Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20220804151001.23612-2-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ johan: adjust context to 5.15 ]
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b775fbf532dc01ae53a6fc56168fd30cb4b0c658
Author: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Date:   Sun Sep 4 15:19:01 2022 +0200

    kbuild: Add skip_encoding_btf_enum64 option to pahole
    
    New pahole (version 1.24) generates by default new BTF_KIND_ENUM64 BTF tag,
    which is not supported by stable kernel.
    
    As a result the kernel with CONFIG_DEBUG_INFO_BTF option will fail to
    compile with following error:
    
      BTFIDS  vmlinux
    FAILED: load BTF from vmlinux: Invalid argument
    
    New pahole provides --skip_encoding_btf_enum64 option to skip BTF_KIND_ENUM64
    generation and produce BTF supported by stable kernel.
    
    Adding this option to scripts/pahole-flags.sh.
    
    This change does not have equivalent commit in linus tree, because linus tree
    has support for BTF_KIND_ENUM64 tag, so it does not need to be disabled.
    
    Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0baced0e0938f2895ceba54038eaf15ed91032e7
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Sun Sep 4 15:19:00 2022 +0200

    kbuild: Unify options for BTF generation for vmlinux and modules
    
    commit e27f05147bff21408c1b8410ad8e90cd286e7952 upstream.
    
    Using new PAHOLE_FLAGS variable to pass extra arguments to
    pahole for both vmlinux and modules BTF data generation.
    
    Adding new scripts/pahole-flags.sh script that detect and
    prints pahole options.
    
    [ fixed issues found by kernel test robot ]
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211029125729.70002-1-jolsa@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 309aea4b6b813f6678c3a547cfd7fe3a76ffa976
Author: Mazin Al Haddad <mazinalhaddad05@gmail.com>
Date:   Sun Aug 14 04:52:12 2022 +0300

    tty: n_gsm: add sanity check for gsm->receive in gsm_receive_buf()
    
    commit f16c6d2e58a4c2b972efcf9eb12390ee0ba3befb upstream.
    
    A null pointer dereference can happen when attempting to access the
    "gsm->receive()" function in gsmld_receive_buf(). Currently, the code
    assumes that gsm->recieve is only called after MUX activation.
    Since the gsmld_receive_buf() function can be accessed without the need to
    initialize the MUX, the gsm->receive() function will not be set and a
    NULL pointer dereference will occur.
    
    Fix this by avoiding the call to "gsm->receive()" in case the function is
    not initialized by adding a sanity check.
    
    Call Trace:
     <TASK>
     gsmld_receive_buf+0x1c2/0x2f0 drivers/tty/n_gsm.c:2861
     tiocsti drivers/tty/tty_io.c:2293 [inline]
     tty_ioctl+0xa75/0x15d0 drivers/tty/tty_io.c:2692
     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+0x193/0x200 fs/ioctl.c:856
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Link: https://syzkaller.appspot.com/bug?id=bdf035c61447f8c6e0e6920315d577cb5cc35ac5
    Fixes: 01aecd917114 ("tty: n_gsm: fix tty registration before control channel open")
    Cc: stable <stable@kernel.org>
    Reported-and-tested-by: syzbot+e3563f0c94e188366dbb@syzkaller.appspotmail.com
    Signed-off-by: Mazin Al Haddad <mazinalhaddad05@gmail.com>
    Link: https://lore.kernel.org/r/20220814015211.84180-1-mazinalhaddad05@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1787ec7dcc3761e040d0cd9896d3a40b4efac4cf
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Jun 17 22:59:48 2022 +0300

    drm/i915: Skip wm/ddb readout for disabled pipes
    
    commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 upstream.
    
    The stuff programmed into the wm/ddb registers of planes
    on disabled pipes doesn't matter. So during readout just
    leave our software state tracking for those zeroed.
    
    This should avoid us trying too hard to clean up after
    whatever mess the VBIOS/GOP left in there. The actual
    hardware state will get cleaned up if/when we enable
    the pipe anyway.
    
    Cc: stable@vger.kernel.org
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5711
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220617195948.24007-1-ville.syrjala@linux.intel.com
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    (cherry picked from commit b183db8f4783ca2efc9b47734f15aad9477a108a)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9a0f49be767a45aa1dc7d846a2745bb7849268a
Author: Diego Santa Cruz <Diego.SantaCruz@spinetix.com>
Date:   Thu Jun 16 15:41:37 2022 +0300

    drm/i915/glk: ECS Liva Q2 needs GLK HDMI port timing quirk
    
    commit 919bef7a106ade2bda73681bbc2f3678198f44fc upstream.
    
    The quirk added in upstream commit 90c3e2198777 ("drm/i915/glk: Add
    Quirk for GLK NUC HDMI port issues.") is also required on the ECS Liva
    Q2.
    
    Note: Would be nicer to figure out the extra delay required for the
    retimer without quirks, however don't know how to check for that.
    
    Cc: stable@vger.kernel.org
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1326
    Signed-off-by: Diego Santa Cruz <Diego.SantaCruz@spinetix.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220616124137.3184371-1-jani.nikula@intel.com
    (cherry picked from commit 08e9505fa8f9aa00072a47b6f234d89b6b27a89c)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 301be8985e8759a10bfb7c9b2b82c19d23bfce4f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Aug 23 09:27:17 2022 +0200

    ALSA: seq: Fix data-race at module auto-loading
    
    commit 3e7e04b747adea36f349715d9f0998eeebf15d72 upstream.
    
    It's been reported that there is a possible data-race accessing to the
    global card_requested[] array at ALSA sequencer core, which is used
    for determining whether to call request_module() for the card or not.
    This data race itself is almost harmless, as it might end up with one
    extra request_module() call for the already loaded module at most.
    But it's still better to fix.
    
    This patch addresses the possible data race of card_requested[] and
    client_requested[] arrays by replacing them with bitmask.
    It's an atomic operation and can work without locks.
    
    Reported-by: Abhishek Shah <abhishek.shah@columbia.edu>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/CAEHB24_ay6YzARpA1zgCsE7=H9CSJJzux618E=Ka4h0YdKn=qA@mail.gmail.com
    Link: https://lore.kernel.org/r/20220823072717.1706-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b7a07fcc5d4918c4722a3522a14092efc8ed090
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Aug 23 09:27:16 2022 +0200

    ALSA: seq: oss: Fix data-race for max_midi_devs access
    
    commit 22dec134dbfa825b963f8a1807ad19b943e46a56 upstream.
    
    ALSA OSS sequencer refers to a global variable max_midi_devs at
    creating a new port, storing it to its own field.  Meanwhile this
    variable may be changed by other sequencer events at
    snd_seq_oss_midi_check_exit_port() in parallel, which may cause a data
    race.
    
    OTOH, this data race itself is almost harmless, as the access to the
    MIDI device is done via get_mdev() and it's protected with a refcount,
    hence its presence is guaranteed.
    
    Though, it's sill better to address the data-race from the code sanity
    POV, and this patch adds the proper spinlock for the protection.
    
    Reported-by: Abhishek Shah <abhishek.shah@columbia.edu>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/CAEHB2493pZRXs863w58QWnUTtv3HHfg85aYhLn5HJHCwxqtHQg@mail.gmail.com
    Link: https://lore.kernel.org/r/20220823072717.1706-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2c973b52f149aed7ff3f363a53698fef1a843ce
Author: Kacper Michajłow <kasper93@gmail.com>
Date:   Sat Aug 27 22:33:28 2022 +0200

    ALSA: hda/realtek: Add speaker AMP init for Samsung laptops with ALC298
    
    commit a2d57ebec1e15f0ac256eb8397e82b07adfaaacc upstream.
    
    Magic initialization sequence was extracted from Windows driver and
    cleaned up manually.
    
    Fixes internal speakers output.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=207423
    Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1851518
    Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220827203328.30363-1-kasper93@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5652d5d71cfcd09064942e82590cfde333bbbc5
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Fri Aug 26 16:29:54 2022 +0200

    net: mac802154: Fix a condition in the receive path
    
    commit f0da47118c7e93cdbbc6fb403dd729a5f2c90ee3 upstream.
    
    Upon reception, a packet must be categorized, either it's destination is
    the host, or it is another host. A packet with no destination addressing
    fields may be valid in two situations:
    - the packet has no source field: only ACKs are built like that, we
      consider the host as the destination.
    - the packet has a valid source field: it is directed to the PAN
      coordinator, as for know we don't have this information we consider we
      are not the PAN coordinator.
    
    There was likely a copy/paste error made during a previous cleanup
    because the if clause is now containing exactly the same condition as in
    the switch case, which can never be true. In the past the destination
    address was used in the switch and the source address was used in the
    if, which matches what the spec says.
    
    Cc: stable@vger.kernel.org
    Fixes: ae531b9475f6 ("ieee802154: use ieee802154_addr instead of *_sa variants")
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/r/20220826142954.254853-1-miquel.raynal@bootlin.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b9f3743a8220989f8289138f7414bc56fb5e425
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Thu Aug 25 13:36:45 2022 +0200

    net: Use u64_stats_fetch_begin_irq() for stats fetch.
    
    commit 278d3ba61563ceed3cb248383ced19e14ec7bc1f upstream.
    
    On 32bit-UP u64_stats_fetch_begin() disables only preemption. If the
    reader is in preemptible context and the writer side
    (u64_stats_update_begin*()) runs in an interrupt context (IRQ or
    softirq) then the writer can update the stats during the read operation.
    This update remains undetected.
    
    Use u64_stats_fetch_begin_irq() to ensure the stats fetch on 32bit-UP
    are not interrupted by a writer. 32bit-SMP remains unaffected by this
    change.
    
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Catherine Sullivan <csully@google.com>
    Cc: David Awogbemila <awogbemila@google.com>
    Cc: Dimitris Michailidis <dmichail@fungible.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Hans Ulli Kroll <ulli.kroll@googlemail.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Jeroen de Borst <jeroendb@google.com>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Simon Horman <simon.horman@corigine.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: oss-drivers@corigine.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57f1407ca1662288d41c509103f2a1462d1c4dd4
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Mon Aug 29 12:01:21 2022 +0200

    ip: fix triggering of 'icmp redirect'
    
    commit eb55dc09b5dd040232d5de32812cc83001a23da6 upstream.
    
    __mkroute_input() uses fib_validate_source() to trigger an icmp redirect.
    My understanding is that fib_validate_source() is used to know if the src
    address and the gateway address are on the same link. For that,
    fib_validate_source() returns 1 (same link) or 0 (not the same network).
    __mkroute_input() is the only user of these positive values, all other
    callers only look if the returned value is negative.
    
    Since the below patch, fib_validate_source() didn't return anymore 1 when
    both addresses are on the same network, because the route lookup returns
    RT_SCOPE_LINK instead of RT_SCOPE_HOST. But this is, in fact, right.
    Let's adapat the test to return 1 again when both addresses are on the same
    link.
    
    CC: stable@vger.kernel.org
    Fixes: 747c14307214 ("ip: fix dflt addr selection for connected nexthop")
    Reported-by: kernel test robot <yujie.liu@intel.com>
    Reported-by: Heng Qi <hengqi@linux.alibaba.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20220829100121.3821-1-nicolas.dichtel@6wind.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d20c6f932f2758078d0454729129c894fe353e7
Author: Siddh Raman Pant <code@siddh.me>
Date:   Sat Aug 20 01:33:40 2022 +0530

    wifi: mac80211: Fix UAF in ieee80211_scan_rx()
    
    commit 60deb9f10eec5c6a20252ed36238b55d8b614a2c upstream.
    
    ieee80211_scan_rx() tries to access scan_req->flags after a
    null check, but a UAF is observed when the scan is completed
    and __ieee80211_scan_completed() executes, which then calls
    cfg80211_scan_done() leading to the freeing of scan_req.
    
    Since scan_req is rcu_dereference()'d, prevent the racing in
    __ieee80211_scan_completed() by ensuring that from mac80211's
    POV it is no longer accessed from an RCU read critical section
    before we call cfg80211_scan_done().
    
    Cc: stable@vger.kernel.org
    Link: https://syzkaller.appspot.com/bug?extid=f9acff9bf08a845f225d
    Reported-by: syzbot+f9acff9bf08a845f225d@syzkaller.appspotmail.com
    Suggested-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: Siddh Raman Pant <code@siddh.me>
    Link: https://lore.kernel.org/r/20220819200340.34826-1-code@siddh.me
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 552ba102a6898630a7d16887f29e606d6fabe508
Author: Siddh Raman Pant <code@siddh.me>
Date:   Sun Aug 14 20:45:12 2022 +0530

    wifi: mac80211: Don't finalize CSA in IBSS mode if state is disconnected
    
    commit 15bc8966b6d3a5b9bfe4c9facfa02f2b69b1e5f0 upstream.
    
    When we are not connected to a channel, sending channel "switch"
    announcement doesn't make any sense.
    
    The BSS list is empty in that case. This causes the for loop in
    cfg80211_get_bss() to be bypassed, so the function returns NULL
    (check line 1424 of net/wireless/scan.c), causing the WARN_ON()
    in ieee80211_ibss_csa_beacon() to get triggered (check line 500
    of net/mac80211/ibss.c), which was consequently reported on the
    syzkaller dashboard.
    
    Thus, check if we have an existing connection before generating
    the CSA beacon in ieee80211_ibss_finish_csa().
    
    Cc: stable@vger.kernel.org
    Fixes: cd7760e62c2a ("mac80211: add support for CSA in IBSS mode")
    Link: https://syzkaller.appspot.com/bug?id=05603ef4ae8926761b678d2939a3b2ad28ab9ca6
    Reported-by: syzbot+b6c9fe29aefe68e4ad34@syzkaller.appspotmail.com
    Signed-off-by: Siddh Raman Pant <code@siddh.me>
    Tested-by: syzbot+b6c9fe29aefe68e4ad34@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20220814151512.9985-1-code@siddh.me
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 253ec5fb84057c681a30d20314b8662fe424e3df
Author: Isaac J. Manjarres <isaacmanjarres@google.com>
Date:   Wed Aug 17 11:40:26 2022 -0700

    driver core: Don't probe devices after bus_type.match() probe deferral
    
    commit 25e9fbf0fd38868a429feabc38abebfc6dbf6542 upstream.
    
    Both __device_attach_driver() and __driver_attach() check the return
    code of the bus_type.match() function to see if the device needs to be
    added to the deferred probe list. After adding the device to the list,
    the logic attempts to bind the device to the driver anyway, as if the
    device had matched with the driver, which is not correct.
    
    If __device_attach_driver() detects that the device in question is not
    ready to match with a driver on the bus, then it doesn't make sense for
    the device to attempt to bind with the current driver or continue
    attempting to match with any of the other drivers on the bus. So, update
    the logic in __device_attach_driver() to reflect this.
    
    If __driver_attach() detects that a driver tried to match with a device
    that is not ready to match yet, then the driver should not attempt to bind
    with the device. However, the driver can still attempt to match and bind
    with other devices on the bus, as drivers can be bound to multiple
    devices. So, update the logic in __driver_attach() to reflect this.
    
    Fixes: 656b8035b0ee ("ARM: 8524/1: driver cohandle -EPROBE_DEFER from bus_type.match()")
    Cc: stable@vger.kernel.org
    Cc: Saravana Kannan <saravanak@google.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Saravana Kannan <saravanak@google.com>
    Signed-off-by: Isaac J. Manjarres <isaacmanjarres@google.com>
    Link: https://lore.kernel.org/r/20220817184026.3468620-1-isaacmanjarres@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7da29a2cc5147b1584113280deb527e3ee2001f4
Author: Krishna Kurapati <quic_kriskura@quicinc.com>
Date:   Sat Aug 27 08:45:10 2022 +0530

    usb: gadget: mass_storage: Fix cdrom data transfers on MAC-OS
    
    commit 9d4dc16ec71bd6368548e9743223e449b4377fc7 upstream.
    
    During cdrom emulation, the response to read_toc command must contain
    the cdrom address as the number of sectors (2048 byte sized blocks)
    represented either as an absolute value (when MSF bit is '0') or in
    terms of PMin/PSec/PFrame (when MSF bit is set to '1'). Incase of
    cdrom, the fsg_lun_open call sets the sector size to 2048 bytes.
    
    When MAC OS sends a read_toc request with MSF set to '1', the
    store_cdrom_address assumes that the address being provided is the
    LUN size represented in 512 byte sized blocks instead of 2048. It
    tries to modify the address further to convert it to 2048 byte sized
    blocks and store it in MSF format. This results in data transfer
    failures as the cdrom address being provided in the read_toc response
    is incorrect.
    
    Fixes: 3f565a363cee ("usb: gadget: storage: adapt logic block size to bound block devices")
    Cc: stable@vger.kernel.org
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
    Link: https://lore.kernel.org/r/1661570110-19127-1-git-send-email-quic_kriskura@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 299f4f420f23c94da9b6cbed0812045578007d4e
Author: Chunfeng Yun <chunfeng.yun@mediatek.com>
Date:   Fri Aug 19 16:05:56 2022 +0800

    usb: xhci-mtk: fix bandwidth release issue
    
    commit 6020f480004a80cdad4ae5ee180a231c4f65595b upstream.
    
    This happens when @udev->reset_resume is set to true, when usb resume,
    the flow as below:
      - hub_resume
        - usb_disable_interface
          - usb_disable_endpoint
            - usb_hcd_disable_endpoint
              - xhci_endpoint_disable  // it set @ep->hcpriv to NULL
    
    Then when reset usb device, it will drop allocated endpoints,
    the flow as below:
      - usb_reset_and_verify_device
        - usb_hcd_alloc_bandwidth
          - xhci_mtk_drop_ep
    
    but @ep->hcpriv is already set to NULL, the bandwidth will be not
    released anymore.
    
    Due to the added endponts are stored in hash table, we can drop the check
    of @ep->hcpriv.
    
    Fixes: 4ce186665e7c ("usb: xhci-mtk: Do not use xhci's virt_dev in drop_endpoint")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Link: https://lore.kernel.org/r/20220819080556.32215-2-chunfeng.yun@mediatek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27102b39b6d09a0afb37194107c03331b7634a81
Author: Chunfeng Yun <chunfeng.yun@mediatek.com>
Date:   Fri Aug 19 16:05:55 2022 +0800

    usb: xhci-mtk: relax TT periodic bandwidth allocation
    
    commit 8b13ea05117ffad4727b0971ed09122d5c91c4dc upstream.
    
    Currently uses the worst case byte budgets on FS/LS bus bandwidth,
    for example, for an isochronos IN endpoint with 192 bytes budget, it
    will consume the whole 5 uframes(188 * 5) while the actual FS bus
    budget should be just 192 bytes. It cause that many usb audio headsets
    with 3 interfaces (audio input, audio output, and HID) cannot be
    configured.
    To improve it, changes to use "approximate" best case budget for FS/LS
    bandwidth management. For the same endpoint from the above example,
    the approximate best case budget is now reduced to (188 * 2) bytes.
    
    Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20220819080556.32215-1-chunfeng.yun@mediatek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c548b99e1c37db6f7df86ecfe9a1f895d6c5966e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Aug 26 15:31:32 2022 -0400

    USB: core: Prevent nested device-reset calls
    
    commit 9c6d778800b921bde3bff3cff5003d1650f942d1 upstream.
    
    Automatic kernel fuzzing revealed a recursive locking violation in
    usb-storage:
    
    ============================================
    WARNING: possible recursive locking detected
    5.18.0 #3 Not tainted
    --------------------------------------------
    kworker/1:3/1205 is trying to acquire lock:
    ffff888018638db8 (&us_interface_key[i]){+.+.}-{3:3}, at:
    usb_stor_pre_reset+0x35/0x40 drivers/usb/storage/usb.c:230
    
    but task is already holding lock:
    ffff888018638db8 (&us_interface_key[i]){+.+.}-{3:3}, at:
    usb_stor_pre_reset+0x35/0x40 drivers/usb/storage/usb.c:230
    
    ...
    
    stack backtrace:
    CPU: 1 PID: 1205 Comm: kworker/1:3 Not tainted 5.18.0 #3
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.13.0-1ubuntu1.1 04/01/2014
    Workqueue: usb_hub_wq hub_event
    Call Trace:
    <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
    print_deadlock_bug kernel/locking/lockdep.c:2988 [inline]
    check_deadlock kernel/locking/lockdep.c:3031 [inline]
    validate_chain kernel/locking/lockdep.c:3816 [inline]
    __lock_acquire.cold+0x152/0x3ca kernel/locking/lockdep.c:5053
    lock_acquire kernel/locking/lockdep.c:5665 [inline]
    lock_acquire+0x1ab/0x520 kernel/locking/lockdep.c:5630
    __mutex_lock_common kernel/locking/mutex.c:603 [inline]
    __mutex_lock+0x14f/0x1610 kernel/locking/mutex.c:747
    usb_stor_pre_reset+0x35/0x40 drivers/usb/storage/usb.c:230
    usb_reset_device+0x37d/0x9a0 drivers/usb/core/hub.c:6109
    r871xu_dev_remove+0x21a/0x270 drivers/staging/rtl8712/usb_intf.c:622
    usb_unbind_interface+0x1bd/0x890 drivers/usb/core/driver.c:458
    device_remove drivers/base/dd.c:545 [inline]
    device_remove+0x11f/0x170 drivers/base/dd.c:537
    __device_release_driver drivers/base/dd.c:1222 [inline]
    device_release_driver_internal+0x1a7/0x2f0 drivers/base/dd.c:1248
    usb_driver_release_interface+0x102/0x180 drivers/usb/core/driver.c:627
    usb_forced_unbind_intf+0x4d/0xa0 drivers/usb/core/driver.c:1118
    usb_reset_device+0x39b/0x9a0 drivers/usb/core/hub.c:6114
    
    This turned out not to be an error in usb-storage but rather a nested
    device reset attempt.  That is, as the rtl8712 driver was being
    unbound from a composite device in preparation for an unrelated USB
    reset (that driver does not have pre_reset or post_reset callbacks),
    its ->remove routine called usb_reset_device() -- thus nesting one
    reset call within another.
    
    Performing a reset as part of disconnect processing is a questionable
    practice at best.  However, the bug report points out that the USB
    core does not have any protection against nested resets.  Adding a
    reset_in_progress flag and testing it will prevent such errors in the
    future.
    
    Link: https://lore.kernel.org/all/CAB7eexKUpvX-JNiLzhXBDWgfg2T9e9_0Tw4HQ6keN==voRbP0g@mail.gmail.com/
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: Rondreis <linhaoguo86@gmail.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YwkflDxvg0KWqyZK@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e22a43ec71714859cc68f4384ccec8a88ff6e96
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Fri Aug 26 16:55:44 2022 -0700

    s390: fix nospec table alignments
    
    commit c9305b6c1f52060377c72aebe3a701389e9f3172 upstream.
    
    Add proper alignment for .nospec_call_table and .nospec_return_table in
    vmlinux.
    
    [hca@linux.ibm.com]: The problem with the missing alignment of the nospec
    tables exist since a long time, however only since commit e6ed91fd0768
    ("s390/alternatives: remove padding generation code") and with
    CONFIG_RELOCATABLE=n the kernel may also crash at boot time.
    
    The above named commit reduced the size of struct alt_instr by one byte,
    so its new size is 11 bytes. Therefore depending on the number of cpu
    alternatives the size of the __alt_instructions array maybe odd, which
    again also causes that the addresses of the nospec tables will be odd.
    
    If the address of __nospec_call_start is odd and the kernel is compiled
    With CONFIG_RELOCATABLE=n the compiler may generate code that loads the
    address of __nospec_call_start with a 'larl' instruction.
    
    This will generate incorrect code since the 'larl' instruction only works
    with even addresses. In result the members of the nospec tables will be
    accessed with an off-by-one offset, which subsequently may lead to
    addressing exceptions within __nospec_revert().
    
    Fixes: f19fbd5ed642 ("s390: introduce execute-trampolines for branches")
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Link: https://lore.kernel.org/r/8719bf1ce4a72ebdeb575200290094e9ce047bcc.1661557333.git.jpoimboe@kernel.org
    Cc: <stable@vger.kernel.org> # 4.16
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 047a4d0f7924e47558ea94e92f89ba079df3b784
Author: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Date:   Fri Aug 19 18:53:43 2022 +0200

    s390/hugetlb: fix prepare_hugepage_range() check for 2 GB hugepages
    
    commit 7c8d42fdf1a84b1a0dd60d6528309c8ec127e87c upstream.
    
    The alignment check in prepare_hugepage_range() is wrong for 2 GB
    hugepages, it only checks for 1 MB hugepage alignment.
    
    This can result in kernel crash in __unmap_hugepage_range() at the
    BUG_ON(start & ~huge_page_mask(h)) alignment check, for mappings
    created with MAP_FIXED at unaligned address.
    
    Fix this by correctly handling multiple hugepage sizes, similar to the
    generic version of prepare_hugepage_range().
    
    Fixes: d08de8e2d867 ("s390/mm: add support for 2GB hugepages")
    Cc: <stable@vger.kernel.org> # 4.8+
    Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efdfa236a085ba2b597c4ff8f1e61a3d6488f1c8
Author: Witold Lipieta <witold.lipieta@thaumatec.com>
Date:   Tue Aug 9 13:29:11 2022 +0200

    usb-storage: Add ignore-residue quirk for NXP PN7462AU
    
    commit 2aa48857ad52236a9564c71183d6cc8893becd41 upstream.
    
    This is USB mass storage primary boot loader for code download on
    NXP PN7462AU.
    
    Without the quirk it is impossible to write whole memory at once as
    device restarts during the write due to bogus residue values reported.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: stable <stable@kernel.org>
    Signed-off-by: Witold Lipieta <witold.lipieta@thaumatec.com>
    Link: https://lore.kernel.org/r/20220809112911.462776-1-witold.lipieta@thaumatec.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f8b5d706dcd96f6c204c23d0c0328e912620dc7
Author: Thierry GUIBERT <thierry.guibert@croix-rouge.fr>
Date:   Fri Aug 19 10:17:02 2022 +0200

    USB: cdc-acm: Add Icom PMR F3400 support (0c26:0020)
    
    commit a10bc71729b236fe36de0d8e4d35c959fd8dec3a upstream.
    
    Supports for ICOM F3400 and ICOM F4400 PMR radios in CDC-ACM driver
    enabling the AT serial port.
    The Vendor Id is 0x0C26
    The Product ID is 0x0020
    
    Output of lsusb :
    Bus 001 Device 009: ID 0c26:0020 Prolific Technology Inc. ICOM Radio
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            2 Communications
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x0c26 Prolific Technology Inc.
      idProduct          0x0020
      bcdDevice            0.00
      iManufacturer           1 ICOM Inc.
      iProduct                2 ICOM Radio
      iSerial                 3 *obfuscated*
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0030
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0xc0
          Self Powered
        MaxPower                0mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass      2 Abstract (modem)
          bInterfaceProtocol      1 AT-commands (v.25ter)
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval              12
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
    
    Signed-off-by: Thierry GUIBERT <thierry.guibert@croix-rouge.fr>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20220819081702.84118-1-thierry.guibert@croix-rouge.fr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf6e4243f80bb64565d26f997afaf5d08da32c11
Author: Pawel Laszczak <pawell@cadence.com>
Date:   Thu Aug 25 08:22:07 2022 +0200

    usb: cdns3: fix incorrect handling TRB_SMM flag for ISOC transfer
    
    commit d5dcc33677d7415c5f23b3c052f9e80cbab9ea4e upstream.
    
    The TRB_SMM flag indicates that DMA has completed the TD service with
    this TRB. Usually it’s a last TRB in TD. In case of ISOC transfer for
    bInterval > 1 each ISOC transfer contains more than one TD associated
    with usb request (one TD per ITP). In such case the TRB_SMM flag will
    be set in every TD and driver will recognize the end of transfer after
    processing the first TD with TRB_SMM. In result driver stops updating
    request->actual and returns incorrect actual length.
    To fix this issue driver additionally must check TRB_CHAIN which is not
    used for isochronous transfers.
    
    Fixes: 249f0a25e8be ("usb: cdns3: gadget: handle sg list use case at completion correctly")
    cc: <stable@vger.kernel.org>
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Pawel Laszczak <pawell@cadence.com>
    Link: https://lore.kernel.org/r/20220825062207.5824-1-pawell@cadence.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1eb9e5d2f6e02f35cc98f2bcae5427d79db6aa1
Author: Pawel Laszczak <pawell@cadence.com>
Date:   Thu Aug 25 08:21:37 2022 +0200

    usb: cdns3: fix issue with rearming ISO OUT endpoint
    
    commit b46a6b09fa056042a302b181a1941f0056944603 upstream.
    
    ISO OUT endpoint is enabled during queuing first usb request
    in transfer ring and disabled when TRBERR is reported by controller.
    After TRBERR and before next transfer added to TR driver must again
    reenable endpoint but does not.
    To solve this issue during processing TRBERR event driver must
    set the flag EP_UPDATE_EP_TRBADDR in priv_ep->flags field.
    
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    cc: <stable@vger.kernel.org>
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Pawel Laszczak <pawell@cadence.com>
    Link: https://lore.kernel.org/r/20220825062137.5766-1-pawell@cadence.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48917032c702fc4889f7c67f4f0969636ee51127
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Tue Aug 23 19:58:42 2022 +0200

    usb: dwc2: fix wrong order of phy_power_on and phy_init
    
    commit f9b995b49a07bd0d43b0e490f59be84415c745ae upstream.
    
    Since 1599069a62c6 ("phy: core: Warn when phy_power_on is called before
    phy_init") the driver complains. In my case (Amlogic SoC) the warning
    is: phy phy-fe03e000.phy.2: phy_power_on was called before phy_init
    So change the order of the two calls. The same change has to be done
    to the order of phy_exit() and phy_power_off().
    
    Fixes: 09a75e857790 ("usb: dwc2: refactor common low-level hw code to platform.c")
    Cc: stable@vger.kernel.org
    Acked-by: Minas Harutyunyan <hminas@synopsys.com>
    Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/dfcc6b40-2274-4e86-e73c-5c5e6aa3e046@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea72b22a05ea546ded582edfdbb2aa29993b1e72
Author: Badhri Jagan Sridharan <badhri@google.com>
Date:   Wed Aug 17 14:54:10 2022 -0700

    usb: typec: tcpm: Return ENOTSUPP for power supply prop writes
    
    commit f2d38edc5e3375e56b4a30d5b66cefd385a2b38c upstream.
    
    When the port does not support USB PD, prevent transition to PD
    only states when power supply property is written. In this case,
    TCPM transitions to SNK_NEGOTIATE_CAPABILITIES
    which should not be the case given that the port is not pd_capable.
    
    [   84.308251] state change SNK_READY -> SNK_NEGOTIATE_CAPABILITIES [rev3 NONE_AMS]
    [   84.308335] Setting usb_comm capable false
    [   84.323367] set_auto_vbus_discharge_threshold mode:3 pps_active:n vbus:5000 ret:0
    [   84.323376] state change SNK_NEGOTIATE_CAPABILITIES -> SNK_WAIT_CAPABILITIES [rev3 NONE_AMS]
    
    Fixes: e9e6e164ed8f6 ("usb: typec: tcpm: Support non-PD mode")
    Cc: stable@vger.kernel.org
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
    Link: https://lore.kernel.org/r/20220817215410.1807477-1-badhri@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4be500c63911a94722abc5b7cb65cb103acbdb12
Author: Utkarsh Patel <utkarsh.h.patel@intel.com>
Date:   Tue Aug 16 13:16:24 2022 +0300

    usb: typec: intel_pmc_mux: Add new ACPI ID for Meteor Lake IOM device
    
    commit 1b1b672cc1d4fb3065dac79efb8901bd6244ef69 upstream.
    
    This adds the necessary ACPI ID for Intel Meteor Lake
    IOM devices.
    
    The callback function is_memory() is modified so that it
    also checks if the resource descriptor passed to it is a
    memory type "Address Space Resource Descriptor".
    
    On Intel Meteor Lake the ACPI memory resource is not
    described using the "32-bit Memory Range Descriptor" because
    the memory is outside of the 32-bit address space. The
    memory resource is described using the "Address Space
    Resource Descriptor" instead.
    
    Intel Meteor Lake is the first platform to describe the
    memory resource for this device with Address Space Resource
    Descriptor, but it most likely will not be the last.
    Therefore the change to the is_memory() callback function
    is made generic.
    
    Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com>
    Cc: stable@vger.kernel.org
    [ heikki: Rewrote the commit message. ]
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20220816101629.69054-2-heikki.krogerus@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b201f6203197f40a3d8acc9621f4b95841fa642a
Author: Pablo Sun <pablo.sun@mediatek.com>
Date:   Thu Aug 4 11:48:03 2022 +0800

    usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles
    
    commit c1e5c2f0cb8a22ec2e14af92afc7006491bebabb upstream.
    
    Fix incorrect pin assignment values when connecting to a monitor with
    Type-C receptacle instead of a plug.
    
    According to specification, an UFP_D receptacle's pin assignment
    should came from the UFP_D pin assignments field (bit 23:16), while
    an UFP_D plug's assignments are described in the DFP_D pin assignments
    (bit 15:8) during Mode Discovery.
    
    For example the LG 27 UL850-W is a monitor with Type-C receptacle.
    The monitor responds to MODE DISCOVERY command with following
    DisplayPort Capability flag:
    
            dp->alt->vdo=0x140045
    
    The existing logic only take cares of UPF_D plug case,
    and would take the bit 15:8 for this 0x140045 case.
    
    This results in an non-existing pin assignment 0x0 in
    dp_altmode_configure.
    
    To fix this problem a new set of macros are introduced
    to take plug/receptacle differences into consideration.
    
    Fixes: 0e3bb7d6894d ("usb: typec: Add driver for DisplayPort alternate mode")
    Cc: stable@vger.kernel.org
    Co-developed-by: Pablo Sun <pablo.sun@mediatek.com>
    Co-developed-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Reviewed-by: Guillaume Ranquet <granquet@baylibre.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Pablo Sun <pablo.sun@mediatek.com>
    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Link: https://lore.kernel.org/r/20220804034803.19486-1-macpaul.lin@mediatek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 577f84a6f1203a311914e7b8eadfe4a752f3fba1
Author: Slark Xiao <slark_xiao@163.com>
Date:   Wed Aug 10 11:30:50 2022 +0800

    USB: serial: option: add support for Cinterion MV32-WA/WB RmNet mode
    
    commit 8ffe20d08f2c95d702c453020d03a4c568a988f0 upstream.
    
    We added PIDs for MV32-WA/WB MBIM mode before, now we need to add
    support for RmNet mode.
    
    Test evidence as below:
    T:  Bus=03 Lev=01 Prnt=01 Port=02 Cnt=03 Dev#=  3 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e2d ProdID=00f3 Rev=05.04
    S:  Manufacturer=Cinterion
    S:  Product=Cinterion PID 0x00F3 USB Mobile Broadband
    S:  SerialNumber=d7b4be8d
    C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    I:  If#=0x1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    
    T:  Bus=03 Lev=01 Prnt=01 Port=02 Cnt=03 Dev#= 10 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e2d ProdID=00f4 Rev=05.04
    S:  Manufacturer=Cinterion
    S:  Product=Cinterion PID 0x00F4 USB Mobile Broadband
    S:  SerialNumber=d095087d
    C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    I:  If#=0x1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    [ johan: sort entries ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6415953963a9ca86113931da50af20b8a9df0cbd
Author: Yonglin Tan <yonglin.tan@outlook.com>
Date:   Tue Jul 19 19:28:00 2022 +0800

    USB: serial: option: add Quectel EM060K modem
    
    commit f766f3abe6dbc9bf8b56a5d53c87e5a17942c154 upstream.
    
    Add usb product id entry for the Quectel EM060K module.
    
    "MBIM mode": DIAG + NMEA + AT + MODEM + MBIM + QDSS
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=030b Rev= 5.04
    S:  Manufacturer=Quectel
    S:  Product=EM060K-GL
    S:  SerialNumber=89fb57db
    C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#= 8 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 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=ff Prot=40 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=ff Prot=40 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#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 9 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#=12 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Yonglin Tan <yonglin.tan@outlook.com>
    [ johan: mention QDSS port and sort entries ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93c283a0995942d2b3cda7d7e44a6f13b3b52572
Author: Yan Xinyu <sdlyyxy@bupt.edu.cn>
Date:   Thu Jul 14 18:20:37 2022 +0800

    USB: serial: option: add support for OPPO R11 diag port
    
    commit 8d5fc280392735e4441b35de14f2f4860fa8d83c upstream.
    
    Add support for OPPO R11 USB diag serial port to option driver. This
    phone uses Qualcomm Snapdragon 660 SoC.
    
    usb-devices output:
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=22d9 ProdID=276c Rev=04.04
    S:  Manufacturer=OPPO
    S:  Product=SDM660-MTP _SN:09C6BCA7
    S:  SerialNumber=beb2c403
    C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    I:  If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    
    Signed-off-by: Yan Xinyu <sdlyyxy@bupt.edu.cn>
    Link: https://lore.kernel.org/r/20220714102037.4113889-1-sdlyyxy@bupt.edu.cn
    Link: https://lore.kernel.org/r/Yt1WfSZk03Plpnan@hovoldconsulting.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bb1ad8c957df3b53ff7bef6f25cf698626c23a3
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Aug 29 16:25:50 2022 +0200

    USB: serial: cp210x: add Decagon UCA device id
    
    commit ceb4038472a4803e7046ed488b03d11551991514 upstream.
    
    Add the device id for Decagon Devices USB Cable Adapter.
    
    Link: https://lore.kernel.org/r/trinity-819f9db2-d3e1-40e9-a669-9c245817c046-1661523546680@msvc-mesg-web108
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a6c5c5ab734dbe27bd4dede6def79c24154d049
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Aug 25 18:08:39 2022 +0300

    xhci: Add grace period after xHC start to prevent premature runtime suspend.
    
    commit 33e321586e37b642ad10594b9ef25a613555cd08 upstream.
    
    After xHC controller is started, either in probe or resume, it can take
    a while before any of the connected usb devices are visible to the roothub
    due to link training.
    
    It's possible xhci driver loads, sees no acivity and suspends the host
    before the USB device is visible.
    
    In one testcase with a hotplugged xHC controller the host finally detected
    the connected USB device and generated a wake 500ms after host initial
    start.
    
    If hosts didn't suspend the device duringe training it probablty wouldn't
    take up to 500ms to detect it, but looking at specs reveal USB3 link
    training has a couple long timeout values, such as 120ms
    RxDetectQuietTimeout, and 360ms PollingLFPSTimeout.
    
    So Add a 500ms grace period that keeps polling the roothub for 500ms after
    start, preventing runtime suspend until USB devices are detected.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20220825150840.132216-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75913c562f5ba4cf397d835c63f443879167c6f6
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Aug 26 15:31:40 2022 -0400

    media: mceusb: Use new usb_control_msg_*() routines
    
    commit 608e58a0f4617977178131f5f68a3fce1d3f5316 upstream.
    
    Automatic kernel fuzzing led to a WARN about invalid pipe direction in
    the mceusb driver:
    
    ------------[ cut here ]------------
    usb 6-1: BOGUS control dir, pipe 80000380 doesn't match bRequestType 40
    WARNING: CPU: 0 PID: 2465 at drivers/usb/core/urb.c:410
    usb_submit_urb+0x1326/0x1820 drivers/usb/core/urb.c:410
    Modules linked in:
    CPU: 0 PID: 2465 Comm: kworker/0:2 Not tainted 5.19.0-rc4-00208-g69cb6c6556ad #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.13.0-1ubuntu1.1 04/01/2014
    Workqueue: usb_hub_wq hub_event
    RIP: 0010:usb_submit_urb+0x1326/0x1820 drivers/usb/core/urb.c:410
    Code: 7c 24 40 e8 ac 23 91 fd 48 8b 7c 24 40 e8 b2 70 1b ff 45 89 e8
    44 89 f1 4c 89 e2 48 89 c6 48 c7 c7 a0 30 a9 86 e8 48 07 11 02 <0f> 0b
    e9 1c f0 ff ff e8 7e 23 91 fd 0f b6 1d 63 22 83 05 31 ff 41
    RSP: 0018:ffffc900032becf0 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: ffff8881100f3058 RCX: 0000000000000000
    RDX: ffffc90004961000 RSI: ffff888114c6d580 RDI: fffff52000657d90
    RBP: ffff888105ad90f0 R08: ffffffff812c3638 R09: 0000000000000000
    R10: 0000000000000005 R11: ffffed1023504ef1 R12: ffff888105ad9000
    R13: 0000000000000040 R14: 0000000080000380 R15: ffff88810ba96500
    FS: 0000000000000000(0000) GS:ffff88811a800000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ffe810bda58 CR3: 000000010b720000 CR4: 0000000000350ef0
    Call Trace:
    <TASK>
    usb_start_wait_urb+0x101/0x4c0 drivers/usb/core/message.c:58
    usb_internal_control_msg drivers/usb/core/message.c:102 [inline]
    usb_control_msg+0x31c/0x4a0 drivers/usb/core/message.c:153
    mceusb_gen1_init drivers/media/rc/mceusb.c:1431 [inline]
    mceusb_dev_probe+0x258e/0x33f0 drivers/media/rc/mceusb.c:1807
    
    The reason for the warning is clear enough; the driver sends an
    unusual read request on endpoint 0 but does not set the USB_DIR_IN bit
    in the bRequestType field.
    
    More importantly, the whole situation can be avoided and the driver
    simplified by converting it over to the relatively new
    usb_control_msg_recv() and usb_control_msg_send() routines.  That's
    what this fix does.
    
    Link: https://lore.kernel.org/all/CAB7eexLLApHJwZfMQ=X-PtRhw0BgO+5KcSMS05FNUYejJXqtSA@mail.gmail.com/
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: Rondreis <linhaoguo86@gmail.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YwkfnBFCSEVC6XZu@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c948dd68b9e218d6b18732cf3b1664a54fcf10c
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date:   Mon Aug 15 15:33:34 2022 +0300

    usb: dwc3: pci: Add support for Intel Raptor Lake
    
    commit bad0d1d726ace2db9e0f39c62b173bc7cc43dd6a upstream.
    
    This adds the necessary PCI device ID for the controller
    inside the Intel Raptor Lake CPU block. The controllers that
    are part of the PCH (chipset) have separate device IDs.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20220815123334.87526-1-heikki.krogerus@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23987d01de44507f2e322dcfc154fd64f2238927
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Fri Apr 29 17:10:17 2022 +0300

    thunderbolt: Use the actual buffer in tb_async_error()
    
    commit eb100b8fa8e8b59eb3e5fc7a5fd4a1e3c5950f64 upstream.
    
    The received notification packet is held in pkg->buffer and not in pkg
    itself. Fix this by using the correct buffer.
    
    Fixes: 81a54b5e1986 ("thunderbolt: Let the connection manager handle all notifications")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 895a90ad7b3ee1df3fb58260b63d3192feb60d11
Author: SeongJae Park <sj@kernel.org>
Date:   Wed Aug 31 16:58:23 2022 +0000

    xen-blkfront: Advertise feature-persistent as user requested
    
    commit 9f5e0fe5d05f7e8de7f39b2b10089834eb0ff787 upstream.
    
    The advertisement of the persistent grants feature (writing
    'feature-persistent' to xenbus) should mean not the decision for using
    the feature but only the availability of the feature.  However, commit
    74a852479c68 ("xen-blkfront: add a parameter for disabling of persistent
    grants") made a field of blkfront, which was a place for saving only the
    negotiation result, to be used for yet another purpose: caching of the
    'feature_persistent' parameter value.  As a result, the advertisement,
    which should follow only the parameter value, becomes inconsistent.
    
    This commit fixes the misuse of the semantic by making blkfront saves
    the parameter value in a separate place and advertises the support based
    on only the saved value.
    
    Fixes: 74a852479c68 ("xen-blkfront: add a parameter for disabling of persistent grants")
    Cc: <stable@vger.kernel.org> # 5.10.x
    Suggested-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20220831165824.94815-3-sj@kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e8107d69fc32e675a6559968c35f3fdecac5f8c
Author: SeongJae Park <sj@kernel.org>
Date:   Wed Aug 31 16:58:22 2022 +0000

    xen-blkback: Advertise feature-persistent as user requested
    
    commit 06ba5d2e943e97bb66e75c152e87f1d2c7027a67 upstream.
    
    The advertisement of the persistent grants feature (writing
    'feature-persistent' to xenbus) should mean not the decision for using
    the feature but only the availability of the feature.  However, commit
    aac8a70db24b ("xen-blkback: add a parameter for disabling of persistent
    grants") made a field of blkback, which was a place for saving only the
    negotiation result, to be used for yet another purpose: caching of the
    'feature_persistent' parameter value.  As a result, the advertisement,
    which should follow only the parameter value, becomes inconsistent.
    
    This commit fixes the misuse of the semantic by making blkback saves the
    parameter value in a separate place and advertises the support based on
    only the saved value.
    
    Fixes: aac8a70db24b ("xen-blkback: add a parameter for disabling of persistent grants")
    Cc: <stable@vger.kernel.org> # 5.10.x
    Suggested-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20220831165824.94815-2-sj@kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c235c4fc521f439c4929932bd88f7e018af7055d
Author: Steven Price <steven.price@arm.com>
Date:   Fri Sep 2 12:26:12 2022 +0100

    mm: pagewalk: Fix race between unmap and page walker
    
    [ Upstream commit 8782fb61cc848364e1e1599d76d3c9dd58a1cc06 ]
    
    The mmap lock protects the page walker from changes to the page tables
    during the walk.  However a read lock is insufficient to protect those
    areas which don't have a VMA as munmap() detaches the VMAs before
    downgrading to a read lock and actually tearing down PTEs/page tables.
    
    For users of walk_page_range() the solution is to simply call pte_hole()
    immediately without checking the actual page tables when a VMA is not
    present. We now never call __walk_page_range() without a valid vma.
    
    For walk_page_range_novma() the locking requirements are tightened to
    require the mmap write lock to be taken, and then walking the pgd
    directly with 'no_vma' set.
    
    This in turn means that all page walkers either have a valid vma, or
    it's that special 'novma' case for page table debugging.  As a result,
    all the odd '(!walk->vma && !walk->no_vma)' tests can be removed.
    
    Fixes: dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in munmap")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Steven Price <steven.price@arm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Cc: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 763d77241d8fc79225a939a3512a5b986d4c9aae
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Sep 1 18:35:20 2022 +0300

    xen/grants: prevent integer overflow in gnttab_dma_alloc_pages()
    
    [ Upstream commit e9ea0b30ada008f4e65933f449db6894832cb242 ]
    
    The change from kcalloc() to kvmalloc() means that arg->nr_pages
    might now be large enough that the "args->nr_pages << PAGE_SHIFT" can
    result in an integer overflow.
    
    Fixes: b3f7931f5c61 ("xen/gntdev: switch from kcalloc() to kvcalloc()")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/YxDROJqu/RPvR0bi@kili
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03b1870fbc5e2488370ceccc0e346e71f07dc9d0
Author: Jim Mattson <jmattson@google.com>
Date:   Tue Aug 30 10:49:47 2022 -0700

    KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES
    
    [ Upstream commit 0204750bd4c6ccc2fb7417618477f10373b33f56 ]
    
    KVM should not claim to virtualize unknown IA32_ARCH_CAPABILITIES
    bits. When kvm_get_arch_capabilities() was originally written, there
    were only a few bits defined in this MSR, and KVM could virtualize all
    of them. However, over the years, several bits have been defined that
    KVM cannot just blindly pass through to the guest without additional
    work (such as virtualizing an MSR promised by the
    IA32_ARCH_CAPABILITES feature bit).
    
    Define a mask of supported IA32_ARCH_CAPABILITIES bits, and mask off
    any other bits that are set in the hardware MSR.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Fixes: 5b76a3cff011 ("KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry")
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Vipin Sharma <vipinsh@google.com>
    Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Message-Id: <20220830174947.2182144-1-jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 111a3586ed4a6ee15e467e58c9208152d469f430
Author: Haibo Chen <haibo.chen@nxp.com>
Date:   Wed Aug 31 18:37:35 2022 +0800

    gpio: pca953x: Add mutex_lock for regcache sync in PM
    
    [ Upstream commit 518e26f11af2fe4f5bebf9a0351595d508c7077f ]
    
    The regcache sync will set the cache_bypass = true, at that
    time, when there is regmap write operation, it will bypass
    the regmap cache, then the regcache sync will write back the
    value from cache to register, which is not as our expectation.
    
    Though regmap already use its internal lock to avoid such issue,
    but this driver force disable the regmap internal lock in its
    regmap config: disable_locking = true
    
    To avoid this issue, use the driver's own lock to do the protect
    in system PM.
    
    Fixes: b76574300504 ("gpio: pca953x: Restore registers after suspend/resume cycle")
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53196e0376205ed49b75bfd0475af5e0fbd20156
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Tue Aug 30 03:11:01 2022 +0200

    hwmon: (gpio-fan) Fix array out of bounds access
    
    [ Upstream commit f233d2be38dbbb22299192292983037f01ab363c ]
    
    The driver does not check if the cooling state passed to
    gpio_fan_set_cur_state() exceeds the maximum cooling state as
    stored in fan_data->num_speeds. Since the cooling state is later
    used as an array index in set_fan_speed(), an array out of bounds
    access can occur.
    This can be exploited by setting the state of the thermal cooling device
    to arbitrary values, causing for example a kernel oops when unavailable
    memory is accessed this way.
    
    Example kernel oops:
    [  807.987276] Unable to handle kernel paging request at virtual address ffffff80d0588064
    [  807.987369] Mem abort info:
    [  807.987398]   ESR = 0x96000005
    [  807.987428]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  807.987477]   SET = 0, FnV = 0
    [  807.987507]   EA = 0, S1PTW = 0
    [  807.987536]   FSC = 0x05: level 1 translation fault
    [  807.987570] Data abort info:
    [  807.987763]   ISV = 0, ISS = 0x00000005
    [  807.987801]   CM = 0, WnR = 0
    [  807.987832] swapper pgtable: 4k pages, 39-bit VAs, pgdp=0000000001165000
    [  807.987872] [ffffff80d0588064] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
    [  807.987961] Internal error: Oops: 96000005 [#1] PREEMPT SMP
    [  807.987992] Modules linked in: cmac algif_hash aes_arm64 algif_skcipher af_alg bnep hci_uart btbcm bluetooth ecdh_generic ecc 8021q garp stp llc snd_soc_hdmi_codec brcmfmac vc4 brcmutil cec drm_kms_helper snd_soc_core cfg80211 snd_compress bcm2835_codec(C) snd_pcm_dmaengine syscopyarea bcm2835_isp(C) bcm2835_v4l2(C) sysfillrect v4l2_mem2mem bcm2835_mmal_vchiq(C) raspberrypi_hwmon sysimgblt videobuf2_dma_contig videobuf2_vmalloc fb_sys_fops videobuf2_memops rfkill videobuf2_v4l2 videobuf2_common i2c_bcm2835 snd_bcm2835(C) videodev snd_pcm snd_timer snd mc vc_sm_cma(C) gpio_fan uio_pdrv_genirq uio drm fuse drm_panel_orientation_quirks backlight ip_tables x_tables ipv6
    [  807.988508] CPU: 0 PID: 1321 Comm: bash Tainted: G         C        5.15.56-v8+ #1575
    [  807.988548] Hardware name: Raspberry Pi 3 Model B Rev 1.2 (DT)
    [  807.988574] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  807.988608] pc : set_fan_speed.part.5+0x34/0x80 [gpio_fan]
    [  807.988654] lr : gpio_fan_set_cur_state+0x34/0x50 [gpio_fan]
    [  807.988691] sp : ffffffc008cf3bd0
    [  807.988710] x29: ffffffc008cf3bd0 x28: ffffff80019edac0 x27: 0000000000000000
    [  807.988762] x26: 0000000000000000 x25: 0000000000000000 x24: ffffff800747c920
    [  807.988787] x23: 000000000000000a x22: ffffff800369f000 x21: 000000001999997c
    [  807.988854] x20: ffffff800369f2e8 x19: ffffff8002ae8080 x18: 0000000000000000
    [  807.988877] x17: 0000000000000000 x16: 0000000000000000 x15: 000000559e271b70
    [  807.988938] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [  807.988960] x11: 0000000000000000 x10: ffffffc008cf3c20 x9 : ffffffcfb60c741c
    [  807.989018] x8 : 000000000000000a x7 : 00000000ffffffc9 x6 : 0000000000000009
    [  807.989040] x5 : 000000000000002a x4 : 0000000000000000 x3 : ffffff800369f2e8
    [  807.989062] x2 : 000000000000e780 x1 : 0000000000000001 x0 : ffffff80d0588060
    [  807.989084] Call trace:
    [  807.989091]  set_fan_speed.part.5+0x34/0x80 [gpio_fan]
    [  807.989113]  gpio_fan_set_cur_state+0x34/0x50 [gpio_fan]
    [  807.989199]  cur_state_store+0x84/0xd0
    [  807.989221]  dev_attr_store+0x20/0x38
    [  807.989262]  sysfs_kf_write+0x4c/0x60
    [  807.989282]  kernfs_fop_write_iter+0x130/0x1c0
    [  807.989298]  new_sync_write+0x10c/0x190
    [  807.989315]  vfs_write+0x254/0x378
    [  807.989362]  ksys_write+0x70/0xf8
    [  807.989379]  __arm64_sys_write+0x24/0x30
    [  807.989424]  invoke_syscall+0x4c/0x110
    [  807.989442]  el0_svc_common.constprop.3+0xfc/0x120
    [  807.989458]  do_el0_svc+0x2c/0x90
    [  807.989473]  el0_svc+0x24/0x60
    [  807.989544]  el0t_64_sync_handler+0x90/0xb8
    [  807.989558]  el0t_64_sync+0x1a0/0x1a4
    [  807.989579] Code: b9403801 f9402800 7100003f 8b35cc00 (b9400416)
    [  807.989627] ---[ end trace 8ded4c918658445b ]---
    
    Fix this by checking the cooling state and return an error if it
    exceeds the maximum cooling state.
    
    Tested on a Raspberry Pi 3.
    
    Fixes: b5cf88e46bad ("(gpio-fan): Add thermal control hooks")
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Link: https://lore.kernel.org/r/20220830011101.178843-1-W_Armin@gmx.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b8a284ffe7a9f2d5b8386940845fde82690b8d2
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Wed Jul 13 17:49:52 2022 +0200

    clk: bcm: rpi: Add missing newline
    
    [ Upstream commit 13b5cf8d6a0d4a5d289e1ed046cadc63b416db85 ]
    
    Some log messages lacks the final newline. So add them.
    
    Fixes: 93d2725affd6 ("clk: bcm: rpi: Discover the firmware clocks")
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Link: https://lore.kernel.org/r/20220713154953.3336-3-stefan.wahren@i2se.com
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Ivan T. Ivanov <iivanov@suse.de>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff0b144d4b0a9fbd6efe4d2c0a4b6c9bae2138d2
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Wed Jul 13 17:49:51 2022 +0200

    clk: bcm: rpi: Prevent out-of-bounds access
    
    [ Upstream commit bc163555603e4ae9c817675ad80d618a4cdbfa2d ]
    
    The while loop in raspberrypi_discover_clocks() relies on the assumption
    that the id of the last clock element is zero. Because this data comes
    from the Videocore firmware and it doesn't guarantuee such a behavior
    this could lead to out-of-bounds access. So fix this by providing
    a sentinel element.
    
    Fixes: 93d2725affd6 ("clk: bcm: rpi: Discover the firmware clocks")
    Link: https://github.com/raspberrypi/firmware/issues/1688
    Suggested-by: Phil Elwell <phil@raspberrypi.com>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Link: https://lore.kernel.org/r/20220713154953.3336-2-stefan.wahren@i2se.com
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Ivan T. Ivanov <iivanov@suse.de>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e827a5f32a0d2b454335939fb85bf9c72167a6b4
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri May 20 23:20:58 2022 +0200

    clk: bcm: rpi: Use correct order for the parameters of devm_kcalloc()
    
    [ Upstream commit b7fa6242f3e035308a76284560e4f918dad9b017 ]
    
    We should have 'n', then 'size', not the opposite.
    This is harmless because the 2 values are just multiplied, but having
    the correct order silence a (unpublished yet) smatch warning.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/49d726d11964ca0e3757bdb5659e3b3eaa1572b5.1653081643.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 237b4ef4c08883ea0ae2716ae477b6beb3cc02c5
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Sat Jun 25 10:36:43 2022 +0200

    clk: bcm: rpi: Fix error handling of raspberrypi_fw_get_rate
    
    [ Upstream commit 35f73cca1cecda0c1f8bb7d8be4ce5cd2d46ae8c ]
    
    The function raspberrypi_fw_get_rate (e.g. used for the recalc_rate
    hook) can fail to get the clock rate from the firmware. In this case
    we cannot return a signed error value, which would be casted to
    unsigned long. Fix this by returning 0 instead.
    
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Link: https://lore.kernel.org/r/20220625083643.4012-1-stefan.wahren@i2se.com
    Fixes: 4e85e535e6cc ("clk: bcm283x: add driver interfacing with Raspberry Pi's firmware")
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ba6155d3b2f2d2ba12d961f13ea8987ced18b66
Author: Peter Robinson <pbrobinson@gmail.com>
Date:   Mon Aug 22 16:33:18 2022 -0700

    Input: rk805-pwrkey - fix module autoloading
    
    [ Upstream commit 99077ad668ddd9b4823cc8ce3f3c7a3fc56f6fd9 ]
    
    Add the module alias so the rk805-pwrkey driver will
    autoload when built as a module.
    
    Fixes: 5a35b85c2d92 ("Input: add power key driver for Rockchip RK805 PMIC")
    Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Link: https://lore.kernel.org/r/20220612225437.3628788-1-pbrobinson@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9766749a30f6f4425e3d61ce287e0e6eb5e90e25
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Mon Aug 22 16:14:24 2022 +0800

    clk: core: Fix runtime PM sequence in clk_core_unprepare()
    
    [ Upstream commit 4b592061f7b3971c70e8b72fc42aaead47c24701 ]
    
    In the original commit 9a34b45397e5 ("clk: Add support for runtime PM"),
    the commit message mentioned that pm_runtime_put_sync() would be done
    at the end of clk_core_unprepare(). This mirrors the operations in
    clk_core_prepare() in the opposite order.
    
    However, the actual code that was added wasn't in the order the commit
    message described. Move clk_pm_runtime_put() to the end of
    clk_core_unprepare() so that it is in the correct order.
    
    Fixes: 9a34b45397e5 ("clk: Add support for runtime PM")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Link: https://lore.kernel.org/r/20220822081424.1310926-3-wenst@chromium.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c13b0be5ade0acd43110cc13f6b271507e571616
Author: Stephen Boyd <sboyd@kernel.org>
Date:   Wed Aug 31 10:53:25 2022 -0700

    Revert "clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops"
    
    [ Upstream commit abb5f3f4b1f5f0ad50eb067a00051d3587dec9fb ]
    
    This reverts commit 35b0fac808b95eea1212f8860baf6ad25b88b087. Alexander
    reports that it causes boot failures on i.MX8M Plus based boards
    (specifically imx8mp-tqma8mpql-mba8mpxl.dts).
    
    Reported-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Cc: Chen-Yu Tsai <wenst@chromium.org>
    Fixes: 35b0fac808b9 ("clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops")
    Link: https://lore.kernel.org/r/12115951.O9o76ZdvQC@steina-w
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Link: https://lore.kernel.org/r/20220831175326.2523912-1-sboyd@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 519cd9c4b56e2474c1d592110b52bf59eb9d936b
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Mon Aug 22 16:14:23 2022 +0800

    clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops
    
    [ Upstream commit 35b0fac808b95eea1212f8860baf6ad25b88b087 ]
    
    In the previous commits that added CLK_OPS_PARENT_ENABLE, support for
    this flag was only added to rate change operations (rate setting and
    reparent) and disabling unused subtree. It was not added to the
    clock gate related operations. Any hardware driver that needs it for
    these operations will either see bogus results, or worse, hang.
    
    This has been seen on MT8192 and MT8195, where the imp_ii2_* clk
    drivers set this, but dumping debugfs clk_summary would cause it
    to hang.
    
    Fixes: fc8726a2c021 ("clk: core: support clocks which requires parents enable (part 2)")
    Fixes: a4b3518d146f ("clk: core: support clocks which requires parents enable (part 1)")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Link: https://lore.kernel.org/r/20220822081424.1310926-2-wenst@chromium.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0522550aeed4ec899d16e237be0ae67f8aa1319b
Author: Colin Ian King <colin.i.king@gmail.com>
Date:   Tue Aug 16 13:02:47 2022 +0800

    drm/i915/reg: Fix spelling mistake "Unsupport" -> "Unsupported"
    
    [ Upstream commit 233f56745be446b289edac2ba8184c09365c005e ]
    
    There is a spelling mistake in a gvt_vgpu_err error message. Fix it.
    
    Fixes: 695fbc08d80f ("drm/i915/gvt: replace the gvt_err with gvt_vgpu_err")
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Signed-off-by: Zhi Wang <zhi.a.wang@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20220315202449.2952845-1-colin.i.king@gmail.com
    Reviewed-by: Zhi Wang <zhi.a.wang@intel.com>
    Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fec48eba4783e326a72c2694e47509354a1d0f16
Author: Jim Mattson <jmattson@google.com>
Date:   Wed Aug 10 14:30:50 2022 -0700

    KVM: VMX: Heed the 'msr' argument in msr_write_intercepted()
    
    [ Upstream commit 020dac4187968535f089f83f376a72beb3451311 ]
    
    Regardless of the 'msr' argument passed to the VMX version of
    msr_write_intercepted(), the function always checks to see if a
    specific MSR (IA32_SPEC_CTRL) is intercepted for write.  This behavior
    seems unintentional and unexpected.
    
    Modify the function so that it checks to see if the provided 'msr'
    index is intercepted for write.
    
    Fixes: 67f4b9969c30 ("KVM: nVMX: Handle dynamic MSR intercept toggling")
    Cc: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220810213050.2655000-1-jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e3c9efa7caf16e5acc05eab5e4d0a714e1610b0
Author: Enzo Matsumiya <ematsumiya@suse.de>
Date:   Tue Aug 30 19:51:51 2022 -0300

    cifs: fix small mempool leak in SMB2_negotiate()
    
    commit 27893dfc1285f80f80f46b3b8c95f5d15d2e66d0 upstream.
    
    In some cases of failure (dialect mismatches) in SMB2_negotiate(), after
    the request is sent, the checks would return -EIO when they should be
    rather setting rc = -EIO and jumping to neg_exit to free the response
    buffer from mempool.
    
    Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
    Cc: stable@vger.kernel.org
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81203ab7a6ef843a2b904a0a494f28c457d44d27
Author: Carlos Llamas <cmllamas@google.com>
Date:   Mon Aug 29 20:12:48 2022 +0000

    binder: fix alloc->vma_vm_mm null-ptr dereference
    
    commit 1da52815d5f1b654c89044db0cdc6adce43da1f1 upstream.
    
    Syzbot reported a couple issues introduced by commit 44e602b4e52f
    ("binder_alloc: add missing mmap_lock calls when using the VMA"), in
    which we attempt to acquire the mmap_lock when alloc->vma_vm_mm has not
    been initialized yet.
    
    This can happen if a binder_proc receives a transaction without having
    previously called mmap() to setup the binder_proc->alloc space in [1].
    Also, a similar issue occurs via binder_alloc_print_pages() when we try
    to dump the debugfs binder stats file in [2].
    
    Sample of syzbot's crash report:
      ==================================================================
      KASAN: null-ptr-deref in range [0x0000000000000128-0x000000000000012f]
      CPU: 0 PID: 3755 Comm: syz-executor229 Not tainted 6.0.0-rc1-next-20220819-syzkaller #0
      syz-executor229[3755] cmdline: ./syz-executor2294415195
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/22/2022
      RIP: 0010:__lock_acquire+0xd83/0x56d0 kernel/locking/lockdep.c:4923
      [...]
      Call Trace:
       <TASK>
       lock_acquire kernel/locking/lockdep.c:5666 [inline]
       lock_acquire+0x1ab/0x570 kernel/locking/lockdep.c:5631
       down_read+0x98/0x450 kernel/locking/rwsem.c:1499
       mmap_read_lock include/linux/mmap_lock.h:117 [inline]
       binder_alloc_new_buf_locked drivers/android/binder_alloc.c:405 [inline]
       binder_alloc_new_buf+0xa5/0x19e0 drivers/android/binder_alloc.c:593
       binder_transaction+0x242e/0x9a80 drivers/android/binder.c:3199
       binder_thread_write+0x664/0x3220 drivers/android/binder.c:3986
       binder_ioctl_write_read drivers/android/binder.c:5036 [inline]
       binder_ioctl+0x3470/0x6d00 drivers/android/binder.c:5323
       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+0x193/0x200 fs/ioctl.c:856
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
       [...]
      ==================================================================
    
    Fix these issues by setting up alloc->vma_vm_mm pointer during open()
    and caching directly from current->mm. This guarantees we have a valid
    reference to take the mmap_lock during scenarios described above.
    
    [1] https://syzkaller.appspot.com/bug?extid=f7dc54e5be28950ac459
    [2] https://syzkaller.appspot.com/bug?extid=a75ebe0452711c9e56d9
    
    Fixes: 44e602b4e52f ("binder_alloc: add missing mmap_lock calls when using the VMA")
    Cc: <stable@vger.kernel.org> # v5.15+
    Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
    Reported-by: syzbot+f7dc54e5be28950ac459@syzkaller.appspotmail.com
    Reported-by: syzbot+a75ebe0452711c9e56d9@syzkaller.appspotmail.com
    Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Acked-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Link: https://lore.kernel.org/r/20220829201254.1814484-2-cmllamas@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2a4b5dc8fa71af73bab704d0cac42ac39767ed6
Author: Carlos Llamas <cmllamas@google.com>
Date:   Mon Aug 1 18:25:11 2022 +0000

    binder: fix UAF of ref->proc caused by race condition
    
    commit a0e44c64b6061dda7e00b7c458e4523e2331b739 upstream.
    
    A transaction of type BINDER_TYPE_WEAK_HANDLE can fail to increment the
    reference for a node. In this case, the target proc normally releases
    the failed reference upon close as expected. However, if the target is
    dying in parallel the call will race with binder_deferred_release(), so
    the target could have released all of its references by now leaving the
    cleanup of the new failed reference unhandled.
    
    The transaction then ends and the target proc gets released making the
    ref->proc now a dangling pointer. Later on, ref->node is closed and we
    attempt to take spin_lock(&ref->proc->inner_lock), which leads to the
    use-after-free bug reported below. Let's fix this by cleaning up the
    failed reference on the spot instead of relying on the target to do so.
    
      ==================================================================
      BUG: KASAN: use-after-free in _raw_spin_lock+0xa8/0x150
      Write of size 4 at addr ffff5ca207094238 by task kworker/1:0/590
    
      CPU: 1 PID: 590 Comm: kworker/1:0 Not tainted 5.19.0-rc8 #10
      Hardware name: linux,dummy-virt (DT)
      Workqueue: events binder_deferred_func
      Call trace:
       dump_backtrace.part.0+0x1d0/0x1e0
       show_stack+0x18/0x70
       dump_stack_lvl+0x68/0x84
       print_report+0x2e4/0x61c
       kasan_report+0xa4/0x110
       kasan_check_range+0xfc/0x1a4
       __kasan_check_write+0x3c/0x50
       _raw_spin_lock+0xa8/0x150
       binder_deferred_func+0x5e0/0x9b0
       process_one_work+0x38c/0x5f0
       worker_thread+0x9c/0x694
       kthread+0x188/0x190
       ret_from_fork+0x10/0x20
    
    Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org>
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Cc: stable <stable@kernel.org> # 4.14+
    Link: https://lore.kernel.org/r/20220801182511.3371447-1-cmllamas@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da3c6d0708e64a36886b7143634d3b0432c04dc0
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Aug 15 10:33:21 2022 +0300

    mmc: core: Fix inconsistent sd3_bus_mode at UHS-I SD voltage switch failure
    
    commit 63f1560930e4e1c4f6279b8ae715c9841fe1a6d3 upstream.
    
    If re-initialization results is a different signal voltage, because the
    voltage switch failed previously, but not this time (or vice versa), then
    sd3_bus_mode will be inconsistent with the card because the SD_SWITCH
    command is done only upon first initialization.
    
    Fix by always reading SD_SWITCH information during re-initialization, which
    also means it does not need to be re-read later for the 1.8V fixup
    workaround.
    
    Note, brief testing showed SD_SWITCH took about 1.8ms to 2ms which added
    about 1% to 1.5% to the re-initialization time, so it's not particularly
    significant.
    
    Reported-by: Seunghui Lee <sh043.lee@samsung.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Seunghui Lee <sh043.lee@samsung.com>
    Tested-by: Seunghui Lee <sh043.lee@samsung.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220815073321.63382-3-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bca22970e1c8f220c637131770561f6abecc728
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Aug 15 10:33:20 2022 +0300

    mmc: core: Fix UHS-I SD 1.8V workaround branch
    
    commit 15c56208c79c340686869c31595c209d1431c5e8 upstream.
    
    When introduced, upon success, the 1.8V fixup workaround in
    mmc_sd_init_card() would branch to practically the end of the function, to
    a label named "done". Unfortunately, perhaps due to the label name, over
    time new code has been added that really should have come after "done" not
    before it. Let's fix the problem by moving the label to the correct place
    and rename it "cont".
    
    Fixes: 045d705dc1fb ("mmc: core: Enable the MMC host software queue for the SD card")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Seunghui Lee <sh043.lee@samsung.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220815073321.63382-2-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc9b5b3f2cccb6d78db8fae2649648c72a98e0e5
Author: Niek Nooijens <niek.nooijens@omron.com>
Date:   Mon Aug 1 10:39:25 2022 +0200

    USB: serial: ftdi_sio: add Omron CS1W-CIF31 device id
    
    commit 001047ea241a9646010b2744451dfbc7289542f3 upstream.
    
    works perfectly with:
    modprobe ftdi_sio
    echo "0590 00b2" | tee
    /sys/module/ftdi_sio/drivers/usb-serial\:ftdi_sio/new_id > /dev/null
    
    but doing this every reboot is a pain in the ass.
    
    Signed-off-by: Niek Nooijens <niek.nooijens@omron.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf20c3533efc89578ace94fa20a9e63446223c72
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Mon Aug 29 10:05:30 2022 +0200

    misc: fastrpc: fix memory corruption on open
    
    commit d245f43aab2b61195d8ebb64cef7b5a08c590ab4 upstream.
    
    The probe session-duplication overflow check incremented the session
    count also when there were no more available sessions so that memory
    beyond the fixed-size slab-allocated session array could be corrupted in
    fastrpc_session_alloc() on open().
    
    Fixes: f6f9279f2bf0 ("misc: fastrpc: Add Qualcomm fastrpc basic driver model")
    Cc: stable@vger.kernel.org      # 5.1
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20220829080531.29681-3-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e33b0f322fecd7a92d9dc186535cdf97940a856
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Mon Aug 29 10:05:29 2022 +0200

    misc: fastrpc: fix memory corruption on probe
    
    commit 9baa1415d9abdd1e08362ea2dcfadfacee8690b5 upstream.
    
    Add the missing sanity check on the probed-session count to avoid
    corrupting memory beyond the fixed-size slab-allocated session array
    when there are more than FASTRPC_MAX_SESSIONS sessions defined in the
    devicetree.
    
    Fixes: f6f9279f2bf0 ("misc: fastrpc: Add Qualcomm fastrpc basic driver model")
    Cc: stable@vger.kernel.org      # 5.1
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20220829080531.29681-2-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95ac9601feb527d4d134960ac69ffb4b386ba3fb
Author: Marcus Folkesson <marcus.folkesson@gmail.com>
Date:   Fri Jul 22 15:07:20 2022 +0200

    iio: adc: mcp3911: use correct formula for AD conversion
    
    commit 9e2238e3ae40d371a1130226e0e740aa1601efa6 upstream.
    
    The ADC conversion is actually not rail-to-rail but with a factor 1.5.
    Make use of this factor when calculating actual voltage.
    
    Fixes: 3a89b289df5d ("iio: adc: add support for mcp3911")
    Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220722130726.7627-4-marcus.folkesson@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e933a26e6a2e3d40ed9a269ddb4e0e3ed3ecdb5
Author: Matti Vaittinen <mazziesaccount@gmail.com>
Date:   Fri Aug 19 11:51:07 2022 +0300

    iio: ad7292: Prevent regulator double disable
    
    commit 22b4277641c6823ec03d5b1cd82628e5e53e75b7 upstream.
    
    The ad7292 tries to add an devm_action for disabling a regulator at
    device detach using devm_add_action_or_reset(). The
    devm_add_action_or_reset() does call the release function should adding
    action fail. The driver inspects the value returned by
    devm_add_action_or_reset() and manually calls regulator_disable() if
    adding the action has failed. This leads to double disable and messes
    the enable count for regulator.
    
    Do not manually call disable if devm_add_action_or_reset() fails.
    
    Fixes: 506d2e317a0a ("iio: adc: Add driver support for AD7292")
    Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
    Tested-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
    Link: https://lore.kernel.org/r/Yv9O+9sxU7gAv3vM@fedora
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df1b53bc799d58f79701c465505a206c72ad4ab8
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Sat Aug 27 20:36:27 2022 -0700

    Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag
    
    commit 98e01215708b6d416345465c09dce2bd4868c67a upstream.
    
    syzbot is reporting hung task at __input_unregister_device() [1], for
    iforce_close() waiting at wait_event_interruptible() with dev->mutex held
    is blocking input_disconnect_device() from __input_unregister_device().
    
    It seems that the cause is simply that commit c2b27ef672992a20 ("Input:
    iforce - wait for command completion when closing the device") forgot to
    call wake_up() after clear_bit().
    
    Fix this problem by introducing a helper that calls clear_bit() followed
    by wake_up_all().
    
    Reported-by: syzbot <syzbot+deb6abc36aad4008f407@syzkaller.appspotmail.com>
    Fixes: c2b27ef672992a20 ("Input: iforce - wait for command completion when closing the device")
    Tested-by: syzbot <syzbot+deb6abc36aad4008f407@syzkaller.appspotmail.com>
    Suggested-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
    Co-developed-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Link: https://lore.kernel.org/r/887021c3-4f13-40ce-c8b9-aa6e09faa3a7@I-love.SAKURA.ne.jp
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f185ca8e019bf31fa70a38ff949565a92abf2ed
Author: Sherry Sun <sherry.sun@nxp.com>
Date:   Sun Aug 21 18:15:27 2022 +0800

    tty: serial: lpuart: disable flow control while waiting for the transmit engine to complete
    
    commit d5a2e0834364377a5d5a2fff1890a0b3f0bafd1f upstream.
    
    When the user initializes the uart port, and waits for the transmit
    engine to complete in lpuart32_set_termios(), if the UART TX fifo has
    dirty data and the UARTMODIR enable the flow control, the TX fifo may
    never be empty. So here we should disable the flow control first to make
    sure the transmit engin can complete.
    
    Fixes: 380c966c093e ("tty: serial: fsl_lpuart: add 32-bit register interface support")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
    Link: https://lore.kernel.org/r/20220821101527.10066-1-sherry.sun@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 532b255af19507f7b9a965e1dc4b2e15ee4fcc37
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Aug 18 15:57:20 2022 +0200

    musb: fix USB_MUSB_TUSB6010 dependency
    
    commit a3f2fd22743fc56dd5e3896a3fbddd276df1577f upstream.
    
    Turning on NOP_USB_XCEIV as builtin broke the TUSB6010 driver because
    of an older issue with the depencency.
    
    It is not necessary to forbid NOP_USB_XCEIV=y in combination with
    USB_MUSB_HDRC=m, but only the reverse, which causes the link failure
    from the original Kconfig change.
    
    Use the correct dependency to still allow NOP_USB_XCEIV=n or
    NOP_USB_XCEIV=y but forbid NOP_USB_XCEIV=m when USB_MUSB_HDRC=m
    to fix the multi_v7_defconfig for tusb.
    
    Fixes: ab37a7a890c1 ("ARM: multi_v7_defconfig: Make NOP_USB_XCEIV driver built-in")
    Fixes: c0442479652b ("usb: musb: Fix randconfig build issues for Kconfig options")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20220818135737.3143895-10-arnd@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2535431ae967ad17585513649625fea7db28d4db
Author: Helge Deller <deller@gmx.de>
Date:   Sat Jul 30 20:50:18 2022 +0200

    vt: Clear selection before changing the font
    
    commit 566f9c9f89337792070b5a6062dff448b3e7977f upstream.
    
    When changing the console font with ioctl(KDFONTOP) the new font size
    can be bigger than the previous font. A previous selection may thus now
    be outside of the new screen size and thus trigger out-of-bounds
    accesses to graphics memory if the selection is removed in
    vc_do_resize().
    
    Prevent such out-of-memory accesses by dropping the selection before the
    various con_font_set() console handlers are called.
    
    Reported-by: syzbot+14b0e8f3fd1612e35350@syzkaller.appspotmail.com
    Cc: stable <stable@kernel.org>
    Tested-by: Khalid Masum <khalid.masum.92@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Link: https://lore.kernel.org/r/YuV9apZGNmGfjcor@p100
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a19846f0f45beaa4eb4e0f548ae610fbb420980e
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Aug 21 01:51:29 2022 +0900

    powerpc: align syscall table for ppc32
    
    commit c7acee3d2f128a38b68fb7af85dbbd91bfd0b4ad upstream.
    
    Christophe Leroy reported that commit 7b4537199a4a ("kbuild: link
    symbol CRCs at final link,  removing CONFIG_MODULE_REL_CRCS") broke
    mpc85xx_defconfig + CONFIG_RELOCATABLE=y.
    
        LD      vmlinux
        SYSMAP  System.map
        SORTTAB vmlinux
        CHKREL  vmlinux
      WARNING: 451 bad relocations
      c0b312a9 R_PPC_UADDR32     .head.text-0x3ff9ed54
      c0b312ad R_PPC_UADDR32     .head.text-0x3ffac224
      c0b312b1 R_PPC_UADDR32     .head.text-0x3ffb09f4
      c0b312b5 R_PPC_UADDR32     .head.text-0x3fe184dc
      c0b312b9 R_PPC_UADDR32     .head.text-0x3fe183a8
          ...
    
    The compiler emits a bunch of R_PPC_UADDR32, which is not supported by
    arch/powerpc/kernel/reloc_32.S.
    
    The reason is there exists an unaligned symbol.
    
      $ powerpc-linux-gnu-nm -n vmlinux
        ...
      c0b31258 d spe_aligninfo
      c0b31298 d __func__.0
      c0b312a9 D sys_call_table
      c0b319b8 d __func__.0
    
    Commit 7b4537199a4a is not the root cause. Even before that, I can
    reproduce the same issue for mpc85xx_defconfig + CONFIG_RELOCATABLE=y
    + CONFIG_MODVERSIONS=n.
    
    It is just that nobody noticed because when CONFIG_MODVERSIONS is
    enabled, a __crc_* symbol inserted before sys_call_table was hiding the
    unalignment issue.
    
    Adding alignment to the syscall table for ppc32 fixes the issue.
    
    Cc: stable@vger.kernel.org
    Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Tested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    [mpe: Trim change log discussion, add Cc stable]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/lkml/38605f6a-a568-f884-f06f-ea4da5b214f0@csgroup.eu/
    Link: https://lore.kernel.org/r/20220820165129.1147589-1-masahiroy@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f12afb4b5db01c4baf39eb2e6a5e2ff8074a7b8f
Author: Grzegorz Szymaszek <gszymaszek@short.pl>
Date:   Tue Aug 2 19:18:44 2022 +0200

    staging: r8188eu: add firmware dependency
    
    commit b2fa9e13bbf101c662c4cd974608242a0db98cfc upstream.
    
    The old rtl8188eu module, removed in commit 55dfa29b43d2 ("staging:
    rtl8188eu: remove rtl8188eu driver from staging dir") (Linux kernel
    v5.15-rc1), required (through a MODULE_FIRMWARE call()) the
    rtlwifi/rtl8188eufw.bin firmware file, which the new r8188eu driver no
    longer requires.
    
    I have tested a few RTL8188EUS-based Wi-Fi cards and, while supported by
    both drivers, they do not work when using the new one and the firmware
    wasn't manually loaded. According to Larry Finger, the module
    maintainer, all such cards need the firmware and the driver should
    depend on it (see the linked mails).
    
    Add a proper MODULE_FIRMWARE() call, like it was done in the old driver.
    
    Thanks to Greg Kroah-Hartman and Larry Finger for quick responses to my
    questions.
    
    Cc: stable <stable@kernel.org>
    Link: https://answers.launchpad.net/ubuntu/+source/linux-meta-hwe-5.15/+question/702611
    Link: https://lore.kernel.org/lkml/YukkBu3TNODO3or9@nx64de-df6d00/
    Signed-off-by: Grzegorz Szymaszek <gszymaszek@short.pl>
    Link: https://lore.kernel.org/r/YulcdKfhA8dPQ78s@nx64de-df6d00
    Acked-by: Phillip Potter <phil@philpotter.co.uk>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc02aaf950015850e7589696521c7fca767cea77
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Aug 30 17:55:07 2022 +0300

    staging: rtl8712: fix use after free bugs
    
    commit e230a4455ac3e9b112f0367d1b8e255e141afae0 upstream.
    
    _Read/Write_MACREG callbacks are NULL so the read/write_macreg_hdl()
    functions don't do anything except free the "pcmd" pointer.  It
    results in a use after free.  Delete them.
    
    Fixes: 2865d42c78a9 ("staging: r8712u: Add the new driver to the mainline kernel")
    Cc: stable <stable@kernel.org>
    Reported-by: Zheng Wang <hackerzheng666@gmail.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/Yw4ASqkYcUhUfoY2@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01fd7e12f8fb1fe95cc650df680ed87435bbf24e
Author: Shenwei Wang <shenwei.wang@nxp.com>
Date:   Fri Aug 5 09:45:29 2022 -0500

    serial: fsl_lpuart: RS485 RTS polariy is inverse
    
    commit 846651eca073e2e02e37490a4a52752415d84781 upstream.
    
    The setting of RS485 RTS polarity is inverse in the current driver.
    
    When the property of 'rs485-rts-active-low' is enabled in the dts node,
    the RTS signal should be LOW during sending. Otherwise, if there is no
    such a property, the RTS should be HIGH during sending.
    
    Fixes: 03895cf41d18 ("tty: serial: fsl_lpuart: Add support for RS-485")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Nicolas Diaz <nicolas.diaz@nxp.com>
    Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
    Link: https://lore.kernel.org/r/20220805144529.604856-1-shenwei.wang@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 839ca7969fcfc975e3898d9148b77705315c9a07
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Fri Jul 8 11:47:47 2022 +0100

    soundwire: qcom: fix device status array range
    
    [ Upstream commit 4ef3f2aff1267bfa6d5a90c42a30b927b8aa239b ]
    
    This patch updates device status array range from 11 to 12 as we will
    be reading status from device number 0 to device number 11 inclusive.
    
    Without this patch we can potentially access status array out of range
    during auto-enumeration.
    
    Fixes: aa1262ca6695 ("soundwire: qcom: Check device status before reading devid")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20220708104747.8722-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdc69b070071eb644c94a5e5e72da7b10b975220
Author: Yacan Liu <liuyacan@corp.netease.com>
Date:   Tue Aug 30 23:23:14 2022 +0800

    net/smc: Remove redundant refcount increase
    
    [ Upstream commit a8424a9b4522a3ab9f32175ad6d848739079071f ]
    
    For passive connections, the refcount increment has been done in
    smc_clcsock_accept()-->smc_sock_alloc().
    
    Fixes: 3b2dec2603d5 ("net/smc: restructure client and server code in af_smc")
    Signed-off-by: Yacan Liu <liuyacan@corp.netease.com>
    Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20220830152314.838736-1-liuyacan@corp.netease.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ce0d73b2fbdc5a33be649923692991d6b9af397
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Aug 31 20:01:32 2022 -0700

    Revert "sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb"
    
    [ Upstream commit 0b4f688d53fdc2a731b9d9cdf0c96255bc024ea6 ]
    
    This reverts commit 90fabae8a2c225c4e4936723c38857887edde5cc.
    
    Patch was applied hastily, revert and let the v2 be reviewed.
    
    Fixes: 90fabae8a2c2 ("sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb")
    Link: https://lore.kernel.org/all/87wnao2ha3.fsf@toke.dk/
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aca9d0acda9e8912a1a2eaba0c062b29731d4fe7
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 30 11:56:55 2022 -0700

    tcp: annotate data-race around challenge_timestamp
    
    [ Upstream commit 8c70521238b7863c2af607e20bcba20f974c969b ]
    
    challenge_timestamp can be read an written by concurrent threads.
    
    This was expected, but we need to annotate the race to avoid potential issues.
    
    Following patch moves challenge_timestamp and challenge_count
    to per-netns storage to provide better isolation.
    
    Fixes: 354e4aa391ed ("tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c472d671d9c51c02bb54ee1c5b22e96ea5fe933
Author: Toke Høiland-Jørgensen <toke@toke.dk>
Date:   Wed Aug 31 11:21:03 2022 +0200

    sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb
    
    [ Upstream commit 90fabae8a2c225c4e4936723c38857887edde5cc ]
    
    When the GSO splitting feature of sch_cake is enabled, GSO superpackets
    will be broken up and the resulting segments enqueued in place of the
    original skb. In this case, CAKE calls consume_skb() on the original skb,
    but still returns NET_XMIT_SUCCESS. This can confuse parent qdiscs into
    assuming the original skb still exists, when it really has been freed. Fix
    this by adding the __NET_XMIT_STOLEN flag to the return value in this case.
    
    Fixes: 0c850344d388 ("sch_cake: Conditionally split GSO segments")
    Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-18231
    Link: https://lore.kernel.org/r/20220831092103.442868-1-toke@toke.dk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55fb8c3baa8071c5d533a9ad48624e44e2a04ef5
Author: Cong Wang <cong.wang@bytedance.com>
Date:   Sat Aug 27 11:13:14 2022 -0700

    kcm: fix strp_init() order and cleanup
    
    [ Upstream commit 8fc29ff3910f3af08a7c40a75d436b5720efe2bf ]
    
    strp_init() is called just a few lines above this csk->sk_user_data
    check, it also initializes strp->work etc., therefore, it is
    unnecessary to call strp_done() to cancel the freshly initialized
    work.
    
    And if sk_user_data is already used by KCM, psock->strp should not be
    touched, particularly strp->work state, so we need to move strp_init()
    after the csk->sk_user_data check.
    
    This also makes a lockdep warning reported by syzbot go away.
    
    Reported-and-tested-by: syzbot+9fc084a4348493ef65d2@syzkaller.appspotmail.com
    Reported-by: syzbot+e696806ef96cdd2d87cd@syzkaller.appspotmail.com
    Fixes: e5571240236c ("kcm: Check if sk_user_data already set in kcm_attach")
    Fixes: dff8baa26117 ("kcm: Call strp_stop before strp_done in kcm_attach")
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/r/20220827181314.193710-1-xiyou.wangcong@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 660df4411ef494db2da042024674ebd3cd4c15bf
Author: David Thompson <davthompson@nvidia.com>
Date:   Fri Aug 26 11:59:16 2022 -0400

    mlxbf_gige: compute MDIO period based on i1clk
    
    [ Upstream commit 3a1a274e933fca73fdc960cb1f60636cd285a265 ]
    
    This patch adds logic to compute the MDIO period based on
    the i1clk, and thereafter write the MDIO period into the YU
    MDIO config register. The i1clk resource from the ACPI table
    is used to provide addressing to YU bootrecord PLL registers.
    The values in these registers are used to compute MDIO period.
    If the i1clk resource is not present in the ACPI table, then
    the current default hardcorded value of 430Mhz is used.
    The i1clk clock value of 430MHz is only accurate for boards
    with BF2 mid bin and main bin SoCs. The BF2 high bin SoCs
    have i1clk = 500MHz, but can support a slower MDIO period.
    
    Fixes: f92e1869d74e ("Add Mellanox BlueField Gigabit Ethernet driver")
    Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Link: https://lore.kernel.org/r/20220826155916.12491-1-davthompson@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4c08cbfbcf9b02bc4c54e6f141283e2e0dfae18
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Sat Aug 27 23:38:15 2022 +0800

    ethernet: rocker: fix sleep in atomic context bug in neigh_timer_handler
    
    [ Upstream commit c0955bf957be4bead01fae1d791476260da7325d ]
    
    The function neigh_timer_handler() is a timer handler that runs in an
    atomic context. When used by rocker, neigh_timer_handler() calls
    "kzalloc(.., GFP_KERNEL)" that may sleep. As a result, the sleep in
    atomic context bug will happen. One of the processes is shown below:
    
    ofdpa_fib4_add()
     ...
     neigh_add_timer()
    
    (wait a timer)
    
    neigh_timer_handler()
     neigh_release()
      neigh_destroy()
       rocker_port_neigh_destroy()
        rocker_world_port_neigh_destroy()
         ofdpa_port_neigh_destroy()
          ofdpa_port_ipv4_neigh()
           kzalloc(sizeof(.., GFP_KERNEL) //may sleep
    
    This patch changes the gfp_t parameter of kzalloc() from GFP_KERNEL to
    GFP_ATOMIC in order to mitigate the bug.
    
    Fixes: 00fc0c51e35b ("rocker: Change world_ops API and implementation to be switchdev independant")
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a420d587260185407eda9c5766cfa9bdd5c39a56
Author: Wang Hai <wanghai38@huawei.com>
Date:   Fri Aug 26 17:00:55 2022 +0800

    net/sched: fix netdevice reference leaks in attach_default_qdiscs()
    
    [ Upstream commit f612466ebecb12a00d9152344ddda6f6345f04dc ]
    
    In attach_default_qdiscs(), if a dev has multiple queues and queue 0 fails
    to attach qdisc because there is no memory in attach_one_default_qdisc().
    Then dev->qdisc will be noop_qdisc by default. But the other queues may be
    able to successfully attach to default qdisc.
    
    In this case, the fallback to noqueue process will be triggered. If the
    original attached qdisc is not released and a new one is directly
    attached, this will cause netdevice reference leaks.
    
    The following is the bug log:
    
    veth0: default qdisc (fq_codel) fail, fallback to noqueue
    unregister_netdevice: waiting for veth0 to become free. Usage count = 32
    leaked reference.
     qdisc_alloc+0x12e/0x210
     qdisc_create_dflt+0x62/0x140
     attach_one_default_qdisc.constprop.41+0x44/0x70
     dev_activate+0x128/0x290
     __dev_open+0x12a/0x190
     __dev_change_flags+0x1a2/0x1f0
     dev_change_flags+0x23/0x60
     do_setlink+0x332/0x1150
     __rtnl_newlink+0x52f/0x8e0
     rtnl_newlink+0x43/0x70
     rtnetlink_rcv_msg+0x140/0x3b0
     netlink_rcv_skb+0x50/0x100
     netlink_unicast+0x1bb/0x290
     netlink_sendmsg+0x37c/0x4e0
     sock_sendmsg+0x5f/0x70
     ____sys_sendmsg+0x208/0x280
    
    Fix this bug by clearing any non-noop qdiscs that may have been assigned
    before trying to re-attach.
    
    Fixes: bf6dba76d278 ("net: sched: fallback to qdisc noqueue if default qdisc setup fail")
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Link: https://lore.kernel.org/r/20220826090055.24424-1-wanghai38@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce881ddbdc028fb1988b66e40e45ca0529c23b46
Author: Zhengchao Shao <shaozhengchao@huawei.com>
Date:   Fri Aug 26 09:39:30 2022 +0800

    net: sched: tbf: don't call qdisc_put() while holding tree lock
    
    [ Upstream commit b05972f01e7d30419987a1f221b5593668fd6448 ]
    
    The issue is the same to commit c2999f7fb05b ("net: sched: multiq: don't
    call qdisc_put() while holding tree lock"). Qdiscs call qdisc_put() while
    holding sch tree spinlock, which results sleeping-while-atomic BUG.
    
    Fixes: c266f64dbfa2 ("net: sched: protect block state with mutex")
    Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Link: https://lore.kernel.org/r/20220826013930.340121-1-shaozhengchao@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6ec2f711c945ee969be5709aa23e40ae4c57368
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Thu Aug 25 13:36:44 2022 +0200

    net: dsa: xrs700x: Use irqsave variant for u64 stats update
    
    [ Upstream commit 3f8ae9fe0409698799e173f698b714f34570b64b ]
    
    xrs700x_read_port_counters() updates the stats from a worker using the
    u64_stats_update_begin() version. This is okay on 32-UP since on the
    reader side preemption is disabled.
    On 32bit-SMP the writer can be preempted by the reader at which point
    the reader will spin on the seqcount until writer continues and
    completes the update.
    
    Assigning the mib_mutex mutex to the underlying seqcount would ensure
    proper synchronisation. The API for that on the u64_stats_init() side
    isn't available. Since it is the only user, just use disable interrupts
    during the update.
    
    Use u64_stats_update_begin_irqsave() on the writer side to ensure an
    uninterrupted update.
    
    Fixes: ee00b24f32eb8 ("net: dsa: add Arrow SpeedChips XRS700x driver")
    Cc: Andrew Lunn <andrew@lunn.ch>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: George McCollister <george.mccollister@gmail.com>
    Cc: Vivien Didelot <vivien.didelot@gmail.com>
    Cc: Vladimir Oltean <olteanv@gmail.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: George McCollister <george.mccollister@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca54b2bfaab385778e55a9fd33f6c31e7f743b48
Author: Andrey Zhadchenko <andrey.zhadchenko@virtuozzo.com>
Date:   Thu Aug 25 05:03:26 2022 +0300

    openvswitch: fix memory leak at failed datapath creation
    
    [ Upstream commit a87406f4adee9c53b311d8a1ba2849c69e29a6d0 ]
    
    ovs_dp_cmd_new()->ovs_dp_change()->ovs_dp_set_upcall_portids()
    allocates array via kmalloc.
    If for some reason new_vport() fails during ovs_dp_cmd_new()
    dp->upcall_portids must be freed.
    Add missing kfree.
    
    Kmemleak example:
    unreferenced object 0xffff88800c382500 (size 64):
      comm "dump_state", pid 323, jiffies 4294955418 (age 104.347s)
      hex dump (first 32 bytes):
        5e c2 79 e4 1f 7a 38 c7 09 21 38 0c 80 88 ff ff  ^.y..z8..!8.....
        03 00 00 00 0a 00 00 00 14 00 00 00 28 00 00 00  ............(...
      backtrace:
        [<0000000071bebc9f>] ovs_dp_set_upcall_portids+0x38/0xa0
        [<000000000187d8bd>] ovs_dp_change+0x63/0xe0
        [<000000002397e446>] ovs_dp_cmd_new+0x1f0/0x380
        [<00000000aa06f36e>] genl_family_rcv_msg_doit+0xea/0x150
        [<000000008f583bc4>] genl_rcv_msg+0xdc/0x1e0
        [<00000000fa10e377>] netlink_rcv_skb+0x50/0x100
        [<000000004959cece>] genl_rcv+0x24/0x40
        [<000000004699ac7f>] netlink_unicast+0x23e/0x360
        [<00000000c153573e>] netlink_sendmsg+0x24e/0x4b0
        [<000000006f4aa380>] sock_sendmsg+0x62/0x70
        [<00000000d0068654>] ____sys_sendmsg+0x230/0x270
        [<0000000012dacf7d>] ___sys_sendmsg+0x88/0xd0
        [<0000000011776020>] __sys_sendmsg+0x59/0xa0
        [<000000002e8f2dc1>] do_syscall_64+0x3b/0x90
        [<000000003243e7cb>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Fixes: b83d23a2a38b ("openvswitch: Introduce per-cpu upcall dispatch")
    Acked-by: Aaron Conole <aconole@redhat.com>
    Signed-off-by: Andrey Zhadchenko <andrey.zhadchenko@virtuozzo.com>
    Link: https://lore.kernel.org/r/20220825020326.664073-1-andrey.zhadchenko@virtuozzo.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8eeba7ef4d1dce814ba3ffda4cf516e68be5536f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Aug 24 19:39:51 2022 -0700

    net: smsc911x: Stop and start PHY during suspend and resume
    
    [ Upstream commit 3ce9f2bef75528936c78a7053301f5725f622f3a ]
    
    Commit 744d23c71af3 ("net: phy: Warn about incorrect
    mdio_bus_phy_resume() state") unveiled that the smsc911x driver was not
    properly stopping and restarting the PHY during suspend/resume. Correct
    that by indicating that the MAC is in charge of PHY PM operations and
    ensure that all MDIO bus activity is quiescent during suspend.
    
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Fixes: fba863b81604 ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
    Fixes: 2aa70f864955 ("net: smsc911x: Quieten netif during suspend")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220825023951.3220-1-f.fainelli@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc2b9170aa34e0e1ae54c8da52c5bb1dfb01b0c5
Author: Casper Andersson <casper.casan@gmail.com>
Date:   Thu Aug 25 10:49:55 2022 +0200

    net: sparx5: fix handling uneven length packets in manual extraction
    
    [ Upstream commit 7498a457ecf7ff2c4d379360aa8f24566bb1543e ]
    
    Packets that are not of length divisible by 4 (e.g. 77, 78, 79) would
    have the checksum included up to next multiple of 4 (a 77 bytes packet
    would have 3 bytes of ethernet checksum included). The check for the
    value expects it in host (Little) endian.
    
    Fixes: f3cad2611a77 ("net: sparx5: add hostmode with phylink support")
    Signed-off-by: Casper Andersson <casper.casan@gmail.com>
    Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
    Link: https://lore.kernel.org/r/20220825084955.684637-1-casper.casan@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5359524251d27d5fb50e425bac0108a134ed682c
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Aug 25 18:08:40 2022 +0300

    Revert "xhci: turn off port power in shutdown"
    
    [ Upstream commit 8531aa1659f7278d4f2ec7408cc000eaa8d85217 ]
    
    This reverts commit 83810f84ecf11dfc5a9414a8b762c3501b328185.
    
    Turning off port power in shutdown did cause issues such as a laptop not
    proprly powering off, and some specific usb devies failing to enumerate the
    subsequent boot after a warm reset.
    
    So revert this.
    
    Fixes: 83810f84ecf1 ("xhci: turn off port power in shutdown")
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20220825150840.132216-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee19bbed4b031f034c5ab6320782e357c5ac16e7
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Aug 4 10:03:21 2022 +0300

    wifi: cfg80211: debugfs: fix return type in ht40allow_map_read()
    
    [ Upstream commit d776763f48084926b5d9e25507a3ddb7c9243d5e ]
    
    The return type is supposed to be ssize_t, which is signed long,
    but "r" was declared as unsigned int.  This means that on 64 bit systems
    we return positive values instead of negative error codes.
    
    Fixes: 80a3511d70e8 ("cfg80211: add debugfs HT40 allow map")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/YutvOQeJm0UjLhwU@kili
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20b2d5be85e937be63d05fce718ab3a67851feb0
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Tue Aug 23 15:24:05 2022 +0300

    ALSA: hda: intel-nhlt: Correct the handling of fmt_config flexible array
    
    [ Upstream commit 2e6481a3f3ee6234ce577454e1d88aca55f51d47 ]
    
    The struct nhlt_format's fmt_config is a flexible array, it must not be
    used as normal array.
    When moving to the next nhlt_fmt_cfg we need to take into account the data
    behind the ->config.caps (indicated by ->config.size).
    
    Fixes: a864e8f159b13 ("ALSA: hda: intel-nhlt: verify config type")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Jaska Uimonen <jaska.uimonen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220823122405.18464-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59a711467e8d101ec77f3f9fb5c1d0189fbafd5c
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Thu Jun 16 17:05:59 2022 -0500

    ALSA: hda: intel-nhlt: remove use of __func__ in dev_dbg
    
    [ Upstream commit 6376ab02374822e1e8758a848ee736a182786a2e ]
    
    The module and function information can be added with
    'modprobe foo dyndbg=+pmf'
    
    Suggested-by: Greg KH <gregkh@linuxfoundation.org>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://lore.kernel.org/r/20220616220559.136160-1-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7828b5d0080a4621973ab5c680c4df0bc6d96437
Author: Arun R Murthy <arun.r.murthy@intel.com>
Date:   Mon Aug 8 09:27:50 2022 +0530

    drm/i915/display: avoid warnings when registering dual panel backlight
    
    [ Upstream commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 ]
    
    Commit 20f85ef89d94 ("drm/i915/backlight: use unique backlight device
    names") added support for multiple backlight devices on dual panel
    systems, but did so with error handling on -EEXIST from
    backlight_device_register(). Unfortunately, that triggered a warning in
    dmesg all the way down from sysfs_add_file_mode_ns() and
    sysfs_warn_dup().
    
    Instead of optimistically always attempting to register with the default
    name ("intel_backlight", which we have to retain for backward
    compatibility), check if a backlight device with the name exists first,
    and, if so, use the card and connector based name.
    
    v2: reworked on top of the patch commit 20f85ef89d94
    ("drm/i915/backlight: use unique backlight device names")
    v3: fixed the ref count leak(Jani N)
    
    Fixes: 20f85ef89d94 ("drm/i915/backlight: use unique backlight device names")
    Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220808035750.3111046-1-arun.r.murthy@intel.com
    (cherry picked from commit 4234ea30051200fc6016de10e4d58369e60b38f1)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 630ab29120b5dd1c543150da5e1aa304a5aece2e
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Wed Aug 25 14:06:50 2021 +0300

    drm/i915/backlight: extract backlight code to a separate file
    
    [ Upstream commit 6cc42fbeb150ff33b17cbf108713ca4be23994d8 ]
    
    In a long overdue refactoring, split out backlight code to new
    intel_backlight.[ch]. Simple code movement, leave renames for follow-up
    work. No functional changes.
    
    Cc: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/97d310848f03061473b9b2328e2c5c4dcf263cfa.1629888677.git.jani.nikula@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f8558c5c642c62c450c98c99b7d18a709fff485
Author: Lin Ma <linma@zju.edu.cn>
Date:   Mon Aug 8 11:42:24 2022 +0800

    ieee802154/adf7242: defer destroy_workqueue call
    
    [ Upstream commit afe7116f6d3b888778ed6d95e3cf724767b9aedf ]
    
    There is a possible race condition (use-after-free) like below
    
      (FREE)                     |  (USE)
      adf7242_remove             |  adf7242_channel
       cancel_delayed_work_sync  |
        destroy_workqueue (1)    |   adf7242_cmd_rx
                                 |    mod_delayed_work (2)
                                 |
    
    The root cause for this race is that the upper layer (ieee802154) is
    unaware of this detaching event and the function adf7242_channel can
    be called without any checks.
    
    To fix this, we can add a flag write at the beginning of adf7242_remove
    and add flag check in adf7242_channel. Or we can just defer the
    destructive operation like other commit 3e0588c291d6 ("hamradio: defer
    ax25 kfree after unregister_netdev") which let the
    ieee802154_unregister_hw() to handle the synchronization. This patch
    takes the second option.
    
    Fixes: 58e9683d1475 ("net: ieee802154: adf7242: Fix OCL calibration
    runs")
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Link: https://lore.kernel.org/r/20220808034224.12642-1-linma@zju.edu.cn
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 222bd95c89b135fde21f0bd0cb5cc1611c0c576c
Author: Pu Lehui <pulehui@huawei.com>
Date:   Sat Aug 13 21:40:30 2022 +0800

    bpf, cgroup: Fix kernel BUG in purge_effective_progs
    
    [ Upstream commit 7d6620f107bae6ed687ff07668e8e8f855487aa9 ]
    
    Syzkaller reported a triggered kernel BUG as follows:
    
      ------------[ cut here ]------------
      kernel BUG at kernel/bpf/cgroup.c:925!
      invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 1 PID: 194 Comm: detach Not tainted 5.19.0-14184-g69dac8e431af #8
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
      rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
      RIP: 0010:__cgroup_bpf_detach+0x1f2/0x2a0
      Code: 00 e8 92 60 30 00 84 c0 75 d8 4c 89 e0 31 f6 85 f6 74 19 42 f6 84
      28 48 05 00 00 02 75 0e 48 8b 80 c0 00 00 00 48 85 c0 75 e5 <0f> 0b 48
      8b 0c5
      RSP: 0018:ffffc9000055bdb0 EFLAGS: 00000246
      RAX: 0000000000000000 RBX: ffff888100ec0800 RCX: ffffc900000f1000
      RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff888100ec4578
      RBP: 0000000000000000 R08: ffff888100ec0800 R09: 0000000000000040
      R10: 0000000000000000 R11: 0000000000000000 R12: ffff888100ec4000
      R13: 000000000000000d R14: ffffc90000199000 R15: ffff888100effb00
      FS:  00007f68213d2b80(0000) GS:ffff88813bc80000(0000)
      knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000055f74a0e5850 CR3: 0000000102836000 CR4: 00000000000006e0
      Call Trace:
       <TASK>
       cgroup_bpf_prog_detach+0xcc/0x100
       __sys_bpf+0x2273/0x2a00
       __x64_sys_bpf+0x17/0x20
       do_syscall_64+0x3b/0x90
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
      RIP: 0033:0x7f68214dbcb9
      Code: 08 44 89 e0 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 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 ff8
      RSP: 002b:00007ffeb487db68 EFLAGS: 00000246 ORIG_RAX: 0000000000000141
      RAX: ffffffffffffffda RBX: 000000000000000b RCX: 00007f68214dbcb9
      RDX: 0000000000000090 RSI: 00007ffeb487db70 RDI: 0000000000000009
      RBP: 0000000000000003 R08: 0000000000000012 R09: 0000000b00000003
      R10: 00007ffeb487db70 R11: 0000000000000246 R12: 00007ffeb487dc20
      R13: 0000000000000004 R14: 0000000000000001 R15: 000055f74a1011b0
       </TASK>
      Modules linked in:
      ---[ end trace 0000000000000000 ]---
    
    Repetition steps:
    
    For the following cgroup tree,
    
      root
       |
      cg1
       |
      cg2
    
      1. attach prog2 to cg2, and then attach prog1 to cg1, both bpf progs
         attach type is NONE or OVERRIDE.
      2. write 1 to /proc/thread-self/fail-nth for failslab.
      3. detach prog1 for cg1, and then kernel BUG occur.
    
    Failslab injection will cause kmalloc fail and fall back to
    purge_effective_progs. The problem is that cg2 have attached another prog,
    so when go through cg2 layer, iteration will add pos to 1, and subsequent
    operations will be skipped by the following condition, and cg will meet
    NULL in the end.
    
      `if (pos && !(cg->bpf.flags[atype] & BPF_F_ALLOW_MULTI))`
    
    The NULL cg means no link or prog match, this is as expected, and it's not
    a bug. So here just skip the no match situation.
    
    Fixes: 4c46091ee985 ("bpf: Fix KASAN use-after-free Read in compute_effective_progs")
    Signed-off-by: Pu Lehui <pulehui@huawei.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20220813134030.1972696-1-pulehui@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c518476ceb40eb36f258da97b956a48979bc0d1
Author: YiFei Zhu <zhuyifei@google.com>
Date:   Tue Aug 16 20:55:16 2022 +0000

    bpf: Restrict bpf_sys_bpf to CAP_PERFMON
    
    [ Upstream commit 14b20b784f59bdd95f6f1cfb112c9818bcec4d84 ]
    
    The verifier cannot perform sufficient validation of any pointers passed
    into bpf_attr and treats them as integers rather than pointers. The helper
    will then read from arbitrary pointers passed into it. Restrict the helper
    to CAP_PERFMON since the security model in BPF of arbitrary kernel read is
    CAP_BPF + CAP_PERFMON.
    
    Fixes: af2ac3e13e45 ("bpf: Prepare bpf syscall to be used from kernel and user space.")
    Signed-off-by: YiFei Zhu <zhuyifei@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220816205517.682470-1-zhuyifei@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de22cba333d8699ad77e79f862fe1320cb1284de
Author: Liu Jian <liujian56@huawei.com>
Date:   Tue Aug 9 17:49:15 2022 +0800

    skmsg: Fix wrong last sg check in sk_msg_recvmsg()
    
    [ Upstream commit 583585e48d965338e73e1eb383768d16e0922d73 ]
    
    Fix one kernel NULL pointer dereference as below:
    
    [  224.462334] Call Trace:
    [  224.462394]  __tcp_bpf_recvmsg+0xd3/0x380
    [  224.462441]  ? sock_has_perm+0x78/0xa0
    [  224.462463]  tcp_bpf_recvmsg+0x12e/0x220
    [  224.462494]  inet_recvmsg+0x5b/0xd0
    [  224.462534]  __sys_recvfrom+0xc8/0x130
    [  224.462574]  ? syscall_trace_enter+0x1df/0x2e0
    [  224.462606]  ? __do_page_fault+0x2de/0x500
    [  224.462635]  __x64_sys_recvfrom+0x24/0x30
    [  224.462660]  do_syscall_64+0x5d/0x1d0
    [  224.462709]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    
    In commit 9974d37ea75f ("skmsg: Fix invalid last sg check in
    sk_msg_recvmsg()"), we change last sg check to sg_is_last(),
    but in sockmap redirection case (without stream_parser/stream_verdict/
    skb_verdict), we did not mark the end of the scatterlist. Check the
    sk_msg_alloc, sk_msg_page_add, and bpf_msg_push_data functions, they all
    do not mark the end of sg. They are expected to use sg.end for end
    judgment. So the judgment of '(i != msg_rx->sg.end)' is added back here.
    
    Fixes: 9974d37ea75f ("skmsg: Fix invalid last sg check in sk_msg_recvmsg()")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
    Link: https://lore.kernel.org/bpf/20220809094915.150391-1-liujian56@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7497f9766f08a05e7c5c939dd9542a01702df458
Author: Marcus Folkesson <marcus.folkesson@gmail.com>
Date:   Fri Jul 22 15:07:18 2022 +0200

    iio: adc: mcp3911: make use of the sign bit
    
    [ Upstream commit 8f89e33bf040bbef66386c426198622180233178 ]
    
    The device supports negative values as well.
    
    Fixes: 3a89b289df5d ("iio: adc: add support for mcp3911")
    Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220722130726.7627-2-marcus.folkesson@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e1f74294d539849917563555b783411be9ac84a
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Aug 1 14:37:31 2022 +0300

    platform/x86: pmc_atom: Fix SLP_TYPx bitfield mask
    
    [ Upstream commit 0a90ed8d0cfa29735a221eba14d9cb6c735d35b6 ]
    
    On Intel hardware the SLP_TYPx bitfield occupies bits 10-12 as per ACPI
    specification (see Table 4.13 "PM1 Control Registers Fixed Hardware
    Feature Control Bits" for the details).
    
    Fix the mask and other related definitions accordingly.
    
    Fixes: 93e5eadd1f6e ("x86/platform: New Intel Atom SOC power management controller driver")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220801113734.36131-1-andriy.shevchenko@linux.intel.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a785b435276b951d28b92411a4124fd2d88bd16
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Aug 4 07:38:49 2022 -0700

    drm/msm/dsi: Fix number of regulators for SDM660
    
    [ Upstream commit a1653a75987749ba6dba94fa2e62f0f36b387d1a ]
    
    1 regulator is listed but the number 2 is specified. This presumably
    means we try to get a regulator with no name. Fix it.
    
    Fixes: 462f7017a691 ("drm/msm/dsi: Fix DSI and DSI PHY regulator config from SDM660")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/496323/
    Link: https://lore.kernel.org/r/20220804073608.v4.2.I94b3c3e412b7c208061349f05659e126483171b1@changeid
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab8533946db7de7ff042bb2147acc3ec6da1bac1
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Aug 4 07:38:48 2022 -0700

    drm/msm/dsi: Fix number of regulators for msm8996_dsi_cfg
    
    [ Upstream commit 1e00d6ac8a3422765bae37aeac2002dfd3c0bda6 ]
    
    3 regulators are listed but the number 2 is specified. Fix it.
    
    Fixes: 3a3ff88a0fc1 ("drm/msm/dsi: Add 8x96 info in dsi_cfg")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/496318/
    Link: https://lore.kernel.org/r/20220804073608.v4.1.I1056ee3f77f71287f333279efe4c85f88d403f65@changeid
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a4f633548c495f8598b546a0f3eba5e2f101dbe
Author: Kuogee Hsieh <quic_khsieh@quicinc.com>
Date:   Thu Aug 11 15:57:50 2022 -0700

    drm/msm/dp: delete DP_RECOVERED_CLOCK_OUT_EN to fix tps4
    
    [ Upstream commit 032d57960176ac01cc5adff5bcc5eb51317f8781 ]
    
    Data Symbols scrambled is required for tps4 at link training 2.
    Therefore SCRAMBLING_DISABLE bit should not be set for tps4 to
    work.
    
    RECOVERED_CLOCK_OUT_EN is for enable simple EYE test for jitter
    measurement with minimal equipment for embedded applications purpose
    and is not required to be set during normal operation. Current
    implementation always have RECOVERED_CLOCK_OUT_EN bit set which
    cause SCRAMBLING_DISABLE bit wrongly set at tps4 which prevent
    tps4 from working.
    
    This patch delete setting RECOVERED_CLOCK_OUT_EN to fix
    SCRAMBLING_DISABLE be wrongly set at tps4.
    
    Changes in v2:
    -- fix Fixes tag
    
    Changes in v3:
    -- revise commit text
    
    Changes in v4:
    -- fix commit text newline
    
    Changes in v5:
    -- fix commit text line over 75 chars
    
    Fixes: c943b4948b58 ("drm/msm/dp: add displayPort driver support")
    Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/497194/
    Link: https://lore.kernel.org/r/1660258670-4200-1-git-send-email-quic_khsieh@quicinc.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8bd54b0664bc275b72a4d332b0d08b720f418ec
Author: sunliming <sunliming@kylinos.cn>
Date:   Tue Jul 19 09:56:22 2022 +0800

    drm/msm/dsi: fix the inconsistent indenting
    
    [ Upstream commit 2f25a1fb4ec516c5ad67afd754334b491b9f09a5 ]
    
    Fix the inconsistent indenting in function msm_dsi_dphy_timing_calc_v3().
    
    Fix the following smatch warnings:
    
    drivers/gpu/drm/msm/dsi/phy/dsi_phy.c:350 msm_dsi_dphy_timing_calc_v3() warn: inconsistent indenting
    
    Fixes: f1fa7ff44056 ("drm/msm/dsi: implement auto PHY timing calculator for 10nm PHY")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: sunliming <sunliming@kylinos.cn>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/494662/
    Link: https://lore.kernel.org/r/20220719015622.646718-1-sunliming@kylinos.cn
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>