commit addba38e7c3bc19036a05c83bcce7878dc644d87
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Aug 12 13:19:45 2021 +0200

    Linux 4.19.203
    
    Link: https://lore.kernel.org/r/20210810172944.179901509@linuxfoundation.org
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4534571e1baf18dfe8a12addcb08cd82c2bd11b6
Author: Anson Huang <Anson.Huang@nxp.com>
Date:   Fri Aug 31 15:53:12 2018 +0800

    ARM: imx: add mmdc ipg clock operation for mmdc
    
    [ Upstream commit 9454a0caff6ac6d2a5ea17dd624dc13387bbfcd3 ]
    
    i.MX6 SoCs have MMDC ipg clock for registers access, to make
    sure MMDC registers access successfully, add optional clock
    enable for MMDC driver.
    
    Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa73444311956b5b1f14382ef0f6e32198c1c363
Author: Letu Ren <fantasquex@gmail.com>
Date:   Sun Jul 25 21:45:12 2021 +0800

    net/qla3xxx: fix schedule while atomic in ql_wait_for_drvr_lock and ql_adapter_reset
    
    [ Upstream commit 92766c4628ea349c8ddab0cd7bd0488f36e5c4ce ]
    
    When calling the 'ql_wait_for_drvr_lock' and 'ql_adapter_reset', the driver
    has already acquired the spin lock, so the driver should not call 'ssleep'
    in atomic context.
    
    This bug can be fixed by using 'mdelay' instead of 'ssleep'.
    
    Reported-by: Letu Ren <fantasquex@gmail.com>
    Signed-off-by: Letu Ren <fantasquex@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 704e08f3475347666ebed4e018fad7277834f056
Author: Prarit Bhargava <prarit@redhat.com>
Date:   Tue Jan 5 10:16:27 2021 -0500

    alpha: Send stop IPI to send to online CPUs
    
    [ Upstream commit caace6ca4e06f09413fb8f8a63319594cfb7d47d ]
    
    This issue was noticed while debugging a shutdown issue where some
    secondary CPUs are not being shutdown correctly.  A fix for that [1] requires
    that secondary cpus be offlined using the cpu_online_mask so that the
    stop operation is a no-op if CPU HOTPLUG is disabled.  I, like the author in
    [1] looked at the architectures and found that alpha is one of two
    architectures that executes smp_send_stop() on all possible CPUs.
    
    On alpha, smp_send_stop() sends an IPI to all possible CPUs but only needs
    to send them to online CPUs.
    
    Send the stop IPI to only the online CPUs.
    
    [1] https://lkml.org/lkml/2020/1/10/250
    
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Signed-off-by: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d7ee5d0a6a960f1790be3c9a0c71573405df63a
Author: Shreyansh Chouhan <chouhan.shreyansh630@gmail.com>
Date:   Fri Jul 9 20:59:29 2021 +0530

    reiserfs: check directory items on read from disk
    
    [ Upstream commit 13d257503c0930010ef9eed78b689cec417ab741 ]
    
    While verifying the leaf item that we read from the disk, reiserfs
    doesn't check the directory items, this could cause a crash when we
    read a directory item from the disk that has an invalid deh_location.
    
    This patch adds a check to the directory items read from the disk that
    does a bounds check on deh_location for the directory entries. Any
    directory entry header with a directory entry offset greater than the
    item length is considered invalid.
    
    Link: https://lore.kernel.org/r/20210709152929.766363-1-chouhan.shreyansh630@gmail.com
    Reported-by: syzbot+c31a48e6702ccb3d64c9@syzkaller.appspotmail.com
    Signed-off-by: Shreyansh Chouhan <chouhan.shreyansh630@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df2f583b63637f9f882ba604cf23e0336de82220
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Fri Jul 2 12:07:43 2021 +0800

    reiserfs: add check for root_inode in reiserfs_fill_super
    
    [ Upstream commit 2acf15b94d5b8ea8392c4b6753a6ffac3135cd78 ]
    
    Our syzcaller report a NULL pointer dereference:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    PGD 116e95067 P4D 116e95067 PUD 1080b5067 PMD 0
    Oops: 0010 [#1] SMP KASAN
    CPU: 7 PID: 592 Comm: a.out Not tainted 5.13.0-next-20210629-dirty #67
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_073836-buildvm-p4
    RIP: 0010:0x0
    Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
    RSP: 0018:ffff888114e779b8 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 1ffff110229cef39 RCX: ffffffffaa67e1aa
    RDX: 0000000000000000 RSI: ffff88810a58ee00 RDI: ffff8881233180b0
    RBP: ffffffffac38e9c0 R08: ffffffffaa67e17e R09: 0000000000000001
    R10: ffffffffb91c5557 R11: fffffbfff7238aaa R12: ffff88810a58ee00
    R13: ffff888114e77aa0 R14: 0000000000000000 R15: ffff8881233180b0
    FS:  00007f946163c480(0000) GS:ffff88839f1c0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffffffffd6 CR3: 00000001099c1000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     __lookup_slow+0x116/0x2d0
     ? page_put_link+0x120/0x120
     ? __d_lookup+0xfc/0x320
     ? d_lookup+0x49/0x90
     lookup_one_len+0x13c/0x170
     ? __lookup_slow+0x2d0/0x2d0
     ? reiserfs_schedule_old_flush+0x31/0x130
     reiserfs_lookup_privroot+0x64/0x150
     reiserfs_fill_super+0x158c/0x1b90
     ? finish_unfinished+0xb10/0xb10
     ? bprintf+0xe0/0xe0
     ? __mutex_lock_slowpath+0x30/0x30
     ? __kasan_check_write+0x20/0x30
     ? up_write+0x51/0xb0
     ? set_blocksize+0x9f/0x1f0
     mount_bdev+0x27c/0x2d0
     ? finish_unfinished+0xb10/0xb10
     ? reiserfs_kill_sb+0x120/0x120
     get_super_block+0x19/0x30
     legacy_get_tree+0x76/0xf0
     vfs_get_tree+0x49/0x160
     ? capable+0x1d/0x30
     path_mount+0xacc/0x1380
     ? putname+0x97/0xd0
     ? finish_automount+0x450/0x450
     ? kmem_cache_free+0xf8/0x5a0
     ? putname+0x97/0xd0
     do_mount+0xe2/0x110
     ? path_mount+0x1380/0x1380
     ? copy_mount_options+0x69/0x140
     __x64_sys_mount+0xf0/0x190
     do_syscall_64+0x35/0x80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    This is because 'root_inode' is initialized with wrong mode, and
    it's i_op is set to 'reiserfs_special_inode_operations'. Thus add
    check for 'root_inode' to fix the problem.
    
    Link: https://lore.kernel.org/r/20210702040743.1918552-1-yukuai3@huawei.com
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d4f303010b717a05ec560dc1228918116f58637
Author: Christoph Hellwig <hch@lst.de>
Date:   Fri Jul 9 15:02:37 2021 +0200

    libata: fix ata_pio_sector for CONFIG_HIGHMEM
    
    [ Upstream commit ecef6a9effe49e8e2635c839020b9833b71e934c ]
    
    Data transfers are not required to be block aligned in memory, so they
    span two pages.  Fix this by splitting the call to >sff_data_xfer into
    two for that case.
    
    This has been broken since the initial libata import before the damn
    of git, but was uncovered by the legacy ide driver removal.
    
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20210709130237.3730959-1-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d0f60617bc108e866c26fbd1a9f11cc5f3c3014
Author: Reinhard Speyerer <rspmn@arcor.de>
Date:   Wed Jun 12 19:02:46 2019 +0200

    qmi_wwan: add network device usage statistics for qmimux devices
    
    commit 44f82312fe9113bab6642f4d0eab6b1b7902b6e1 upstream.
    
    Add proper network device usage statistics for qmimux devices
    instead of reporting all-zero values for them.
    
    Fixes: c6adf77953bc ("net: usb: qmi_wwan: add qmap mux protocol support")
    Cc: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 344dd5f1a330eb4baddbb81fa28e89ba97dbeaa1
Author: Like Xu <likexu@tencent.com>
Date:   Mon Aug 2 15:08:50 2021 +0800

    perf/x86/amd: Don't touch the AMD64_EVENTSEL_HOSTONLY bit inside the guest
    
    commit df51fe7ea1c1c2c3bfdb81279712fdd2e4ea6c27 upstream.
    
    If we use "perf record" in an AMD Milan guest, dmesg reports a #GP
    warning from an unchecked MSR access error on MSR_F15H_PERF_CTLx:
    
      [] unchecked MSR access error: WRMSR to 0xc0010200 (tried to write 0x0000020000110076) at rIP: 0xffffffff8106ddb4 (native_write_msr+0x4/0x20)
      [] Call Trace:
      []  amd_pmu_disable_event+0x22/0x90
      []  x86_pmu_stop+0x4c/0xa0
      []  x86_pmu_del+0x3a/0x140
    
    The AMD64_EVENTSEL_HOSTONLY bit is defined and used on the host,
    while the guest perf driver should avoid such use.
    
    Fixes: 1018faa6cf23 ("perf/x86/kvm: Fix Host-Only/Guest-Only counting with SVM disabled")
    Signed-off-by: Like Xu <likexu@tencent.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
    Tested-by: Kim Phillips <kim.phillips@amd.com>
    Tested-by: Liam Merwick <liam.merwick@oracle.com>
    Link: https://lkml.kernel.org/r/20210802070850.35295-1-likexu@tencent.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 683b47d0ebb10ba0d272604b09686e023d10d40c
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Tue Jul 20 18:01:16 2021 +0800

    spi: meson-spicc: fix memory leak in meson_spicc_remove
    
    commit 8311ee2164c5cd1b63a601ea366f540eae89f10e upstream.
    
    In meson_spicc_probe, the error handling code needs to clean up master
    by calling spi_master_put, but the remove function does not have this
    function call. This will lead to memory leak of spicc->master.
    
    Reported-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Fixes: 454fa271bc4e("spi: Add Meson SPICC driver")
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Link: https://lore.kernel.org/r/20210720100116.1438974-1-mudongliangabcd@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4af3486a7f8150d141a1f9390e63e169b2b64771
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Aug 4 14:46:09 2021 -0700

    KVM: x86/mmu: Fix per-cpu counter corruption on 32-bit builds
    
    commit d5aaad6f83420efb8357ac8e11c868708b22d0a9 upstream.
    
    Take a signed 'long' instead of an 'unsigned long' for the number of
    pages to add/subtract to the total number of pages used by the MMU.  This
    fixes a zero-extension bug on 32-bit kernels that effectively corrupts
    the per-cpu counter used by the shrinker.
    
    Per-cpu counters take a signed 64-bit value on both 32-bit and 64-bit
    kernels, whereas kvm_mod_used_mmu_pages() takes an unsigned long and thus
    an unsigned 32-bit value on 32-bit kernels.  As a result, the value used
    to adjust the per-cpu counter is zero-extended (unsigned -> signed), not
    sign-extended (signed -> signed), and so KVM's intended -1 gets morphed to
    4294967295 and effectively corrupts the counter.
    
    This was found by a staggering amount of sheer dumb luck when running
    kvm-unit-tests on a 32-bit KVM build.  The shrinker just happened to kick
    in while running tests and do_shrink_slab() logged an error about trying
    to free a negative number of objects.  The truly lucky part is that the
    kernel just happened to be a slightly stale build, as the shrinker no
    longer yells about negative objects as of commit 18bb473e5031 ("mm:
    vmscan: shrink deferred objects proportional to priority").
    
     vmscan: shrink_slab: mmu_shrink_scan+0x0/0x210 [kvm] negative objects to delete nr=-858993460
    
    Fixes: bc8a3d8925a8 ("kvm: mmu: Fix overflow on kvm mmu page limit calculation")
    Cc: stable@vger.kernel.org
    Cc: Ben Gardon <bgardon@google.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20210804214609.1096003-1-seanjc@google.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 360928c500d1c004e2e01c432ba62dd800f976c5
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Jul 14 17:37:49 2021 -0400

    KVM: x86: accept userspace interrupt only if no event is injected
    
    commit fa7a549d321a4189677b0cea86e58d9db7977f7b upstream.
    
    Once an exception has been injected, any side effects related to
    the exception (such as setting CR2 or DR6) have been taked place.
    Therefore, once KVM sets the VM-entry interruption information
    field or the AMD EVENTINJ field, the next VM-entry must deliver that
    exception.
    
    Pending interrupts are processed after injected exceptions, so
    in theory it would not be a problem to use KVM_INTERRUPT when
    an injected exception is present.  However, DOSEMU is using
    run->ready_for_interrupt_injection to detect interrupt windows
    and then using KVM_SET_SREGS/KVM_SET_REGS to inject the
    interrupt manually.  For this to work, the interrupt window
    must be delayed after the completion of the previous event
    injection.
    
    Cc: stable@vger.kernel.org
    Reported-by: Stas Sergeev <stsp2@yandex.ru>
    Tested-by: Stas Sergeev <stsp2@yandex.ru>
    Fixes: 71cc849b7093 ("KVM: x86: Fix split-irqchip vs interrupt injection window request")
    Reviewed-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c83af3b16d201733a0881296b724b90b6ba56b7
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Tue Jun 22 07:11:31 2021 +0000

    pcmcia: i82092: fix a null pointer dereference bug
    
    commit e39cdacf2f664b09029e7c1eb354c91a20c367af upstream.
    
    During the driver loading process, the 'dev' field was not assigned, but
    the 'dev' field was referenced in the subsequent 'i82092aa_set_mem_map'
    function.
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    CC: <stable@vger.kernel.org>
    [linux@dominikbrodowski.net: shorten commit message, add Cc to stable]
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d631eeedf40ab717f8472fb5d743a16416e5218
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Sat Jun 26 06:11:13 2021 +0200

    MIPS: Malta: Do not byte-swap accesses to the CBUS UART
    
    commit 9a936d6c3d3d6c33ecbadf72dccdb567b5cd3c72 upstream.
    
    Correct big-endian accesses to the CBUS UART, a Malta on-board discrete
    TI16C550C part wired directly to the system controller's device bus, and
    do not use byte swapping with the 32-bit accesses to the device.
    
    The CBUS is used for devices such as the boot flash memory needed early
    on in system bootstrap even before PCI has been initialised.  Therefore
    it uses the system controller's device bus, which follows the endianness
    set with the CPU, which means no byte-swapping is ever required for data
    accesses to CBUS, unlike with PCI.
    
    The CBUS UART uses the UPIO_MEM32 access method, that is the `readl' and
    `writel' MMIO accessors, which on the MIPS platform imply byte-swapping
    with PCI systems.  Consequently the wrong byte lane is accessed with the
    big-endian configuration and the UART is not correctly accessed.
    
    As it happens the UPIO_MEM32BE access method makes use of the `ioread32'
    and `iowrite32' MMIO accessors, which still use `readl' and `writel'
    respectively, however they byte-swap data passed, effectively cancelling
    swapping done with the accessors themselves and making it suitable for
    the CBUS UART.
    
    Make the CBUS UART switch between UPIO_MEM32 and UPIO_MEM32BE then,
    based on the endianness selected.  With this change in place the device
    is correctly recognised with big-endian Malta at boot, along with the
    Super I/O devices behind PCI:
    
    Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    printk: console [ttyS0] disabled
    serial8250.0: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
    printk: console [ttyS0] enabled
    printk: bootconsole [uart8250] disabled
    serial8250.0: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
    serial8250.0: ttyS2 at MMIO 0x1f000900 (irq = 20, base_baud = 230400) is a 16550A
    
    Fixes: e7c4782f92fc ("[MIPS] Put an end to <asm/serial.h>'s long and annyoing existence")
    Cc: stable@vger.kernel.org # v2.6.23+
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Link: https://lore.kernel.org/r/alpine.DEB.2.21.2106260524430.37803@angie.orcam.me.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c39c32f92084736bc871c1ef096602eb1cc7b5b
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Sat Jun 26 06:11:05 2021 +0200

    serial: 8250: Mask out floating 16/32-bit bus bits
    
    commit e5227c51090e165db4b48dcaa300605bfced7014 upstream.
    
    Make sure only actual 8 bits of the IIR register are used in determining
    the port type in `autoconfig'.
    
    The `serial_in' port accessor returns the `unsigned int' type, meaning
    that with UPIO_AU, UPIO_MEM16, UPIO_MEM32, and UPIO_MEM32BE access types
    more than 8 bits of data are returned, of which the high order bits will
    often come from bus lines that are left floating in the data phase.  For
    example with the MIPS Malta board's CBUS UART, where the registers are
    aligned on 8-byte boundaries and which uses 32-bit accesses, data as
    follows is returned:
    
    YAMON> dump -32 0xbf000900 0x40
    
    BF000900: 1F000942 1F000942 1F000900 1F000900  ...B...B........
    BF000910: 1F000901 1F000901 1F000900 1F000900  ................
    BF000920: 1F000900 1F000900 1F000960 1F000960  ...........`...`
    BF000930: 1F000900 1F000900 1F0009FF 1F0009FF  ................
    
    YAMON>
    
    Evidently high-order 24 bits return values previously driven in the
    address phase (the 3 highest order address bits used with the command
    above are masked out in the simple virtual address mapping used here and
    come out at zeros on the external bus), a common scenario with bus lines
    left floating, due to bus capacitance.
    
    Consequently when the value of IIR, mapped at 0x1f000910, is retrieved
    in `autoconfig', it comes out at 0x1f0009c1 and when it is right-shifted
    by 6 and then assigned to 8-bit `scratch' variable, the value calculated
    is 0x27, not one of 0, 1, 2, 3 expected in port type determination.
    
    Fix the issue then, by assigning the value returned from `serial_in' to
    `scratch' first, which masks out 24 high-order bits retrieved, and only
    then right-shift the resulting 8-bit data quantity, producing the value
    of 3 in this case, as expected.  Fix the same issue in `serial_dl_read'.
    
    The problem first appeared with Linux 2.6.9-rc3 which predates our repo
    history, but the origin could be identified with the old MIPS/Linux repo
    also at: <git://git.kernel.org/pub/scm/linux/kernel/git/ralf/linux.git>
    as commit e0d2356c0777 ("Merge with Linux 2.6.9-rc3."), where code in
    `serial_in' was updated with this case:
    
    +       case UPIO_MEM32:
    +               return readl(up->port.membase + offset);
    +
    
    which made it produce results outside the unsigned 8-bit range for the
    first time, though obviously it is system dependent what actual values
    appear in the high order bits retrieved and it may well have been zeros
    in the relevant positions with the system the change originally was
    intended for.  It is at that point that code in `autoconf' should have
    been updated accordingly, but clearly it was overlooked.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org # v2.6.12+
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Link: https://lore.kernel.org/r/alpine.DEB.2.21.2106260516220.37803@angie.orcam.me.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc1954aa8a7e195ebd686a77e81c11863ce8edbf
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Aug 4 14:23:55 2021 -0400

    ext4: fix potential htree corruption when growing large_dir directories
    
    commit 877ba3f729fd3d8ef0e29bc2a55e57cfa54b2e43 upstream.
    
    Commit b5776e7524af ("ext4: fix potential htree index checksum
    corruption) removed a required restart when multiple levels of index
    nodes need to be split.  Fix this to avoid directory htree corruptions
    when using the large_dir feature.
    
    Cc: stable@kernel.org # v5.11
    Cc: Благодаренко Артём <artem.blagodarenko@gmail.com>
    Fixes: b5776e7524af ("ext4: fix potential htree index checksum corruption)
    Reported-by: Denis <denis@voxelsoft.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76ccb26c5312760113b2b3ef6de307474e8d4b45
Author: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
Date:   Thu Aug 5 10:40:47 2021 -0400

    pipe: increase minimum default pipe size to 2 pages
    
    commit 46c4c9d1beb7f5b4cec4dd90e7728720583ee348 upstream.
    
    This program always prints 4096 and hangs before the patch, and always
    prints 8192 and exits successfully after:
    
      int main()
      {
          int pipefd[2];
          for (int i = 0; i < 1025; i++)
              if (pipe(pipefd) == -1)
                  return 1;
          size_t bufsz = fcntl(pipefd[1], F_GETPIPE_SZ);
          printf("%zd\n", bufsz);
          char *buf = calloc(bufsz, 1);
          write(pipefd[1], buf, bufsz);
          read(pipefd[0], buf, bufsz-1);
          write(pipefd[1], buf, 1);
      }
    
    Note that you may need to increase your RLIMIT_NOFILE before running the
    program.
    
    Fixes: 759c01142a ("pipe: limit the per-user amount of pages allocated in pipes")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/lkml/1628086770.5rn8p04n6j.none@localhost/
    Link: https://lore.kernel.org/lkml/1628127094.lxxn016tj7.none@localhost/
    Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51f990c70a320cd51317ba21be1150bc40a96d91
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jun 23 10:45:21 2021 +0200

    media: rtl28xxu: fix zero-length control request
    
    commit 76f22c93b209c811bd489950f17f8839adb31901 upstream.
    
    The direction of the pipe argument must match the request-type direction
    bit or control requests may fail depending on the host-controller-driver
    implementation.
    
    Control transfers without a data stage are treated as OUT requests by
    the USB stack and should be using usb_sndctrlpipe(). Failing to do so
    will now trigger a warning.
    
    The driver uses a zero-length i2c-read request for type detection so
    update the control-request code to use usb_sndctrlpipe() in this case.
    
    Note that actually trying to read the i2c register in question does not
    work as the register might not exist (e.g. depending on the demodulator)
    as reported by Eero Lehtinen <debiangamer2@gmail.com>.
    
    Reported-by: syzbot+faf11bbadc5a372564da@syzkaller.appspotmail.com
    Reported-by: Eero Lehtinen <debiangamer2@gmail.com>
    Tested-by: Eero Lehtinen <debiangamer2@gmail.com>
    Fixes: d0f232e823af ("[media] rtl28xxu: add heuristic to detect chip type")
    Cc: stable@vger.kernel.org      # 4.0
    Cc: Antti Palosaari <crope@iki.fi>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef757e5b3bf2ddfeed744353ad59a0b63a8370c6
Author: Xiangyang Zhang <xyz.sun.ok@gmail.com>
Date:   Mon Jun 28 23:22:39 2021 +0800

    staging: rtl8723bs: Fix a resource leak in sd_int_dpc
    
    commit 990e4ad3ddcb72216caeddd6e62c5f45a21e8121 upstream.
    
    The "c2h_evt" variable is not freed when function call
    "c2h_evt_read_88xx" failed
    
    Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver")
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Xiangyang Zhang <xyz.sun.ok@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210628152239.5475-1-xyz.sun.ok@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78264dfb6fafa8efff024a473dfbeec3bb861f18
Author: Tyler Hicks <tyhicks@linux.microsoft.com>
Date:   Mon Jun 14 17:33:13 2021 -0500

    optee: Clear stale cache entries during initialization
    
    commit b5c10dd04b7418793517e3286cde5c04759a86de upstream.
    
    The shm cache could contain invalid addresses if
    optee_disable_shm_cache() was not called from the .shutdown hook of the
    previous kernel before a kexec. These addresses could be unmapped or
    they could point to mapped but unintended locations in memory.
    
    Clear the shared memory cache, while being careful to not translate the
    addresses returned from OPTEE_SMC_DISABLE_SHM_CACHE, during driver
    initialization. Once all pre-cache shm objects are removed, proceed with
    enabling the cache so that we know that we can handle cached shm objects
    with confidence later in the .shutdown hook.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
    Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0add455ae992b53b0d52cd4d8682528b4014c42
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Jul 21 11:00:53 2021 -0400

    tracing/histogram: Rename "cpu" to "common_cpu"
    
    commit 1e3bac71c5053c99d438771fc9fa5082ae5d90aa upstream.
    
    Currently the histogram logic allows the user to write "cpu" in as an
    event field, and it will record the CPU that the event happened on.
    
    The problem with this is that there's a lot of events that have "cpu"
    as a real field, and using "cpu" as the CPU it ran on, makes it
    impossible to run histograms on the "cpu" field of events.
    
    For example, if I want to have a histogram on the count of the
    workqueue_queue_work event on its cpu field, running:
    
     ># echo 'hist:keys=cpu' > events/workqueue/workqueue_queue_work/trigger
    
    Gives a misleading and wrong result.
    
    Change the command to "common_cpu" as no event should have "common_*"
    fields as that's a reserved name for fields used by all events. And
    this makes sense here as common_cpu would be a field used by all events.
    
    Now we can even do:
    
     ># echo 'hist:keys=common_cpu,cpu if cpu < 100' > events/workqueue/workqueue_queue_work/trigger
     ># cat events/workqueue/workqueue_queue_work/hist
     # event histogram
     #
     # trigger info: hist:keys=common_cpu,cpu:vals=hitcount:sort=hitcount:size=2048 if cpu < 100 [active]
     #
    
     { common_cpu:          0, cpu:          2 } hitcount:          1
     { common_cpu:          0, cpu:          4 } hitcount:          1
     { common_cpu:          7, cpu:          7 } hitcount:          1
     { common_cpu:          0, cpu:          7 } hitcount:          1
     { common_cpu:          0, cpu:          1 } hitcount:          1
     { common_cpu:          0, cpu:          6 } hitcount:          2
     { common_cpu:          0, cpu:          5 } hitcount:          2
     { common_cpu:          1, cpu:          1 } hitcount:          4
     { common_cpu:          6, cpu:          6 } hitcount:          4
     { common_cpu:          5, cpu:          5 } hitcount:         14
     { common_cpu:          4, cpu:          4 } hitcount:         26
     { common_cpu:          0, cpu:          0 } hitcount:         39
     { common_cpu:          2, cpu:          2 } hitcount:        184
    
    Now for backward compatibility, I added a trick. If "cpu" is used, and
    the field is not found, it will fall back to "common_cpu" and work as
    it did before. This way, it will still work for old programs that use
    "cpu" to get the actual CPU, but if the event has a "cpu" as a field, it
    will get that event's "cpu" field, which is probably what it wants
    anyway.
    
    I updated the tracefs/README to include documentation about both the
    common_timestamp and the common_cpu. This way, if that text is present in
    the README, then an application can know that common_cpu is supported over
    just plain "cpu".
    
    Link: https://lkml.kernel.org/r/20210721110053.26b4f641@oasis.local.home
    
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Fixes: 8b7622bf94a44 ("tracing: Add cpu field for hist triggers")
    Reviewed-by: Tom Zanussi <zanussi@kernel.org>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43cba13ff1e793c0e1e1e317c951dea63710290e
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Jul 30 17:19:51 2021 -0400

    tracing / histogram: Give calculation hist_fields a size
    
    commit 2c05caa7ba8803209769b9e4fe02c38d77ae88d0 upstream.
    
    When working on my user space applications, I found a bug in the synthetic
    event code where the automated synthetic event field was not matching the
    event field calculation it was attached to. Looking deeper into it, it was
    because the calculation hist_field was not given a size.
    
    The synthetic event fields are matched to their hist_fields either by
    having the field have an identical string type, or if that does not match,
    then the size and signed values are used to match the fields.
    
    The problem arose when I tried to match a calculation where the fields
    were "unsigned int". My tool created a synthetic event of type "u32". But
    it failed to match. The string was:
    
      diff=field1-field2:onmatch(event).trace(synth,$diff)
    
    Adding debugging into the kernel, I found that the size of "diff" was 0.
    And since it was given "unsigned int" as a type, the histogram fallback
    code used size and signed. The signed matched, but the size of u32 (4) did
    not match zero, and the event failed to be created.
    
    This can be worse if the field you want to match is not one of the
    acceptable fields for a synthetic event. As event fields can have any type
    that is supported in Linux, this can cause an issue. For example, if a
    type is an enum. Then there's no way to use that with any calculations.
    
    Have the calculation field simply take on the size of what it is
    calculating.
    
    Link: https://lkml.kernel.org/r/20210730171951.59c7743f@oasis.local.home
    
    Cc: Tom Zanussi <zanussi@kernel.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Fixes: 100719dcef447 ("tracing: Add simple expression support to hist triggers")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ee3c5f196b0f8144d213700879fec840a2576e2
Author: Hui Su <suhui@zeku.com>
Date:   Fri Jun 11 10:21:07 2021 +0800

    scripts/tracing: fix the bug that can't parse raw_trace_func
    
    commit 1c0cec64a7cc545eb49f374a43e9f7190a14defa upstream.
    
    Since commit 77271ce4b2c0 ("tracing: Add irq, preempt-count and need resched info
    to default trace output"), the default trace output format has been changed to:
              <idle>-0       [009] d.h. 22420.068695: _raw_spin_lock_irqsave <-hrtimer_interrupt
              <idle>-0       [000] ..s. 22420.068695: _nohz_idle_balance <-run_rebalance_domains
              <idle>-0       [011] d.h. 22420.068695: account_process_tick <-update_process_times
    
    origin trace output format:(before v3.2.0)
         # tracer: nop
         #
         #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
         #              | |       |          |         |
              migration/0-6     [000]    50.025810: rcu_note_context_switch <-__schedule
              migration/0-6     [000]    50.025812: trace_rcu_utilization <-rcu_note_context_switch
              migration/0-6     [000]    50.025813: rcu_sched_qs <-rcu_note_context_switch
              migration/0-6     [000]    50.025815: rcu_preempt_qs <-rcu_note_context_switch
              migration/0-6     [000]    50.025817: trace_rcu_utilization <-rcu_note_context_switch
              migration/0-6     [000]    50.025818: debug_lockdep_rcu_enabled <-__schedule
              migration/0-6     [000]    50.025820: debug_lockdep_rcu_enabled <-__schedule
    
    The draw_functrace.py(introduced in v2.6.28) can't parse the new version format trace_func,
    So we need modify draw_functrace.py to adapt the new version trace output format.
    
    Link: https://lkml.kernel.org/r/20210611022107.608787-1-suhui@zeku.com
    
    Cc: stable@vger.kernel.org
    Fixes: 77271ce4b2c0 tracing: Add irq, preempt-count and need resched info to default trace output
    Signed-off-by: Hui Su <suhui@zeku.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4549564ca1dbf81fb63a7dfaeeaaa482931c0cfe
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Sat Jul 17 21:21:27 2021 +0300

    usb: otg-fsm: Fix hrtimer list corruption
    
    commit bf88fef0b6f1488abeca594d377991171c00e52a upstream.
    
    The HNP work can be re-scheduled while it's still in-fly. This results in
    re-initialization of the busy work, resetting the hrtimer's list node of
    the work and crashing kernel with null dereference within kernel/timer
    once work's timer is expired. It's very easy to trigger this problem by
    re-plugging USB cable quickly. Initialize HNP work only once to fix this
    trouble.
    
     Unable to handle kernel NULL pointer dereference at virtual address 00000126)
     ...
     PC is at __run_timers.part.0+0x150/0x228
     LR is at __next_timer_interrupt+0x51/0x9c
     ...
     (__run_timers.part.0) from [<c0187a2b>] (run_timer_softirq+0x2f/0x50)
     (run_timer_softirq) from [<c01013ad>] (__do_softirq+0xd5/0x2f0)
     (__do_softirq) from [<c012589b>] (irq_exit+0xab/0xb8)
     (irq_exit) from [<c0170341>] (handle_domain_irq+0x45/0x60)
     (handle_domain_irq) from [<c04c4a43>] (gic_handle_irq+0x6b/0x7c)
     (gic_handle_irq) from [<c0100b65>] (__irq_svc+0x65/0xac)
    
    Cc: stable@vger.kernel.org
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Link: https://lore.kernel.org/r/20210717182134.30262-6-digetx@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b575d820ddac2e959acc9575c55a5d5272fbcee
Author: Maxim Devaev <mdevaev@gmail.com>
Date:   Tue Jul 27 21:58:00 2021 +0300

    usb: gadget: f_hid: idle uses the highest byte for duration
    
    commit fa20bada3f934e3b3e4af4c77e5b518cd5a282e5 upstream.
    
    SET_IDLE value must be shifted 8 bits to the right to get duration.
    This confirmed by USBCV test.
    
    Fixes: afcff6dc690e ("usb: gadget: f_hid: added GET_IDLE and SET_IDLE handlers")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Maxim Devaev <mdevaev@gmail.com>
    Link: https://lore.kernel.org/r/20210727185800.43796-1-mdevaev@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1071804cc89e984e0d2c966e890fd37f77a8e951
Author: Phil Elwell <phil@raspberrypi.com>
Date:   Fri Jul 23 18:59:30 2021 +0300

    usb: gadget: f_hid: fixed NULL pointer dereference
    
    commit 2867652e4766360adf14dfda3832455e04964f2a upstream.
    
    Disconnecting and reconnecting the USB cable can lead to crashes
    and a variety of kernel log spam.
    
    The problem was found and reproduced on the Raspberry Pi [1]
    and the original fix was created in Raspberry's own fork [2].
    
    Link: https://github.com/raspberrypi/linux/issues/3870 [1]
    Link: https://github.com/raspberrypi/linux/commit/a6e47d5f4efbd2ea6a0b6565cd2f9b7bb217ded5 [2]
    Signed-off-by: Maxim Devaev <mdevaev@gmail.com>
    Signed-off-by: Phil Elwell <phil@raspberrypi.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210723155928.210019-1-mdevaev@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92bb8520970470028aab5a1ea7875a798d2ba4c8
Author: Maxim Devaev <mdevaev@gmail.com>
Date:   Wed Jul 21 21:03:51 2021 +0300

    usb: gadget: f_hid: added GET_IDLE and SET_IDLE handlers
    
    commit afcff6dc690e24d636a41fd4bee6057e7c70eebd upstream.
    
    The USB HID standard declares mandatory support for GET_IDLE and SET_IDLE
    requests for Boot Keyboard. Most hosts can handle their absence, but others
    like some old/strange UEFIs and BIOSes consider this a critical error
    and refuse to work with f_hid.
    
    This primitive implementation of saving and returning idle is sufficient
    to meet the requirements of the standard and these devices.
    
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Maxim Devaev <mdevaev@gmail.com>
    Link: https://lore.kernel.org/r/20210721180351.129450-1-mdevaev@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d55383c699ad771e551835a8dce2197fdfc8cad
Author: Alexander Tsoy <alexander@tsoy.me>
Date:   Tue Jul 27 12:33:26 2021 +0300

    ALSA: usb-audio: Add registration quirk for JBL Quantum 600
    
    commit 4b0556b96e1fe7723629bd40e3813a30cd632faf upstream.
    
    Apparently JBL Quantum 600 has multiple hardware revisions. Apply
    registration quirk to another device id as well.
    
    Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210727093326.1153366-1-alexander@tsoy.me
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67cf0fbcac0d42d4d4686cddc1e39f465bbfec37
Author: Anirudh Rayabharam <mail@anirudhrb.com>
Date:   Wed Jul 28 14:21:07 2021 +0530

    firmware_loader: fix use-after-free in firmware_fallback_sysfs
    
    commit 75d95e2e39b27f733f21e6668af1c9893a97de5e upstream.
    
    This use-after-free happens when a fw_priv object has been freed but
    hasn't been removed from the pending list (pending_fw_head). The next
    time fw_load_sysfs_fallback tries to insert into the list, it ends up
    accessing the pending_list member of the previously freed fw_priv.
    
    The root cause here is that all code paths that abort the fw load
    don't delete it from the pending list. For example:
    
            _request_firmware()
              -> fw_abort_batch_reqs()
                  -> fw_state_aborted()
    
    To fix this, delete the fw_priv from the list in __fw_set_state() if
    the new state is DONE or ABORTED. This way, all aborts will remove
    the fw_priv from the list. Accordingly, remove calls to list_del_init
    that were being made before calling fw_state_(aborted|done).
    
    Also, in fw_load_sysfs_fallback, don't add the fw_priv to the pending
    list if it is already aborted. Instead, just jump out and return early.
    
    Fixes: bcfbd3523f3c ("firmware: fix a double abort case with fw_load_sysfs_fallback")
    Cc: stable <stable@vger.kernel.org>
    Reported-by: syzbot+de271708674e2093097b@syzkaller.appspotmail.com
    Tested-by: syzbot+de271708674e2093097b@syzkaller.appspotmail.com
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com>
    Link: https://lore.kernel.org/r/20210728085107.4141-3-mail@anirudhrb.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce699ac03ec0e41347363e1cf0924669f5449e34
Author: Anirudh Rayabharam <mail@anirudhrb.com>
Date:   Wed Jul 28 14:21:06 2021 +0530

    firmware_loader: use -ETIMEDOUT instead of -EAGAIN in fw_load_sysfs_fallback
    
    commit 0d6434e10b5377a006f6dd995c8fc5e2d82acddc upstream.
    
    The only motivation for using -EAGAIN in commit 0542ad88fbdd81bb
    ("firmware loader: Fix _request_firmware_load() return val for fw load
    abort") was to distinguish the error from -ENOMEM, and so there is no
    real reason in keeping it. -EAGAIN is typically used to tell the
    userspace to try something again and in this case re-using the sysfs
    loading interface cannot be retried when a timeout happens, so the
    return value is also bogus.
    
    -ETIMEDOUT is received when the wait times out and returning that
    is much more telling of what the reason for the failure was. So, just
    propagate that instead of returning -EAGAIN.
    
    Suggested-by: Luis Chamberlain <mcgrof@kernel.org>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210728085107.4141-2-mail@anirudhrb.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c660c337e846be1be897e2d71c3ebbf1763743cb
Author: David Bauer <mail@david-bauer.net>
Date:   Thu Aug 5 01:25:22 2021 +0200

    USB: serial: ftdi_sio: add device ID for Auto-M3 OP-COM v2
    
    commit 8da0e55c7988ef9f08a708c38e5c75ecd8862cf8 upstream.
    
    The Auto-M3 OP-COM v2 is a OBD diagnostic device using a FTD232 for the
    USB connection.
    
    Signed-off-by: David Bauer <mail@david-bauer.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5008c3e90a9b39dd6a2b05edc0c293eda58dd2b
Author: Willy Tarreau <w@1wt.eu>
Date:   Sat Jul 24 17:27:39 2021 +0200

    USB: serial: ch341: fix character loss at high transfer rates
    
    commit 3c18e9baee0ef97510dcda78c82285f52626764b upstream.
    
    The chip supports high transfer rates, but with the small default buffers
    (64 bytes read), some entire blocks are regularly lost. This typically
    happens at 1.5 Mbps (which is the default speed on Rockchip devices) when
    used as a console to access U-Boot where the output of the "help" command
    misses many lines and where "printenv" mangles the environment.
    
    The FTDI driver doesn't suffer at all from this. One difference is that
    it uses 512 bytes rx buffers and 256 bytes tx buffers. Adopting these
    values completely resolved the issue, even the output of "dmesg" is
    reliable. I preferred to leave the Tx value unchanged as it is not
    involved in this issue, while a change could increase the risk of
    triggering the same issue with other devices having too small buffers.
    
    I verified that it backports well (and works) at least to 5.4. It's of
    low importance enough to be dropped where it doesn't trivially apply
    anymore.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Link: https://lore.kernel.org/r/20210724152739.18726-1-w@1wt.eu
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67a377163fea67e9140e0ac67fb3d85ab5ced613
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Tue Aug 3 21:47:11 2021 +0200

    USB: serial: option: add Telit FD980 composition 0x1056
    
    commit 5648c073c33d33a0a19d0cb1194a4eb88efe2b71 upstream.
    
    Add the following Telit FD980 composition 0x1056:
    
    Cfg #1: mass storage
    Cfg #2: rndis, tty, adb, tty, tty, tty, tty
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Link: https://lore.kernel.org/r/20210803194711.3036-1-dnlplm@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 08433a2b5b0d3975feac4c6b50b02e8c47b74948
Author: Qiang.zhang <qiang.zhang@windriver.com>
Date:   Fri Jul 23 08:43:34 2021 +0800

    USB: usbtmc: Fix RCU stall warning
    
    commit 30fad76ce4e98263edfa8f885c81d5426c1bf169 upstream.
    
    rcu: INFO: rcu_preempt self-detected stall on CPU
    rcu:    1-...!: (2 ticks this GP) idle=d92/1/0x4000000000000000
            softirq=25390/25392 fqs=3
            (t=12164 jiffies g=31645 q=43226)
    rcu: rcu_preempt kthread starved for 12162 jiffies! g31645 f0x0
         RCU_GP_WAIT_FQS(5) ->state=0x0 ->cpu=0
    rcu:    Unless rcu_preempt kthread gets sufficient CPU time,
            OOM is now expected behavior.
    rcu: RCU grace-period kthread stack dump:
    task:rcu_preempt     state:R  running task
    ...........
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: unknown status received: -71
    usbtmc 3-1:0.0: usb_submit_urb failed: -19
    
    The function usbtmc_interrupt() resubmits urbs when the error status
    of an urb is -EPROTO. In systems using the dummy_hcd usb controller
    this can result in endless interrupt loops when the usbtmc device is
    disconnected from the host system.
    
    Since host controller drivers already try to recover from transmission
    errors, there is no need to resubmit the urb or try other solutions
    to repair the error situation.
    
    In case of errors the INT pipe just stops to wait for further packets.
    
    Fixes: dbf3e7f654c0 ("Implement an ioctl to support the USMTMC-USB488 READ_STATUS_BYTE operation")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+e2eae5639e7203360018@syzkaller.appspotmail.com
    Signed-off-by: Qiang.zhang <qiang.zhang@windriver.com>
    Acked-by: Guido Kiener <guido.kiener@rohde-schwarz.com>
    Link: https://lore.kernel.org/r/20210723004334.458930-1-qiang.zhang@windriver.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3719acc161d5c1ce09912cc1c9eddc2c5faa3c66
Author: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date:   Wed Aug 4 19:26:56 2021 +0900

    Bluetooth: defer cleanup of resources in hci_unregister_dev()
    
    [ Upstream commit e04480920d1eec9c061841399aa6f35b6f987d8b ]
    
    syzbot is hitting might_sleep() warning at hci_sock_dev_event() due to
    calling lock_sock() with rw spinlock held [1].
    
    It seems that history of this locking problem is a trial and error.
    
    Commit b40df5743ee8 ("[PATCH] bluetooth: fix socket locking in
    hci_sock_dev_event()") in 2.6.21-rc4 changed bh_lock_sock() to
    lock_sock() as an attempt to fix lockdep warning.
    
    Then, commit 4ce61d1c7a8e ("[BLUETOOTH]: Fix locking in
    hci_sock_dev_event().") in 2.6.22-rc2 changed lock_sock() to
    local_bh_disable() + bh_lock_sock_nested() as an attempt to fix the
    sleep in atomic context warning.
    
    Then, commit 4b5dd696f81b ("Bluetooth: Remove local_bh_disable() from
    hci_sock.c") in 3.3-rc1 removed local_bh_disable().
    
    Then, commit e305509e678b ("Bluetooth: use correct lock to prevent UAF
    of hdev object") in 5.13-rc5 again changed bh_lock_sock_nested() to
    lock_sock() as an attempt to fix CVE-2021-3573.
    
    This difficulty comes from current implementation that
    hci_sock_dev_event(HCI_DEV_UNREG) is responsible for dropping all
    references from sockets because hci_unregister_dev() immediately
    reclaims resources as soon as returning from
    hci_sock_dev_event(HCI_DEV_UNREG).
    
    But the history suggests that hci_sock_dev_event(HCI_DEV_UNREG) was not
    doing what it should do.
    
    Therefore, instead of trying to detach sockets from device, let's accept
    not detaching sockets from device at hci_sock_dev_event(HCI_DEV_UNREG),
    by moving actual cleanup of resources from hci_unregister_dev() to
    hci_cleanup_dev() which is called by bt_host_release() when all
    references to this unregistered device (which is a kobject) are gone.
    
    Since hci_sock_dev_event(HCI_DEV_UNREG) no longer resets
    hci_pi(sk)->hdev, we need to check whether this device was unregistered
    and return an error based on HCI_UNREGISTER flag.  There might be subtle
    behavioral difference in "monitor the hdev" functionality; please report
    if you found something went wrong due to this patch.
    
    Link: https://syzkaller.appspot.com/bug?extid=a5df189917e79d5e59c9 [1]
    Reported-by: syzbot <syzbot+a5df189917e79d5e59c9@syzkaller.appspotmail.com>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: e305509e678b ("Bluetooth: use correct lock to prevent UAF of hdev object")
    Acked-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76ab02d9b861da0785176f0228340f22023902fa
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Aug 5 20:46:45 2021 +0800

    blk-iolatency: error out if blk_get_queue() failed in iolatency_set_limit()
    
    [ Upstream commit 8d75d0eff6887bcac7225e12b9c75595e523d92d ]
    
    If queue is dying while iolatency_set_limit() is in progress,
    blk_get_queue() won't increment the refcount of the queue. However,
    blk_put_queue() will still decrement the refcount later, which will
    cause the refcout to be unbalanced.
    
    Thus error out in such case to fix the problem.
    
    Fixes: 8c772a9bfc7c ("blk-iolatency: fix IO hang due to negative inflight counter")
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Link: https://lore.kernel.org/r/20210805124645.543797-1-yukuai3@huawei.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92c8d9aebe575f2a44a875cbdcd98c93594473af
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Wed Aug 4 18:52:20 2021 +0300

    net: vxge: fix use-after-free in vxge_device_unregister
    
    [ Upstream commit 942e560a3d3862dd5dee1411dbdd7097d29b8416 ]
    
    Smatch says:
    drivers/net/ethernet/neterion/vxge/vxge-main.c:3518 vxge_device_unregister() error: Using vdev after free_{netdev,candev}(dev);
    drivers/net/ethernet/neterion/vxge/vxge-main.c:3518 vxge_device_unregister() error: Using vdev after free_{netdev,candev}(dev);
    drivers/net/ethernet/neterion/vxge/vxge-main.c:3520 vxge_device_unregister() error: Using vdev after free_{netdev,candev}(dev);
    drivers/net/ethernet/neterion/vxge/vxge-main.c:3520 vxge_device_unregister() error: Using vdev after free_{netdev,candev}(dev);
    
    Since vdev pointer is netdev private data accessing it after free_netdev()
    call can cause use-after-free bug. Fix it by moving free_netdev() call at
    the end of the function
    
    Fixes: 6cca200362b4 ("vxge: cleanup probe error paths")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bfee67c40873f47b2b4c4c7ea56cc9170e18daad
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Wed Aug 4 18:51:51 2021 +0300

    net: fec: fix use-after-free in fec_drv_remove
    
    [ Upstream commit 44712965bf12ae1758cec4de53816ed4b914ca1a ]
    
    Smatch says:
            drivers/net/ethernet/freescale/fec_main.c:3994 fec_drv_remove() error: Using fep after free_{netdev,candev}(ndev);
            drivers/net/ethernet/freescale/fec_main.c:3995 fec_drv_remove() error: Using fep after free_{netdev,candev}(ndev);
    
    Since fep pointer is netdev private data, accessing it after free_netdev()
    call can cause use-after-free bug. Fix it by moving free_netdev() call at
    the end of the function
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: a31eda65ba21 ("net: fec: fix clock count mis-match")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Reviewed-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 423cbae7ee2a70ea8dd0bc129aa3aa32c54e0f12
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Wed Aug 4 17:30:05 2021 +0300

    net: pegasus: fix uninit-value in get_interrupt_interval
    
    [ Upstream commit af35fc37354cda3c9c8cc4961b1d24bdc9d27903 ]
    
    Syzbot reported uninit value pegasus_probe(). The problem was in missing
    error handling.
    
    get_interrupt_interval() internally calls read_eprom_word() which can
    fail in some cases. For example: failed to receive usb control message.
    These cases should be handled to prevent uninit value bug, since
    read_eprom_word() will not initialize passed stack variable in case of
    internal failure.
    
    Fail log:
    
    BUG: KMSAN: uninit-value in get_interrupt_interval drivers/net/usb/pegasus.c:746 [inline]
    BUG: KMSAN: uninit-value in pegasus_probe+0x10e7/0x4080 drivers/net/usb/pegasus.c:1152
    CPU: 1 PID: 825 Comm: kworker/1:1 Not tainted 5.12.0-rc6-syzkaller #0
    ...
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     __dump_stack lib/dump_stack.c:79 [inline]
     dump_stack+0x24c/0x2e0 lib/dump_stack.c:120
     kmsan_report+0xfb/0x1e0 mm/kmsan/kmsan_report.c:118
     __msan_warning+0x5c/0xa0 mm/kmsan/kmsan_instr.c:197
     get_interrupt_interval drivers/net/usb/pegasus.c:746 [inline]
     pegasus_probe+0x10e7/0x4080 drivers/net/usb/pegasus.c:1152
    ....
    
    Local variable ----data.i@pegasus_probe created at:
     get_interrupt_interval drivers/net/usb/pegasus.c:1151 [inline]
     pegasus_probe+0xe57/0x4080 drivers/net/usb/pegasus.c:1152
     get_interrupt_interval drivers/net/usb/pegasus.c:1151 [inline]
     pegasus_probe+0xe57/0x4080 drivers/net/usb/pegasus.c:1152
    
    Reported-and-tested-by: syzbot+02c9f70f3afae308464a@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Link: https://lore.kernel.org/r/20210804143005.439-1-paskripkin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 836e2fd208c87ab00d843cbe4cec884ba0895158
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Aug 5 13:38:26 2021 +0300

    bnx2x: fix an error code in bnx2x_nic_load()
    
    [ Upstream commit fb653827c758725b149b5c924a5eb50ab4812750 ]
    
    Set the error code if bnx2x_alloc_fw_stats_mem() fails.  The current
    code returns success.
    
    Fixes: ad5afc89365e ("bnx2x: Separate VF and PF logic")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 273a38908f0ce411f4cc61212233c0fbc089757c
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Thu Jul 8 10:57:10 2021 +0200

    mips: Fix non-POSIX regexp
    
    [ Upstream commit 28bbbb9875a35975904e46f9b06fa689d051b290 ]
    
    When cross compiling a MIPS kernel on a BSD based HOSTCC leads
    to errors like
    
      SYNC    include/config/auto.conf.cmd - due to: .config
    egrep: empty (sub)expression
      UPD     include/config/kernel.release
      HOSTCC  scripts/dtc/dtc.o - due to target missing
    
    It turns out that egrep uses this egrep pattern:
    
                    (|MINOR_|PATCHLEVEL_)
    
    This is not valid syntax or gives undefined results according
    to POSIX 9.5.3 ERE Grammar
    
            https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html
    
    It seems to be silently accepted by the Linux egrep implementation
    while a BSD host complains.
    
    Such patterns can be replaced by a transformation like
    
            "(|p1|p2)" -> "(p1|p2)?"
    
    Fixes: 48c35b2d245f ("[MIPS] There is no __GNUC_MAJOR__")
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08882fba72a9be9446d744c60d6d418f547a0c96
Author: Antoine Tenart <atenart@kernel.org>
Date:   Tue Aug 3 12:00:16 2021 +0200

    net: ipv6: fix returned variable type in ip6_skb_dst_mtu
    
    [ Upstream commit 4039146777a91e1576da2bf38e0d8a1061a1ae47 ]
    
    The patch fixing the returned value of ip6_skb_dst_mtu (int -> unsigned
    int) was rebased between its initial review and the version applied. In
    the meantime fade56410c22 was applied, which added a new variable (int)
    used as the returned value. This lead to a mismatch between the function
    prototype and the variable used as the return value.
    
    Fixes: 40fc3054b458 ("net: ipv6: fix return value of ip6_skb_dst_mtu")
    Cc: Vadim Fedorenko <vfedorenko@novek.ru>
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 264216f8837a6ac690377c3118144de7f07e801b
Author: Fei Qin <fei.qin@corigine.com>
Date:   Tue Aug 3 12:39:11 2021 +0200

    nfp: update ethtool reporting of pauseframe control
    
    [ Upstream commit 9fdc5d85a8fe684cdf24dc31c6bc4a727decfe87 ]
    
    Pauseframe control is set to symmetric mode by default on the NFP.
    Pause frames can not be configured through ethtool now, but ethtool can
    report the supported mode.
    
    Fixes: 265aeb511bd5 ("nfp: add support for .get_link_ksettings()")
    Signed-off-by: Fei Qin <fei.qin@corigine.com>
    Signed-off-by: Louis Peens <louis.peens@corigine.com>
    Signed-off-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 f91e7bd934c705f25dc6651e29e9c857d48a51f4
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Aug 1 02:25:31 2021 -0400

    sctp: move the active_key update after sh_keys is added
    
    [ Upstream commit ae954bbc451d267f7d60d7b49db811d5a68ebd7b ]
    
    In commit 58acd1009226 ("sctp: update active_key for asoc when old key is
    being replaced"), sctp_auth_asoc_init_active_key() is called to update
    the active_key right after the old key is deleted and before the new key
    is added, and it caused that the active_key could be found with the key_id.
    
    In Ying Xu's testing, the BUG_ON in sctp_auth_asoc_init_active_key() was
    triggered:
    
      [ ] kernel BUG at net/sctp/auth.c:416!
      [ ] RIP: 0010:sctp_auth_asoc_init_active_key.part.8+0xe7/0xf0 [sctp]
      [ ] Call Trace:
      [ ]  sctp_auth_set_key+0x16d/0x1b0 [sctp]
      [ ]  sctp_setsockopt.part.33+0x1ba9/0x2bd0 [sctp]
      [ ]  __sys_setsockopt+0xd6/0x1d0
      [ ]  __x64_sys_setsockopt+0x20/0x30
      [ ]  do_syscall_64+0x5b/0x1a0
    
    So fix it by moving the active_key update after sh_keys is added.
    
    Fixes: 58acd1009226 ("sctp: update active_key for asoc when old key is being replaced")
    Reported-by: Ying Xu <yinxu@redhat.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 9309cd087b4d9dbb40395d37e5ea2072422a1b95
Author: Wang Hai <wanghai38@huawei.com>
Date:   Sat Jul 31 14:38:01 2021 +0800

    net: natsemi: Fix missing pci_disable_device() in probe and remove
    
    [ Upstream commit 7fe74dfd41c428afb24e2e615470832fa997ff14 ]
    
    Replace pci_enable_device() with pcim_enable_device(),
    pci_disable_device() and pci_release_regions() will be
    called in release automatically.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a351cafd536e9fa8a8d16c7749af97325b6a1fa3
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Wed Jun 30 09:58:23 2021 +0200

    media: videobuf2-core: dequeue if start_streaming fails
    
    [ Upstream commit c592b46907adbeb81243f7eb7a468c36692658b8 ]
    
    If a vb2_queue sets q->min_buffers_needed then when the number of
    queued buffers reaches q->min_buffers_needed, vb2_core_qbuf() will call
    the start_streaming() callback. If start_streaming() returns an error,
    then that error was just returned by vb2_core_qbuf(), but the buffer
    was still queued. However, userspace expects that if VIDIOC_QBUF fails,
    the buffer is returned dequeued.
    
    So if start_streaming() fails, then remove the buffer from the queue,
    thus avoiding this unwanted side-effect.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    Fixes: b3379c6201bb ("[media] vb2: only call start_streaming if sufficient buffers are queued")
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 489492b5a81f0f6de1ffa246e4183e479298fd2b
Author: Li Manyi <limanyi@uniontech.com>
Date:   Mon Jul 26 19:49:13 2021 +0800

    scsi: sr: Return correct event when media event code is 3
    
    [ Upstream commit 5c04243a56a7977185b00400e59ca7e108004faf ]
    
    Media event code 3 is defined in the MMC-6 spec as follows:
    
      "MediaRemoval: The media has been removed from the specified slot, and
       the Drive is unable to access the media without user intervention. This
       applies to media changers only."
    
    This indicated that treating the condition as an EJECT_REQUEST was
    appropriate. However, doing so had the unfortunate side-effect of causing
    the drive tray to be physically ejected on resume. Instead treat the event
    as a MEDIA_CHANGE request.
    
    Fixes: 7dd753ca59d6 ("scsi: sr: Return appropriate error code when disk is ejected")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=213759
    Link: https://lore.kernel.org/r/20210726114913.6760-1-limanyi@uniontech.com
    Signed-off-by: Li Manyi <limanyi@uniontech.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6af9385fe59c73b60df6842d96059cff7151e31
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Thu Jul 1 16:00:22 2021 +0200

    omap5-board-common: remove not physically existing vdds_1v8_main fixed-regulator
    
    [ Upstream commit c68ef4ad180e09805fa46965d15e1dfadf09ffa5 ]
    
    This device tree include file describes a fixed-regulator
    connecting smps7_reg output (1.8V) to some 1.8V rail and
    consumers (vdds_1v8_main).
    
    This regulator does not physically exist.
    
    I assume it was introduced as a wrapper around smps7_reg
    to provide a speaking signal name "vdds_1v8_main" as label.
    
    This fixed-regulator without real function was not an issue
    in driver code until
    
      Commit 98e48cd9283d ("regulator: core: resolve supply for boot-on/always-on regulators")
    
    introduced a new check for regulator initialization which
    makes Palmas regulator registration fail:
    
    [    5.407712] ldo1: supplied by vsys_cobra
    [    5.412748] ldo2: supplied by vsys_cobra
    [    5.417603] palmas-pmic 48070000.i2c:palmas@48:palmas_pmic: failed to register 48070000.i2c:palmas@48:palmas_pmic regulator
    
    The reason is that the supply-chain of regulators is too
    long and goes from ldo3 through the virtual vdds_1v8_main
    regulator and then back to smps7. This adds a cross-dependency
    of probing Palmas regulators and the fixed-regulator which
    leads to probe deferral by the new check and is no longer
    resolved.
    
    Since we do not control what device tree files including this
    one reference (either &vdds_1v8_main or &smps7_reg or both)
    we keep both labels for smps7 for compatibility.
    
    Fixes: 98e48cd9283d ("regulator: core: resolve supply for boot-on/always-on regulators")
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82ff713e72b5eeb97312cd7944159ba55934963a
Author: Dario Binacchi <dariobin@libero.it>
Date:   Sun Jul 25 18:07:25 2021 +0200

    clk: stm32f4: fix post divisor setup for I2S/SAI PLLs
    
    [ Upstream commit 24b5b1978cd5a80db58e2a19db2f9c36fe8d4f7a ]
    
    Enabling the framebuffer leads to a system hang. Running, as a debug
    hack, the store_pan() function in drivers/video/fbdev/core/fbsysfs.c
    without taking the console_lock, allows to see the crash backtrace on
    the serial line.
    
    ~ # echo 0 0 > /sys/class/graphics/fb0/pan
    
    [    9.719414] Unhandled exception: IPSR = 00000005 LR = fffffff1
    [    9.726937] CPU: 0 PID: 49 Comm: sh Not tainted 5.13.0-rc5 #9
    [    9.733008] Hardware name: STM32 (Device Tree Support)
    [    9.738296] PC is at clk_gate_is_enabled+0x0/0x28
    [    9.743426] LR is at stm32f4_pll_div_set_rate+0xf/0x38
    [    9.748857] pc : [<0011e4be>]    lr : [<0011f9e3>]    psr: 0100000b
    [    9.755373] sp : 00bc7be0  ip : 00000000  fp : 001f3ac4
    [    9.760812] r10: 002610d0  r9 : 01efe920  r8 : 00540560
    [    9.766269] r7 : 02e7ddb0  r6 : 0173eed8  r5 : 00000000  r4 : 004027c0
    [    9.773081] r3 : 0011e4bf  r2 : 02e7ddb0  r1 : 0173eed8  r0 : 1d3267b8
    [    9.779911] xPSR: 0100000b
    [    9.782719] CPU: 0 PID: 49 Comm: sh Not tainted 5.13.0-rc5 #9
    [    9.788791] Hardware name: STM32 (Device Tree Support)
    [    9.794120] [<0000afa1>] (unwind_backtrace) from [<0000a33f>] (show_stack+0xb/0xc)
    [    9.802421] [<0000a33f>] (show_stack) from [<0000a8df>] (__invalid_entry+0x4b/0x4c)
    
    The `pll_num' field in the post_div_data configuration contained a wrong
    value which also referenced an uninitialized hardware clock when
    clk_register_pll_div() was called.
    
    Fixes: 517633ef630e ("clk: stm32f4: Add post divisor for I2S & SAI PLLs")
    Signed-off-by: Dario Binacchi <dariobin@libero.it>
    Reviewed-by: Gabriel Fernandez <gabriel.fernandez@st.com>
    Link: https://lore.kernel.org/r/20210725160725.10788-1-dariobin@libero.it
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb6c9448a5c85135b8553bd28643b42cb05745d9
Author: chihhao.chen <chihhao.chen@mediatek.com>
Date:   Sat Jul 24 12:23:41 2021 +0800

    ALSA: usb-audio: fix incorrect clock source setting
    
    [ Upstream commit 4511781f95da0a3b2bad34f3f5e3967e80cd2d18 ]
    
    The following scenario describes an echo test for
    Samsung USBC Headset (AKG) with VID/PID (0x04e8/0xa051).
    
    We first start a capture stream(USB IN transfer) in 96Khz/24bit/1ch mode.
    In clock find source function, we get value 0x2 for clock selector
    and 0x1 for clock source.
    
    Kernel-4.14 behavior
    Since clock source is valid so clock selector was not set again.
    We pass through this function and start a playback stream(USB OUT transfer)
    in 48Khz/32bit/2ch mode. This time we get value 0x1 for clock selector
    and 0x1 for clock source. Finally clock id with this setting is 0x9.
    
    Kernel-5.10 behavior
    Clock selector was always set one more time even it is valid.
    When we start a playback stream, we will get 0x2 for clock selector
    and 0x1 for clock source. In this case clock id becomes 0xA.
    This is an incorrect clock source setting and results in severe noises.
    We see wrong data rate in USB IN transfer.
    (From 288 bytes/ms becomes 144 bytes/ms) It should keep in 288 bytes/ms.
    
    This earphone works fine on older kernel version load because
    this is a newly-added behavior.
    
    Fixes: d2e8f641257d ("ALSA: usb-audio: Explicitly set up the clock selector")
    Signed-off-by: chihhao.chen <chihhao.chen@mediatek.com>
    Link: https://lore.kernel.org/r/1627100621-19225-1-git-send-email-chihhao.chen@mediatek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c22aabdfb7c358cc8c9df970994a3c8f455f7ca9
Author: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Date:   Tue Jul 13 23:21:07 2021 +0300

    ARM: dts: colibri-imx6ull: limit SDIO clock to 25MHz
    
    [ Upstream commit 828db68f4ff1ab6982a36a56522b585160dc8c8e ]
    
    NXP and AzureWave don't recommend using SDIO bus mode 3.3V@50MHz due
    to noise affecting the wireless throughput. Colibri iMX6ULL uses only
    3.3V signaling for Wi-Fi module AW-CM276NF.
    
    Limit the SDIO Clock on Colibri iMX6ULL to 25MHz.
    
    Fixes: c2e4987e0e02 ("ARM: dts: imx6ull: add Toradex Colibri iMX6ULL support")
    Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba5b3733e026e0b54c98dac28874a510ef10adf5
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Jun 15 20:52:38 2021 +0800

    ARM: imx: add missing iounmap()
    
    [ Upstream commit f9613aa07f16d6042e74208d1b40a6104d72964a ]
    
    Commit e76bdfd7403a ("ARM: imx: Added perf functionality to mmdc driver")
    introduced imx_mmdc_remove(), the mmdc_base need be unmapped in it if
    config PERF_EVENTS is enabled.
    
    If imx_mmdc_perf_init() fails, the mmdc_base also need be unmapped.
    
    Fixes: e76bdfd7403a ("ARM: imx: Added perf functionality to mmdc driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a61a98bbff14d8dcd767b17b0b6d18d0d65116be
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Aug 3 13:43:12 2021 +0200

    ALSA: seq: Fix racy deletion of subscriber
    
    commit 97367c97226aab8b298ada954ce12659ee3ad2a4 upstream.
    
    It turned out that the current implementation of the port subscription
    is racy.  The subscription contains two linked lists, and we have to
    add to or delete from both lists.  Since both connection and
    disconnection procedures perform the same order for those two lists
    (i.e. src list, then dest list), when a deletion happens during a
    connection procedure, the src list may be deleted before the dest list
    addition completes, and this may lead to a use-after-free or an Oops,
    even though the access to both lists are protected via mutex.
    
    The simple workaround for this race is to change the access order for
    the disconnection, namely, dest list, then src list.  This assures
    that the connection has been established when disconnecting, and also
    the concurrent deletion can be avoided.
    
    Reported-and-tested-by: folkert <folkert@vanheusden.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210801182754.GP890690@belle.intranet.vanheusden.com
    Link: https://lore.kernel.org/r/20210803114312.2536-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87db7214e292d6b53e2068311c090acad47ad272
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Tue Aug 3 18:14:44 2021 +0200

    Revert "ACPICA: Fix memory leak caused by _CID repair function"
    
    commit 6511a8b5b7a65037340cd8ee91a377811effbc83 upstream.
    
    Revert commit c27bac0314131 ("ACPICA: Fix memory leak caused by _CID
    repair function") which is reported to cause a boot issue on Acer
    Swift 3 (SF314-51).
    
    Reported-by: Adrien Precigout <dev@asdrip.fr>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>