commit a5b79a58cfc02977cd4d5c1e20454cd98e88f749
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 20 12:04:41 2023 +0200

    Linux 4.19.281
    
    Link: https://lore.kernel.org/r/20230418120258.713853188@linuxfoundation.org
    Tested-by: Chris Paterson (CIP) <chris.paterson2@renesas.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17992d52dd8b8dcabf1100839b6d0e45787a9381
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Apr 2 03:28:39 2019 +0100

    arm64: KVM: Fix system register enumeration
    
    commit 5d8d4af24460d079ecdb190254b14b528add1228 upstream.
    
    The introduction of the SVE registers to userspace started with a
    refactoring of the way we expose any register via the ONE_REG
    interface.
    
    Unfortunately, this change doesn't exactly behave as expected
    if the number of registers is non-zero and consider everything
    to be an error. The visible result is that QEMU barfs very early
    when creating vcpus.
    
    Make sure we only exit early in case there is an actual error, rather
    than a positive number of registers...
    
    Fixes: be25bbb392fa ("KVM: arm64: Factor out core register ID enumeration")
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f4eb3ca9ec3168a983d352f43fb53679c9826d6
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Wed Jun 12 13:44:49 2019 +0100

    KVM: arm64: Filter out invalid core register IDs in KVM_GET_REG_LIST
    
    commit df205b5c63281e4f32caac22adda18fd68795e80 upstream.
    
    Since commit d26c25a9d19b ("arm64: KVM: Tighten guest core register
    access from userspace"), KVM_{GET,SET}_ONE_REG rejects register IDs
    that do not correspond to a single underlying architectural register.
    
    KVM_GET_REG_LIST was not changed to match however: instead, it
    simply yields a list of 32-bit register IDs that together cover the
    whole kvm_regs struct.  This means that if userspace tries to use
    the resulting list of IDs directly to drive calls to KVM_*_ONE_REG,
    some of those calls will now fail.
    
    This was not the intention.  Instead, iterating KVM_*_ONE_REG over
    the list of IDs returned by KVM_GET_REG_LIST should be guaranteed
    to work.
    
    This patch fixes the problem by splitting validate_core_offset()
    into a backend core_reg_size_from_offset() which does all of the
    work except for checking that the size field in the register ID
    matches, and kvm_arm_copy_reg_indices() and num_core_regs() are
    converted to use this to enumerate the valid offsets.
    
    kvm_arm_copy_reg_indices() now also sets the register ID size field
    appropriately based on the value returned, so the register ID
    supplied to userspace is fully qualified for use with the register
    access ioctls.
    
    Cc: stable@vger.kernel.org
    Fixes: d26c25a9d19b ("arm64: KVM: Tighten guest core register access from userspace")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Reviewed-by: Andrew Jones <drjones@redhat.com>
    Tested-by: Andrew Jones <drjones@redhat.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e072604cfdc068b75f60be8b4f3fc39b1d082f65
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Fri Mar 15 15:47:04 2019 +0000

    KVM: arm64: Factor out core register ID enumeration
    
    commit be25bbb392fad3a721d6d21b78639b60612b5439 upstream.
    
    In preparation for adding logic to filter out some KVM_REG_ARM_CORE
    registers from the KVM_GET_REG_LIST output, this patch factors out
    the core register enumeration into a separate function and rebuilds
    num_core_regs() on top of it.
    
    This may be a little more expensive (depending on how good a job
    the compiler does of specialising the code), but KVM_GET_REG_LIST
    is not a hot path.
    
    This will make it easier to consolidate ID filtering code in one
    place.
    
    No functional change.
    
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Reviewed-by: Julien Thierry <julien.thierry@arm.com>
    Tested-by: zhang.lei <zhang.lei@jp.fujitsu.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 495adb06518bb10f50e1aa1a1dbd5daa47d118f2
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri Mar 10 11:10:56 2023 -0500

    KVM: nVMX: add missing consistency checks for CR0 and CR4
    
    commit 112e66017bff7f2837030f34c2bc19501e9212d5 upstream.
    
    The effective values of the guest CR0 and CR4 registers may differ from
    those included in the VMCS12.  In particular, disabling EPT forces
    CR4.PAE=1 and disabling unrestricted guest mode forces CR0.PG=CR0.PE=1.
    
    Therefore, checks on these bits cannot be delegated to the processor
    and must be performed by KVM.
    
    Reported-by: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [OP: drop CC() macro calls, as tracing is not implemented in 4.19]
    [OP: adjust "return -EINVAL" -> "return 1" to match current return logic]
    Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08096e5355115698b92ab74e9f2df68694011c1d
Author: Steve Clevenger <scclevenger@os.amperecomputing.com>
Date:   Mon Feb 27 16:54:32 2023 -0700

    coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug
    
    commit bf84937e882009075f57fd213836256fc65d96bc upstream.
    
    In etm4_enable_hw, fix for() loop range to represent address comparator pairs.
    
    Fixes: 2e1cdfe184b5 ("coresight-etm4x: Adding CoreSight ETM4x driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve Clevenger <scclevenger@os.amperecomputing.com>
    Reviewed-by: James Clark <james.clark@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/4a4ee61ce8ef402615a4528b21a051de3444fb7b.1677540079.git.scclevenger@os.amperecomputing.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e39a6239d3edd3232d7f1c7a994bd60539fa3fa
Author: George Cherian <george.cherian@marvell.com>
Date:   Thu Feb 9 02:11:17 2023 +0000

    watchdog: sbsa_wdog: Make sure the timeout programming is within the limits
    
    commit 000987a38b53c172f435142a4026dd71378ca464 upstream.
    
    Make sure to honour the max_hw_heartbeat_ms while programming the timeout
    value to WOR. Clamp the timeout passed to sbsa_gwdt_set_timeout() to
    make sure the programmed value is within the permissible range.
    
    Fixes: abd3ac7902fb ("watchdog: sbsa: Support architecture version 1")
    
    Signed-off-by: George Cherian <george.cherian@marvell.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20230209021117.1512097-1-george.cherian@marvell.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Tyler Hicks (Microsoft) <code@tyhicks.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30e138e23f43f566b6df87bba51e4d97930671fd
Author: Waiman Long <longman@redhat.com>
Date:   Tue Apr 11 09:35:57 2023 -0400

    cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach()
    
    commit ba9182a89626d5f83c2ee4594f55cb9c1e60f0e2 upstream.
    
    After a successful cpuset_can_attach() call which increments the
    attach_in_progress flag, either cpuset_cancel_attach() or cpuset_attach()
    will be called later. In cpuset_attach(), tasks in cpuset_attach_wq,
    if present, will be woken up at the end. That is not the case in
    cpuset_cancel_attach(). So missed wakeup is possible if the attach
    operation is somehow cancelled. Fix that by doing the wakeup in
    cpuset_cancel_attach() as well.
    
    Fixes: e44193d39e8d ("cpuset: let hotplug propagation work wait for task attaching")
    Signed-off-by: Waiman Long <longman@redhat.com>
    Reviewed-by: Michal Koutný <mkoutny@suse.com>
    Cc: stable@vger.kernel.org # v3.11+
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24c01263ef8c650475e5a35f0d030bef61881164
Author: ZhaoLong Wang <wangzhaolong1@huawei.com>
Date:   Sat Mar 4 09:41:41 2023 +0800

    ubi: Fix deadlock caused by recursively holding work_sem
    
    [ Upstream commit f773f0a331d6c41733b17bebbc1b6cae12e016f5 ]
    
    During the processing of the bgt, if the sync_erase() return -EBUSY
    or some other error code in __erase_worker(),schedule_erase() called
    again lead to the down_read(ubi->work_sem) hold twice and may get
    block by down_write(ubi->work_sem) in ubi_update_fastmap(),
    which cause deadlock.
    
              ubi bgt                        other task
     do_work
      down_read(&ubi->work_sem)          ubi_update_fastmap
      erase_worker                         # Blocked by down_read
       __erase_worker                      down_write(&ubi->work_sem)
        schedule_erase
         schedule_ubi_work
          down_read(&ubi->work_sem)
    
    Fix this by changing input parameter @nested of the schedule_erase() to
    'true' to avoid recursively acquiring the down_read(&ubi->work_sem).
    
    Also, fix the incorrect comment about @nested parameter of the
    schedule_erase() because when down_write(ubi->work_sem) is held, the
    @nested is also need be true.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217093
    Fixes: 2e8f08deabbc ("ubi: Fix races around ubi_refill_pools()")
    Signed-off-by: ZhaoLong Wang <wangzhaolong1@huawei.com>
    Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6aee9f324dcd763fa47c4f32182a9ec4d1e429da
Author: Lee Jones <lee.jones@linaro.org>
Date:   Mon Nov 9 18:21:55 2020 +0000

    mtd: ubi: wl: Fix a couple of kernel-doc issues
    
    [ Upstream commit ab4e4de9fd8b469823a645f05f2c142e9270b012 ]
    
    Fixes the following W=1 kernel build warning(s):
    
     drivers/mtd/ubi/wl.c:584: warning: Function parameter or member 'nested' not described in 'schedule_erase'
     drivers/mtd/ubi/wl.c:1075: warning: Excess function parameter 'shutdown' description in '__erase_worker'
    
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Miquel Raynal <miquel.raynal@bootlin.com>
    Cc: Vignesh Raghavendra <vigneshr@ti.com>
    Cc: linux-mtd@lists.infradead.org
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20201109182206.3037326-13-lee.jones@linaro.org
    Stable-dep-of: f773f0a331d6 ("ubi: Fix deadlock caused by recursively holding work_sem")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7883799de15fa160490e3b04449a2c19baec4027
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Mon Mar 6 09:33:08 2023 +0800

    ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size
    
    commit 1e020e1b96afdecd20680b5b5be2a6ffc3d27628 upstream.
    
    Following process will make ubi attaching failed since commit
    1b42b1a36fc946 ("ubi: ensure that VID header offset ... size"):
    
    ID="0xec,0xa1,0x00,0x15" # 128M 128KB 2KB
    modprobe nandsim id_bytes=$ID
    flash_eraseall /dev/mtd0
    modprobe ubi mtd="0,2048"  # set vid_hdr offset as 2048 (one page)
    (dmesg):
      ubi0 error: ubi_attach_mtd_dev [ubi]: VID header offset 2048 too large.
      UBI error: cannot attach mtd0
      UBI error: cannot initialize UBI, error -22
    
    Rework original solution, the key point is making sure
    'vid_hdr_shift + UBI_VID_HDR_SIZE < ubi->vid_hdr_alsize',
    so we should check vid_hdr_shift rather not vid_hdr_offset.
    Then, ubi still support (sub)page aligined VID header offset.
    
    Fixes: 1b42b1a36fc946 ("ubi: ensure that VID header offset ... size")
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Tested-by: Nicolas Schichan <nschichan@freebox.fr>
    Tested-by: Miquel Raynal <miquel.raynal@bootlin.com> # v5.10, v4.19
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2529e6604a44ce5899e9652508b478a604b16f95
Author: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Date:   Wed Mar 29 22:58:59 2023 +0530

    x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot
    
    commit f195fc1e9715ba826c3b62d58038f760f66a4fe9 upstream.
    
    The AMD [1022:15b8] USB controller loses some internal functional MSI-X
    context when transitioning from D0 to D3hot. BIOS normally traps D0->D3hot
    and D3hot->D0 transitions so it can save and restore that internal context,
    but some firmware in the field can't do this because it fails to clear the
    AMD_15B8_RCC_DEV2_EPF0_STRAP2 NO_SOFT_RESET bit.
    
    Clear AMD_15B8_RCC_DEV2_EPF0_STRAP2 NO_SOFT_RESET bit before USB controller
    initialization during boot.
    
    Link: https://lore.kernel.org/linux-usb/Y%2Fz9GdHjPyF2rNG3@glanzmann.de/T/#u
    Link: https://lore.kernel.org/r/20230329172859.699743-1-Basavaraj.Natikar@amd.com
    Reported-by: Thomas Glanzmann <thomas@glanzmann.de>
    Tested-by: Thomas Glanzmann <thomas@glanzmann.de>
    Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e7c498c3713b09bef20c76c7319555637e8bbd5
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Tue Apr 4 21:23:42 2023 +0200

    scsi: ses: Handle enclosure with just a primary component gracefully
    
    commit c8e22b7a1694bb8d025ea636816472739d859145 upstream.
    
    This reverts commit 3fe97ff3d949 ("scsi: ses: Don't attach if enclosure
    has no components") and introduces proper handling of case where there are
    no detected secondary components, but primary component (enumerated in
    num_enclosures) does exist. That fix was originally proposed by Ding Hui
    <dinghui@sangfor.com.cn>.
    
    Completely ignoring devices that have one primary enclosure and no
    secondary one results in ses_intf_add() bailing completely
    
            scsi 2:0:0:254: enclosure has no enumerated components
            scsi 2:0:0:254: Failed to bind enclosure -12ven in valid configurations such
    
    even on valid configurations with 1 primary and 0 secondary enclosures as
    below:
    
            # sg_ses /dev/sg0
              3PARdata  SES               3321
            Supported diagnostic pages:
              Supported Diagnostic Pages [sdp] [0x0]
              Configuration (SES) [cf] [0x1]
              Short Enclosure Status (SES) [ses] [0x8]
            # sg_ses -p cf /dev/sg0
              3PARdata  SES               3321
            Configuration diagnostic page:
              number of secondary subenclosures: 0
              generation code: 0x0
              enclosure descriptor list
                Subenclosure identifier: 0 [primary]
                  relative ES process id: 0, number of ES processes: 1
                  number of type descriptor headers: 1
                  enclosure logical identifier (hex): 20000002ac02068d
                  enclosure vendor: 3PARdata  product: VV                rev: 3321
              type descriptor header and text list
                Element type: Unspecified, subenclosure id: 0
                  number of possible elements: 1
    
    The changelog for the original fix follows
    
    =====
    We can get a crash when disconnecting the iSCSI session,
    the call trace like this:
    
      [ffff00002a00fb70] kfree at ffff00000830e224
      [ffff00002a00fba0] ses_intf_remove at ffff000001f200e4
      [ffff00002a00fbd0] device_del at ffff0000086b6a98
      [ffff00002a00fc50] device_unregister at ffff0000086b6d58
      [ffff00002a00fc70] __scsi_remove_device at ffff00000870608c
      [ffff00002a00fca0] scsi_remove_device at ffff000008706134
      [ffff00002a00fcc0] __scsi_remove_target at ffff0000087062e4
      [ffff00002a00fd10] scsi_remove_target at ffff0000087064c0
      [ffff00002a00fd70] __iscsi_unbind_session at ffff000001c872c4
      [ffff00002a00fdb0] process_one_work at ffff00000810f35c
      [ffff00002a00fe00] worker_thread at ffff00000810f648
      [ffff00002a00fe70] kthread at ffff000008116e98
    
    In ses_intf_add, components count could be 0, and kcalloc 0 size scomp,
    but not saved in edev->component[i].scratch
    
    In this situation, edev->component[0].scratch is an invalid pointer,
    when kfree it in ses_intf_remove_enclosure, a crash like above would happen
    The call trace also could be other random cases when kfree cannot catch
    the invalid pointer
    
    We should not use edev->component[] array when the components count is 0
    We also need check index when use edev->component[] array in
    ses_enclosure_data_process
    =====
    
    Reported-by: Michal Kolar <mich.k@seznam.cz>
    Originally-by: Ding Hui <dinghui@sangfor.com.cn>
    Cc: stable@vger.kernel.org
    Fixes: 3fe97ff3d949 ("scsi: ses: Don't attach if enclosure has no components")
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Link: https://lore.kernel.org/r/nycvar.YFH.7.76.2304042122270.29760@cbobk.fhfr.pm
    Tested-by: Michal Kolar <mich.k@seznam.cz>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96acda7332d7f7f9b71e440d387ddebfe564e2f7
Author: Robbie Harwood <rharwood@redhat.com>
Date:   Mon Feb 20 12:12:53 2023 -0500

    verify_pefile: relax wrapper length check
    
    [ Upstream commit 4fc5c74dde69a7eda172514aaeb5a7df3600adb3 ]
    
    The PE Format Specification (section "The Attribute Certificate Table
    (Image Only)") states that `dwLength` is to be rounded up to 8-byte
    alignment when used for traversal.  Therefore, the field is not required
    to be an 8-byte multiple in the first place.
    
    Accordingly, pesign has not performed this alignment since version
    0.110.  This causes kexec failure on pesign'd binaries with "PEFILE:
    Signature wrapper len wrong".  Update the comment and relax the check.
    
    Signed-off-by: Robbie Harwood <rharwood@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Jarkko Sakkinen <jarkko@kernel.org>
    cc: Eric Biederman <ebiederm@xmission.com>
    cc: Herbert Xu <herbert@gondor.apana.org.au>
    cc: keyrings@vger.kernel.org
    cc: linux-crypto@vger.kernel.org
    cc: kexec@lists.infradead.org
    Link: https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#the-attribute-certificate-table-image-only
    Link: https://github.com/rhboot/pesign
    Link: https://lore.kernel.org/r/20230220171254.592347-2-rharwood@redhat.com/ # v2
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3af1208393507570dfdf096e2b983630ed2b83a2
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Mar 14 13:31:03 2023 +0100

    efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L
    
    [ Upstream commit 5ed213dd64681f84a01ceaa82fb336cf7d59ddcf ]
    
    Another Lenovo convertable which reports a landscape resolution of
    1920x1200 with a pitch of (1920 * 4) bytes, while the actual framebuffer
    has a resolution of 1200x1920 with a pitch of (1200 * 4) bytes.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 63f6f20ecdbf3324074fe796b833abadd9fa84c8
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Mon Jan 30 16:32:46 2023 +0100

    i2c: imx-lpi2c: clean rx/tx buffers upon new message
    
    [ Upstream commit 987dd36c0141f6ab9f0fbf14d6b2ec3342dedb2f ]
    
    When start sending a new message clear the Rx & Tx buffer pointers in
    order to avoid using stale pointers.
    
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Tested-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65d5dd5d464129ca6f7f64ad7a706bcc1f82bf5d
Author: Grant Grundler <grundler@chromium.org>
Date:   Mon Dec 12 13:38:57 2022 -0800

    power: supply: cros_usbpd: reclassify "default case!" as debug
    
    [ Upstream commit 14c76b2e75bca4d96e2b85a0c12aa43e84fe3f74 ]
    
    This doesn't need to be printed every second as an error:
    ...
    <3>[17438.628385] cros-usbpd-charger cros-usbpd-charger.3.auto: Port 1: default case!
    <3>[17439.634176] cros-usbpd-charger cros-usbpd-charger.3.auto: Port 1: default case!
    <3>[17440.640298] cros-usbpd-charger cros-usbpd-charger.3.auto: Port 1: default case!
    ...
    
    Reduce priority from ERROR to DEBUG.
    
    Signed-off-by: Grant Grundler <grundler@chromium.org>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0638f2b9b220ac33e4657010dd0a130ed0cde7df
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 12 13:03:08 2023 +0000

    udp6: fix potential access to stale information
    
    [ Upstream commit 1c5950fc6fe996235f1d18539b9c6b64b597f50f ]
    
    lena wang reported an issue caused by udpv6_sendmsg()
    mangling msg->msg_name and msg->msg_namelen, which
    are later read from ____sys_sendmsg() :
    
            /*
             * If this is sendmmsg() and sending to current destination address was
             * successful, remember it.
             */
            if (used_address && err >= 0) {
                    used_address->name_len = msg_sys->msg_namelen;
                    if (msg_sys->msg_name)
                            memcpy(&used_address->name, msg_sys->msg_name,
                                   used_address->name_len);
            }
    
    udpv6_sendmsg() wants to pretend the remote address family
    is AF_INET in order to call udp_sendmsg().
    
    A fix would be to modify the address in-place, instead
    of using a local variable, but this could have other side effects.
    
    Instead, restore initial values before we return from udpv6_sendmsg().
    
    Fixes: c71d8ebe7a44 ("net: Fix security_socket_sendmsg() bypass problem.")
    Reported-by: lena wang <lena.wang@mediatek.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Maciej Żenczykowski <maze@google.com>
    Link: https://lore.kernel.org/r/20230412130308.1202254-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82e626af24683e01211abe66cec27a387f8f17c9
Author: Roman Gushchin <roman.gushchin@linux.dev>
Date:   Wed Apr 12 16:21:44 2023 -0700

    net: macb: fix a memory corruption in extended buffer descriptor mode
    
    [ Upstream commit e8b74453555872851bdd7ea43a7c0ec39659834f ]
    
    For quite some time we were chasing a bug which looked like a sudden
    permanent failure of networking and mmc on some of our devices.
    The bug was very sensitive to any software changes and even more to
    any kernel debug options.
    
    Finally we got a setup where the problem was reproducible with
    CONFIG_DMA_API_DEBUG=y and it revealed the issue with the rx dma:
    
    [   16.992082] ------------[ cut here ]------------
    [   16.996779] DMA-API: macb ff0b0000.ethernet: device driver tries to free DMA memory it has not allocated [device address=0x0000000875e3e244] [size=1536 bytes]
    [   17.011049] WARNING: CPU: 0 PID: 85 at kernel/dma/debug.c:1011 check_unmap+0x6a0/0x900
    [   17.018977] Modules linked in: xxxxx
    [   17.038823] CPU: 0 PID: 85 Comm: irq/55-8000f000 Not tainted 5.4.0 #28
    [   17.045345] Hardware name: xxxxx
    [   17.049528] pstate: 60000005 (nZCv daif -PAN -UAO)
    [   17.054322] pc : check_unmap+0x6a0/0x900
    [   17.058243] lr : check_unmap+0x6a0/0x900
    [   17.062163] sp : ffffffc010003c40
    [   17.065470] x29: ffffffc010003c40 x28: 000000004000c03c
    [   17.070783] x27: ffffffc010da7048 x26: ffffff8878e38800
    [   17.076095] x25: ffffff8879d22810 x24: ffffffc010003cc8
    [   17.081407] x23: 0000000000000000 x22: ffffffc010a08750
    [   17.086719] x21: ffffff8878e3c7c0 x20: ffffffc010acb000
    [   17.092032] x19: 0000000875e3e244 x18: 0000000000000010
    [   17.097343] x17: 0000000000000000 x16: 0000000000000000
    [   17.102647] x15: ffffff8879e4a988 x14: 0720072007200720
    [   17.107959] x13: 0720072007200720 x12: 0720072007200720
    [   17.113261] x11: 0720072007200720 x10: 0720072007200720
    [   17.118565] x9 : 0720072007200720 x8 : 000000000000022d
    [   17.123869] x7 : 0000000000000015 x6 : 0000000000000098
    [   17.129173] x5 : 0000000000000000 x4 : 0000000000000000
    [   17.134475] x3 : 00000000ffffffff x2 : ffffffc010a1d370
    [   17.139778] x1 : b420c9d75d27bb00 x0 : 0000000000000000
    [   17.145082] Call trace:
    [   17.147524]  check_unmap+0x6a0/0x900
    [   17.151091]  debug_dma_unmap_page+0x88/0x90
    [   17.155266]  gem_rx+0x114/0x2f0
    [   17.158396]  macb_poll+0x58/0x100
    [   17.161705]  net_rx_action+0x118/0x400
    [   17.165445]  __do_softirq+0x138/0x36c
    [   17.169100]  irq_exit+0x98/0xc0
    [   17.172234]  __handle_domain_irq+0x64/0xc0
    [   17.176320]  gic_handle_irq+0x5c/0xc0
    [   17.179974]  el1_irq+0xb8/0x140
    [   17.183109]  xiic_process+0x5c/0xe30
    [   17.186677]  irq_thread_fn+0x28/0x90
    [   17.190244]  irq_thread+0x208/0x2a0
    [   17.193724]  kthread+0x130/0x140
    [   17.196945]  ret_from_fork+0x10/0x20
    [   17.200510] ---[ end trace 7240980785f81d6f ]---
    
    [  237.021490] ------------[ cut here ]------------
    [  237.026129] DMA-API: exceeded 7 overlapping mappings of cacheline 0x0000000021d79e7b
    [  237.033886] WARNING: CPU: 0 PID: 0 at kernel/dma/debug.c:499 add_dma_entry+0x214/0x240
    [  237.041802] Modules linked in: xxxxx
    [  237.061637] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W         5.4.0 #28
    [  237.068941] Hardware name: xxxxx
    [  237.073116] pstate: 80000085 (Nzcv daIf -PAN -UAO)
    [  237.077900] pc : add_dma_entry+0x214/0x240
    [  237.081986] lr : add_dma_entry+0x214/0x240
    [  237.086072] sp : ffffffc010003c30
    [  237.089379] x29: ffffffc010003c30 x28: ffffff8878a0be00
    [  237.094683] x27: 0000000000000180 x26: ffffff8878e387c0
    [  237.099987] x25: 0000000000000002 x24: 0000000000000000
    [  237.105290] x23: 000000000000003b x22: ffffffc010a0fa00
    [  237.110594] x21: 0000000021d79e7b x20: ffffffc010abe600
    [  237.115897] x19: 00000000ffffffef x18: 0000000000000010
    [  237.121201] x17: 0000000000000000 x16: 0000000000000000
    [  237.126504] x15: ffffffc010a0fdc8 x14: 0720072007200720
    [  237.131807] x13: 0720072007200720 x12: 0720072007200720
    [  237.137111] x11: 0720072007200720 x10: 0720072007200720
    [  237.142415] x9 : 0720072007200720 x8 : 0000000000000259
    [  237.147718] x7 : 0000000000000001 x6 : 0000000000000000
    [  237.153022] x5 : ffffffc010003a20 x4 : 0000000000000001
    [  237.158325] x3 : 0000000000000006 x2 : 0000000000000007
    [  237.163628] x1 : 8ac721b3a7dc1c00 x0 : 0000000000000000
    [  237.168932] Call trace:
    [  237.171373]  add_dma_entry+0x214/0x240
    [  237.175115]  debug_dma_map_page+0xf8/0x120
    [  237.179203]  gem_rx_refill+0x190/0x280
    [  237.182942]  gem_rx+0x224/0x2f0
    [  237.186075]  macb_poll+0x58/0x100
    [  237.189384]  net_rx_action+0x118/0x400
    [  237.193125]  __do_softirq+0x138/0x36c
    [  237.196780]  irq_exit+0x98/0xc0
    [  237.199914]  __handle_domain_irq+0x64/0xc0
    [  237.204000]  gic_handle_irq+0x5c/0xc0
    [  237.207654]  el1_irq+0xb8/0x140
    [  237.210789]  arch_cpu_idle+0x40/0x200
    [  237.214444]  default_idle_call+0x18/0x30
    [  237.218359]  do_idle+0x200/0x280
    [  237.221578]  cpu_startup_entry+0x20/0x30
    [  237.225493]  rest_init+0xe4/0xf0
    [  237.228713]  arch_call_rest_init+0xc/0x14
    [  237.232714]  start_kernel+0x47c/0x4a8
    [  237.236367] ---[ end trace 7240980785f81d70 ]---
    
    Lars was fast to find an explanation: according to the datasheet
    bit 2 of the rx buffer descriptor entry has a different meaning in the
    extended mode:
      Address [2] of beginning of buffer, or
      in extended buffer descriptor mode (DMA configuration register [28] = 1),
      indicates a valid timestamp in the buffer descriptor entry.
    
    The macb driver didn't mask this bit while getting an address and it
    eventually caused a memory corruption and a dma failure.
    
    The problem is resolved by explicitly clearing the problematic bit
    if hw timestamping is used.
    
    Fixes: 7b4296148066 ("net: macb: Add support for PTP timestamps in DMA descriptors")
    Signed-off-by: Roman Gushchin <roman.gushchin@linux.dev>
    Co-developed-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://lore.kernel.org/r/20230412232144.770336-1-roman.gushchin@linux.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4fbd094d4131a10d06a45d64158567052a35b3f4
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Apr 10 15:43:30 2023 -0400

    sctp: fix a potential overflow in sctp_ifwdtsn_skip
    
    [ Upstream commit 32832a2caf82663870126c5186cf8f86c8b2a649 ]
    
    Currently, when traversing ifwdtsn skips with _sctp_walk_ifwdtsn, it only
    checks the pos against the end of the chunk. However, the data left for
    the last pos may be < sizeof(struct sctp_ifwdtsn_skip), and dereference
    it as struct sctp_ifwdtsn_skip may cause coverflow.
    
    This patch fixes it by checking the pos against "the end of the chunk -
    sizeof(struct sctp_ifwdtsn_skip)" in sctp_ifwdtsn_skip, similar to
    sctp_fwdtsn_skip.
    
    Fixes: 0fc2ea922c8a ("sctp: implement validate_ftsn for sctp_stream_interleave")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Link: https://lore.kernel.org/r/2a71bffcd80b4f2c61fac6d344bb2f11c8fd74f7.1681155810.git.lucien.xin@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b53b009cef4e6acb1dd00dd3ff0c182e1acb4eb1
Author: Denis Plotnikov <den-plotnikov@yandex-team.ru>
Date:   Fri Apr 7 10:18:49 2023 +0300

    qlcnic: check pci_reset_function result
    
    [ Upstream commit 7573099e10ca69c3be33995c1fcd0d241226816d ]
    
    Static code analyzer complains to unchecked return value.
    The result of pci_reset_function() is unchecked.
    Despite, the issue is on the FLR supported code path and in that
    case reset can be done with pcie_flr(), the patch uses less invasive
    approach by adding the result check of pci_reset_function().
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 7e2cf4feba05 ("qlcnic: change driver hardware interface mechanism")
    Signed-off-by: Denis Plotnikov <den-plotnikov@yandex-team.ru>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ec4f21a0ea2cb1c1fff1ca25706b2fd166c4c7c
Author: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Date:   Wed Apr 5 23:31:18 2023 -0700

    niu: Fix missing unwind goto in niu_alloc_channels()
    
    [ Upstream commit 8ce07be703456acb00e83d99f3b8036252c33b02 ]
    
    Smatch reports: drivers/net/ethernet/sun/niu.c:4525
            niu_alloc_channels() warn: missing unwind goto?
    
    If niu_rbr_fill() fails, then we are directly returning 'err' without
    freeing the channels.
    
    Fix this by changing direct return to a goto 'out_err'.
    
    Fixes: a3138df9f20e ("[NIU]: Add Sun Neptune ethernet driver.")
    Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c078fcd3f00ea5eadad07da169956d84f65af49b
Author: Zheng Wang <zyytlz.wz@163.com>
Date:   Mon Mar 13 22:43:25 2023 +0800

    9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race condition
    
    [ Upstream commit ea4f1009408efb4989a0f139b70fb338e7f687d0 ]
    
    In xen_9pfs_front_probe, it calls xen_9pfs_front_alloc_dataring
    to init priv->rings and bound &ring->work with p9_xen_response.
    
    When it calls xen_9pfs_front_event_handler to handle IRQ requests,
    it will finally call schedule_work to start the work.
    
    When we call xen_9pfs_front_remove to remove the driver, there
    may be a sequence as follows:
    
    Fix it by finishing the work before cleanup in xen_9pfs_front_free.
    
    Note that, this bug is found by static analysis, which might be
    false positive.
    
    CPU0                  CPU1
    
                         |p9_xen_response
    xen_9pfs_front_remove|
      xen_9pfs_front_free|
    kfree(priv)          |
    //free priv          |
                         |p9_tag_lookup
                         |//use priv->client
    
    Fixes: 71ebd71921e4 ("xen/9pfs: connect to the backend")
    Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92fd37e0f03f57b5ff404077de36a3d5b263ad98
Author: Bang Li <libang.linuxer@gmail.com>
Date:   Wed Mar 29 00:30:12 2023 +0800

    mtdblock: tolerate corrected bit-flips
    
    commit 0c3089601f064d80b3838eceb711fcac04bceaad upstream.
    
    mtd_read() may return -EUCLEAN in case of corrected bit-flips.This
    particular condition should not be treated like an error.
    
    Signed-off-by: Bang Li <libang.linuxer@gmail.com>
    Fixes: e47f68587b82 ("mtd: check for max_bitflips in mtd_read_oob()")
    Cc: <stable@vger.kernel.org> # v3.7
    Acked-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20230328163012.4264-1-libang.linuxer@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f3d214d19899183d4e0cce7552998262112e4ab
Author: Min Li <lm0963hack@gmail.com>
Date:   Sat Mar 4 22:23:30 2023 +0800

    Bluetooth: Fix race condition in hidp_session_thread
    
    commit c95930abd687fcd1aa040dc4fe90dff947916460 upstream.
    
    There is a potential race condition in hidp_session_thread that may
    lead to use-after-free. For instance, the timer is active while
    hidp_del_timer is called in hidp_session_thread(). After hidp_session_put,
    then 'session' will be freed, causing kernel panic when hidp_idle_timeout
    is running.
    
    The solution is to use del_timer_sync instead of del_timer.
    
    Here is the call trace:
    
    ? hidp_session_probe+0x780/0x780
    call_timer_fn+0x2d/0x1e0
    __run_timers.part.0+0x569/0x940
    hidp_session_probe+0x780/0x780
    call_timer_fn+0x1e0/0x1e0
    ktime_get+0x5c/0xf0
    lapic_next_deadline+0x2c/0x40
    clockevents_program_event+0x205/0x320
    run_timer_softirq+0xa9/0x1b0
    __do_softirq+0x1b9/0x641
    __irq_exit_rcu+0xdc/0x190
    irq_exit_rcu+0xe/0x20
    sysvec_apic_timer_interrupt+0xa1/0xc0
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Min Li <lm0963hack@gmail.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1351551aa9058e07a20a27a158270cf84fcde621
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Thu Apr 6 09:33:09 2023 -0700

    Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp}
    
    commit a2a9339e1c9deb7e1e079e12e27a0265aea8421a upstream.
    
    Similar to commit d0be8347c623 ("Bluetooth: L2CAP: Fix use-after-free
    caused by l2cap_chan_put"), just use l2cap_chan_hold_unless_zero to
    prevent referencing a channel that is about to be destroyed.
    
    Cc: stable@kernel.org
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Min Li <lm0963hack@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c51e9559d09fe6cf9f2a1d0187c95df6a4c44cb3
Author: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date:   Wed Apr 5 22:12:20 2023 +0200

    ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards
    
    commit f342ac00da1064eb4f94b1f4bcacbdfea955797a upstream.
    
    The BIOS botches this one completely - it says the 2nd S/PDIF output is
    used, while in fact it's the 1st one. This is tested on DP45SG, but I'm
    assuming it's valid for the other boards in the series as well.
    
    Also add some comments regarding the pins.
    FWIW, the codec is apparently still sold by Tempo Semiconductor, Inc.,
    where one can download the documentation.
    
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230405201220.2197826-2-oswald.buddenhagen@gmx.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a30a72f09205194ec21f13327499c4ae35ce8433
Author: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date:   Wed Apr 5 22:12:19 2023 +0200

    ALSA: i2c/cs8427: fix iec958 mixer control deactivation
    
    commit e98e7a82bca2b6dce3e03719cff800ec913f9af7 upstream.
    
    snd_cs8427_iec958_active() would always delete
    SNDRV_CTL_ELEM_ACCESS_INACTIVE, even though the function has an
    argument `active`.
    
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230405201219.2197811-1-oswald.buddenhagen@gmx.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d34a86eddc48c17fdc219242d6fdf15c85ef863f
Author: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date:   Wed Apr 5 22:12:19 2023 +0200

    ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard
    
    commit c17f8fd31700392b1bb9e7b66924333568cb3700 upstream.
    
    Like the other boards from the D*45* series, this one sets up the
    outputs not quite correctly.
    
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230405201220.2197826-1-oswald.buddenhagen@gmx.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07c93160e911ba97d1b944bfcbf2ad091d46c3b3
Author: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date:   Wed Apr 5 22:12:20 2023 +0200

    ALSA: emu10k1: fix capture interrupt handler unlinking
    
    commit b09c551c77c7e01dc6e4f3c8bf06b5ffa7b06db5 upstream.
    
    Due to two copy/pastos, closing the MIC or EFX capture device would
    make a running ADC capture hang due to unsetting its interrupt handler.
    In principle, this would have also allowed dereferencing dangling
    pointers, but we're actually rather thorough at disabling and flushing
    the ints.
    
    While it may sound like one, this actually wasn't a hypothetical bug:
    PortAudio will open a capture stream at startup (and close it right
    away) even if not asked to. If the first device is busy, it will just
    proceed with the next one ... thus killing a concurrent capture.
    
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230405201220.2197923-1-oswald.buddenhagen@gmx.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a7cccf892b0746b497560a0d9cb4bb3a03f9ed2
Author: Kornel Dulęba <korneld@chromium.org>
Date:   Tue Apr 11 13:49:32 2023 +0000

    Revert "pinctrl: amd: Disable and mask interrupts on resume"
    
    commit 534e465845ebfb4a97eb5459d3931a0b35e3b9a5 upstream.
    
    This reverts commit b26cd9325be4c1fcd331b77f10acb627c560d4d7.
    
    This patch introduces a regression on Lenovo Z13, which can't wake
    from the lid with it applied; and some unspecified AMD based Dell
    platforms are unable to wake from hitting the power button
    
    Signed-off-by: Kornel Dulęba <korneld@chromium.org>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20230411134932.292287-1-korneld@chromium.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a55f268abdb74ac5633b75a09fefb58458e9d2a2
Author: Rongwei Wang <rongwei.wang@linux.alibaba.com>
Date:   Tue Apr 4 23:47:16 2023 +0800

    mm/swap: fix swap_info_struct race between swapoff and get_swap_pages()
    
    commit 6fe7d6b992113719e96744d974212df3fcddc76c upstream.
    
    The si->lock must be held when deleting the si from the available list.
    Otherwise, another thread can re-add the si to the available list, which
    can lead to memory corruption.  The only place we have found where this
    happens is in the swapoff path.  This case can be described as below:
    
    core 0                       core 1
    swapoff
    
    del_from_avail_list(si)      waiting
    
    try lock si->lock            acquire swap_avail_lock
                                 and re-add si into
                                 swap_avail_head
    
    acquire si->lock but missing si already being added again, and continuing
    to clear SWP_WRITEOK, etc.
    
    It can be easily found that a massive warning messages can be triggered
    inside get_swap_pages() by some special cases, for example, we call
    madvise(MADV_PAGEOUT) on blocks of touched memory concurrently, meanwhile,
    run much swapon-swapoff operations (e.g.  stress-ng-swap).
    
    However, in the worst case, panic can be caused by the above scene.  In
    swapoff(), the memory used by si could be kept in swap_info[] after
    turning off a swap.  This means memory corruption will not be caused
    immediately until allocated and reset for a new swap in the swapon path.
    A panic message caused: (with CONFIG_PLIST_DEBUG enabled)
    
    ------------[ cut here ]------------
    top: 00000000e58a3003, n: 0000000013e75cda, p: 000000008cd4451a
    prev: 0000000035b1e58a, n: 000000008cd4451a, p: 000000002150ee8d
    next: 000000008cd4451a, n: 000000008cd4451a, p: 000000008cd4451a
    WARNING: CPU: 21 PID: 1843 at lib/plist.c:60 plist_check_prev_next_node+0x50/0x70
    Modules linked in: rfkill(E) crct10dif_ce(E)...
    CPU: 21 PID: 1843 Comm: stress-ng Kdump: ... 5.10.134+
    Hardware name: Alibaba Cloud ECS, BIOS 0.0.0 02/06/2015
    pstate: 60400005 (nZCv daif +PAN -UAO -TCO BTYPE=--)
    pc : plist_check_prev_next_node+0x50/0x70
    lr : plist_check_prev_next_node+0x50/0x70
    sp : ffff0018009d3c30
    x29: ffff0018009d3c40 x28: ffff800011b32a98
    x27: 0000000000000000 x26: ffff001803908000
    x25: ffff8000128ea088 x24: ffff800011b32a48
    x23: 0000000000000028 x22: ffff001800875c00
    x21: ffff800010f9e520 x20: ffff001800875c00
    x19: ffff001800fdc6e0 x18: 0000000000000030
    x17: 0000000000000000 x16: 0000000000000000
    x15: 0736076307640766 x14: 0730073007380731
    x13: 0736076307640766 x12: 0730073007380731
    x11: 000000000004058d x10: 0000000085a85b76
    x9 : ffff8000101436e4 x8 : ffff800011c8ce08
    x7 : 0000000000000000 x6 : 0000000000000001
    x5 : ffff0017df9ed338 x4 : 0000000000000001
    x3 : ffff8017ce62a000 x2 : ffff0017df9ed340
    x1 : 0000000000000000 x0 : 0000000000000000
    Call trace:
     plist_check_prev_next_node+0x50/0x70
     plist_check_head+0x80/0xf0
     plist_add+0x28/0x140
     add_to_avail_list+0x9c/0xf0
     _enable_swap_info+0x78/0xb4
     __do_sys_swapon+0x918/0xa10
     __arm64_sys_swapon+0x20/0x30
     el0_svc_common+0x8c/0x220
     do_el0_svc+0x2c/0x90
     el0_svc+0x1c/0x30
     el0_sync_handler+0xa8/0xb0
     el0_sync+0x148/0x180
    irq event stamp: 2082270
    
    Now, si->lock locked before calling 'del_from_avail_list()' to make sure
    other thread see the si had been deleted and SWP_WRITEOK cleared together,
    will not reinsert again.
    
    This problem exists in versions after stable 5.10.y.
    
    Link: https://lkml.kernel.org/r/20230404154716.23058-1-rongwei.wang@linux.alibaba.com
    Fixes: a2468cc9bfdff ("swap: choose swap device according to numa node")
    Tested-by: Yongchen Yin <wb-yyc939293@alibaba-inc.com>
    Signed-off-by: Rongwei Wang <rongwei.wang@linux.alibaba.com>
    Cc: Bagas Sanjaya <bagasdotme@gmail.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Aaron Lu <aaron.lu@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f720853cf7dfdef8101589cb43b06b116b20a866
Author: Zheng Yejian <zhengyejian1@huawei.com>
Date:   Sat Mar 25 10:12:47 2023 +0800

    ring-buffer: Fix race while reader and writer are on the same page
    
    commit 6455b6163d8c680366663cdb8c679514d55fc30c upstream.
    
    When user reads file 'trace_pipe', kernel keeps printing following logs
    that warn at "cpu_buffer->reader_page->read > rb_page_size(reader)" in
    rb_get_reader_page(). It just looks like there's an infinite loop in
    tracing_read_pipe(). This problem occurs several times on arm64 platform
    when testing v5.10 and below.
    
      Call trace:
       rb_get_reader_page+0x248/0x1300
       rb_buffer_peek+0x34/0x160
       ring_buffer_peek+0xbc/0x224
       peek_next_entry+0x98/0xbc
       __find_next_entry+0xc4/0x1c0
       trace_find_next_entry_inc+0x30/0x94
       tracing_read_pipe+0x198/0x304
       vfs_read+0xb4/0x1e0
       ksys_read+0x74/0x100
       __arm64_sys_read+0x24/0x30
       el0_svc_common.constprop.0+0x7c/0x1bc
       do_el0_svc+0x2c/0x94
       el0_svc+0x20/0x30
       el0_sync_handler+0xb0/0xb4
       el0_sync+0x160/0x180
    
    Then I dump the vmcore and look into the problematic per_cpu ring_buffer,
    I found that tail_page/commit_page/reader_page are on the same page while
    reader_page->read is obviously abnormal:
      tail_page == commit_page == reader_page == {
        .write = 0x100d20,
        .read = 0x8f9f4805,  // Far greater than 0xd20, obviously abnormal!!!
        .entries = 0x10004c,
        .real_end = 0x0,
        .page = {
          .time_stamp = 0x857257416af0,
          .commit = 0xd20,  // This page hasn't been full filled.
          // .data[0...0xd20] seems normal.
        }
     }
    
    The root cause is most likely the race that reader and writer are on the
    same page while reader saw an event that not fully committed by writer.
    
    To fix this, add memory barriers to make sure the reader can see the
    content of what is committed. Since commit a0fcaaed0c46 ("ring-buffer: Fix
    race between reset page and reading page") has added the read barrier in
    rb_get_reader_page(), here we just need to add the write barrier.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230325021247.2923907-1-zhengyejian1@huawei.com
    
    Cc: stable@vger.kernel.org
    Fixes: 77ae365eca89 ("ring-buffer: make lockless")
    Suggested-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51ba3ee276a8f3e3b0b588526ebd8e9a9331aa2f
Author: John Keeping <john@metanate.com>
Date:   Mon Mar 27 18:36:46 2023 +0100

    ftrace: Mark get_lock_parent_ip() __always_inline
    
    commit ea65b41807a26495ff2a73dd8b1bab2751940887 upstream.
    
    If the compiler decides not to inline this function then preemption
    tracing will always show an IP inside the preemption disabling path and
    never the function actually calling preempt_{enable,disable}.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230327173647.1690849-1-john@metanate.com
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: stable@vger.kernel.org
    Fixes: f904f58263e1d ("sched/debug: Fix preempt_disable_ip recording for preempt_disable()")
    Signed-off-by: John Keeping <john@metanate.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1412fcad345d0c63874068a556cb1c03b87abb5
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Wed Mar 22 13:24:49 2023 -0700

    perf/core: Fix the same task check in perf_event_set_output
    
    [ Upstream commit 24d3ae2f37d8bc3c14b31d353c5d27baf582b6a6 ]
    
    The same task check in perf_event_set_output has some potential issues
    for some usages.
    
    For the current perf code, there is a problem if using of
    perf_event_open() to have multiple samples getting into the same mmap’d
    memory when they are both attached to the same process.
    https://lore.kernel.org/all/92645262-D319-4068-9C44-2409EF44888E@gmail.com/
    Because the event->ctx is not ready when the perf_event_set_output() is
    invoked in the perf_event_open().
    
    Besides the above issue, before the commit bd2756811766 ("perf: Rewrite
    core context handling"), perf record can errors out when sampling with
    a hardware event and a software event as below.
     $ perf record -e cycles,dummy --per-thread ls
     failed to mmap with 22 (Invalid argument)
    That's because that prior to the commit a hardware event and a software
    event are from different task context.
    
    The problem should be a long time issue since commit c3f00c70276d
    ("perk: Separate find_get_context() from event initialization").
    
    The task struct is stored in the event->hw.target for each per-thread
    event. It is a more reliable way to determine whether two events are
    attached to the same task.
    
    The event->hw.target was also introduced several years ago by the
    commit 50f16a8bf9d7 ("perf: Remove type specific target pointers"). It
    can not only be used to fix the issue with the current code, but also
    back port to fix the issues with an older kernel.
    
    Note: The event->hw.target was introduced later than commit
    c3f00c70276d. The patch may cannot be applied between the commit
    c3f00c70276d and commit 50f16a8bf9d7. Anybody that wants to back-port
    this at that period may have to find other solutions.
    
    Fixes: c3f00c70276d ("perf: Separate find_get_context() from event initialization")
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
    Link: https://lkml.kernel.org/r/20230322202449.512091-1-kan.liang@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a230b53cae827fdfd8d696d5cae55a03b02610c4
Author: Jeremy Soller <jeremy@system76.com>
Date:   Fri Mar 31 10:23:17 2023 -0600

    ALSA: hda/realtek: Add quirk for Clevo X370SNW
    
    commit 36d4d213c6d4fffae2645a601e8ae996de4c3645 upstream.
    
    Fixes speaker output and headset detection on Clevo X370SNW.
    
    Signed-off-by: Jeremy Soller <jeremy@system76.com>
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230331162317.14992-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fe0ea141fbb887d407f1bf572ebf24427480d5c
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Fri Mar 31 05:55:15 2023 +0900

    nilfs2: fix sysfs interface lifetime
    
    commit 42560f9c92cc43dce75dbf06cc0d840dced39b12 upstream.
    
    The current nilfs2 sysfs support has issues with the timing of creation
    and deletion of sysfs entries, potentially leading to null pointer
    dereferences, use-after-free, and lockdep warnings.
    
    Some of the sysfs attributes for nilfs2 per-filesystem instance refer to
    metadata file "cpfile", "sufile", or "dat", but
    nilfs_sysfs_create_device_group that creates those attributes is executed
    before the inodes for these metadata files are loaded, and
    nilfs_sysfs_delete_device_group which deletes these sysfs entries is
    called after releasing their metadata file inodes.
    
    Therefore, access to some of these sysfs attributes may occur outside of
    the lifetime of these metadata files, resulting in inode NULL pointer
    dereferences or use-after-free.
    
    In addition, the call to nilfs_sysfs_create_device_group() is made during
    the locking period of the semaphore "ns_sem" of nilfs object, so the
    shrinker call caused by the memory allocation for the sysfs entries, may
    derive lock dependencies "ns_sem" -> (shrinker) -> "locks acquired in
    nilfs_evict_inode()".
    
    Since nilfs2 may acquire "ns_sem" deep in the call stack holding other
    locks via its error handler __nilfs_error(), this causes lockdep to report
    circular locking.  This is a false positive and no circular locking
    actually occurs as no inodes exist yet when
    nilfs_sysfs_create_device_group() is called.  Fortunately, the lockdep
    warnings can be resolved by simply moving the call to
    nilfs_sysfs_create_device_group() out of "ns_sem".
    
    This fixes these sysfs issues by revising where the device's sysfs
    interface is created/deleted and keeping its lifetime within the lifetime
    of the metadata files above.
    
    Link: https://lkml.kernel.org/r/20230330205515.6167-1-konishi.ryusuke@gmail.com
    Fixes: dd70edbde262 ("nilfs2: integrate sysfs support into driver")
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Reported-by: syzbot+979fa7f9c0d086fdc282@syzkaller.appspotmail.com
      Link: https://lkml.kernel.org/r/0000000000003414b505f7885f7e@google.com
    Reported-by: syzbot+5b7d542076d9bddc3c6a@syzkaller.appspotmail.com
      Link: https://lkml.kernel.org/r/0000000000006ac86605f5f44eb9@google.com
    Cc: Viacheslav Dubeyko <slava@dubeyko.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dbf0e64b91ee8fcb278aea93eb06fc7d56ecbcc
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Tue Mar 28 02:53:18 2023 +0900

    nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread()
    
    commit 6be49d100c22ffea3287a4b19d7639d259888e33 upstream.
    
    The finalization of nilfs_segctor_thread() can race with
    nilfs_segctor_kill_thread() which terminates that thread, potentially
    causing a use-after-free BUG as KASAN detected.
    
    At the end of nilfs_segctor_thread(), it assigns NULL to "sc_task" member
    of "struct nilfs_sc_info" to indicate the thread has finished, and then
    notifies nilfs_segctor_kill_thread() of this using waitqueue
    "sc_wait_task" on the struct nilfs_sc_info.
    
    However, here, immediately after the NULL assignment to "sc_task", it is
    possible that nilfs_segctor_kill_thread() will detect it and return to
    continue the deallocation, freeing the nilfs_sc_info structure before the
    thread does the notification.
    
    This fixes the issue by protecting the NULL assignment to "sc_task" and
    its notification, with spinlock "sc_state_lock" of the struct
    nilfs_sc_info.  Since nilfs_segctor_kill_thread() does a final check to
    see if "sc_task" is NULL with "sc_state_lock" locked, this can eliminate
    the race.
    
    Link: https://lkml.kernel.org/r/20230327175318.8060-1-konishi.ryusuke@gmail.com
    Reported-by: syzbot+b08ebcc22f8f3e6be43a@syzkaller.appspotmail.com
    Link: https://lkml.kernel.org/r/00000000000000660d05f7dfa877@google.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28eb0ec68e0393518d381f74a005569ba3294667
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Tue Mar 21 11:47:50 2023 +0000

    tty: serial: sh-sci: Fix Rx on RZ/G2L SCI
    
    commit f92ed0cd9328aed918ebb0ebb64d259eccbcc6e7 upstream.
    
    SCI IP on RZ/G2L alike SoCs do not need regshift compared to other SCI
    IPs on the SH platform. Currently, it does regshift and configuring Rx
    wrongly. Drop adding regshift for RZ/G2L alike SoCs.
    
    Fixes: dfc80387aefb ("serial: sh-sci: Compute the regshift value for SCI ports")
    Cc: stable@vger.kernel.org
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/r/20230321114753.75038-3-biju.das.jz@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc4c2fc2d221241862a778f7c52fc3ff650d54d3
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Fri Mar 17 15:04:03 2023 +0000

    tty: serial: sh-sci: Fix transmit end interrupt handler
    
    commit b43a18647f03c87e77d50d6fe74904b61b96323e upstream.
    
    The fourth interrupt on SCI port is transmit end interrupt compared to
    the break interrupt on other port types. So, shuffle the interrupts to fix
    the transmit end interrupt handler.
    
    Fixes: e1d0be616186 ("sh-sci: Add h8300 SCI")
    Cc: stable <stable@kernel.org>
    Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/r/20230317150403.154094-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80947117863a5a3a992290517e5610e9caef27e7
Author: William Breathitt Gray <william.gray@linaro.org>
Date:   Fri Mar 10 19:22:48 2023 -0500

    iio: dac: cio-dac: Fix max DAC write value check for 12-bit
    
    commit c3701185ee1973845db088d8b0fc443397ab0eb2 upstream.
    
    The CIO-DAC series of devices only supports DAC values up to 12-bit
    rather than 16-bit. Trying to write a 16-bit value results in only the
    lower 12 bits affecting the DAC output which is not what the user
    expects. Instead, adjust the DAC write value check to reject values
    larger than 12-bit so that they fail explicitly as invalid for the user.
    
    Fixes: 3b8df5fd526e ("iio: Add IIO support for the Measurement Computing CIO-DAC family")
    Cc: stable@vger.kernel.org
    Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
    Link: https://lore.kernel.org/r/20230311002248.8548-1-william.gray@linaro.org
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50aeb77f6440cd42f0c38fa0df1179adb2f70768
Author: Bjørn Mork <bjorn@mork.no>
Date:   Tue Mar 28 20:41:31 2023 +0200

    USB: serial: option: add Quectel RM500U-CN modem
    
    commit 7708a3858e69db91a8b69487994f33b96d20192a upstream.
    
    This modem supports several modes with a class network function
    and a number of serial functions, all using ff/00/00
    
    The device ID is the same in all modes.
    
    RNDIS mode
    ----------
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0900 Rev= 4.04
    S:  Manufacturer=Quectel
    S:  Product=RM500U-CN
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    ECM mode
    --------
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0900 Rev= 4.04
    S:  Manufacturer=Quectel
    S:  Product=RM500U-CN
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    NCM mode
    --------
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0900 Rev= 4.04
    S:  Manufacturer=Quectel
    S:  Product=RM500U-CN
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0d Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0d Prot=00 Driver=cdc_ncm
    E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=01 Driver=cdc_ncm
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=01 Driver=cdc_ncm
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Reported-by: Andrew Green <askgreen@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91d494cb58a4b247fa56c9809dda965f7d5b0e03
Author: Enrico Sau <enrico.sau@gmail.com>
Date:   Tue Mar 14 10:00:59 2023 +0100

    USB: serial: option: add Telit FE990 compositions
    
    commit 773e8e7d07b753474b2ccd605ff092faaa9e65b9 upstream.
    
    Add the following Telit FE990 compositions:
    
    0x1080: tty, adb, rmnet, tty, tty, tty, tty
    0x1081: tty, adb, mbim, tty, tty, tty, tty
    0x1082: rndis, tty, adb, tty, tty, tty, tty
    0x1083: tty, adb, ecm, tty, tty, tty, tty
    
    Signed-off-by: Enrico Sau <enrico.sau@gmail.com>
    Link: https://lore.kernel.org/r/20230314090059.77876-1-enrico.sau@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14d750b4a72f59199c551076dda0de1198a4ac0e
Author: Kees Jan Koster <kjkoster@kjkoster.org>
Date:   Sat Feb 18 15:18:30 2023 +0100

    USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs
    
    commit 71f8afa2b66e356f435b6141b4a9ccf953e18356 upstream.
    
    The Silicon Labs IFS-USB-DATACABLE is used in conjunction with for example
    the Quint UPSes. It is used to enable Modbus communication with the UPS to
    query configuration, power and battery status.
    
    Signed-off-by: Kees Jan Koster <kjkoster@kjkoster.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f71fc8a580820deb67f631f544ed0c2f30f93a9
Author: Dhruva Gole <d-gole@ti.com>
Date:   Mon Apr 3 12:54:43 2023 +0530

    gpio: davinci: Add irq chip flag to skip set wake
    
    [ Upstream commit 7b75c4703609a3ebaf67271813521bc0281e1ec1 ]
    
    Add the IRQCHIP_SKIP_SET_WAKE flag since there are no special IRQ Wake
    bits that can be set to enable wakeup IRQ.
    
    Fixes: 3d9edf09d452 ("[ARM] 4457/2: davinci: GPIO support")
    Signed-off-by: Dhruva Gole <d-gole@ti.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f394f690a30a5ec0413c62777a058eaf3d6e10d5
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Mon Apr 3 15:34:17 2023 +0800

    ipv6: Fix an uninit variable access bug in __ip6_make_skb()
    
    [ Upstream commit ea30388baebcce37fd594d425a65037ca35e59e8 ]
    
    Syzbot reported a bug as following:
    
    =====================================================
    BUG: KMSAN: uninit-value in arch_atomic64_inc arch/x86/include/asm/atomic64_64.h:88 [inline]
    BUG: KMSAN: uninit-value in arch_atomic_long_inc include/linux/atomic/atomic-long.h:161 [inline]
    BUG: KMSAN: uninit-value in atomic_long_inc include/linux/atomic/atomic-instrumented.h:1429 [inline]
    BUG: KMSAN: uninit-value in __ip6_make_skb+0x2f37/0x30f0 net/ipv6/ip6_output.c:1956
     arch_atomic64_inc arch/x86/include/asm/atomic64_64.h:88 [inline]
     arch_atomic_long_inc include/linux/atomic/atomic-long.h:161 [inline]
     atomic_long_inc include/linux/atomic/atomic-instrumented.h:1429 [inline]
     __ip6_make_skb+0x2f37/0x30f0 net/ipv6/ip6_output.c:1956
     ip6_finish_skb include/net/ipv6.h:1122 [inline]
     ip6_push_pending_frames+0x10e/0x550 net/ipv6/ip6_output.c:1987
     rawv6_push_pending_frames+0xb12/0xb90 net/ipv6/raw.c:579
     rawv6_sendmsg+0x297e/0x2e60 net/ipv6/raw.c:922
     inet_sendmsg+0x101/0x180 net/ipv4/af_inet.c:827
     sock_sendmsg_nosec net/socket.c:714 [inline]
     sock_sendmsg net/socket.c:734 [inline]
     ____sys_sendmsg+0xa8e/0xe70 net/socket.c:2476
     ___sys_sendmsg+0x2a1/0x3f0 net/socket.c:2530
     __sys_sendmsg net/socket.c:2559 [inline]
     __do_sys_sendmsg net/socket.c:2568 [inline]
     __se_sys_sendmsg net/socket.c:2566 [inline]
     __x64_sys_sendmsg+0x367/0x540 net/socket.c:2566
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:766 [inline]
     slab_alloc_node mm/slub.c:3452 [inline]
     __kmem_cache_alloc_node+0x71f/0xce0 mm/slub.c:3491
     __do_kmalloc_node mm/slab_common.c:967 [inline]
     __kmalloc_node_track_caller+0x114/0x3b0 mm/slab_common.c:988
     kmalloc_reserve net/core/skbuff.c:492 [inline]
     __alloc_skb+0x3af/0x8f0 net/core/skbuff.c:565
     alloc_skb include/linux/skbuff.h:1270 [inline]
     __ip6_append_data+0x51c1/0x6bb0 net/ipv6/ip6_output.c:1684
     ip6_append_data+0x411/0x580 net/ipv6/ip6_output.c:1854
     rawv6_sendmsg+0x2882/0x2e60 net/ipv6/raw.c:915
     inet_sendmsg+0x101/0x180 net/ipv4/af_inet.c:827
     sock_sendmsg_nosec net/socket.c:714 [inline]
     sock_sendmsg net/socket.c:734 [inline]
     ____sys_sendmsg+0xa8e/0xe70 net/socket.c:2476
     ___sys_sendmsg+0x2a1/0x3f0 net/socket.c:2530
     __sys_sendmsg net/socket.c:2559 [inline]
     __do_sys_sendmsg net/socket.c:2568 [inline]
     __se_sys_sendmsg net/socket.c:2566 [inline]
     __x64_sys_sendmsg+0x367/0x540 net/socket.c:2566
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    It is because icmp6hdr does not in skb linear region under the scenario
    of SOCK_RAW socket. Access icmp6_hdr(skb)->icmp6_type directly will
    trigger the uninit variable access bug.
    
    Use a local variable icmp6_type to carry the correct value in different
    scenarios.
    
    Fixes: 14878f75abd5 ("[IPV6]: Add ICMPMsgStats MIB (RFC 4293) [rev 2]")
    Reported-by: syzbot+8257f4dcef79de670baf@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?id=3d605ec1d0a7f2a269a1a6936ac7f2b85975ee9c
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9346a1a21142357972a6f466ba6275ddc54b04ac
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Apr 1 19:09:57 2023 -0400

    sctp: check send stream number after wait_for_sndbuf
    
    [ Upstream commit 2584024b23552c00d95b50255e47bd18d306d31a ]
    
    This patch fixes a corner case where the asoc out stream count may change
    after wait_for_sndbuf.
    
    When the main thread in the client starts a connection, if its out stream
    count is set to N while the in stream count in the server is set to N - 2,
    another thread in the client keeps sending the msgs with stream number
    N - 1, and waits for sndbuf before processing INIT_ACK.
    
    However, after processing INIT_ACK, the out stream count in the client is
    shrunk to N - 2, the same to the in stream count in the server. The crash
    occurs when the thread waiting for sndbuf is awake and sends the msg in a
    non-existing stream(N - 1), the call trace is as below:
    
      KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]
      Call Trace:
       <TASK>
       sctp_cmd_send_msg net/sctp/sm_sideeffect.c:1114 [inline]
       sctp_cmd_interpreter net/sctp/sm_sideeffect.c:1777 [inline]
       sctp_side_effects net/sctp/sm_sideeffect.c:1199 [inline]
       sctp_do_sm+0x197d/0x5310 net/sctp/sm_sideeffect.c:1170
       sctp_primitive_SEND+0x9f/0xc0 net/sctp/primitive.c:163
       sctp_sendmsg_to_asoc+0x10eb/0x1a30 net/sctp/socket.c:1868
       sctp_sendmsg+0x8d4/0x1d90 net/sctp/socket.c:2026
       inet_sendmsg+0x9d/0xe0 net/ipv4/af_inet.c:825
       sock_sendmsg_nosec net/socket.c:722 [inline]
       sock_sendmsg+0xde/0x190 net/socket.c:745
    
    The fix is to add an unlikely check for the send stream number after the
    thread wakes up from the wait_for_sndbuf.
    
    Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations")
    Reported-by: syzbot+47c24ca20a2fa01f082e@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be71c3c75a488ca1594a98df0754094179ec8146
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Thu Mar 30 19:21:44 2023 -0700

    net: don't let netpoll invoke NAPI if in xmit context
    
    [ Upstream commit 275b471e3d2daf1472ae8fa70dc1b50c9e0b9e75 ]
    
    Commit 0db3dc73f7a3 ("[NETPOLL]: tx lock deadlock fix") narrowed
    down the region under netif_tx_trylock() inside netpoll_send_skb().
    (At that point in time netif_tx_trylock() would lock all queues of
    the device.) Taking the tx lock was problematic because driver's
    cleanup method may take the same lock. So the change made us hold
    the xmit lock only around xmit, and expected the driver to take
    care of locking within ->ndo_poll_controller().
    
    Unfortunately this only works if netpoll isn't itself called with
    the xmit lock already held. Netpoll code is careful and uses
    trylock(). The drivers, however, may be using plain lock().
    Printing while holding the xmit lock is going to result in rare
    deadlocks.
    
    Luckily we record the xmit lock owners, so we can scan all the queues,
    the same way we scan NAPI owners. If any of the xmit locks is held
    by the local CPU we better not attempt any polling.
    
    It would be nice if we could narrow down the check to only the NAPIs
    and the queue we're trying to use. I don't see a way to do that now.
    
    Reported-by: Roman Gushchin <roman.gushchin@linux.dev>
    Fixes: 0db3dc73f7a3 ("[NETPOLL]: tx lock deadlock fix")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 824bc1fd2ec3d389c372bc885170f1943642d010
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Mar 30 17:45:02 2023 +0000

    icmp: guard against too small mtu
    
    [ Upstream commit 7d63b67125382ff0ffdfca434acbc94a38bd092b ]
    
    syzbot was able to trigger a panic [1] in icmp_glue_bits(), or
    more exactly in skb_copy_and_csum_bits()
    
    There is no repro yet, but I think the issue is that syzbot
    manages to lower device mtu to a small value, fooling __icmp_send()
    
    __icmp_send() must make sure there is enough room for the
    packet to include at least the headers.
    
    We might in the future refactor skb_copy_and_csum_bits() and its
    callers to no longer crash when something bad happens.
    
    [1]
    kernel BUG at net/core/skbuff.c:3343 !
    invalid opcode: 0000 [#1] PREEMPT SMP KASAN
    CPU: 0 PID: 15766 Comm: syz-executor.0 Not tainted 6.3.0-rc4-syzkaller-00039-gffe78bbd5121 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    RIP: 0010:skb_copy_and_csum_bits+0x798/0x860 net/core/skbuff.c:3343
    Code: f0 c1 c8 08 41 89 c6 e9 73 ff ff ff e8 61 48 d4 f9 e9 41 fd ff ff 48 8b 7c 24 48 e8 52 48 d4 f9 e9 c3 fc ff ff e8 c8 27 84 f9 <0f> 0b 48 89 44 24 28 e8 3c 48 d4 f9 48 8b 44 24 28 e9 9d fb ff ff
    RSP: 0018:ffffc90000007620 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 00000000000001e8 RCX: 0000000000000100
    RDX: ffff8880276f6280 RSI: ffffffff87fdd138 RDI: 0000000000000005
    RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000000
    R10: 00000000000001e8 R11: 0000000000000001 R12: 000000000000003c
    R13: 0000000000000000 R14: ffff888028244868 R15: 0000000000000b0e
    FS: 00007fbc81f1c700(0000) GS:ffff88802ca00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2df43000 CR3: 00000000744db000 CR4: 0000000000150ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <IRQ>
    icmp_glue_bits+0x7b/0x210 net/ipv4/icmp.c:353
    __ip_append_data+0x1d1b/0x39f0 net/ipv4/ip_output.c:1161
    ip_append_data net/ipv4/ip_output.c:1343 [inline]
    ip_append_data+0x115/0x1a0 net/ipv4/ip_output.c:1322
    icmp_push_reply+0xa8/0x440 net/ipv4/icmp.c:370
    __icmp_send+0xb80/0x1430 net/ipv4/icmp.c:765
    ipv4_send_dest_unreach net/ipv4/route.c:1239 [inline]
    ipv4_link_failure+0x5a9/0x9e0 net/ipv4/route.c:1246
    dst_link_failure include/net/dst.h:423 [inline]
    arp_error_report+0xcb/0x1c0 net/ipv4/arp.c:296
    neigh_invalidate+0x20d/0x560 net/core/neighbour.c:1079
    neigh_timer_handler+0xc77/0xff0 net/core/neighbour.c:1166
    call_timer_fn+0x1a0/0x580 kernel/time/timer.c:1700
    expire_timers+0x29b/0x4b0 kernel/time/timer.c:1751
    __run_timers kernel/time/timer.c:2022 [inline]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+d373d60fddbdc915e666@syzkaller.appspotmail.com
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230330174502.1915328-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e68d7c640d41d8a371b8f6c2d2682ea437cbe21
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Mar 24 13:09:24 2023 +0100

    wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta
    
    [ Upstream commit 12b220a6171faf10638ab683a975cadcf1a352d6 ]
    
    Avoid potential data corruption issues caused by uninitialized driver
    private data structures.
    
    Reported-by: Brian Coverstone <brian@mainsequence.net>
    Fixes: 6a9d1b91f34d ("mac80211: add pre-RCU-sync sta removal driver operation")
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Link: https://lore.kernel.org/r/20230324120924.38412-3-nbd@nbd.name
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f2e22f60bf32ff46cc09815c26c2ac609fe4491
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Wed Mar 22 22:45:41 2023 +0100

    pwm: cros-ec: Explicitly set .polarity in .get_state()
    
    [ Upstream commit 30006b77c7e130e01d1ab2148cc8abf73dfcc4bf ]
    
    The driver only supports normal polarity. Complete the implementation of
    .get_state() by setting .polarity accordingly.
    
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Fixes: 1f0d3bb02785 ("pwm: Add ChromeOS EC PWM driver")
    Link: https://lore.kernel.org/r/20230228135508.1798428-3-u.kleine-koenig@pengutronix.de
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e573c833f4cd479ee6803d25b8389be6b9442631
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Tue Mar 21 00:17:36 2023 -0400

    NFSv4: Fix hangs when recovering open state after a server reboot
    
    [ Upstream commit 6165a16a5ad9b237bb3131cff4d3c601ccb8f9a3 ]
    
    When we're using a cached open stateid or a delegation in order to avoid
    sending a CLAIM_PREVIOUS open RPC call to the server, we don't have a
    new open stateid to present to update_open_stateid().
    Instead rely on nfs4_try_open_cached(), just as if we were doing a
    normal open.
    
    Fixes: d2bfda2e7aa0 ("NFSv4: don't reprocess cached open CLAIM_PREVIOUS")
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 958230432a0f5488e3aab31ad578cee783e517b1
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Jul 29 18:25:00 2019 +0100

    NFSv4: Check the return value of update_open_stateid()
    
    [ Upstream commit e3c8dc761ead061da2220ee8f8132f729ac3ddfe ]
    
    Ensure that we always check the return value of update_open_stateid()
    so that we can retry if the update of local state failed. This fixes
    infinite looping on state recovery.
    
    Fixes: e23008ec81ef3 ("NFSv4 reduce attribute requests for open reclaim")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Cc: stable@vger.kernel.org # v3.7+
    Stable-dep-of: 6165a16a5ad9 ("NFSv4: Fix hangs when recovering open state after a server reboot")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca2e3cdcc4263c6b3f9f77f616d1515d0b648782
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Sep 2 19:19:07 2018 -0400

    NFSv4: Convert struct nfs4_state to use refcount_t
    
    [ Upstream commit ace9fad43aa60a88af4b57a8328f0958e3d07bf0 ]
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Stable-dep-of: 6165a16a5ad9 ("NFSv4: Fix hangs when recovering open state after a server reboot")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c65a5e3becb6c015f118e2acde9f8806f2c6fcec
Author: Kornel Dulęba <korneld@chromium.org>
Date:   Mon Mar 20 09:32:59 2023 +0000

    pinctrl: amd: Disable and mask interrupts on resume
    
    [ Upstream commit b26cd9325be4c1fcd331b77f10acb627c560d4d7 ]
    
    This fixes a similar problem to the one observed in:
    commit 4e5a04be88fe ("pinctrl: amd: disable and mask interrupts on probe").
    
    On some systems, during suspend/resume cycle firmware leaves
    an interrupt enabled on a pin that is not used by the kernel.
    This confuses the AMD pinctrl driver and causes spurious interrupts.
    
    The driver already has logic to detect if a pin is used by the kernel.
    Leverage it to re-initialize interrupt fields of a pin only if it's not
    used by us.
    
    Cc: stable@vger.kernel.org
    Fixes: dbad75dd1f25 ("pinctrl: add AMD GPIO driver support.")
    Signed-off-by: Kornel Dulęba <korneld@chromium.org>
    Link: https://lore.kernel.org/r/20230320093259.845178-1-korneld@chromium.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c8989fe26fb2a66e8457b9b572b0f5798fed7d3
Author: Sachi King <nakato@nakato.io>
Date:   Sat Oct 9 14:32:40 2021 +1100

    pinctrl: amd: disable and mask interrupts on probe
    
    [ Upstream commit 4e5a04be88fe335ad5331f4f8c17f4ebd357e065 ]
    
    Some systems such as the Microsoft Surface Laptop 4 leave interrupts
    enabled and configured for use in sleep states on boot, which cause
    unexpected behaviour such as spurious wakes and failed resumes in
    s2idle states.
    
    As interrupts should not be enabled until they are claimed and
    explicitly enabled, disabling any interrupts mistakenly left enabled by
    firmware should be safe.
    
    Signed-off-by: Sachi King <nakato@nakato.io>
    Link: https://lore.kernel.org/r/20211009033240.21543-1-nakato@nakato.io
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Stable-dep-of: b26cd9325be4 ("pinctrl: amd: Disable and mask interrupts on resume")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a09370d83e14d510ab69c5644f0ecc3da61a065
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Jul 22 12:15:45 2020 +0200

    pinctrl: amd: Use irqchip template
    
    [ Upstream commit e81376ebbafc679a5cea65f25f5ab242172f52df ]
    
    This makes the driver use the irqchip template to assign
    properties to the gpio_irq_chip instead of using the
    explicit call to gpiochip_irqchip_add().
    
    The irqchip is instead added while adding the gpiochip.
    
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Cc: Sandeep Singh <sandeep.singh@amd.com>
    Link: https://lore.kernel.org/r/20200722101545.144373-1-linus.walleij@linaro.org
    Stable-dep-of: b26cd9325be4 ("pinctrl: amd: Disable and mask interrupts on resume")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5bddf35399da9abc80aa8aca852d41cbcc97e301
Author: Sandeep Singh <sandeep.singh@amd.com>
Date:   Thu Apr 4 13:16:26 2019 +0000

    pinctrl: Added IRQF_SHARED flag for amd-pinctrl driver
    
    [ Upstream commit 279ffafaf39d60b3c37cb3f0f7de310d0dd834ad ]
    
    Some of the AMD reference boards used single GPIO line for
    multiple devices. So added IRQF_SHARED flag in amd pinctrl driver.
    
    Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Stable-dep-of: b26cd9325be4 ("pinctrl: amd: Disable and mask interrupts on resume")
    Signed-off-by: Sasha Levin <sashal@kernel.org>