commit a37da2be8e6c85c438a1528f9c971e1811086db3
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Aug 12 13:32:27 2021 +0200

    Linux 5.13.10
    
    Link: https://lore.kernel.org/r/20210810173000.928681411@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Aakash Hemadri <aakashhemadri123@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65485c34aa432958ea68ce493771bf4668c6eed3
Author: Michael Zaidman <michael.zaidman@gmail.com>
Date:   Thu Jul 29 13:26:03 2021 +0300

    HID: ft260: fix device removal due to USB disconnect
    
    [ Upstream commit db8d3a21275c807a4047a21bde3b57d49ca55d82 ]
    
    This commit fixes a functional regression introduced by the commit 82f09a637dd3
    ("HID: ft260: improve error handling of ft260_hid_feature_report_get()")
    when upon USB disconnect, the FTDI FT260 i2c device is still available within
    the /dev folder.
    
    In my company's product, where the host USB to FT260 USB connection is
    hard-wired in the PCB, the issue is not reproducible. To reproduce it, I used
    the VirtualBox Ubuntu 20.04 VM and the UMFT260EV1A development module for the
    FTDI FT260 chip:
    
    Plug the UMFT260EV1A module into a USB port and attach it to VM.
    
    The VM shows 2 i2c devices under the /dev:
        michael@michael-VirtualBox:~$ ls /dev/i2c-*
        /dev/i2c-0  /dev/i2c-1
    
    The i2c-0 is not related to the FTDI FT260:
        michael@michael-VirtualBox:~$ cat /sys/bus/i2c/devices/i2c-0/name
        SMBus PIIX4 adapter at 4100
    
    The i2c-1 is created by hid-ft260.ko:
        michael@michael-VirtualBox:~$ cat /sys/bus/i2c/devices/i2c-1/name
        FT260 usb-i2c bridge on hidraw1
    
    Now, detach the FTDI FT260 USB device from VM. We expect the /dev/i2c-1
    to disappear, but it's still here:
        michael@michael-VirtualBox:~$ ls /dev/i2c-*
        /dev/i2c-0  /dev/i2c-1
    
    And the kernel log shows:
        [  +0.001202] usb 2-2: USB disconnect, device number 3
        [  +0.000109] ft260 0003:0403:6030.0002: failed to retrieve system status
        [  +0.000316] ft260 0003:0403:6030.0003: failed to retrieve system status
    
    It happens because the commit 82f09a637dd3 changed the ft260_get_system_config()
    return logic. This caused the ft260_is_interface_enabled() to exit with error
    upon the FT260 device USB disconnect, which in turn, aborted the ft260_remove()
    before deleting the FT260 i2c device and cleaning its sysfs stuff.
    
    This commit restores the FT260 USB removal functionality and improves the
    ft260_is_interface_enabled() code to handle correctly all chip modes defined
    by the device interface configuration pins DCNF0 and DCNF1.
    
    Signed-off-by: Michael Zaidman <michael.zaidman@gmail.com>
    Acked-by: Aaron Jones (FTDI-UK) <aaron.jones@ftdichip.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6cf4cab9db7e295c3f70bed0d778ff2623af6dfe
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Mon Jul 26 17:36:30 2021 +0200

    platform/x86: gigabyte-wmi: add support for B550 Aorus Elite V2
    
    [ Upstream commit 2b2c66f607d00d17f879c0d946d44340bfbdc501 ]
    
    Reported as working here:
    https://github.com/t-8ch/linux-gigabyte-wmi-driver/issues/1#issuecomment-879398883
    
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Link: https://lore.kernel.org/r/20210726153630.65213-1-linux@weissschuh.net
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37d363b3f6f79d73caa9ccf73b88d43fb22b2542
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jul 21 18:11:51 2021 -0400

    drm/amdgpu/display: only enable aux backlight control for OLED panels
    
    [ Upstream commit f2ad3accefc63e72e9932e141c21875cc04beec8 ]
    
    We've gotten a number of reports about backlight control not
    working on panels which indicate that they use aux backlight
    control.  A recent patch:
    
    commit 2d73eabe2984a435737498ab39bb1500a9ffe9a9
    Author: Camille Cho <Camille.Cho@amd.com>
    Date:   Thu Jul 8 18:28:37 2021 +0800
    
        drm/amd/display: Only set default brightness for OLED
    
        [Why]
        We used to unconditionally set backlight path as AUX for panels capable
        of backlight adjustment via DPCD in set default brightness.
    
        [How]
        This should be limited to OLED panel only since we control backlight via
        PWM path for SDR mode in LCD HDR panel.
    
        Reviewed-by: Krunoslav Kovac <krunoslav.kovac@amd.com>
        Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
        Signed-off-by: Camille Cho <Camille.Cho@amd.com>
        Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    
    Changes some other code to only use aux for backlight control on
    OLED panels.  The commit message seems to indicate that PWM should
    be used for SDR mode on HDR panels.  Do something similar for
    backlight control in general.  This may need to be revisited if and
    when HDR started to get used.
    
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1438
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=213715
    Reviewed-by: Roman Li <Roman.Li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0505f8c628b9e0aef0140d3590e993099425cbdc
Author: Steve French <stfrench@microsoft.com>
Date:   Mon Jul 26 16:22:55 2021 -0500

    smb3: rc uninitialized in one fallocate path
    
    [ Upstream commit 5ad4df56cd2158965f73416d41fce37906724822 ]
    
    Clang detected a problem with rc possibly being unitialized
    (when length is zero) in a recently added fallocate code path.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b092186eb9e689e56edecb32048bc51bc413f3c0
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 23f50e8ea008fe8762956e2d1d72ab887abe6f1e
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 dd62ad1e49cce56d3e3d13fa8bed9941ede71db5
Author: Harshvardhan Jha <harshvardhan.jha@oracle.com>
Date:   Sun Jul 25 23:28:04 2021 +0530

    net: qede: Fix end of loop tests for list_for_each_entry
    
    [ Upstream commit 795e3d2ea68e489ee7039ac29e98bfea0e34a96c ]
    
    The list_for_each_entry() iterator, "vlan" in this code, can never be
    NULL so the warning will never be printed.
    
    Signed-off-by: Harshvardhan Jha <harshvardhan.jha@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4c5021e7b3a54a014a5aef2dc4260ab32b5f21f
Author: Matteo Croce <mcroce@microsoft.com>
Date:   Tue Jul 6 17:44:23 2021 +0200

    virt_wifi: fix error on connect
    
    [ Upstream commit 17109e9783799be2a063b2bd861a508194b0a487 ]
    
    When connecting without first doing a scan, the BSS list is empty
    and __cfg80211_connect_result() generates this warning:
    
    $ iw dev wlan0 connect -w VirtWifi
    [   15.371989] ------------[ cut here ]------------
    [   15.372179] WARNING: CPU: 0 PID: 92 at net/wireless/sme.c:756 __cfg80211_connect_result+0x402/0x440
    [   15.372383] CPU: 0 PID: 92 Comm: kworker/u2:2 Not tainted 5.13.0-kvm #444
    [   15.372512] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-3.fc34 04/01/2014
    [   15.372597] Workqueue: cfg80211 cfg80211_event_work
    [   15.372756] RIP: 0010:__cfg80211_connect_result+0x402/0x440
    [   15.372818] Code: 48 2b 04 25 28 00 00 00 75 59 48 8b 3b 48 8b 76 10 48 8d 65 e0 5b 41 5c 41 5d 41 5e 5d 49 8d 65 f0 41 5d e9 d0 d4 fd ff 0f 0b <0f> 0b e9 f6 fd ff ff e8 f2 4a b4 ff e9 ec fd ff ff 0f 0b e9 19 fd
    [   15.372966] RSP: 0018:ffffc900005cbdc0 EFLAGS: 00010246
    [   15.373022] RAX: 0000000000000000 RBX: ffff8880028e2400 RCX: ffff8880028e2472
    [   15.373088] RDX: 0000000000000002 RSI: 00000000fffffe01 RDI: ffffffff815335ba
    [   15.373149] RBP: ffffc900005cbe00 R08: 0000000000000008 R09: ffff888002bdf8b8
    [   15.373209] R10: ffff88803ec208f0 R11: ffffffffffffe9ae R12: ffff88801d687d98
    [   15.373280] R13: ffff88801b5fe000 R14: ffffc900005cbdc0 R15: dead000000000100
    [   15.373330] FS:  0000000000000000(0000) GS:ffff88803ec00000(0000) knlGS:0000000000000000
    [   15.373382] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   15.373425] CR2: 000056421c468958 CR3: 000000001b458001 CR4: 0000000000170eb0
    [   15.373478] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   15.373529] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   15.373580] Call Trace:
    [   15.373611]  ? cfg80211_process_wdev_events+0x10e/0x170
    [   15.373743]  cfg80211_process_wdev_events+0x10e/0x170
    [   15.373783]  cfg80211_process_rdev_events+0x21/0x40
    [   15.373846]  cfg80211_event_work+0x20/0x30
    [   15.373892]  process_one_work+0x1e9/0x340
    [   15.373956]  worker_thread+0x4b/0x3f0
    [   15.374017]  ? process_one_work+0x340/0x340
    [   15.374053]  kthread+0x11f/0x140
    [   15.374089]  ? set_kthread_struct+0x30/0x30
    [   15.374153]  ret_from_fork+0x1f/0x30
    [   15.374187] ---[ end trace 321ef0cb7e9c0be1 ]---
    wlan0 (phy #0): connected to 00:00:00:00:00:00
    
    Add the fake bss just before the connect so that cfg80211_get_bss()
    finds the virtual network.
    As some code was duplicated, move it in a common function.
    
    Signed-off-by: Matteo Croce <mcroce@microsoft.com>
    Link: https://lore.kernel.org/r/20210706154423.11065-1-mcroce@linux.microsoft.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd5a60de176cdd92e775d0330175c6ccc112b896
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 42b81b2b67661e9630732b3bd65b3ec05dd4e78f
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 aa54be4d1716557d12959fdf431b24a4c25632f4
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 fb9501ef203d4e0cd6ca612538cf58f5c349cb90
Author: Qiu Wenbo <qiuwenbo@kylinos.com.cn>
Date:   Sun Jul 4 16:34:41 2021 +0800

    riscv: dts: fix memory size for the SiFive HiFive Unmatched
    
    commit d09560435cb712c9ec1e62b8a43a79b0af69fe77 upstream.
    
    The production version of HiFive Unmatched have 16GB memory.
    
    Signed-off-by: Qiu Wenbo <qiuwenbo@kylinos.com.cn>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa11124534b9af41f8daa0394ebec1cd7d4ea68a
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Aug 3 12:45:01 2021 +0200

    sched/rt: Fix double enqueue caused by rt_effective_prio
    
    commit f558c2b834ec27e75d37b1c860c139e7b7c3a8e4 upstream.
    
    Double enqueues in rt runqueues (list) have been reported while running
    a simple test that spawns a number of threads doing a short sleep/run
    pattern while being concurrently setscheduled between rt and fair class.
    
      WARNING: CPU: 3 PID: 2825 at kernel/sched/rt.c:1294 enqueue_task_rt+0x355/0x360
      CPU: 3 PID: 2825 Comm: setsched__13
      RIP: 0010:enqueue_task_rt+0x355/0x360
      Call Trace:
       __sched_setscheduler+0x581/0x9d0
       _sched_setscheduler+0x63/0xa0
       do_sched_setscheduler+0xa0/0x150
       __x64_sys_sched_setscheduler+0x1a/0x30
       do_syscall_64+0x33/0x40
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
      list_add double add: new=ffff9867cb629b40, prev=ffff9867cb629b40,
                           next=ffff98679fc67ca0.
      kernel BUG at lib/list_debug.c:31!
      invalid opcode: 0000 [#1] PREEMPT_RT SMP PTI
      CPU: 3 PID: 2825 Comm: setsched__13
      RIP: 0010:__list_add_valid+0x41/0x50
      Call Trace:
       enqueue_task_rt+0x291/0x360
       __sched_setscheduler+0x581/0x9d0
       _sched_setscheduler+0x63/0xa0
       do_sched_setscheduler+0xa0/0x150
       __x64_sys_sched_setscheduler+0x1a/0x30
       do_syscall_64+0x33/0x40
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    __sched_setscheduler() uses rt_effective_prio() to handle proper queuing
    of priority boosted tasks that are setscheduled while being boosted.
    rt_effective_prio() is however called twice per each
    __sched_setscheduler() call: first directly by __sched_setscheduler()
    before dequeuing the task and then by __setscheduler() to actually do
    the priority change. If the priority of the pi_top_task is concurrently
    being changed however, it might happen that the two calls return
    different results. If, for example, the first call returned the same rt
    priority the task was running at and the second one a fair priority, the
    task won't be removed by the rt list (on_list still set) and then
    enqueued in the fair runqueue. When eventually setscheduled back to rt
    it will be seen as enqueued already and the WARNING/BUG be issued.
    
    Fix this by calling rt_effective_prio() only once and then reusing the
    return value. While at it refactor code as well for clarity. Concurrent
    priority inheritance handling is still safe and will eventually converge
    to a new state by following the inheritance chain(s).
    
    Fixes: 0782e63bc6fe ("sched: Handle priority boosted tasks proper in setscheduler()")
    [squashed Peterz changes; added changelog]
    Reported-by: Mark Simmons <msimmons@redhat.com>
    Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210803104501.38333-1-juri.lelli@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfdb06df02df07dbcbcf8a051df311dc699d3296
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 1de1a42a85900be2604c205a843f01106a3f03a7
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Aug 3 10:12:34 2021 +0200

    soc: ixp4xx/qmgr: fix invalid __iomem access
    
    commit a8eee86317f11e97990d755d4615c1c0db203d08 upstream.
    
    Sparse reports a compile time warning when dereferencing an
    __iomem pointer:
    
    drivers/soc/ixp4xx/ixp4xx-qmgr.c:149:37: warning: dereference of noderef expression
    drivers/soc/ixp4xx/ixp4xx-qmgr.c:153:40: warning: dereference of noderef expression
    drivers/soc/ixp4xx/ixp4xx-qmgr.c:154:40: warning: dereference of noderef expression
    drivers/soc/ixp4xx/ixp4xx-qmgr.c:174:38: warning: dereference of noderef expression
    drivers/soc/ixp4xx/ixp4xx-qmgr.c:174:44: warning: dereference of noderef expression
    
    Use __raw_readl() here for consistency with the rest of the file.
    This should really get converted to some proper accessor, as the
    __raw functions are not meant to be used in drivers, but the driver
    has used these since the start, so for the moment, let's only fix
    the warning.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Fixes: d4c9e9fc9751 ("IXP42x: Add QMgr support for IXP425 rev. A0 processors.")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8db20e539486e14ff76de943cb295f7fe99a7348
Author: Matt Roper <matthew.d.roper@intel.com>
Date:   Wed Jul 28 16:34:11 2021 -0700

    drm/i915: Correct SFC_DONE register offset
    
    commit 9c9c6d0ab08acfe41c9f7efa72c4ad3f133a266b upstream.
    
    The register offset for SFC_DONE was missing a '0' at the end, causing
    us to read from a non-existent register address.  We only use this
    register in error state dumps so the mistake hasn't caused any real
    problems, but fixing it will hopefully make the error state dumps a bit
    more useful for debugging.
    
    Fixes: e50dbdbfd9fb ("drm/i915/tgl: Add SFC instdone to error state")
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210728233411.2365788-1-matthew.d.roper@intel.com
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    (cherry picked from commit 82929a2140eb99f1f1d21855f3f580e70d7abdd8)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f01d090be13acdeebd0ea4fd08ebf826530c4fd
Author: Mike Tipton <mdtipton@codeaurora.org>
Date:   Wed Jul 21 10:54:31 2021 -0700

    interconnect: qcom: icc-rpmh: Ensure floor BW is enforced for all nodes
    
    commit ce5a595744126be4f1327e29e3c5ae9aac6b38d5 upstream.
    
    We currently only enforce BW floors for a subset of nodes in a path.
    All BCMs that need updating are queued in the pre_aggregate/aggregate
    phase. The first set() commits all queued BCMs and subsequent set()
    calls short-circuit without committing anything. Since the floor BW
    isn't set in sum_avg/max_peak until set(), then some BCMs are committed
    before their associated nodes reflect the floor.
    
    Set the floor as each node is being aggregated. This ensures that all
    all relevant floors are set before the BCMs are committed.
    
    Fixes: 266cd33b5913 ("interconnect: qcom: Ensure that the floor bandwidth value is enforced")
    Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
    Link: https://lore.kernel.org/r/20210721175432.2119-4-mdtipton@codeaurora.org
    [georgi: Removed unused variable]
    Signed-off-by: Georgi Djakov <djakov@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 019387e3c21f16a93c5fd2d2a1a5c4511d828e7b
Author: Mike Tipton <mdtipton@codeaurora.org>
Date:   Wed Jul 21 10:54:30 2021 -0700

    interconnect: Always call pre_aggregate before aggregate
    
    commit 73606ba9242f8e32023699b500b7922b4cf2993c upstream.
    
    The pre_aggregate callback isn't called in all cases before calling
    aggregate. Add the missing calls so providers can rely on consistent
    framework behavior.
    
    Fixes: d3703b3e255f ("interconnect: Aggregate before setting initial bandwidth")
    Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
    Link: https://lore.kernel.org/r/20210721175432.2119-3-mdtipton@codeaurora.org
    Signed-off-by: Georgi Djakov <djakov@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39382972e727dbd4d69427fdedc4fbc25542b46b
Author: Mike Tipton <mdtipton@codeaurora.org>
Date:   Wed Jul 21 10:54:29 2021 -0700

    interconnect: Zero initial BW after sync-state
    
    commit 456a9dace42ecfcec7ce6e17c18d1985d628dcd0 upstream.
    
    The initial BW values may be used by providers to enforce floors. Zero
    these values after sync-state so that providers know when to stop
    enforcing them.
    
    Fixes: b1d681d8d324 ("interconnect: Add sync state support")
    Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
    Link: https://lore.kernel.org/r/20210721175432.2119-2-mdtipton@codeaurora.org
    Signed-off-by: Georgi Djakov <djakov@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2ca988aba4eaad1319e80eb1316a4ba5dbd6897
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 e170a01152d2df2f1db74ba4162b981ac80ca15a
Author: Pawel Laszczak <pawell@cadence.com>
Date:   Fri Jun 25 12:25:02 2021 +0200

    usb: cdnsp: Fix incorrect supported maximum speed
    
    commit aa82f94e869edd72f4fadb08c6ffca8927e4934e upstream.
    
    Driver had hardcoded in initialization maximum supported speed
    to USB_SPEED_SUPER_PLUS but it should consider the speed
    returned from usb_get_maximum_speed function.
    
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Signed-off-by: Pawel Laszczak <pawell@cadence.com>
    Link: https://lore.kernel.org/r/20210625102502.26336-1-pawell@gli-login.cadence.com
    Signed-off-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95108645a28271d1dd41dfa48e7a7ab178d701fe
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Jun 22 21:37:48 2021 +0200

    usb: cdnsp: Fix the IMAN_IE_SET and IMAN_IE_CLEAR macro
    
    commit 5df09c15bab98463203c83ecab88b9321466e626 upstream.
    
    IMAN_IE is BIT(1), so these macro are respectively equivalent to BIT(1)
    and 0, whatever the value of 'p'.
    
    The purpose was to set and reset a single bit in 'p'.
    Fix these macros to do that correctly.
    
    Acked-by: Pawel Laszczak <pawell@cadence.com>
    Fixes: e93e58d27402 ("usb: cdnsp: Device side header file for CDNSP driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/d12bfcc9cbffb89e27b120668821b3c4f09b6755.1624390584.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9b413776d32481fb6acc9296b1d19a4cc7e65e7
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri Jul 30 08:54:08 2021 +0100

    interconnect: Fix undersized devress_alloc allocation
    
    commit 85b1ebfea2b0d8797266bcc6f04b6cc87e38290a upstream.
    
    The expression sizeof(**ptr) for the void **ptr is just 1 rather than
    the size of a pointer. Fix this by using sizeof(*ptr).
    
    Addresses-Coverity: ("Wrong sizeof argument")
    Fixes: e145d9a184f2 ("interconnect: Add devm_of_icc_get() as exported API for users")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Link: https://lore.kernel.org/r/20210730075408.19945-1-colin.king@canonical.com
    Signed-off-by: Georgi Djakov <djakov@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d74664e9843dd78dd55b6c8b08360a403315f04
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Nov 8 09:43:06 2019 +0100

    soc: ixp4xx: fix printing resources
    
    commit 8861452b2097bb0b5d0081a1c137fb3870b0a31f upstream.
    
    When compile-testing with 64-bit resource_size_t, gcc reports an invalid
    printk format string:
    
    In file included from include/linux/dma-mapping.h:7,
                     from drivers/soc/ixp4xx/ixp4xx-npe.c:15:
    drivers/soc/ixp4xx/ixp4xx-npe.c: In function 'ixp4xx_npe_probe':
    drivers/soc/ixp4xx/ixp4xx-npe.c:694:18: error: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'resource_size_t' {aka 'long long unsigned int'} [-Werror=format=]
        dev_info(dev, "NPE%d at 0x%08x-0x%08x not available\n",
    
    Use the special %pR format string to print the resources.
    
    Fixes: 0b458d7b10f8 ("soc: ixp4xx: npe: Pass addresses as resources")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a822dd050b165e6c2002fd059774de987410c08
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 16375248cec6eb31b69391c5d2c4515d735aa07c
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Aug 4 05:28:52 2021 -0400

    KVM: Do not leak memory for duplicate debugfs directories
    
    commit 85cd39af14f498f791d8aab3fbd64cd175787f1a upstream.
    
    KVM creates a debugfs directory for each VM in order to store statistics
    about the virtual machine.  The directory name is built from the process
    pid and a VM fd.  While generally unique, it is possible to keep a
    file descriptor alive in a way that causes duplicate directories, which
    manifests as these messages:
    
      [  471.846235] debugfs: Directory '20245-4' with parent 'kvm' already present!
    
    Even though this should not happen in practice, it is more or less
    expected in the case of KVM for testcases that call KVM_CREATE_VM and
    close the resulting file descriptor repeatedly and in parallel.
    
    When this happens, debugfs_create_dir() returns an error but
    kvm_create_vm_debugfs() goes on to allocate stat data structs which are
    later leaked.  The slow memory leak was spotted by syzkaller, where it
    caused OOM reports.
    
    Since the issue only affects debugfs, do a lookup before calling
    debugfs_create_dir, so that the message is downgraded and rate-limited.
    While at it, ensure kvm->debugfs_dentry is NULL rather than an error
    if it is not created.  This fixes kvm_destroy_vm_debugfs, which was not
    checking IS_ERR_OR_NULL correctly.
    
    Cc: stable@vger.kernel.org
    Fixes: 536a6f88c49d ("KVM: Create debugfs dir and stat files for each VM")
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a6772458f8eaa54a4558935e94db27d29a7a3ad
Author: Sean Christopherson <seanjc@google.com>
Date:   Tue Aug 3 09:27:46 2021 -0700

    KVM: SVM: Fix off-by-one indexing when nullifying last used SEV VMCB
    
    commit 179c6c27bf487273652efc99acd3ba512a23c137 upstream.
    
    Use the raw ASID, not ASID-1, when nullifying the last used VMCB when
    freeing an SEV ASID.  The consumer, pre_sev_run(), indexes the array by
    the raw ASID, thus KVM could get a false negative when checking for a
    different VMCB if KVM manages to reallocate the same ASID+VMCB combo for
    a new VM.
    
    Note, this cannot cause a functional issue _in the current code_, as
    pre_sev_run() also checks which pCPU last did VMRUN for the vCPU, and
    last_vmentry_cpu is initialized to -1 during vCPU creation, i.e. is
    guaranteed to mismatch on the first VMRUN.  However, prior to commit
    8a14fe4f0c54 ("kvm: x86: Move last_cpu into kvm_vcpu_arch as
    last_vmentry_cpu"), SVM tracked pCPU on its own and zero-initialized the
    last_cpu variable.  Thus it's theoretically possible that older versions
    of KVM could miss a TLB flush if the first VMRUN is on pCPU0 and the ASID
    and VMCB exactly match those of a prior VM.
    
    Fixes: 70cd94e60c73 ("KVM: SVM: VMRUN should use associated ASID when SEV is enabled")
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82c9a3098bbc07f428f48b0515f4612d8cd2e323
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 642ffd390d67fea23a3ab463e92bc1fbcdef0fa5
Author: Stefan Haberland <sth@linux.ibm.com>
Date:   Wed Aug 4 17:18:00 2021 +0200

    s390/dasd: fix use after free in dasd path handling
    
    commit 952835edb4fdad49361d5330da918be8b765b787 upstream.
    
    When new configuration data is obtained after a path event it is stored
    in the per path array. The old data needs to be freed.
    The first valid configuration data is also referenced in the device
    private structure to identify the device.
    When the old per path configuration data was freed the device still
    pointed to the already freed data leading to a use after free.
    
    Fix by replacing also the device configuration data with the newly
    obtained one before the old data gets freed.
    
    Fixes: 460181217a24 ("s390/dasd: Store path configuration data during path handling")
    Cc: stable@vger.kernel.org # 5.11+
    Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
    Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
    Link: https://lore.kernel.org/r/20210804151800.4031761-2-sth@linux.ibm.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ed983ea4a12a95c5e8845354a66d6f866d8cc76
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue Aug 3 09:14:35 2021 -0600

    io-wq: fix race between worker exiting and activating free worker
    
    commit 83d6c39310b6d11199179f6384c2b0a415389597 upstream.
    
    Nadav correctly reports that we have a race between a worker exiting,
    and new work being queued. This can lead to work being queued behind
    an existing worker that could be sleeping on an event before it can
    run to completion, and hence introducing potential big latency gaps
    if we hit this race condition:
    
    cpu0                                    cpu1
    ----                                    ----
                                            io_wqe_worker()
                                            schedule_timeout()
                                             // timed out
    io_wqe_enqueue()
    io_wqe_wake_worker()
    // work_flags & IO_WQ_WORK_CONCURRENT
    io_wqe_activate_free_worker()
                                             io_worker_exit()
    
    Fix this by having the exiting worker go through the normal decrement
    of a running worker, which will spawn a new one if needed.
    
    The free worker activation is modified to only return success if we
    were able to find a sleeping worker - if not, we keep looking through
    the list. If we fail, we create a new worker as per usual.
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/io-uring/BFF746C0-FEDE-4646-A253-3021C57C26C9@gmail.com/
    Reported-by: Nadav Amit <nadav.amit@gmail.com>
    Tested-by: Nadav Amit <nadav.amit@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08ed8d676c942ab52b5fd62320d276615f73beb0
Author: Wei Shuyu <wsy@dogben.com>
Date:   Mon Jun 28 15:15:08 2021 +0800

    md/raid10: properly indicate failure when ending a failed write request
    
    commit 5ba03936c05584b6f6f79be5ebe7e5036c1dd252 upstream.
    
    Similar to [1], this patch fixes the same bug in raid10. Also cleanup the
    comments.
    
    [1] commit 2417b9869b81 ("md/raid1: properly indicate failure when ending
                             a failed write request")
    Cc: stable@vger.kernel.org
    Fixes: 7cee6d4e6035 ("md/raid10: end bio when the device faulty")
    Signed-off-by: Wei Shuyu <wsy@dogben.com>
    Acked-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6e1229a1bbb83fb477e9e2d9f189d530984cdcb
Author: Tero Kristo <t-kristo@ti.com>
Date:   Tue Jul 20 11:47:10 2021 -0700

    ARM: omap2+: hwmod: fix potential NULL pointer access
    
    commit b070f9ca78680486927b799cf6126b128a7c2c1b upstream.
    
    omap_hwmod_get_pwrdm() may access a NULL clk_hw pointer in some failure
    cases. Add a check for the case and bail out gracely if this happens.
    
    Reported-by: Dan Murphy <dmurphy@ti.com>
    Signed-off-by: Tero Kristo <t-kristo@ti.com>
    Cc: stable@vger.kernel.org # v5.10+
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5f6bab9522e15d8bc17f8de3d5780a26226cf42
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Mon Aug 2 11:42:00 2021 +0100

    arm64: fix compat syscall return truncation
    
    commit e30e8d46cf605d216a799a28c77b8a41c328613a upstream.
    
    Due to inconsistencies in the way we manipulate compat GPRs, we have a
    few issues today:
    
    * For audit and tracing, where error codes are handled as a (native)
      long, negative error codes are expected to be sign-extended to the
      native 64-bits, or they may fail to be matched correctly. Thus a
      syscall which fails with an error may erroneously be identified as
      failing.
    
    * For ptrace, *all* compat return values should be sign-extended for
      consistency with 32-bit arm, but we currently only do this for
      negative return codes.
    
    * As we may transiently set the upper 32 bits of some compat GPRs while
      in the kernel, these can be sampled by perf, which is somewhat
      confusing. This means that where a syscall returns a pointer above 2G,
      this will be sign-extended, but will not be mistaken for an error as
      error codes are constrained to the inclusive range [-4096, -1] where
      no user pointer can exist.
    
    To fix all of these, we must consistently use helpers to get/set the
    compat GPRs, ensuring that we never write the upper 32 bits of the
    return code, and always sign-extend when reading the return code.  This
    patch does so, with the following changes:
    
    * We re-organise syscall_get_return_value() to always sign-extend for
      compat tasks, and reimplement syscall_get_error() atop. We update
      syscall_trace_exit() to use syscall_get_return_value().
    
    * We consistently use syscall_set_return_value() to set the return
      value, ensureing the upper 32 bits are never set unexpectedly.
    
    * As the core audit code currently uses regs_return_value() rather than
      syscall_get_return_value(), we special-case this for
      compat_user_mode(regs) such that this will do the right thing. Going
      forward, we should try to move the core audit code over to
      syscall_get_return_value().
    
    Cc: <stable@vger.kernel.org>
    Reported-by: He Zhe <zhe.he@windriver.com>
    Reported-by: weiyuchen <weiyuchen3@huawei.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20210802104200.21390-1-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a62784c80b1b020836c4e4eb0a82be56fc9b741f
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Fri Jul 2 15:37:12 2021 +0200

    Revert "gpio: mpc8xxx: change the gpio interrupt flags."
    
    commit ec7099fdea8025988710ee6fecfd4e4210c29ab5 upstream.
    
    This reverts commit 3d5bfbd9716318b1ca5c38488aa69f64d38a9aa5.
    
    When booting with threadirqs, it causes a splat
    
      WARNING: CPU: 0 PID: 29 at kernel/irq/handle.c:159 __handle_irq_event_percpu+0x1ec/0x27c
      irq 66 handler irq_default_primary_handler+0x0/0x1c enabled interrupts
    
    That splat later went away with commit 81e2073c175b ("genirq: Disable
    interrupts for force threaded handlers"), which got backported to
    -stable. However, when running an -rt kernel, the splat still
    exists. Moreover, quoting Thomas Gleixner [1]
    
      But 3d5bfbd97163 ("gpio: mpc8xxx: change the gpio interrupt flags.")
      has nothing to do with that:
    
          "Delete the interrupt IRQF_NO_THREAD flags in order to gpio interrupts
           can be threaded to allow high-priority processes to preempt."
    
      This changelog is blatantly wrong. In mainline forced irq threads
      have always been invoked with softirqs disabled, which obviously
      makes them non-preemptible.
    
    So the patch didn't even do what its commit log said.
    
    [1] https://lore.kernel.org/lkml/871r8zey88.ffs@nanos.tec.linutronix.de/
    
    Cc: stable@vger.kernel.org # v5.9+
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 383d2836d2fa3e9fc17ac84612acaefe2a9d538b
Author: Kevin Hilman <khilman@baylibre.com>
Date:   Tue Jul 20 11:27:16 2021 -0700

    bus: ti-sysc: AM3: RNG is GP only
    
    commit a6d90e9f22328f07343e49e08a4ca483ae8e8abb upstream.
    
    Make the RNG on AM3 GP only.
    
    Based on this patch from TI v5.4 tree which is based on hwmod data
    which are now removed:
    
    | ARM: AM43xx: hwmod: Move RNG to a GP only links table
    |
    | On non-GP devices the RNG is controlled by the secure-side software,
    | like in DRA7xx hwmod we should not control this IP when we are not
    | a GP device.
    |
    | Signed-off-by: Andrew F. Davis <afd@ti.com>
    
    Cc: stable@vger.kernel.org # v5.10+
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e8de6c62763234ea081487c491d1258f6c32fd7
Author: Xiu Jianfeng <xiujianfeng@huawei.com>
Date:   Thu Jul 29 11:16:44 2021 +0800

    selinux: correct the return value when loads initial sids
    
    commit 4c156084daa8ee70978e4b150b5eb5fc7b1f15be upstream.
    
    It should not return 0 when SID 0 is assigned to isids.
    This patch fixes it.
    
    Cc: stable@vger.kernel.org
    Fixes: e3e0b582c321a ("selinux: remove unused initial SIDs and improve handling")
    Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
    [PM: remove changelog from description]
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f730f081a49b17abb9209723231c8c4660f11f25
Author: Tyrel Datwyler <tyreld@linux.ibm.com>
Date:   Fri Jul 16 14:52:20 2021 -0600

    scsi: ibmvfc: Fix command state accounting and stale response detection
    
    commit a264cf5e81c78e2b9918b8b9ef2ace9dde1850df upstream.
    
    Prior to commit 1f4a4a19508d ("scsi: ibmvfc: Complete commands outside the
    host/queue lock") responses to commands were completed sequentially with
    the host lock held such that a command had a basic binary state of active
    or free. It was therefore a simple affair of ensuring the assocaiated
    ibmvfc_event to a VIOS response was valid by testing that it was not
    already free. The lock relexation work to complete commands outside the
    lock inadverdently made it a trinary command state such that a command is
    either in flight, received and being completed, or completed and now
    free. This breaks the stale command detection logic as a command may be
    still marked active and been placed on the delayed completion list when a
    second stale response for the same command arrives. This can lead to double
    completions and list corruption. This issue was exposed by a recent VIOS
    regression were a missing memory barrier could occasionally result in the
    ibmvfc client receiving a duplicate response for the same command.
    
    Fix the issue by introducing the atomic ibmvfc_event.active to track the
    trinary state of a command. The state is explicitly set to 1 when a command
    is successfully sent. The CRQ response handlers use
    atomic_dec_if_positive() to test for stale responses and correctly
    transition to the completion state when a active command is received.
    Finally, atomic_dec_and_test() is used to sanity check transistions when
    commands are freed as a result of a completion, or moved to the purge list
    as a result of error handling or adapter reset.
    
    Link: https://lore.kernel.org/r/20210716205220.1101150-1-tyreld@linux.ibm.com
    Fixes: 1f4a4a19508d ("scsi: ibmvfc: Complete commands outside the host/queue lock")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cbbe89e6123ba02b4a1764d8c1bb13703675ab3
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 60cd0351403830496c9ac07edc6794c7112fecc2
Author: Dmitry Safonov <0x7f454c46@gmail.com>
Date:   Sat Jul 17 16:02:21 2021 +0100

    net/xfrm/compat: Copy xfrm_spdattr_type_t atributes
    
    commit 4e9505064f58d1252805952f8547a5b7dbc5c111 upstream.
    
    The attribute-translator has to take in mind maxtype, that is
    xfrm_link::nla_max. When it is set, attributes are not of xfrm_attr_type_t.
    Currently, they can be only XFRMA_SPD_MAX (message XFRM_MSG_NEWSPDINFO),
    their UABI is the same for 64/32-bit, so just copy them.
    
    Thanks to YueHaibing for reporting this:
    In xfrm_user_rcv_msg_compat() if maxtype is not zero and less than
    XFRMA_MAX, nlmsg_parse_deprecated() do not initialize attrs array fully.
    xfrm_xlate32() will access uninit 'attrs[i]' while iterating all attrs
    array.
    
    KASAN: probably user-memory-access in range [0x0000000041b58ab0-0x0000000041b58ab7]
    CPU: 0 PID: 15799 Comm: syz-executor.2 Tainted: G        W         5.14.0-rc1-syzkaller #0
    RIP: 0010:nla_type include/net/netlink.h:1130 [inline]
    RIP: 0010:xfrm_xlate32_attr net/xfrm/xfrm_compat.c:410 [inline]
    RIP: 0010:xfrm_xlate32 net/xfrm/xfrm_compat.c:532 [inline]
    RIP: 0010:xfrm_user_rcv_msg_compat+0x5e5/0x1070 net/xfrm/xfrm_compat.c:577
    [...]
    Call Trace:
     xfrm_user_rcv_msg+0x556/0x8b0 net/xfrm/xfrm_user.c:2774
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2504
     xfrm_netlink_rcv+0x6b/0x90 net/xfrm/xfrm_user.c:2824
     netlink_unicast_kernel net/netlink/af_netlink.c:1314 [inline]
     netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1340
     netlink_sendmsg+0x86d/0xdb0 net/netlink/af_netlink.c:1929
     sock_sendmsg_nosec net/socket.c:702 [inline]
    
    Fixes: 5106f4a8acff ("xfrm/compat: Add 32=>64-bit messages translator")
    Cc: <stable@kernel.org>
    Reported-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Dmitry Safonov <dima@arista.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6bfaf682860d13c96325a55987c80b3debbf612
Author: Frederic Weisbecker <frederic@kernel.org>
Date:   Mon Jun 28 15:34:28 2021 +0200

    xfrm: Fix RCU vs hash_resize_mutex lock inversion
    
    commit 2580d3f40022642452dd8422bfb8c22e54cf84bb upstream.
    
    xfrm_bydst_resize() calls synchronize_rcu() while holding
    hash_resize_mutex. But then on PREEMPT_RT configurations,
    xfrm_policy_lookup_bytype() may acquire that mutex while running in an
    RCU read side critical section. This results in a deadlock.
    
    In fact the scope of hash_resize_mutex is way beyond the purpose of
    xfrm_policy_lookup_bytype() to just fetch a coherent and stable policy
    for a given destination/direction, along with other details.
    
    The lower level net->xfrm.xfrm_policy_lock, which among other things
    protects per destination/direction references to policy entries, is
    enough to serialize and benefit from priority inheritance against the
    write side. As a bonus, it makes it officially a per network namespace
    synchronization business where a policy table resize on namespace A
    shouldn't block a policy lookup on namespace B.
    
    Fixes: 77cc278f7b20 (xfrm: policy: Use sequence counters with associated lock)
    Cc: stable@vger.kernel.org
    Cc: Ahmed S. Darwish <a.darwish@linutronix.de>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Varad Gautam <varad.gautam@suse.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 662a1fd0ec69bc0cc1f2fdab5edc6d4041bd5ab2
Author: Marco Elver <elver@google.com>
Date:   Mon Jul 5 10:44:52 2021 +0200

    perf: Fix required permissions if sigtrap is requested
    
    commit 9d7a6c95f62bc335b62aaf9d50590122bd03a796 upstream.
    
    If perf_event_open() is called with another task as target and
    perf_event_attr::sigtrap is set, and the target task's user does not
    match the calling user, also require the CAP_KILL capability or
    PTRACE_MODE_ATTACH permissions.
    
    Otherwise, with the CAP_PERFMON capability alone it would be possible
    for a user to send SIGTRAP signals via perf events to another user's
    tasks. This could potentially result in those tasks being terminated if
    they cannot handle SIGTRAP signals.
    
    Note: The check complements the existing capability check, but is not
    supposed to supersede the ptrace_may_access() check. At a high level we
    now have:
    
            capable of CAP_PERFMON and (CAP_KILL if sigtrap)
                    OR
            ptrace_may_access(...) // also checks for same thread-group and uid
    
    Fixes: 97ba62b27867 ("perf: Add support for SIGTRAP on perf events")
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Marco Elver <elver@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org> # 5.13+
    Link: https://lore.kernel.org/r/20210705084453.2151729-1-elver@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 711f71b661ff937fc0eaf4a0c83b7cb651d74ff4
Author: Shuo Liu <shuo.a.liu@intel.com>
Date:   Thu Jul 22 14:27:36 2021 +0800

    virt: acrn: Do hcall_destroy_vm() before resource release
    
    commit 4c4c1257b844ffe5d0933684e612f92c4b78e120 upstream.
    
    The ACRN hypervisor has scenarios which could run a real-time guest VM.
    The real-time guest VM occupies dedicated CPU cores, be assigned with
    dedicated PCI devices. It can run without the Service VM after boot up.
    hcall_destroy_vm() returns failure when a real-time guest VM refuses.
    The clearing of flag ACRN_VM_FLAG_DESTROYED causes some kernel resource
    double-freed in a later acrn_vm_destroy().
    
    Do hcall_destroy_vm() before resource release to drop this chance to
    destroy the VM if hypercall fails.
    
    Fixes: 9c5137aedd11 ("virt: acrn: Introduce VM management interfaces")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Shuo Liu <shuo.a.liu@intel.com>
    Signed-off-by: Fei Li <fei1.li@intel.com>
    Link: https://lore.kernel.org/r/20210722062736.15050-1-fei1.li@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ae78810a2b42c10fa0d9ebcc9050b4624e508a4
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sun Dec 6 22:40:07 2020 +0100

    timers: Move clearing of base::timer_running under base:: Lock
    
    commit bb7262b295472eb6858b5c49893954794027cd84 upstream.
    
    syzbot reported KCSAN data races vs. timer_base::timer_running being set to
    NULL without holding base::lock in expire_timers().
    
    This looks innocent and most reads are clearly not problematic, but
    Frederic identified an issue which is:
    
     int data = 0;
    
     void timer_func(struct timer_list *t)
     {
        data = 1;
     }
    
     CPU 0                                            CPU 1
     ------------------------------                   --------------------------
     base = lock_timer_base(timer, &flags);           raw_spin_unlock(&base->lock);
     if (base->running_timer != timer)                call_timer_fn(timer, fn, baseclk);
       ret = detach_if_pending(timer, base, true);    base->running_timer = NULL;
     raw_spin_unlock_irqrestore(&base->lock, flags);  raw_spin_lock(&base->lock);
    
     x = data;
    
    If the timer has previously executed on CPU 1 and then CPU 0 can observe
    base->running_timer == NULL and returns, assuming the timer has completed,
    but it's not guaranteed on all architectures. The comment for
    del_timer_sync() makes that guarantee. Moving the assignment under
    base->lock prevents this.
    
    For non-RT kernel it's performance wise completely irrelevant whether the
    store happens before or after taking the lock. For an RT kernel moving the
    store under the lock requires an extra unlock/lock pair in the case that
    there is a waiter for the timer, but that's not the end of the world.
    
    Reported-by: syzbot+aa7c2385d46c5eba0b89@syzkaller.appspotmail.com
    Reported-by: syzbot+abea4558531bae1ba9fe@syzkaller.appspotmail.com
    Fixes: 030dcdd197d7 ("timers: Prepare support for PREEMPT_RT")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/87lfea7gw8.fsf@nanos.tec.linutronix.de
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fafe9cf51f80f082a4de82da2e75859b1aae2aa7
Author: Kajol Jain <kjain@linux.ibm.com>
Date:   Tue Jul 13 13:12:16 2021 +0530

    fpga: dfl: fme: Fix cpu hotplug issue in performance reporting
    
    commit ec6446d5304b3c3dd692a1e244df7e40bbb5af36 upstream.
    
    The performance reporting driver added cpu hotplug
    feature but it didn't add pmu migration call in cpu
    offline function.
    This can create an issue incase the current designated
    cpu being used to collect fme pmu data got offline,
    as based on current code we are not migrating fme pmu to
    new target cpu. Because of that perf will still try to
    fetch data from that offline cpu and hence we will not
    get counter data.
    
    Patch fixed this issue by adding pmu_migrate_context call
    in fme_perf_offline_cpu function.
    
    Fixes: 724142f8c42a ("fpga: dfl: fme: add performance reporting support")
    Cc: stable@vger.kernel.org
    Tested-by: Xu Yilun <yilun.xu@intel.com>
    Acked-by: Wu Hao <hao.wu@intel.com>
    Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
    Signed-off-by: Moritz Fischer <mdf@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03d6da7c923fb2e0652126f82733312d2bf61580
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Thu Jul 29 06:33:06 2021 +0200

    serial: 8250_pci: Avoid irq sharing for MSI(-X) interrupts.
    
    commit 341abd693d10e5f337a51f140ae3e7a1ae0febf6 upstream.
    
    This attempts to fix a bug found with a serial port card which uses
    an MCS9922 chip, one of the 4 models for which MSI-X interrupts are
    currently supported. I don't possess such a card, and i'm not
    experienced with the serial subsystem, so this patch is based on what
    i think i found as a likely reason for failure, based on walking the
    user who actually owns the card through some diagnostic.
    
    The user who reported the problem finds the following in his dmesg
    output for the relevant ttyS4 and ttyS5:
    
    [    0.580425] serial 0000:02:00.0: enabling device (0000 -> 0003)
    [    0.601448] 0000:02:00.0: ttyS4 at I/O 0x3010 (irq = 125, base_baud = 115200) is a ST16650V2
    [    0.603089] serial 0000:02:00.1: enabling device (0000 -> 0003)
    [    0.624119] 0000:02:00.1: ttyS5 at I/O 0x3000 (irq = 126, base_baud = 115200) is a ST16650V2
    ...
    [    6.323784] genirq: Flags mismatch irq 128. 00000080 (ttyS5) vs. 00000000 (xhci_hcd)
    [    6.324128] genirq: Flags mismatch irq 128. 00000080 (ttyS5) vs. 00000000 (xhci_hcd)
    ...
    
    Output of setserial -a:
    
    /dev/ttyS4, Line 4, UART: 16650V2, Port: 0x3010, IRQ: 127
            Baud_base: 115200, close_delay: 50, divisor: 0
            closing_wait: 3000
            Flags: spd_normal skip_test
    
    This suggests to me that the serial driver wants to register and share a
    MSI/MSI-X irq 128 with the xhci_hcd driver, whereas the xhci driver does
    not want to share the irq, as flags 0x00000080 (== IRQF_SHARED) from the
    serial port driver means to share the irq, and this mismatch ends in some
    failed irq init?
    
    With this setup, data reception works very unreliable, with dropped data,
    already at a transmission rate of only a 16 Bytes chunk every 1/120th of
    a second, ie. 1920 Bytes/sec, presumably due to rx fifo overflow due to
    mishandled or not used at all rx irq's?
    
    See full discussion thread with attempted diagnosis at:
    
    https://psychtoolbox.discourse.group/t/issues-with-iscan-serial-port-recording/3886
    
    Disabling the use of MSI interrupts for the serial port pci card did
    fix the reliability problems. The user executed the following sequence
    of commands to achieve this:
    
    echo 0000:02:00.0 | sudo tee /sys/bus/pci/drivers/serial/unbind
    echo 0000:02:00.1 | sudo tee /sys/bus/pci/drivers/serial/unbind
    
    echo 0 | sudo tee /sys/bus/pci/devices/0000:02:00.0/msi_bus
    echo 0 | sudo tee /sys/bus/pci/devices/0000:02:00.1/msi_bus
    
    echo 0000:02:00.0 | sudo tee /sys/bus/pci/drivers/serial/bind
    echo 0000:02:00.1 | sudo tee /sys/bus/pci/drivers/serial/bind
    
    This resulted in the following log output:
    
    [   82.179021] pci 0000:02:00.0: MSI/MSI-X disallowed for future drivers
    [   87.003031] pci 0000:02:00.1: MSI/MSI-X disallowed for future drivers
    [   98.537010] 0000:02:00.0: ttyS4 at I/O 0x3010 (irq = 17, base_baud = 115200) is a ST16650V2
    [  103.648124] 0000:02:00.1: ttyS5 at I/O 0x3000 (irq = 18, base_baud = 115200) is a ST16650V2
    
    This patch attempts to fix the problem by disabling irq sharing when
    using MSI irq's. Note that all i know for sure is that disabling MSI
    irq's fixed the problem for the user, so this patch could be wrong and
    is untested. Please review with caution, keeping this in mind.
    
    Fixes: 8428413b1d14 ("serial: 8250_pci: Implement MSI(-X) support")
    Cc: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Link: https://lore.kernel.org/r/20210729043306.18528-1-mario.kleiner.de@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 134cbd486ac462c2b7bfaa04bf1735cc8492d96a
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Jul 13 13:17:39 2021 +0300

    serial: 8250_pci: Enumerate Elkhart Lake UARTs via dedicated driver
    
    commit 7f0909db761535aefafa77031062603a71557267 upstream.
    
    Elkhart Lake UARTs are PCI enumerated Synopsys DesignWare v4.0+ UART
    integrated with Intel iDMA 32-bit DMA controller. There is a specific
    driver to handle them, i.e. 8250_lpss. Hence, disable 8250_pci
    enumeration for these UARTs.
    
    Fixes: 1b91d97c66ef ("serial: 8250_lpss: Add ->setup() for Elkhart Lake ports")
    Fixes: 4f912b898dc2 ("serial: 8250_lpss: Enable HS UART on Elkhart Lake")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20210713101739.36962-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b2967bd9888acd5b607cd567bf115b1a571f182
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 b321bb83a2c650defe30f7066c357d603f53e295
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jul 14 10:04:27 2021 +0200

    serial: 8250: fix handle_irq locking
    
    commit 853a9ae29e978d37f5dfa72622a68c9ae3d7fa89 upstream.
    
    The 8250 handle_irq callback is not just called from the interrupt
    handler but also from a timer callback when polling (e.g. for ports
    without an interrupt line). Consequently the callback must explicitly
    disable interrupts to avoid a potential deadlock with another interrupt
    in polled mode.
    
    Add back an irqrestore-version of the sysrq port-unlock helper and use
    it in the 8250 callbacks that need it.
    
    Fixes: 75f4e830fa9c ("serial: do not restore interrupt state in sysrq helper")
    Cc: stable@vger.kernel.org      # 5.13
    Cc: Joel Stanley <joel@jms.id.au>
    Cc: Andrew Jeffery <andrew@aj.id.au>
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20210714080427.28164-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 979bd0e11d88375515f4712faa0c140adad3fc07
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 19364aeb0b639c8c288a152fe9ee97df4672ee29
Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
Date:   Thu Jul 29 16:46:40 2021 +0800

    serial: 8250_mtk: fix uart corruption issue when rx power off
    
    commit 7c4a509d3815a260c423c0633bd73695250ac26d upstream.
    
    Fix uart corruption issue when rx power off.
    Add spin lock in mtk8250_dma_rx_complete function in APDMA mode.
    
    when uart is used as a communication port with external device(GPS).
    when external device(GPS) power off, the power of rx pin is also from
    1.8v to 0v. Even if there is not any data in rx. But uart rx pin can
    capture the data "0".
    If uart don't receive any data in specified cycle, uart will generates
    BI(Break interrupt) interrupt.
    If external device(GPS) power off, we found that BI interrupt appeared
    continuously and very frequently.
    When uart interrupt type is BI, uart IRQ handler(8250 framwork
    API:serial8250_handle_irq) will push data to tty buffer.
    mtk8250_dma_rx_complete is a task of mtk_uart_apdma_rx_handler.
    mtk8250_dma_rx_complete priority is lower than uart irq
    handler(serial8250_handle_irq).
    if we are in process of mtk8250_dma_rx_complete, uart appear BI
    interrupt:1)serial8250_handle_irq will priority execution.2)it may cause
    write tty buffer conflict in mtk8250_dma_rx_complete.
    So the spin lock protect the rx receive data process is not break.
    
    Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210729084640.17613-2-zhiyong.tao@mediatek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b188f699e036e4e60a903352cb50996946527340
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Wed Jun 30 13:56:43 2021 +0100

    serial: tegra: Only print FIFO error message when an error occurs
    
    commit cc9ca4d95846cbbece48d9cd385550f8fba6a3c1 upstream.
    
    The Tegra serial driver always prints an error message when enabling the
    FIFO for devices that have support for checking the FIFO enable status.
    Fix this by displaying the error message, only when an error occurs.
    
    Finally, update the error message to make it clear that enabling the
    FIFO failed and display the error code.
    
    Fixes: 222dcdff3405 ("serial: tegra: check for FIFO mode enabled status")
    Cc: <stable@vger.kernel.org>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20210630125643.264264-1-jonathanh@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddbd617df071f65a09b78360b4787b51240c361f
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Jul 27 17:25:01 2021 +0300

    Revert "thunderbolt: Hide authorized attribute if router does not support PCIe tunnels"
    
    commit 8e3341257e3b5774ec8cd3ef1ba0c0d3fada322b upstream.
    
    This reverts commit 6f3badead6a078cf3c71f381f9d84ac922984a00.
    
    It turns out bolt depends on having authorized attribute visible under
    each device. Hiding it makes bolt crash as several people have reported
    on various bug trackers. For this reason revert the commit.
    
    Link: https://gitlab.freedesktop.org/bolt/bolt/-/issues/174
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1979765
    Link: https://bugs.archlinux.org/task/71569
    Cc: stable@vger.kernel.org
    Cc: Christian Kellner <ckellner@redhat.com>
    Fixes: 6f3badead6a0 ("thunderbolt: Hide authorized attribute if router does not support PCIe tunnels")
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20210727142501.27476-1-mika.westerberg@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc3c6b55a4ea42b3e9d6b7221415efed58a53877
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 e745e3033999138b024dfb3cf4093c5d272e5312
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 e58376a283bd132cf4b44e2df65a95755d5bd2ed
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 e10d4de4ff5e17e740987c791fa89f0cfddda4cf
Author: Filip Schauer <filip@mg6.at>
Date:   Tue Jul 27 13:23:11 2021 +0200

    drivers core: Fix oops when driver probe fails
    
    commit 4d1014c1816c0395eca5d1d480f196a4c63119d0 upstream.
    
    dma_range_map is freed to early, which might cause an oops when
    a driver probe fails.
     Call trace:
      is_free_buddy_page+0xe4/0x1d4
      __free_pages+0x2c/0x88
      dma_free_contiguous+0x64/0x80
      dma_direct_free+0x38/0xb4
      dma_free_attrs+0x88/0xa0
      dmam_release+0x28/0x34
      release_nodes+0x78/0x8c
      devres_release_all+0xa8/0x110
      really_probe+0x118/0x2d0
      __driver_probe_device+0xc8/0xe0
      driver_probe_device+0x54/0xec
      __driver_attach+0xe0/0xf0
      bus_for_each_dev+0x7c/0xc8
      driver_attach+0x30/0x3c
      bus_add_driver+0x17c/0x1c4
      driver_register+0xc0/0xf8
      __platform_driver_register+0x34/0x40
      ...
    
    This issue is introduced by commit d0243bbd5dd3 ("drivers core:
    Free dma_range_map when driver probe failed"). It frees
    dma_range_map before the call to devres_release_all, which is too
    early. The solution is to free dma_range_map only after
    devres_release_all.
    
    Fixes: d0243bbd5dd3 ("drivers core: Free dma_range_map when driver probe failed")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Filip Schauer <filip@mg6.at>
    Link: https://lore.kernel.org/r/20210727112311.GA7645@DESKTOP-E8BN1B0.localdomain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f57b942c4f3e3082aea6140ef81d51dd982d2b2
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Wed Jul 21 22:34:47 2021 +0300

    staging: rtl8712: error handling refactoring
    
    commit e9e6aa51b2735d83a67d9fa0119cf11abef80d99 upstream.
    
    There was strange error handling logic in case of fw load failure. For
    some reason fw loader callback was doing clean up stuff when fw is not
    available. I don't see any reason behind doing this. Since this driver
    doesn't have EEPROM firmware let's just disconnect it in case of fw load
    failure. Doing clean up stuff in 2 different place which can run
    concurently is not good idea and syzbot found 2 bugs related to this
    strange approach.
    
    So, in this pacth I deleted all clean up code from fw callback and made
    a call to device_release_driver() under device_lock(parent) in case of fw
    load failure. This approach is more generic and it defend driver from UAF
    bugs, since all clean up code is moved to one place.
    
    Fixes: e02a3b945816 ("staging: rtl8712: fix memory leak in rtl871x_load_fw_cb")
    Fixes: 8c213fa59199 ("staging: r8712u: Use asynchronous firmware loading")
    Cc: stable <stable@vger.kernel.org>
    Reported-and-tested-by: syzbot+5872a520e0ce0a7c7230@syzkaller.appspotmail.com
    Reported-and-tested-by: syzbot+cc699626e48a6ebaf295@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Link: https://lore.kernel.org/r/d49ecc56e97c4df181d7bd4d240b031f315eacc3.1626895918.git.paskripkin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7565488445db0ddb85c2a955f275b44bf47ebce
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Wed Jul 21 22:34:36 2021 +0300

    staging: rtl8712: get rid of flush_scheduled_work
    
    commit 9be550ee43919b070bcd77f9228bdbbbc073245b upstream.
    
    This patch is preparation for following patch for error handling
    refactoring.
    
    flush_scheduled_work() takes (wq_completion)events lock and
    it can lead to deadlock when r871xu_dev_remove() is called from workqueue.
    To avoid deadlock sutiation we can change flush_scheduled_work() call to
    flush_work() call for all possibly scheduled works in this driver,
    since next patch adds device_release_driver() in case of fw load failure.
    
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/6e028b4c457eeb7156c76c6ea3cdb3cb0207c7e1.1626895918.git.paskripkin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 125b1d808b98be800ad5c64c6428ba18ffa37bc7
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 7a4e7a65d088df2f59c378668f8c10b500861aa8
Author: Tyler Hicks <tyhicks@linux.microsoft.com>
Date:   Mon Jun 14 17:33:16 2021 -0500

    tpm_ftpm_tee: Free and unregister TEE shared memory during kexec
    
    commit dfb703ad2a8d366b829818a558337be779746575 upstream.
    
    dma-buf backed shared memory cannot be reliably freed and unregistered
    during a kexec operation even when tee_shm_free() is called on the shm
    from a .shutdown hook. The problem occurs because dma_buf_put() calls
    fput() which then uses task_work_add(), with the TWA_RESUME parameter,
    to queue tee_shm_release() to be called before the current task returns
    to user mode. However, the current task never returns to user mode
    before the kexec completes so the memory is never freed nor
    unregistered.
    
    Use tee_shm_alloc_kernel_buf() to avoid dma-buf backed shared memory
    allocation so that tee_shm_free() can directly call tee_shm_release().
    This will ensure that the shm can be freed and unregistered during a
    kexec operation.
    
    Fixes: 09e574831b27 ("tpm/tpm_ftpm_tee: A driver for firmware TPM running inside TEE")
    Fixes: 1760eb689ed6 ("tpm/tpm_ftpm_tee: add shutdown call back")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
    Acked-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 156dc5bd1c8ddebef44949d98655207982b42b45
Author: Allen Pais <apais@linux.microsoft.com>
Date:   Mon Jun 14 17:33:12 2021 -0500

    optee: fix tee out of memory failure seen during kexec reboot
    
    commit f25889f93184db8b07a543cc2bbbb9a8fcaf4333 upstream.
    
    The following out of memory errors are seen on kexec reboot
    from the optee core.
    
    [    0.368428] tee_bnxt_fw optee-clnt0: tee_shm_alloc failed
    [    0.368461] tee_bnxt_fw: probe of optee-clnt0 failed with error -22
    
    tee_shm_release() is not invoked on dma shm buffer.
    
    Implement .shutdown() method to handle the release of the buffers
    correctly.
    
    More info:
    https://github.com/OP-TEE/optee_os/issues/3637
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Allen Pais <apais@linux.microsoft.com>
    Reviewed-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 7a710ab78bb8c97b1655c513b97c2ffc827296d5
Author: Tyler Hicks <tyhicks@linux.microsoft.com>
Date:   Mon Jun 14 17:33:11 2021 -0500

    optee: Refuse to load the driver under the kdump kernel
    
    commit adf752af454e91e123e85e3784972d166837af73 upstream.
    
    Fix a hung task issue, seen when booting the kdump kernel, that is
    caused by all of the secure world threads being in a permanent suspended
    state:
    
     INFO: task swapper/0:1 blocked for more than 120 seconds.
           Not tainted 5.4.83 #1
     "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
     swapper/0       D    0     1      0 0x00000028
     Call trace:
      __switch_to+0xc8/0x118
      __schedule+0x2e0/0x700
      schedule+0x38/0xb8
      schedule_timeout+0x258/0x388
      wait_for_completion+0x16c/0x4b8
      optee_cq_wait_for_completion+0x28/0xa8
      optee_disable_shm_cache+0xb8/0xf8
      optee_probe+0x560/0x61c
      platform_drv_probe+0x58/0xa8
      really_probe+0xe0/0x338
      driver_probe_device+0x5c/0xf0
      device_driver_attach+0x74/0x80
      __driver_attach+0x64/0xe0
      bus_for_each_dev+0x84/0xd8
      driver_attach+0x30/0x40
      bus_add_driver+0x188/0x1e8
      driver_register+0x64/0x110
      __platform_driver_register+0x54/0x60
      optee_driver_init+0x20/0x28
      do_one_initcall+0x54/0x24c
      kernel_init_freeable+0x1e8/0x2c0
      kernel_init+0x18/0x118
      ret_from_fork+0x10/0x18
    
    The invoke_fn hook returned OPTEE_SMC_RETURN_ETHREAD_LIMIT, indicating
    that the secure world threads were all in a suspended state at the time
    of the kernel crash. This intermittently prevented the kdump kernel from
    booting, resulting in a failure to collect the kernel dump.
    
    Make kernel dump collection more reliable on systems utilizing OP-TEE by
    refusing to load the driver under the kdump kernel.
    
    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 255e17923b22cb7abd026e044416d61f6bd0eec0
Author: Tyler Hicks <tyhicks@linux.microsoft.com>
Date:   Mon Jun 14 17:33:10 2021 -0500

    optee: Fix memory leak when failing to register shm pages
    
    commit ec185dd3ab257dc2a60953fdf1b6622f524cc5b7 upstream.
    
    Free the previously allocated pages when we encounter an error condition
    while attempting to register the pages with the secure world.
    
    Fixes: a249dd200d03 ("tee: optee: Fix dynamic shm pool allocations")
    Fixes: 5a769f6ff439 ("optee: Fix multi page dynamic shm pool alloc")
    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 55dac0db5316c881f72bce871c2eb1244506e13d
Author: Sumit Garg <sumit.garg@linaro.org>
Date:   Mon Jun 14 17:33:15 2021 -0500

    tee: Correct inappropriate usage of TEE_SHM_DMA_BUF flag
    
    commit 376e4199e327a5cf29b8ec8fb0f64f3d8b429819 upstream.
    
    Currently TEE_SHM_DMA_BUF flag has been inappropriately used to not
    register shared memory allocated for private usage by underlying TEE
    driver: OP-TEE in this case. So rather add a new flag as TEE_SHM_PRIV
    that can be utilized by underlying TEE drivers for private allocation
    and usage of shared memory.
    
    With this corrected, allow tee_shm_alloc_kernel_buf() to allocate a
    shared memory region without the backing of dma-buf.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
    Co-developed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    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 a256c244187a2c80783ea639b0f614e847930f87
Author: Jens Wiklander <jens.wiklander@linaro.org>
Date:   Mon Jun 14 17:33:14 2021 -0500

    tee: add tee_shm_alloc_kernel_buf()
    
    commit dc7019b7d0e188d4093b34bd0747ed0d668c63bf upstream.
    
    Adds a new function tee_shm_alloc_kernel_buf() to allocate shared memory
    from a kernel driver. This function can later be made more lightweight
    by unnecessary dma-buf export.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    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 dca5025908f7bda0ad12e0accd6a7f39e67da704
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 c7003666555d6bb7b5e4b737de331153690c9e29
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Mon Aug 2 17:48:45 2021 +0100

    arm64: stacktrace: avoid tracing arch_stack_walk()
    
    commit 0c32706dac1b0a72713184246952ab0f54327c21 upstream.
    
    When the function_graph tracer is in use, arch_stack_walk() may unwind
    the stack incorrectly, erroneously reporting itself, missing the final
    entry which is being traced, and reporting all traced entries between
    these off-by-one from where they should be.
    
    When ftrace hooks a function return, the original return address is
    saved to the fgraph ret_stack, and the return address  in the LR (or the
    function's frame record) is replaced with `return_to_handler`.
    
    When arm64's unwinder encounter frames returning to `return_to_handler`,
    it finds the associated original return address from the fgraph ret
    stack, assuming the most recent `ret_to_hander` entry on the stack
    corresponds to the most recent entry in the fgraph ret stack, and so on.
    
    When arch_stack_walk() is used to dump the current task's stack, it
    starts from the caller of arch_stack_walk(). However, arch_stack_walk()
    can be traced, and so may push an entry on to the fgraph ret stack,
    leaving the fgraph ret stack offset by one from the expected position.
    
    This can be seen when dumping the stack via /proc/self/stack, where
    enabling the graph tracer results in an unexpected
    `stack_trace_save_tsk` entry at the start of the trace, and `el0_svc`
    missing form the end of the trace.
    
    This patch fixes this by marking arch_stack_walk() as notrace, as we do
    for all other functions on the path to ftrace_graph_get_ret_stack().
    While a few helper functions are not marked notrace, their calls/returns
    are balanced, and will have no observable effect when examining the
    fgraph ret stack.
    
    It is possible for an exeption boundary to cause a similar offset if the
    return address of the interrupted context was in the LR. Fixing those
    cases will require some more substantial rework, and is left for
    subsequent patches.
    
    Before:
    
    | # cat /proc/self/stack
    | [<0>] proc_pid_stack+0xc4/0x140
    | [<0>] proc_single_show+0x6c/0x120
    | [<0>] seq_read_iter+0x240/0x4e0
    | [<0>] seq_read+0xe8/0x140
    | [<0>] vfs_read+0xb8/0x1e4
    | [<0>] ksys_read+0x74/0x100
    | [<0>] __arm64_sys_read+0x28/0x3c
    | [<0>] invoke_syscall+0x50/0x120
    | [<0>] el0_svc_common.constprop.0+0xc4/0xd4
    | [<0>] do_el0_svc+0x30/0x9c
    | [<0>] el0_svc+0x2c/0x54
    | [<0>] el0t_64_sync_handler+0x1a8/0x1b0
    | [<0>] el0t_64_sync+0x198/0x19c
    | # echo function_graph > /sys/kernel/tracing/current_tracer
    | # cat /proc/self/stack
    | [<0>] stack_trace_save_tsk+0xa4/0x110
    | [<0>] proc_pid_stack+0xc4/0x140
    | [<0>] proc_single_show+0x6c/0x120
    | [<0>] seq_read_iter+0x240/0x4e0
    | [<0>] seq_read+0xe8/0x140
    | [<0>] vfs_read+0xb8/0x1e4
    | [<0>] ksys_read+0x74/0x100
    | [<0>] __arm64_sys_read+0x28/0x3c
    | [<0>] invoke_syscall+0x50/0x120
    | [<0>] el0_svc_common.constprop.0+0xc4/0xd4
    | [<0>] do_el0_svc+0x30/0x9c
    | [<0>] el0t_64_sync_handler+0x1a8/0x1b0
    | [<0>] el0t_64_sync+0x198/0x19c
    
    After:
    
    | # cat /proc/self/stack
    | [<0>] proc_pid_stack+0xc4/0x140
    | [<0>] proc_single_show+0x6c/0x120
    | [<0>] seq_read_iter+0x240/0x4e0
    | [<0>] seq_read+0xe8/0x140
    | [<0>] vfs_read+0xb8/0x1e4
    | [<0>] ksys_read+0x74/0x100
    | [<0>] __arm64_sys_read+0x28/0x3c
    | [<0>] invoke_syscall+0x50/0x120
    | [<0>] el0_svc_common.constprop.0+0xc4/0xd4
    | [<0>] do_el0_svc+0x30/0x9c
    | [<0>] el0_svc+0x2c/0x54
    | [<0>] el0t_64_sync_handler+0x1a8/0x1b0
    | [<0>] el0t_64_sync+0x198/0x19c
    | # echo function_graph > /sys/kernel/tracing/current_tracer
    | # cat /proc/self/stack
    | [<0>] proc_pid_stack+0xc4/0x140
    | [<0>] proc_single_show+0x6c/0x120
    | [<0>] seq_read_iter+0x240/0x4e0
    | [<0>] seq_read+0xe8/0x140
    | [<0>] vfs_read+0xb8/0x1e4
    | [<0>] ksys_read+0x74/0x100
    | [<0>] __arm64_sys_read+0x28/0x3c
    | [<0>] invoke_syscall+0x50/0x120
    | [<0>] el0_svc_common.constprop.0+0xc4/0xd4
    | [<0>] do_el0_svc+0x30/0x9c
    | [<0>] el0_svc+0x2c/0x54
    | [<0>] el0t_64_sync_handler+0x1a8/0x1b0
    | [<0>] el0t_64_sync+0x198/0x19c
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Madhavan T. Venkataraman <madvenka@linux.microsoft.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Reviwed-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210802164845.45506-3-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab19b258d68bc70653b06c61f53606f246167393
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Thu Aug 5 15:29:54 2021 -0400

    tracepoint: Use rcu get state and cond sync for static call updates
    
    commit 7b40066c97ec66a44e388f82fcf694987451768f upstream.
    
    State transitions from 1->0->1 and N->2->1 callbacks require RCU
    synchronization. Rather than performing the RCU synchronization every
    time the state change occurs, which is quite slow when many tracepoints
    are registered in batch, instead keep a snapshot of the RCU state on the
    most recent transitions which belong to a chain, and conditionally wait
    for a grace period on the last transition of the chain if one g.p. has
    not elapsed since the last snapshot.
    
    This applies to both RCU and SRCU.
    
    This brings the performance regression caused by commit 231264d6927f
    ("Fix: tracepoint: static call function vs data state mismatch") back to
    what it was originally.
    
    Before this commit:
    
      # trace-cmd start -e all
      # time trace-cmd start -p nop
    
      real  0m10.593s
      user  0m0.017s
      sys   0m0.259s
    
    After this commit:
    
      # trace-cmd start -e all
      # time trace-cmd start -p nop
    
      real  0m0.878s
      user  0m0.000s
      sys   0m0.103s
    
    Link: https://lkml.kernel.org/r/20210805192954.30688-1-mathieu.desnoyers@efficios.com
    Link: https://lore.kernel.org/io-uring/4ebea8f0-58c9-e571-fd30-0ce4f6f09c70@samba.org/
    
    Cc: stable@vger.kernel.org
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: Stefan Metzmacher <metze@samba.org>
    Fixes: 231264d6927f ("Fix: tracepoint: static call function vs data state mismatch")
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21acfdc21754833503dd315309e33765cda0417f
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Thu Aug 5 09:27:16 2021 -0400

    tracepoint: Fix static call function vs data state mismatch
    
    commit 231264d6927f6740af36855a622d0e240be9d94c upstream.
    
    On a 1->0->1 callbacks transition, there is an issue with the new
    callback using the old callback's data.
    
    Considering __DO_TRACE_CALL:
    
            do {                                                            \
                    struct tracepoint_func *it_func_ptr;                    \
                    void *__data;                                           \
                    it_func_ptr =                                           \
                            rcu_dereference_raw((&__tracepoint_##name)->funcs); \
                    if (it_func_ptr) {                                      \
                            __data = (it_func_ptr)->data;                   \
    
    ----> [ delayed here on one CPU (e.g. vcpu preempted by the host) ]
    
                            static_call(tp_func_##name)(__data, args);      \
                    }                                                       \
            } while (0)
    
    It has loaded the tp->funcs of the old callback, so it will try to use the old
    data. This can be fixed by adding a RCU sync anywhere in the 1->0->1
    transition chain.
    
    On a N->2->1 transition, we need an rcu-sync because you may have a
    sequence of 3->2->1 (or 1->2->1) where the element 0 data is unchanged
    between 2->1, but was changed from 3->2 (or from 1->2), which may be
    observed by the static call. This can be fixed by adding an
    unconditional RCU sync in transition 2->1.
    
    Note, this fixes a correctness issue at the cost of adding a tremendous
    performance regression to the disabling of tracepoints.
    
    Before this commit:
    
      # trace-cmd start -e all
      # time trace-cmd start -p nop
    
      real  0m0.778s
      user  0m0.000s
      sys   0m0.061s
    
    After this commit:
    
      # trace-cmd start -e all
      # time trace-cmd start -p nop
    
      real  0m10.593s
      user  0m0.017s
      sys   0m0.259s
    
    A follow up fix will introduce a more lightweight scheme based on RCU
    get_state and cond_sync, that will return the performance back to what it
    was. As both this change and the lightweight versions are complex on their
    own, for bisecting any issues that this may cause, they are kept as two
    separate changes.
    
    Link: https://lkml.kernel.org/r/20210805132717.23813-3-mathieu.desnoyers@efficios.com
    Link: https://lore.kernel.org/io-uring/4ebea8f0-58c9-e571-fd30-0ce4f6f09c70@samba.org/
    
    Cc: stable@vger.kernel.org
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: Stefan Metzmacher <metze@samba.org>
    Fixes: d25e37d89dd2 ("tracepoint: Optimize using static_call()")
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee6f51d74e11019cd1242b4f5ea58e089037d5a7
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Thu Aug 5 09:27:15 2021 -0400

    tracepoint: static call: Compare data on transition from 2->1 callees
    
    commit f7ec4121256393e1d03274acdca73eb18958f27e upstream.
    
    On transition from 2->1 callees, we should be comparing .data rather
    than .func, because the same callback can be registered twice with
    different data, and what we care about here is that the data of array
    element 0 is unchanged to skip rcu sync.
    
    Link: https://lkml.kernel.org/r/20210805132717.23813-2-mathieu.desnoyers@efficios.com
    Link: https://lore.kernel.org/io-uring/4ebea8f0-58c9-e571-fd30-0ce4f6f09c70@samba.org/
    
    Cc: stable@vger.kernel.org
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: Stefan Metzmacher <metze@samba.org>
    Fixes: 547305a64632 ("tracepoint: Fix out of sync data passing by static caller")
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1483ce6d8ffd3bad663bcab5c850e2c40961cc33
Author: Kamal Agrawal <kamaagra@codeaurora.org>
Date:   Fri Jul 30 18:53:06 2021 +0530

    tracing: Fix NULL pointer dereference in start_creating
    
    commit ff41c28c4b54052942180d8b3f49e75f1445135a upstream.
    
    The event_trace_add_tracer() can fail. In this case, it leads to a crash
    in start_creating with below call stack. Handle the error scenario
    properly in trace_array_create_dir.
    
    Call trace:
    down_write+0x7c/0x204
    start_creating.25017+0x6c/0x194
    tracefs_create_file+0xc4/0x2b4
    init_tracer_tracefs+0x5c/0x940
    trace_array_create_dir+0x58/0xb4
    trace_array_create+0x1bc/0x2b8
    trace_array_get_by_name+0xdc/0x18c
    
    Link: https://lkml.kernel.org/r/1627651386-21315-1-git-send-email-kamaagra@codeaurora.org
    
    Cc: stable@vger.kernel.org
    Fixes: 4114fbfd02f1 ("tracing: Enable creating new instance early boot")
    Signed-off-by: Kamal Agrawal <kamaagra@codeaurora.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa9876e40cb636726cbaf50071aef64f70a36deb
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Wed Jul 28 07:55:43 2021 +0900

    tracing: Reject string operand in the histogram expression
    
    commit a9d10ca4986571bffc19778742d508cc8dd13e02 upstream.
    
    Since the string type can not be the target of the addition / subtraction
    operation, it must be rejected. Without this fix, the string type silently
    converted to digits.
    
    Link: https://lkml.kernel.org/r/162742654278.290973.1523000673366456634.stgit@devnote2
    
    Cc: stable@vger.kernel.org
    Fixes: 100719dcef447 ("tracing: Add simple expression support to hist triggers")
    Signed-off-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 53e512b6c56395fb8fa5369a2f72ba19855515d6
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 b907f0dd99cc5f2b3b805d1a843cb287668cf406
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 00fcd7f7a28b9bb6df8180e203e6db938961f01a
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Jul 30 19:59:50 2021 -0700

    clk: fix leak on devm_clk_bulk_get_all() unwind
    
    commit f828b0bcacef189edbd247e9f48864fc36bfbe33 upstream.
    
    clk_bulk_get_all() allocates an array of struct clk_bulk data for us
    (unlike clk_bulk_get()), so we need to free it. Let's use the
    clk_bulk_put_all() helper.
    
    kmemleak complains, on an RK3399 Gru/Kevin system:
    
    unreferenced object 0xffffff80045def00 (size 128):
      comm "swapper/0", pid 1, jiffies 4294667682 (age 86.394s)
      hex dump (first 32 bytes):
        44 32 60 fe fe ff ff ff 00 00 00 00 00 00 00 00  D2`.............
        48 32 60 fe fe ff ff ff 00 00 00 00 00 00 00 00  H2`.............
      backtrace:
        [<00000000742860d6>] __kmalloc+0x22c/0x39c
        [<00000000b0493f2c>] clk_bulk_get_all+0x64/0x188
        [<00000000325f5900>] devm_clk_bulk_get_all+0x58/0xa8
        [<00000000175b9bc5>] dwc3_probe+0x8ac/0xb5c
        [<000000009169e2f9>] platform_drv_probe+0x9c/0xbc
        [<000000005c51e2ee>] really_probe+0x13c/0x378
        [<00000000c47b1f24>] driver_probe_device+0x84/0xc0
        [<00000000f870fcfb>] __device_attach_driver+0x94/0xb0
        [<000000004d1b92ae>] bus_for_each_drv+0x8c/0xd8
        [<00000000481d60c3>] __device_attach+0xc4/0x150
        [<00000000a163bd36>] device_initial_probe+0x1c/0x28
        [<00000000accb6bad>] bus_probe_device+0x3c/0x9c
        [<000000001a199f89>] device_add+0x218/0x3cc
        [<000000001bd84952>] of_device_add+0x40/0x50
        [<000000009c658c29>] of_platform_device_create_pdata+0xac/0x100
        [<0000000021c69ba4>] of_platform_bus_create+0x190/0x224
    
    Fixes: f08c2e2865f6 ("clk: add managed version of clk_bulk_get_all")
    Cc: Dong Aisheng <aisheng.dong@nxp.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Link: https://lore.kernel.org/r/20210731025950.2238582-1-briannorris@chromium.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bb9022e073715db9239b2033a0c8a717f5e735a
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 8ac3e4bdc284802bf5fcdb23492fbc09b21f48c0
Author: Kyle Tso <kyletso@google.com>
Date:   Tue Aug 3 17:13:14 2021 +0800

    usb: typec: tcpm: Keep other events when receiving FRS and Sourcing_vbus events
    
    commit 43ad944cd73f2360ec8ff31d29ea44830b3119af upstream.
    
    When receiving FRS and Sourcing_Vbus events from low-level drivers, keep
    other events which come a bit earlier so that they will not be ignored
    in the event handler.
    
    Fixes: 8dc4bd073663 ("usb: typec: tcpm: Add support for Sink Fast Role SWAP(FRS)")
    Cc: stable <stable@vger.kernel.org>
    Cc: Badhri Jagan Sridharan <badhri@google.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Badhri Jagan Sridharan <badhri@google.com>
    Signed-off-by: Kyle Tso <kyletso@google.com>
    Link: https://lore.kernel.org/r/20210803091314.3051302-1-kyletso@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6f2d875a557dff192cccc830e27420c1c7156af
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Wed Jul 21 16:29:05 2021 +0300

    usb: host: ohci-at91: suspend/resume ports after/before OHCI accesses
    
    commit 00de6a572f30ee93cad7e0704ec4232e5e72bda8 upstream.
    
    On SAMA7G5 suspending ports will cut the access to OHCI registers and
    any subsequent access to them will lead to CPU being blocked trying to
    access that memory. Same thing happens on resume: if OHCI memory is
    accessed before resuming ports the CPU will block on that access. The
    OCHI memory is accessed on suspend/resume though
    ohci_suspend()/ohci_resume().
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210721132905.1970713-1-claudiu.beznea@microchip.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74cd6464d6adae6f0f88fef07b9607ae6b6388da
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 b27bb0d8988e0c5000c35cf52faed3cec118a9b4
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 12620d8780ddadcfab98a6e540031f625bbb0764
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 39129dc820d017070af0882970c3d54d076c7f3b
Author: Pawel Laszczak <pawell@cadence.com>
Date:   Wed Jun 23 09:27:28 2021 +0200

    usb: cdnsp: Fixed issue with ZLP
    
    commit e913aada06830338633fb8524733b0ad3d38a7c1 upstream.
    
    The condition "if (need_zero_pkt && zero_len_trb)" was always false
    and it caused that TRB for ZLP was not prepared.
    
    Fix causes that after preparing last TRB in TD, the driver prepares
    additional TD with ZLP when a ZLP is required.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Signed-off-by: Pawel Laszczak <pawell@cadence.com>
    Link: https://lore.kernel.org/r/20210623072728.41275-1-pawell@gli-login.cadence.com
    Signed-off-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36d3bb59f3c693999a0cdc0379c922ccab82b028
Author: Pawel Laszczak <pawell@cadence.com>
Date:   Wed Jun 23 09:02:47 2021 +0200

    usb: cdns3: Fixed incorrect gadget state
    
    commit aa35772f61752d4c636d46be51a4f7ca6c029ee6 upstream.
    
    For delayed status phase, the usb_gadget->state was set
    to USB_STATE_ADDRESS and it has never been updated to
    USB_STATE_CONFIGURED.
    Patch updates the gadget state to correct USB_STATE_CONFIGURED.
    As a result of this bug the controller was not able to enter to
    Test Mode while using MSC function.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Signed-off-by: Pawel Laszczak <pawell@cadence.com>
    Link: https://lore.kernel.org/r/20210623070247.46151-1-pawell@gli-login.cadence.com
    Signed-off-by: Peter Chen <peter.chen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 271a4a35c61d77d3397f05a2623e1e925edde1cb
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Tue Jul 27 15:31:42 2021 +0800

    usb: gadget: remove leaked entry from udc driver list
    
    commit fa4a8dcfd51b911f101ebc461dfe22230b74dd64 upstream.
    
    The usb_add_gadget_udc will add a new gadget to the udc class
    driver list. Not calling usb_del_gadget_udc in error branch
    will result in residual gadget entry in the udc driver list.
    We fix it by calling usb_del_gadget_udc to clean it when error
    return.
    
    Fixes: 48ba02b2e2b1 ("usb: gadget: add udc driver for max3420")
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Link: https://lore.kernel.org/r/20210727073142.84666-1-zhangqilong3@huawei.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fadfc2b17a1d9089d1da1b818f4b16a245b9ed1f
Author: Wesley Cheng <wcheng@codeaurora.org>
Date:   Tue Aug 3 23:24:05 2021 -0700

    usb: dwc3: gadget: Avoid runtime resume if disabling pullup
    
    commit cb10f68ad8150f243964b19391711aaac5e8ff42 upstream.
    
    If the device is already in the runtime suspended state, any call to
    the pullup routine will issue a runtime resume on the DWC3 core
    device.  If the USB gadget is disabling the pullup, then avoid having
    to issue a runtime resume, as DWC3 gadget has already been
    halted/stopped.
    
    This fixes an issue where the following condition occurs:
    
    usb_gadget_remove_driver()
    -->usb_gadget_disconnect()
     -->dwc3_gadget_pullup(0)
      -->pm_runtime_get_sync() -> ret = 0
      -->pm_runtime_put() [async]
    -->usb_gadget_udc_stop()
     -->dwc3_gadget_stop()
      -->dwc->gadget_driver = NULL
    ...
    
    dwc3_suspend_common()
    -->dwc3_gadget_suspend()
     -->DWC3 halt/stop routine skipped, driver_data == NULL
    
    This leads to a situation where the DWC3 gadget is not properly
    stopped, as the runtime resume would have re-enabled EP0 and event
    interrupts, and since we avoided the DWC3 gadget suspend, these
    resources were never disabled.
    
    Fixes: 77adb8bdf422 ("usb: dwc3: gadget: Allow runtime suspend if UDC unbinded")
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
    Link: https://lore.kernel.org/r/1628058245-30692-1-git-send-email-wcheng@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cde7b3b1ddd4d59af504f320fb0cfaf648acdc91
Author: Wesley Cheng <wcheng@codeaurora.org>
Date:   Thu Jul 29 00:33:14 2021 -0700

    usb: dwc3: gadget: Use list_replace_init() before traversing lists
    
    commit d25d85061bd856d6be221626605319154f9b5043 upstream.
    
    The list_for_each_entry_safe() macro saves the current item (n) and
    the item after (n+1), so that n can be safely removed without
    corrupting the list.  However, when traversing the list and removing
    items using gadget giveback, the DWC3 lock is briefly released,
    allowing other routines to execute.  There is a situation where, while
    items are being removed from the cancelled_list using
    dwc3_gadget_ep_cleanup_cancelled_requests(), the pullup disable
    routine is running in parallel (due to UDC unbind).  As the cleanup
    routine removes n, and the pullup disable removes n+1, once the
    cleanup retakes the DWC3 lock, it references a request who was already
    removed/handled.  With list debug enabled, this leads to a panic.
    Ensure all instances of the macro are replaced where gadget giveback
    is used.
    
    Example call stack:
    
    Thread#1:
    __dwc3_gadget_ep_set_halt() - CLEAR HALT
      -> dwc3_gadget_ep_cleanup_cancelled_requests()
        ->list_for_each_entry_safe()
        ->dwc3_gadget_giveback(n)
          ->dwc3_gadget_del_and_unmap_request()- n deleted[cancelled_list]
          ->spin_unlock
          ->Thread#2 executes
          ...
        ->dwc3_gadget_giveback(n+1)
          ->Already removed!
    
    Thread#2:
    dwc3_gadget_pullup()
      ->waiting for dwc3 spin_lock
      ...
      ->Thread#1 released lock
      ->dwc3_stop_active_transfers()
        ->dwc3_remove_requests()
          ->fetches n+1 item from cancelled_list (n removed by Thread#1)
          ->dwc3_gadget_giveback()
            ->dwc3_gadget_del_and_unmap_request()- n+1
    deleted[cancelled_list]
            ->spin_unlock
    
    Fix this condition by utilizing list_replace_init(), and traversing
    through a local copy of the current elements in the endpoint lists.
    This will also set the parent list as empty, so if another thread is
    also looping through the list, it will be empty on the next iteration.
    
    Fixes: d4f1afe5e896 ("usb: dwc3: gadget: move requests to cancelled_list")
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
    Link: https://lore.kernel.org/r/1627543994-20327-1-git-send-email-wcheng@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22952d4d1ae2b636c50bad7c1b418d9017e4a47c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jul 29 20:51:26 2021 +0200

    ALSA: usb-audio: Avoid unnecessary or invalid connector selection at resume
    
    commit 8dde723fcde4479f256441da03793e37181d9f21 upstream.
    
    The recent fix for the resume on Lenovo machines seems causing a
    regression on others.  It's because the change always triggers the
    connector selection no matter which widget node type is.
    
    This patch addresses the regression by setting the resume callback
    selectively only for the connector widget.
    
    Fixes: 44609fc01f28 ("ALSA: usb-audio: Check connector value on resume")
    Cc: <stable@vger.kernel.org>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=213897
    Link: https://lore.kernel.org/r/20210729185126.24432-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11ebf7631eb62b07182dbd7fd207acbbb33c666f
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 8691bda377292d465744e043410e74d3e3078308
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jul 26 08:26:56 2021 +0200

    ALSA: usb-audio: Fix superfluous autosuspend recovery
    
    commit 66291b6adb66dd3bc96b0f594d88c2ff1300d95f upstream.
    
    The change to restore the autosuspend from the disabled state uses a
    wrong check: namely, it should have been the exact comparison of the
    quirk_type instead of the bitwise and (&).  Otherwise it matches
    wrongly with the other quirk types.
    
    Although re-enabling the autosuspend for the already enabled device
    shouldn't matter much, it's better to fix the unbalanced call.
    
    Fixes: 9799110825db ("ALSA: usb-audio: Disable USB autosuspend properly in setup_disable_autosuspend()")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/s5hr1flh9ov.wl-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6537805a71cd177e795ddbab5eb38257b0aa2a3f
Author: Nikos Liolios <liolios.nk@gmail.com>
Date:   Tue Jul 27 06:05:10 2021 +0300

    ALSA: hda/realtek: Fix headset mic for Acer SWIFT SF314-56 (ALC256)
    
    commit 35171fbfc0d94aa31b009bb475d156ad1941ab50 upstream.
    
    The issue on Acer SWIFT SF314-56 is that headset microphone doesn't work.
    The following quirk fixed headset microphone issue. The fixup was found by trial and error.
    Note that the fixup of SF314-54/55 (ALC256_FIXUP_ACER_HEADSET_MIC) was not successful on my SF314-56.
    
    Signed-off-by: Nikos Liolios <liolios.nk@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210727030510.36292-1-liolios.nk@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cb3b665fa399cdb40101c32573049fed9b913cb
Author: Alexander Monakov <amonakov@ispras.ru>
Date:   Wed Jul 21 20:01:41 2021 +0300

    ALSA: hda/realtek: add mic quirk for Acer SF314-42
    
    commit 0d4867a185460397af56b9afe3e2243d3e610e37 upstream.
    
    The Acer Swift SF314-42 laptop is using Realtek ALC255 codec. Add a
    quirk so microphone in a headset connected via the right-hand side jack
    is usable.
    
    Signed-off-by: Alexander Monakov <amonakov@ispras.ru>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210721170141.24807-1-amonakov@ispras.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb78a577d5e55c6fd2734943b344f514a1c144ff
Author: Jaroslav Kysela <perex@perex.cz>
Date:   Fri Jul 30 11:02:54 2021 +0200

    ALSA: pcm - fix mmap capability check for the snd-dummy driver
    
    commit 852a8a97776a153be2e6c803218eced45f37a19c upstream.
    
    The snd-dummy driver (fake_buffer configuration) uses the ops->page
    callback for the mmap operations. Allow mmap for this case, too.
    
    Cc: <stable@vger.kernel.org>
    Fixes: c4824ae7db41 ("ALSA: pcm: Fix mmap capability check")
    Signed-off-by: Jaroslav Kysela <perex@perex.cz>
    Link: https://lore.kernel.org/r/20210730090254.612478-1-perex@perex.cz
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 797bcd3d678baf2882b37cc105c08eafd88464ab
Author: Shirish S <shirish.s@amd.com>
Date:   Tue Aug 3 14:03:44 2021 +0530

    drm/amdgpu/display: fix DMUB firmware version info
    
    commit 0e99e960ce6d5ff586fc0733bc393c087f52c27b upstream.
    
    DMUB firmware info is printed before it gets initialized.
    Correct this order to ensure true value is conveyed.
    
    Signed-off-by: Shirish S <shirish.s@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8330879408e590b0d576e2e65a0ced4d9ae804bb
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Thu Jul 29 20:03:47 2021 -0700

    drm/amdgpu: fix checking pmops when PM_SLEEP is not enabled
    
    commit 5706cb3c910cc8283f344bc37a889a8d523a2c6d upstream.
    
    'pm_suspend_target_state' is only available when CONFIG_PM_SLEEP
    is set/enabled. OTOH, when both SUSPEND and HIBERNATION are not set,
    PM_SLEEP is not set, so this variable cannot be used.
    
    ../drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c: In function ‘amdgpu_acpi_is_s0ix_active’:
    ../drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:1046:11: error: ‘pm_suspend_target_state’ undeclared (first use in this function); did you mean ‘__KSYM_pm_suspend_target_state’?
        return pm_suspend_target_state == PM_SUSPEND_TO_IDLE;
               ^~~~~~~~~~~~~~~~~~~~~~~
               __KSYM_pm_suspend_target_state
    
    Also use shorter IS_ENABLED(CONFIG_foo) notation for checking the
    2 config symbols.
    
    Fixes: 91e273712ab8dd ("drm/amdgpu: Check pmops for desired suspend state")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: "Pan, Xinhui" <Xinhui.Pan@amd.com>
    Cc: amd-gfx@lists.freedesktop.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: linux-next@vger.kernel.org
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c14a54675db7131791402fa22fb0fa6da1f5fb66
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 34311eaec13bd68ce33e4fa12e036df0967c90f3
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 44b8abfb1c0f54c85531ec0322f5aa835f5fd02e
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Aug 4 11:31:00 2021 +0200

    USB: serial: pl2303: fix GT type detection
    
    commit 3212a99349cee5fb611d3ffcf0e65bc3cd6dcf2f upstream.
    
    At least some PL2303GT have a bcdDevice of 0x305 instead of 0x100 as the
    datasheet claims. Add it to the list of known release numbers for the
    HXN (G) type.
    
    Fixes: 894758d0571d ("USB: serial: pl2303: tighten type HXN (G) detection")
    Reported-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Cc: stable@vger.kernel.org      # 5.13
    Link: https://lore.kernel.org/r/20210804093100.24811-1-johan@kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 654b54e72cb36a83bec94b69090f5486b0fc6131
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jul 30 14:21:56 2021 +0200

    USB: serial: pl2303: fix HX type detection
    
    commit 1e9faef4d26de33bd6b5018695996e7394119e5b upstream.
    
    The device release number for HX-type devices is configurable in
    EEPROM/OTPROM and cannot be used reliably for type detection.
    
    Assume all (non-H) devices with bcdUSB 1.1 and unknown bcdDevice to be
    of HX type while adding a bcdDevice check for HXD and TB (1.1 and 2.0,
    respectively).
    
    Reported-by: Chris <chris@cyber-anlage.de>
    Fixes: 8a7bf7510d1f ("USB: serial: pl2303: amend and tighten type detection")
    Cc: stable@vger.kernel.org      # 5.13
    Link: https://lore.kernel.org/r/20210730122156.718-1-johan@kernel.org
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccc55e1df78b4c4cf35051c2de2034eb7b324f07
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 9fc923d27852aebbd8af0ac988dc66bfb4aa7d5d
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 a07d3a2a57ded1d6c43ea2dfd310b00564a68062
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 e7cf487c5f05feba8953efce16b6971421877a15
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 d92eaad3ed951c5790dc7990850b9979d3f0cb6d
Author: Hao Xu <haoxu@linux.alibaba.com>
Date:   Thu Aug 5 18:05:38 2021 +0800

    io-wq: fix lack of acct->nr_workers < acct->max_workers judgement
    
    [ Upstream commit 21698274da5b6fc724b005bc7ec3e6b9fbcfaa06 ]
    
    There should be this judgement before we create an io-worker
    
    Fixes: 685fe7feedb9 ("io-wq: eliminate the need for a manager thread")
    Signed-off-by: Hao Xu <haoxu@linux.alibaba.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebad5646c059880bee8ec633ca1c5bd45171fa34
Author: Hao Xu <haoxu@linux.alibaba.com>
Date:   Thu Aug 5 18:05:37 2021 +0800

    io-wq: fix no lock protection of acct->nr_worker
    
    [ Upstream commit 3d4e4face9c1548752a2891e98b38b100feee336 ]
    
    There is an acct->nr_worker visit without lock protection. Think about
    the case: two callers call io_wqe_wake_worker(), one is the original
    context and the other one is an io-worker(by calling
    io_wqe_enqueue(wqe, linked)), on two cpus paralelly, this may cause
    nr_worker to be larger than max_worker.
    Let's fix it by adding lock for it, and let's do nr_workers++ before
    create_io_worker. There may be a edge cause that the first caller fails
    to create an io-worker, but the second caller doesn't know it and then
    quit creating io-worker as well:
    
    say nr_worker = max_worker - 1
            cpu 0                        cpu 1
       io_wqe_wake_worker()          io_wqe_wake_worker()
          nr_worker < max_worker
          nr_worker++
          create_io_worker()         nr_worker == max_worker
             failed                  return
          return
    
    But the chance of this case is very slim.
    
    Fixes: 685fe7feedb9 ("io-wq: eliminate the need for a manager thread")
    Signed-off-by: Hao Xu <haoxu@linux.alibaba.com>
    [axboe: fix unconditional create_io_worker() call]
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75dd00b755ebfa9b24eaedc9f42e9adfc00ae00c
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 5c4139e2e299607cd91072e2cd966c79099c6d5f
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 fc443dec378613618b8c15194a278af9dbd926d0
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 5969dc53160adc35eacbdc7b99e060ec3b3fea1c
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 91c159168dbd3574721786255f2d43e355114722
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 a4e2310d171ee9f22cfce4dd5349f309767a1571
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Thu Aug 5 13:14:09 2021 +0300

    net: ethernet: ti: am65-cpsw: fix crash in am65_cpsw_port_offload_fwd_mark_update()
    
    [ Upstream commit ae03d189bae306e1e00aa631feee090ebda6cf63 ]
    
    The am65_cpsw_port_offload_fwd_mark_update() causes NULL exception crash
    when there is at least one disabled port and any other port added to the
    bridge first time.
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000858
    pc : am65_cpsw_port_offload_fwd_mark_update+0x54/0x68
    lr : am65_cpsw_netdevice_event+0x8c/0xf0
    Call trace:
    am65_cpsw_port_offload_fwd_mark_update+0x54/0x68
    notifier_call_chain+0x54/0x98
    raw_notifier_call_chain+0x14/0x20
    call_netdevice_notifiers_info+0x34/0x78
    __netdev_upper_dev_link+0x1c8/0x290
    netdev_master_upper_dev_link+0x1c/0x28
    br_add_if+0x3f0/0x6d0 [bridge]
    
    Fix it by adding proper check for port->ndev != NULL.
    
    Fixes: 2934db9bcb30 ("net: ti: am65-cpsw-nuss: Add netdevice notifiers")
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e2de0ad1d17e8d9d8f226a1d34ab01bfc18d011
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 9884f6096c4a83248eda4f42f2f0f5297592d15d
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Thu Jul 29 09:12:54 2021 +0900

    kbuild: cancel sub_make_done for the install target to fix DKMS
    
    [ Upstream commit 14ccc638b02f9ec500c17d9e39efe979145a4b61 ]
    
    Since commit bcf637f54f6d ("kbuild: parse C= and M= before changing the
    working directory"), external module builds invoked by DKMS fail because
    M= option is not parsed.
    
    I wanted to add 'unset sub_make_done' in install.sh but similar scripts,
    arch/*/boot/install.sh, are duplicated, so I set sub_make_done empty in
    the top Makefile.
    
    Fixes: bcf637f54f6d ("kbuild: parse C= and M= before changing the working directory")
    Reported-by: John S Gruber <johnsgruber@gmail.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Tested-by: John S Gruber <johnsgruber@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb1f2a9b52d67686f75f896c16eab01dcbd72aaa
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 a047015d4b231cacda94ff80464a854f5ffde5c0
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Thu Jul 8 10:57:09 2021 +0200

    x86/tools/relocs: Fix non-POSIX regexp
    
    [ Upstream commit fa953adfad7cf9c7e30d9ea0e4ccfd38cfb5495d ]
    
    Trying to run a cross-compiled x86 relocs tool on a BSD based
    HOSTCC leads to errors like
    
      VOFFSET arch/x86/boot/compressed/../voffset.h - due to: vmlinux
      CC      arch/x86/boot/compressed/misc.o - due to: arch/x86/boot/compressed/../voffset.h
      OBJCOPY arch/x86/boot/compressed/vmlinux.bin - due to: vmlinux
      RELOCS  arch/x86/boot/compressed/vmlinux.relocs - due to: vmlinux
    empty (sub)expressionarch/x86/boot/compressed/Makefile:118: recipe for target 'arch/x86/boot/compressed/vmlinux.relocs' failed
    make[3]: *** [arch/x86/boot/compressed/vmlinux.relocs] Error 1
    
    It turns out that relocs.c uses patterns like
    
            "something(|_end)"
    
    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 regexp() implementation
    while a BSD host complains.
    
    Such patterns can be replaced by a transformation like
    
            "(|p1|p2)" -> "(p1|p2)?"
    
    Fixes: fd952815307f ("x86-32, relocs: Whitelist more symbols for ld bug workaround")
    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 b50d4d2b6fc6a65eef9efe3f7ffe3b523219b7c8
Author: Huang Pei <huangpei@loongson.cn>
Date:   Wed Jul 21 17:30:45 2021 +0800

    MIPS: check return value of pgtable_pmd_page_ctor
    
    [ Upstream commit 6aa32467299e9e12280a6aec9dbc21bf2db830b0 ]
    
    +. According to Documentation/vm/split_page_table_lock, handle failure
    of pgtable_pmd_page_ctor
    
    +. Use GFP_KERNEL_ACCOUNT instead of GFP_KERNEL|__GFP_ACCOUNT
    
    +. Adjust coding style
    
    Fixes: ed914d48b6a1 ("MIPS: add PMD table accounting into MIPS')
    Reported-by: Joshua Kinard <kumba@gentoo.org>
    Signed-off-by: Huang Pei <huangpei@loongson.cn>
    Reviewed-by: Joshua Kinard <kumba@gentoo.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 367c5c9d53e462fca16d6669429488408c048bb2
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Aug 4 13:41:47 2021 -0700

    drm/i915: fix i915_globals_exit() section mismatch error
    
    [ Upstream commit a07296453bf2778952a09b6244a695bf7607babb ]
    
    Fix modpost Section mismatch error in i915_globals_exit().
    Since both an __init function and an __exit function can call
    i915_globals_exit(), any function that i915_globals_exit() calls
    should not be marked as __init or __exit. I.e., it needs to be
    available for either of them.
    
    WARNING: modpost: vmlinux.o(.text+0x8b796a): Section mismatch in reference from the function i915_globals_exit() to the function .exit.text:__i915_globals_flush()
    The function i915_globals_exit() references a function in an exit section.
    Often the function __i915_globals_flush() has valid usage outside the exit section
    and the fix is to remove the __exit annotation of __i915_globals_flush.
    
    ERROR: modpost: Section mismatches detected.
    Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.
    
    Fixes: 1354d830cb8f ("drm/i915: Call i915_globals_exit() if pci_register_device() fails")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Jason Ekstrand <jason@jlekstrand.net>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: intel-gfx@lists.freedesktop.org
    Cc: dri-devel@lists.freedesktop.org
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210804204147.2070-1-rdunlap@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8cc7b4cbce3090f61fe42d6202589bd8a0c29827
Author: Yunsheng Lin <linyunsheng@huawei.com>
Date:   Tue Aug 3 18:58:21 2021 +0800

    net: sched: fix lockdep_set_class() typo error for sch->seqlock
    
    [ Upstream commit 06f5553e0f0c2182268179b93856187d9cb86dd5 ]
    
    According to comment in qdisc_alloc(), sch->seqlock's lockdep
    class key should be set to qdisc_tx_busylock, due to possible
    type error, sch->busylock's lockdep class key is set to
    qdisc_tx_busylock, which is duplicated because sch->busylock's
    lockdep class key is already set in qdisc_alloc().
    
    So fix it by replacing sch->busylock with sch->seqlock.
    
    Fixes: 96009c7d500e ("sched: replace __QDISC_STATE_RUNNING bit with a spin lock")
    Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04c35b1c155dadac149bedbe61f959f68d4b7d38
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Jul 6 09:26:21 2021 -0700

    riscv: Disable STACKPROTECTOR_PER_TASK if GCC_PLUGIN_RANDSTRUCT is enabled
    
    [ Upstream commit a18b14d8886614b3c7d290c4cfc33389822b0535 ]
    
    riscv uses the value of TSK_STACK_CANARY to set
    stack-protector-guard-offset. With GCC_PLUGIN_RANDSTRUCT enabled, that
    value is non-deterministic, and with riscv:allmodconfig often results
    in build errors such as
    
    cc1: error: '8120' is not a valid offset in '-mstack-protector-guard-offset='
    
    Enable STACKPROTECTOR_PER_TASK only if GCC_PLUGIN_RANDSTRUCT is disabled
    to fix the problem.
    
    Fixes: fea2fed201ee5 ("riscv: Enable per-task stack canaries")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57b76a8fec6277f39937c91a7cf2d0bc31094b6f
Author: Oleksij Rempel <linux@rempel-privat.de>
Date:   Tue Aug 3 08:37:46 2021 +0200

    net: dsa: qca: ar9331: reorder MDIO write sequence
    
    [ Upstream commit d1a58c013a5837451e3213e7a426d350fa524ead ]
    
    In case of this switch we work with 32bit registers on top of 16bit
    bus. Some registers (for example access to forwarding database) have
    trigger bit on the first 16bit half of request and the result +
    configuration of request in the second half. Without this patch, we would
    trigger database operation and overwrite result in one run.
    
    To make it work properly, we should do the second part of transfer
    before the first one is done.
    
    So far, this rule seems to work for all registers on this switch.
    
    Fixes: ec6698c272de ("net: dsa: add support for Atheros AR9331 built-in switch")
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Link: https://lore.kernel.org/r/20210803063746.3600-1-o.rempel@pengutronix.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60dd525573d52b369ce59452df4f178b8fc6c78a
Author: Yangyang Li <liyangyang20@huawei.com>
Date:   Mon Aug 2 14:56:14 2021 +0800

    RDMA/hns: Fix the double unlock problem of poll_sem
    
    [ Upstream commit 8b436a99cd708bd158231a0630ffa49b1d6175e4 ]
    
    If hns_roce_cmd_use_events() fails then it means that the poll_sem is not
    obtained, but the poll_sem is released in hns_roce_cmd_use_polling(), this
    will cause an unlock problem.
    
    This is the static checker warning:
            drivers/infiniband/hw/hns/hns_roce_main.c:926 hns_roce_init()
            error: double unlocked '&hr_dev->cmd.poll_sem' (orig line 879)
    
    Event mode and polling mode are mutually exclusive and resources are
    separated, so there is no need to process polling mode resources in event
    mode.
    
    The initial mode of cmd is polling mode, so even if cmd fails to switch to
    event mode, it is not necessary to switch to polling mode.
    
    Fixes: a389d016c030 ("RDMA/hns: Enable all CMDQ context")
    Fixes: 3d50503b3b33 ("RDMA/hns: Optimize cmd init and mode selection for hip08")
    Link: https://lore.kernel.org/r/1627887374-20019-1-git-send-email-liangwenpeng@huawei.com
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
    Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3aba13b0e210316b06a82d52b9a359cc6d2913f
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 2841b30013762e4304ffadafa50ab85f885fbe8f
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 0294ca659bce53ed80f9bca9f2bb1109d16333f1
Author: Jason Ekstrand <jason@jlekstrand.net>
Date:   Wed Jul 21 10:23:54 2021 -0500

    drm/i915: Call i915_globals_exit() if pci_register_device() fails
    
    [ Upstream commit 1354d830cb8f9be966cc07fc61368af27ffb7c4a ]
    
    In the unlikely event that pci_register_device() fails, we were tearing
    down our PMU setup but not globals.  This leaves a bunch of memory slabs
    lying around.
    
    Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
    Fixes: 32eb6bcfdda9 ("drm/i915: Make request allocation caches global")
    [danvet: Fix conflicts against removal of the globals_flush
    infrastructure.]
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210721152358.2893314-3-jason@jlekstrand.net
    (cherry picked from commit db484889d1ff0645e07e360d3e3ad306c0515821)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    [Fixed small conflict while cherry picking]
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d73959cc5d9829c5bcff801f061e2d486205b91d
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 8a9099d737d1bd69135a2889d1345df01dec92d9
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Mon Aug 2 02:17:30 2021 +0300

    net: bridge: validate the NUD_PERMANENT bit when adding an extern_learn FDB entry
    
    [ Upstream commit 0541a6293298fb52789de389dfb27ef54df81f73 ]
    
    Currently it is possible to add broken extern_learn FDB entries to the
    bridge in two ways:
    
    1. Entries pointing towards the bridge device that are not local/permanent:
    
    ip link add br0 type bridge
    bridge fdb add 00:01:02:03:04:05 dev br0 self extern_learn static
    
    2. Entries pointing towards the bridge device or towards a port that
    are marked as local/permanent, however the bridge does not process the
    'permanent' bit in any way, therefore they are recorded as though they
    aren't permanent:
    
    ip link add br0 type bridge
    bridge fdb add 00:01:02:03:04:05 dev br0 self extern_learn permanent
    
    Since commit 52e4bec15546 ("net: bridge: switchdev: treat local FDBs the
    same as entries towards the bridge"), these incorrect FDB entries can
    even trigger NULL pointer dereferences inside the kernel.
    
    This is because that commit made the assumption that all FDB entries
    that are not local/permanent have a valid destination port. For context,
    local / permanent FDB entries either have fdb->dst == NULL, and these
    point towards the bridge device and are therefore local and not to be
    used for forwarding, or have fdb->dst == a net_bridge_port structure
    (but are to be treated in the same way, i.e. not for forwarding).
    
    That assumption _is_ correct as long as things are working correctly in
    the bridge driver, i.e. we cannot logically have fdb->dst == NULL under
    any circumstance for FDB entries that are not local. However, the
    extern_learn code path where FDB entries are managed by a user space
    controller show that it is possible for the bridge kernel driver to
    misinterpret the NUD flags of an entry transmitted by user space, and
    end up having fdb->dst == NULL while not being a local entry. This is
    invalid and should be rejected.
    
    Before, the two commands listed above both crashed the kernel in this
    check from br_switchdev_fdb_notify:
    
            struct net_device *dev = info.is_local ? br->dev : dst->dev;
    
    info.is_local == false, dst == NULL.
    
    After this patch, the invalid entry added by the first command is
    rejected:
    
    ip link add br0 type bridge && bridge fdb add 00:01:02:03:04:05 dev br0 self extern_learn static; ip link del br0
    Error: bridge: FDB entry towards bridge must be permanent.
    
    and the valid entry added by the second command is properly treated as a
    local address and does not crash br_switchdev_fdb_notify anymore:
    
    ip link add br0 type bridge && bridge fdb add 00:01:02:03:04:05 dev br0 self extern_learn permanent; ip link del br0
    
    Fixes: eb100e0e24a2 ("net: bridge: allow to add externally learned entries from user-space")
    Reported-by: syzbot+9ba1174359adba5a5b7c@syzkaller.appspotmail.com
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com>
    Link: https://lore.kernel.org/r/20210801231730.7493-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 29d04e9cf568b4f3655cd74d40255561ce3432a8
Author: Aharon Landau <aharonl@nvidia.com>
Date:   Tue Jul 27 10:16:06 2021 +0300

    RDMA/mlx5: Delay emptying a cache entry when a new MR is added to it recently
    
    [ Upstream commit d6793ca97b76642b77629dd0783ec64782a50bdb ]
    
    Fixing a typo that causes a cache entry to shrink immediately after adding
    to it new MRs if the entry size exceeds the high limit.  In doing so, the
    cache misses its purpose to prevent the creation of new mkeys on the
    runtime by using the cached ones.
    
    Fixes: b9358bdbc713 ("RDMA/mlx5: Fix locking in MR cache work queue")
    Link: https://lore.kernel.org/r/fcb546986be346684a016f5ca23a0567399145fa.1627370131.git.leonro@nvidia.com
    Signed-off-by: Aharon Landau <aharonl@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84a55bb25b8c6fc89ba319d169bb16c919e0783e
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Fri Jul 16 12:00:47 2021 +0200

    gpio: tqmx86: really make IRQ optional
    
    [ Upstream commit 9b87f43537acfa24b95c236beba0f45901356eb2 ]
    
    The tqmx86 MFD driver was passing IRQ 0 for "no IRQ" in the past. This
    causes warnings with newer kernels.
    
    Prepare the gpio-tqmx86 driver for the fixed MFD driver by handling a
    missing IRQ properly.
    
    Fixes: b868db94a6a7 ("gpio: tqmx86: Add GPIO from for this IO controller")
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Acked-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be4b1c034ce7c1d9aca0b0a53a962c82688f3e15
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 a8c78e76c426ac77b3ee960d5b450e602ba8382c
Author: Steve Bennett <steveb@workware.net.au>
Date:   Sat Jul 31 08:57:50 2021 +1000

    net: phy: micrel: Fix detection of ksz87xx switch
    
    [ Upstream commit a5e63c7d38d548b8dab6c6205e0b6af76899dbf5 ]
    
    The logic for discerning between KSZ8051 and KSZ87XX PHYs is incorrect
    such that the that KSZ87XX switch is not identified correctly.
    
    ksz8051_ksz8795_match_phy_device() uses the parameter ksz_phy_id
    to discriminate whether it was called from ksz8051_match_phy_device()
    or from ksz8795_match_phy_device() but since PHY_ID_KSZ87XX is the
    same value as PHY_ID_KSZ8051, this doesn't work.
    
    Instead use a bool to discriminate the caller.
    
    Without this patch, the KSZ8795 switch port identifies as:
    
    ksz8795-switch spi3.1 ade1 (uninitialized): PHY [dsa-0.1:03] driver [Generic PHY]
    
    With the patch, it identifies correctly:
    
    ksz8795-switch spi3.1 ade1 (uninitialized): PHY [dsa-0.1:03] driver [Micrel KSZ87XX Switch]
    
    Fixes: 8b95599c55ed24b36cf4 ("net: phy: micrel: Discern KSZ8051 and KSZ8795 PHYs")
    Signed-off-by: Steve Bennett <steveb@workware.net.au>
    Reviewed-by: Marek Vasut <marex@denx.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6986053b6f33aa992afa9d9bc4bc79e6e3977280
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jul 30 20:18:15 2021 +0300

    net: dsa: sja1105: match FDB entries regardless of inner/outer VLAN tag
    
    [ Upstream commit 47c2c0c2312118a478f738503781de1d1a6020d2 ]
    
    On SJA1105P/Q/R/S and SJA1110, the L2 Lookup Table entries contain a
    maskable "inner/outer tag" bit which means:
    - when set to 1: match single-outer and double tagged frames
    - when set to 0: match untagged and single-inner tagged frames
    - when masked off: match all frames regardless of the type of tag
    
    This driver does not make any meaningful distinction between inner tags
    (matches on TPID) and outer tags (matches on TPID2). In fact, all VLAN
    table entries are installed as SJA1110_VLAN_D_TAG, which means that they
    match on both inner and outer tags.
    
    So it does not make sense that we install FDB entries with the IOTAG bit
    set to 1.
    
    In VLAN-unaware mode, we set both TPID and TPID2 to 0xdadb, so the
    switch will see frames as outer-tagged or double-tagged (never inner).
    So the FDB entries will match if IOTAG is set to 1.
    
    In VLAN-aware mode, we set TPID to 0x8100 and TPID2 to 0x88a8. So the
    switch will see untagged and 802.1Q-tagged packets as inner-tagged, and
    802.1ad-tagged packets as outer-tagged. So untagged and 802.1Q-tagged
    packets will not match FDB entries if IOTAG is set to 1, but 802.1ad
    tagged packets will. Strange.
    
    To fix this, simply mask off the IOTAG bit from FDB entries, and make
    them match regardless of whether the VLAN tag is inner or outer.
    
    Fixes: 1da73821343c ("net: dsa: sja1105: Add FDB operations for P/Q/R/S series")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 731993ae08c32cbdc016280b0cafe84e240556a9
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jul 30 20:18:14 2021 +0300

    net: dsa: sja1105: be stateless with FDB entries on SJA1105P/Q/R/S/SJA1110 too
    
    [ Upstream commit 589918df93226a1e5f104306c185b6dcf2bd8051 ]
    
    Similar but not quite the same with what was done in commit b11f0a4c0c81
    ("net: dsa: sja1105: be stateless when installing FDB entries") for
    SJA1105E/T, it is desirable to drop the priv->vlan_aware check and
    simply go ahead and install FDB entries in the VLAN that was given by
    the bridge.
    
    As opposed to SJA1105E/T, in SJA1105P/Q/R/S and SJA1110, the FDB is a
    maskable TCAM, and we are installing VLAN-unaware FDB entries with the
    VLAN ID masked off. However, such FDB entries might completely obscure
    VLAN-aware entries where the VLAN ID is included in the search mask,
    because the switch looks up the FDB from left to right and picks the
    first entry which results in a masked match. So it depends on whether
    the bridge installs first the VLAN-unaware or the VLAN-aware FDB entries.
    
    Anyway, if we had a VLAN-unaware FDB entry towards one set of DESTPORTS
    and a VLAN-aware one towards other set of DESTPORTS, the result is that
    the packets in VLAN-aware mode will be forwarded towards the DESTPORTS
    specified by the VLAN-unaware entry.
    
    To solve this, simply do not use the masked matching ability of the FDB
    for VLAN ID, and always match precisely on it. In VLAN-unaware mode, we
    configure the switch for shared VLAN learning, so the VLAN ID will be
    ignored anyway during lookup, so it is redundant to mask it off in the
    TCAM.
    
    This patch conflicts with net-next commit 0fac6aa098ed ("net: dsa: sja1105:
    delete the best_effort_vlan_filtering mode") which changed this line:
            if (priv->vlan_state != SJA1105_VLAN_UNAWARE) {
    into:
            if (priv->vlan_aware) {
    
    When merging with net-next, the lines added by this patch should take
    precedence in the conflict resolution (i.e. the "if" condition should be
    deleted in both cases).
    
    Fixes: 1da73821343c ("net: dsa: sja1105: Add FDB operations for P/Q/R/S series")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a9e4d4e6ede00691282e335c0ab776147531527
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jul 30 20:18:13 2021 +0300

    net: dsa: sja1105: ignore the FDB entry for unknown multicast when adding a new address
    
    [ Upstream commit 728db843df88753aeb7224314807a203afa8eb32 ]
    
    Currently, when sja1105pqrs_fdb_add() is called for a host-joined IPv6
    MDB entry such as 33:33:00:00:00:6a, the search for that address will
    return the FDB entry for SJA1105_UNKNOWN_MULTICAST, which has a
    destination MAC of 01:00:00:00:00:00 and a mask of 01:00:00:00:00:00.
    It returns that entry because, well, it matches, in the sense that
    unknown multicast is supposed by design to match it...
    
    But the issue is that we then proceed to overwrite this entry with the
    one for our precise host-joined multicast address, and the unknown
    multicast entry is no longer there - unknown multicast is now flooded to
    the same group of ports as broadcast, which does not look up the FDB.
    
    To solve this problem, we should ignore searches that return the unknown
    multicast address as the match, and treat them as "no match" which will
    result in the entry being installed to hardware.
    
    For this to work properly, we need to put the result of the FDB search
    in a temporary variable in order to avoid overwriting the l2_lookup
    entry we want to program. The l2_lookup entry returned by the search
    might not have the same set of DESTPORTS and not even the same MACADDR
    as the entry we're trying to add.
    
    Fixes: 4d9423549501 ("net: dsa: sja1105: offload bridge port flags to device")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f072c44eb10bd3ec04c058291196ea0573641fb7
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jul 30 20:18:12 2021 +0300

    net: dsa: sja1105: invalidate dynamic FDB entries learned concurrently with statically added ones
    
    [ Upstream commit 6c5fc159e0927531707895709eee1f8bfa04289f ]
    
    The procedure to add a static FDB entry in sja1105 is concurrent with
    dynamic learning performed on all bridge ports and the CPU port.
    
    The switch looks up the FDB from left to right, and also learns
    dynamically from left to right, so it is possible that between the
    moment when we pick up a free slot to install an FDB entry, another slot
    to the left of that one becomes free due to an address ageing out, and
    that other slot is then immediately used by the switch to learn
    dynamically the same address as we're trying to add statically.
    
    The result is that we succeeded to add our static FDB entry, but it is
    being shadowed by a dynamic FDB entry to its left, and the switch will
    behave as if our static FDB entry did not exist.
    
    We cannot really prevent this from happening unless we make the entire
    process to add a static FDB entry a huge critical section where address
    learning is temporarily disabled on _all_ ports, and then re-enabled
    according to the configuration done by sja1105_port_set_learning.
    However, that is kind of disruptive for the operation of the network.
    
    What we can do alternatively is to simply read back the FDB for dynamic
    entries located before our newly added static one, and delete them.
    This will guarantee that our static FDB entry is now operational. It
    will still not guarantee that there aren't dynamic FDB entries to the
    _right_ of that static FDB entry, but at least those entries will age
    out by themselves since they aren't hit, and won't bother anyone.
    
    Fixes: 291d1e72b756 ("net: dsa: sja1105: Add support for FDB and MDB management")
    Fixes: 1da73821343c ("net: dsa: sja1105: Add FDB operations for P/Q/R/S series")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8395e1c534945fb3301da8e0a63ce9aece73a545
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jul 30 20:18:11 2021 +0300

    net: dsa: sja1105: overwrite dynamic FDB entries with static ones in .port_fdb_add
    
    [ Upstream commit e11e865bf84e3c6ea91563ff3e858cfe0e184bd2 ]
    
    The SJA1105 switch family leaves it up to software to decide where
    within the FDB to install a static entry, and to concatenate destination
    ports for already existing entries (the FDB is also used for multicast
    entries), it is not as simple as just saying "please add this entry".
    
    This means we first need to search for an existing FDB entry before
    adding a new one. The driver currently manages to fool itself into
    thinking that if an FDB entry already exists, there is nothing to be
    done. But that FDB entry might be dynamically learned, case in which it
    should be replaced with a static entry, but instead it is left alone.
    
    This patch checks the LOCKEDS ("locked/static") bit from found FDB
    entries, and lets the code "goto skip_finding_an_index;" if the FDB
    entry was not static. So we also need to move the place where we set
    LOCKEDS = true, to cover the new case where a dynamic FDB entry existed
    but was dynamic.
    
    Fixes: 291d1e72b756 ("net: dsa: sja1105: Add support for FDB and MDB management")
    Fixes: 1da73821343c ("net: dsa: sja1105: Add FDB operations for P/Q/R/S series")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e6eab0aa13b2dd01e87ab96a49413c59b83dd91
Author: Jakub Sitnicki <jakub@cloudflare.com>
Date:   Thu Jul 29 15:48:20 2021 +0200

    net, gro: Set inner transport header offset in tcp/udp GRO hook
    
    [ Upstream commit d51c5907e9809a803b276883d203f45849abd4d6 ]
    
    GSO expects inner transport header offset to be valid when
    skb->encapsulation flag is set. GSO uses this value to calculate the length
    of an individual segment of a GSO packet in skb_gso_transport_seglen().
    
    However, tcp/udp gro_complete callbacks don't update the
    skb->inner_transport_header when processing an encapsulated TCP/UDP
    segment. As a result a GRO skb has ->inner_transport_header set to a value
    carried over from earlier skb processing.
    
    This can have mild to tragic consequences. From miscalculating the GSO
    segment length to triggering a page fault [1], when trying to read TCP/UDP
    header at an address past the skb->data page.
    
    The latter scenario leads to an oops report like so:
    
      BUG: unable to handle page fault for address: ffff9fa7ec00d008
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 123f201067 P4D 123f201067 PUD 123f209067 PMD 0
      Oops: 0000 [#1] SMP NOPTI
      CPU: 44 PID: 0 Comm: swapper/44 Not tainted 5.4.53-cloudflare-2020.7.21 #1
      Hardware name: HYVE EDGE-METAL-GEN10/HS-1811DLite1, BIOS V2.15 02/21/2020
      RIP: 0010:skb_gso_transport_seglen+0x44/0xa0
      Code: c0 41 83 e0 11 f6 87 81 00 00 00 20 74 30 0f b7 87 aa 00 00 00 0f [...]
      RSP: 0018:ffffad8640bacbb8 EFLAGS: 00010202
      RAX: 000000000000feda RBX: ffff9fcc8d31bc00 RCX: ffff9fa7ec00cffc
      RDX: ffff9fa7ebffdec0 RSI: 000000000000feda RDI: 0000000000000122
      RBP: 00000000000005c4 R08: 0000000000000001 R09: 0000000000000000
      R10: ffff9fe588ae3800 R11: ffff9fe011fc92f0 R12: ffff9fcc8d31bc00
      R13: ffff9fe0119d4300 R14: 00000000000005c4 R15: ffff9fba57d70900
      FS:  0000000000000000(0000) GS:ffff9fe68df00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: ffff9fa7ec00d008 CR3: 0000003e99b1c000 CR4: 0000000000340ee0
      Call Trace:
       <IRQ>
       skb_gso_validate_network_len+0x11/0x70
       __ip_finish_output+0x109/0x1c0
       ip_sublist_rcv_finish+0x57/0x70
       ip_sublist_rcv+0x2aa/0x2d0
       ? ip_rcv_finish_core.constprop.0+0x390/0x390
       ip_list_rcv+0x12b/0x14f
       __netif_receive_skb_list_core+0x2a9/0x2d0
       netif_receive_skb_list_internal+0x1b5/0x2e0
       napi_complete_done+0x93/0x140
       veth_poll+0xc0/0x19f [veth]
       ? mlx5e_napi_poll+0x221/0x610 [mlx5_core]
       net_rx_action+0x1f8/0x790
       __do_softirq+0xe1/0x2bf
       irq_exit+0x8e/0xc0
       do_IRQ+0x58/0xe0
       common_interrupt+0xf/0xf
       </IRQ>
    
    The bug can be observed in a simple setup where we send IP/GRE/IP/TCP
    packets into a netns over a veth pair. Inside the netns, packets are
    forwarded to dummy device:
    
      trafgen -> [veth A]--[veth B] -forward-> [dummy]
    
    For veth B to GRO aggregate packets on receive, it needs to have an XDP
    program attached (for example, a trivial XDP_PASS). Additionally, for UDP,
    we need to enable GSO_UDP_L4 feature on the device:
    
      ip netns exec A ethtool -K AB rx-udp-gro-forwarding on
    
    The last component is an artificial delay to increase the chances of GRO
    batching happening:
    
      ip netns exec A tc qdisc add dev AB root \
         netem delay 200us slot 5ms 10ms packets 2 bytes 64k
    
    With such a setup in place, the bug can be observed by tracing the skb
    outer and inner offsets when GSO skb is transmitted from the dummy device:
    
    tcp:
    
    FUNC              DEV   SKB_LEN  NH  TH ENC INH ITH GSO_SIZE GSO_TYPE
    ip_finish_output  dumB     2830 270 290   1 294 254     1383 (tcpv4,gre,)
                                                    ^^^
    udp:
    
    FUNC              DEV   SKB_LEN  NH  TH ENC INH ITH GSO_SIZE GSO_TYPE
    ip_finish_output  dumB     2818 270 290   1 294 254     1383 (gre,udp_l4,)
                                                    ^^^
    
    Fix it by updating the inner transport header offset in tcp/udp
    gro_complete callbacks, similar to how {inet,ipv6}_gro_complete callbacks
    update the inner network header offset, when skb->encapsulation flag is
    set.
    
    [1] https://lore.kernel.org/netdev/CAKxSbF01cLpZem2GFaUaifh0S-5WYViZemTicAg7FCHOnh6kug@mail.gmail.com/
    
    Fixes: bf296b125b21 ("tcp: Add GRO support")
    Fixes: f993bc25e519 ("net: core: handle encapsulation offloads when computing segment lengths")
    Fixes: e20cf8d3f1f7 ("udp: implement GRO for plain UDP sockets.")
    Reported-by: Alex Forster <aforster@cloudflare.com>
    Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64b81fcfd37f5214a0e81a559a793184d190d2be
Author: Juergen Borleis <jbe@pengutronix.de>
Date:   Thu Jul 29 09:18:21 2021 +0200

    dmaengine: imx-dma: configure the generic DMA type to make it work
    
    [ Upstream commit 7199ddede9f0f2f68d41e6928e1c6c4bca9c39c0 ]
    
    Commit dea7a9fbb009 ("dmaengine: imx-dma: remove dma_slave_config
    direction usage") changes the method from a "configuration when called"
    to an "configuration when used". Due to this, only the cyclic DMA type
    gets configured correctly, while the generic DMA type is left
    non-configured.
    
    Without this additional call, the struct imxdma_channel::word_size member
    is stuck at DMA_SLAVE_BUSWIDTH_UNDEFINED and imxdma_prep_slave_sg() always
    returns NULL.
    
    Signed-off-by: Juergen Borleis <jbe@pengutronix.de>
    Fixes: dea7a9fbb009 ("dmaengine: imx-dma: remove dma_slave_config direction usage")
    Link: https://lore.kernel.org/r/20210729071821.9857-1-jbe@pengutronix.de
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6cb60082664e1e09c10637dc4388b70e0a2847d4
Author: Marek Vasut <marex@denx.de>
Date:   Wed Jul 21 20:10:40 2021 +0200

    ARM: dts: stm32: Fix touchscreen IRQ line assignment on DHCOM
    
    [ Upstream commit 15f68f027ebd961b99a1c420f96ff3838c5e4450 ]
    
    While 7e5f3155dcbb4 ("ARM: dts: stm32: Fix LED5 on STM32MP1 DHCOM PDK2")
    fixed the LED0 assignment on the PDK2 board, the same commit did not
    update the touchscreen IRQ line assignment, which is the same GPIO line,
    shared between the LED0 output and touchscreen IRQ input. To make this
    more convoluted, the same EXTI input (not the same GPIO line) is shared
    between Button B which is Active-Low IRQ, and touchscreen IRQ which is
    Edge-Falling IRQ, which cannot be used at the same time. In case the LCD
    board with touchscreen is in use, which is the case here, LED0 must be
    disabled, Button B must be polled, so the touchscreen interrupt works as
    it should.
    
    Update the touchscreen IRQ line assignment, disable LED0 and use polled
    GPIO button driver for Button B, since the DT here describes baseboard
    with LCD board.
    
    Fixes: 7e5f3155dcbb4 ("ARM: dts: stm32: Fix LED5 on STM32MP1 DHCOM PDK2")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: Patrice Chotard <patrice.chotard@foss.st.com>
    Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
    Cc: linux-stm32@st-md-mailman.stormreply.com
    To: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3957b6192d01b1fc9d670fc69d50d56825321332
Author: Marek Vasut <marex@denx.de>
Date:   Wed Jul 21 20:12:53 2021 +0200

    ARM: dts: stm32: Disable LAN8710 EDPD on DHCOM
    
    [ Upstream commit 36862c1ebc92a7e6fcc55002965c44b8ad17d4ca ]
    
    The LAN8710 Energy Detect Power Down (EDPD) functionality might cause
    unreliable cable detection. There are multiple accounts of this in the
    SMSC PHY driver patches which attempted to make EDPD reliable, however
    it seems there is always some sort of corner case left. Unfortunatelly,
    there is no errata documented which would confirm this to be a silicon
    bug on the LAN87xx series of PHYs (LAN8700, LAN8710, LAN8720 at least).
    
    Disable EDPD on the DHCOM SoM, just like multiple other boards already
    do as well, to make the cable detection reliable.
    
    Fixes: 34e0c7847dcf ("ARM: dts: stm32: Add DH Electronics DHCOM STM32MP1 SoM and PDK2 board")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: Patrice Chotard <patrice.chotard@foss.st.com>
    Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
    Cc: linux-stm32@st-md-mailman.stormreply.com
    To: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 941212f8762b2d658a2b132c0d170addfd367885
Author: Marek Vasut <marex@denx.de>
Date:   Sun Jun 20 20:54:21 2021 +0200

    ARM: dts: stm32: Prefer HW RTC on DHCOM SoM
    
    [ Upstream commit 3a0670824979a986a2314c921aa092e60730eeae ]
    
    The DHCOM SoM has two RTC, one is the STM32 RTC built into the SoC
    and another is Microcrystal RV RTC. By default, only the later has
    battery backup, the former does not. The order in which the RTCs
    are probed on boot is random, which means the kernel might pick up
    system time from the STM32 RTC which has no battery backup. This
    then leads to incorrect initial system time setup, even though the
    HW RTC has correct time configured in it.
    
    Add DT alias entries, so that the RTCs get assigned fixed IDs and
    the HW RTC is always picked by the kernel as the default RTC, thus
    resulting in correct system time in early userspace.
    
    Fixes: 34e0c7847dcf ("ARM: dts: stm32: Add DH Electronics DHCOM STM32MP1 SoM and PDK2 board")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: Patrice Chotard <patrice.chotard@foss.st.com>
    Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
    Cc: linux-stm32@st-md-mailman.stormreply.com
    To: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 938b3e21c01abf7b10b34e21bf7e7157f6df7cd7
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 5258b116b4853b291c3c962f7dce397b42833fe2
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 c298b61f6524eec02599e606a919acc04aa54ebb
Author: Edmund Dea <edmund.j.dea@intel.com>
Date:   Tue Aug 25 14:51:17 2020 -0700

    drm/kmb: Enable LCD DMA for low TVDDCV
    
    [ Upstream commit 0aab5dce395636eddf4e5f33eba88390328a95b4 ]
    
    There's an undocumented dependency between LCD layer enable bits [2-5]
    and the AXI pipelined read enable bit [28] in the LCD_CONTROL register.
    The proper order of operation is:
    
    1) Clear AXI pipelined read enable bit
    2) Set LCD layers
    3) Set AXI pipelined read enable bit
    
    With this update, LCD can start DMA when TVDDCV is reduced down to 700mV.
    
    Fixes: 7f7b96a8a0a1 ("drm/kmb: Add support for KeemBay Display")
    Signed-off-by: Edmund Dea <edmund.j.dea@intel.com>
    Signed-off-by: Anitha Chrisanthus <anitha.chrisanthus@intel.com>
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210728003126.1425028-1-anitha.chrisanthus@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d9f0250c73c5b80efb0f2adebdf7ccb1ee49050
Author: Marek Vasut <marex@denx.de>
Date:   Mon Jul 26 12:01:02 2021 +0200

    spi: imx: mx51-ecspi: Fix low-speed CONFIGREG delay calculation
    
    [ Upstream commit 53ca18acbe645656132fb5a329833db711067e54 ]
    
    The spi_imx->spi_bus_clk may be uninitialized and thus also zero in
    mx51_ecspi_prepare_message(), which would lead to division by zero
    in kernel. Since bitbang .setup_transfer callback which initializes
    the spi_imx->spi_bus_clk is called after bitbang prepare_message
    callback, iterate over all the transfers in spi_message, find the
    one with lowest bus frequency, and use that bus frequency for the
    delay calculation.
    
    Note that it is not possible to move this CONFIGREG delay back into
    the .setup_transfer callback, because that is invoked too late, after
    the GPIO chipselects were already configured.
    
    Fixes: 135cbd378eab ("spi: imx: mx51-ecspi: Reinstate low-speed CONFIGREG delay")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210726100102.5188-1-marex@denx.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de77638ae9ac56f182493fa767db0c7cc0a5ee73
Author: Marek Vasut <marex@denx.de>
Date:   Sat Jul 3 04:23:00 2021 +0200

    spi: imx: mx51-ecspi: Reinstate low-speed CONFIGREG delay
    
    [ Upstream commit 135cbd378eab336da15de9c84bbb22bf743b38a5 ]
    
    Since 00b80ac935539 ("spi: imx: mx51-ecspi: Move some initialisation to
    prepare_message hook."), the MX51_ECSPI_CONFIG write no longer happens
    in prepare_transfer hook, but rather in prepare_message hook, however
    the MX51_ECSPI_CONFIG delay is still left in prepare_transfer hook and
    thus has no effect. This leads to low bus frequency operation problems
    described in 6fd8b8503a0dc ("spi: spi-imx: Fix out-of-order CS/SCLK
    operation at low speeds") again.
    
    Move the MX51_ECSPI_CONFIG write delay into the prepare_message hook
    as well, thus reinstating the low bus frequency fix.
    
    Fixes: 00b80ac935539 ("spi: imx: mx51-ecspi: Move some initialisation to prepare_message hook.")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210703022300.296114-1-marex@denx.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64df529b50d0f878801d4494f1abc23c505d1495
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Mon Jun 7 14:46:39 2021 +0800

    dmaengine: stm32-dmamux: Fix PM usage counter unbalance in stm32 dmamux ops
    
    [ Upstream commit baa16371c9525f24d508508e4d296c031e1de29c ]
    
    pm_runtime_get_sync will increment pm usage counter
    even it failed. Forgetting to putting operation will
    result in reference leak here. We fix it by replacing
    it with pm_runtime_resume_and_get to keep usage counter
    balanced.
    
    Fixes: 4f3ceca254e0f ("dmaengine: stm32-dmamux: Add PM Runtime support")
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Link: https://lore.kernel.org/r/20210607064640.121394-3-zhangqilong3@huawei.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 748fb43871950cb7bd43e6fbb0f6c3607eb1657b
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Mon Jun 7 14:46:38 2021 +0800

    dmaengine: stm32-dma: Fix PM usage counter imbalance in stm32 dma ops
    
    [ Upstream commit d54db74ad6e0dea8c253fb68c689b836657ab914 ]
    
    pm_runtime_get_sync will increment pm usage counter
    even it failed. Forgetting to putting operation will
    result in reference leak here. We fix it by replacing
    it with pm_runtime_resume_and_get to keep usage counter
    balanced.
    
    Fixes: 48bc73ba14bcd ("dmaengine: stm32-dma: Add PM Runtime support")
    Fixes: 05f8740a0e6fc ("dmaengine: stm32-dma: add suspend/resume power management support")
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Link: https://lore.kernel.org/r/20210607064640.121394-2-zhangqilong3@huawei.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e03d177b32d821be62d4b292cd1899beafa09aaf
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Sat Jul 17 14:27:42 2021 +0300

    clk: tegra: Implement disable_unused() of tegra_clk_sdmmc_mux_ops
    
    [ Upstream commit 2bcc025ab9bbd029b1730cde71cb4e4f0ed35d0f ]
    
    Implement disable_unused() callback of tegra_clk_sdmmc_mux_ops to fix
    imbalanced disabling of the unused MMC clock on Tegra210 Jetson Nano.
    
    Fixes: c592c8a28f58 ("clk: tegra: Fix refcounting of gate clocks")
    Reported-by: Jon Hunter <jonathanh@nvidia.com> # T210 Nano
    Tested-by: Jon Hunter <jonathanh@nvidia.com> # T210 Nano
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Link: https://lore.kernel.org/r/20210717112742.7196-1-digetx@gmail.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4240c4f23fb68ad64c12da7af392ffbcea40db2
Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Date:   Tue Jul 27 14:47:32 2021 +0900

    dmaengine: uniphier-xdmac: Use readl_poll_timeout_atomic() in atomic state
    
    [ Upstream commit 55f24c27b6c1a840b62fe297616f1f9ea3576cb7 ]
    
    The function uniphier_xdmac_chan_stop() is only called in atomic state.
    Should use readl_poll_timeout_atomic() there instead of
    readl_poll_timeout().
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: 667b9251440b ("dmaengine: uniphier-xdmac: Add UniPhier external DMA controller driver")
    Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
    Link: https://lore.kernel.org/r/1627364852-28432-1-git-send-email-hayashi.kunihiko@socionext.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50836f77ccc2059902fe3fe34b55bf145b369d4c
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 4b0843e94e86c3df5cfb2530b9cfccf8663bc68a
Author: Dario Binacchi <dariobin@libero.it>
Date:   Mon Jul 26 15:15:25 2021 +0200

    ARM: dts: am437x-l4: fix typo in can@0 node
    
    [ Upstream commit 0162a9964365fd26e34575e121b17d021204c481 ]
    
    Replace clock-name with clock-names.
    
    Fixes: 2a4117df9b43 ("ARM: dts: Fix dcan driver probe failed on am437x platform")
    Signed-off-by: Dario Binacchi <dariobin@libero.it>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36fec2753f39c2ac50b1ae2282b2e169cb1505e2
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 747d62a533b557acf4d44ebefb4cd9c225e7fe8f
Author: Jisheng Zhang <jszhang@kernel.org>
Date:   Fri Jul 16 21:40:51 2021 +0800

    riscv: stacktrace: Fix NULL pointer dereference
    
    [ Upstream commit 78d9d8005e4556448f398d876f29d0ca7ab8e398 ]
    
    When CONFIG_FRAME_POINTER=y, calling dump_stack() can always trigger
    NULL pointer dereference panic similar as below:
    
    [    0.396060] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.13.0-rc5+ #47
    [    0.396692] Hardware name: riscv-virtio,qemu (DT)
    [    0.397176] Call Trace:
    [    0.398191] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000960
    [    0.399487] Oops [#1]
    [    0.399739] Modules linked in:
    [    0.400135] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.13.0-rc5+ #47
    [    0.400570] Hardware name: riscv-virtio,qemu (DT)
    [    0.400926] epc : walk_stackframe+0xc4/0xdc
    [    0.401291]  ra : dump_backtrace+0x30/0x38
    [    0.401630] epc : ffffffff80004922 ra : ffffffff8000496a sp : ffffffe000f3bd00
    [    0.402115]  gp : ffffffff80cfdcb8 tp : ffffffe000f30000 t0 : ffffffff80d0b0cf
    [    0.402602]  t1 : ffffffff80d0b0c0 t2 : 0000000000000000 s0 : ffffffe000f3bd60
    [    0.403071]  s1 : ffffffff808bc2e8 a0 : 0000000000001000 a1 : 0000000000000000
    [    0.403448]  a2 : ffffffff803d7088 a3 : ffffffff808bc2e8 a4 : 6131725dbc24d400
    [    0.403820]  a5 : 0000000000001000 a6 : 0000000000000002 a7 : ffffffffffffffff
    [    0.404226]  s2 : 0000000000000000 s3 : 0000000000000000 s4 : 0000000000000000
    [    0.404634]  s5 : ffffffff803d7088 s6 : ffffffff808bc2e8 s7 : ffffffff80630650
    [    0.405085]  s8 : ffffffff80912a80 s9 : 0000000000000008 s10: ffffffff804000fc
    [    0.405388]  s11: 0000000000000000 t3 : 0000000000000043 t4 : ffffffffffffffff
    [    0.405616]  t5 : 000000000000003d t6 : ffffffe000f3baa8
    [    0.405793] status: 0000000000000100 badaddr: 0000000000000960 cause: 000000000000000d
    [    0.406135] [<ffffffff80004922>] walk_stackframe+0xc4/0xdc
    [    0.407032] [<ffffffff8000496a>] dump_backtrace+0x30/0x38
    [    0.407797] [<ffffffff803d7100>] show_stack+0x40/0x4c
    [    0.408234] [<ffffffff803d9e5c>] dump_stack+0x90/0xb6
    [    0.409019] [<ffffffff8040423e>] ptdump_init+0x20/0xc4
    [    0.409681] [<ffffffff800015b6>] do_one_initcall+0x4c/0x226
    [    0.410110] [<ffffffff80401094>] kernel_init_freeable+0x1f4/0x258
    [    0.410562] [<ffffffff803dba88>] kernel_init+0x22/0x148
    [    0.410959] [<ffffffff800029e2>] ret_from_exception+0x0/0x14
    [    0.412241] ---[ end trace b2ab92c901b96251 ]---
    [    0.413099] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
    
    The reason is the task is NULL when we finally call walk_stackframe()
    the NULL is passed from __dump_stack():
    
    |static void __dump_stack(void)
    |{
    |        dump_stack_print_info(KERN_DEFAULT);
    |        show_stack(NULL, NULL, KERN_DEFAULT);
    |}
    
    Fix this issue by checking "task == NULL" case in walk_stackframe().
    
    Fixes: eac2f3059e02 ("riscv: stacktrace: fix the riscv stacktrace when CONFIG_FRAME_POINTER enabled")
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    Reviewed-by: Atish Patra <atish.patra@wdc.com>
    Tested-by: Wende Tan <twd2.me@gmail.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b28fd0f0b5cf5115c8fee3a25a80623e937bf6f0
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 f98f80297a053d35681a96416a35b6381d08bcf9
Author: Pali Rohár <pali@kernel.org>
Date:   Mon Jun 28 17:12:29 2021 +0200

    arm64: dts: armada-3720-turris-mox: remove mrvl,i2c-fast-mode
    
    [ Upstream commit ee7ab3f263f8131722cff3871b9618b1e7478f07 ]
    
    Some SFP modules are not detected when i2c-fast-mode is enabled even when
    clock-frequency is already set to 100000. The I2C bus violates the timing
    specifications when run in fast mode. So disable fast mode on Turris Mox.
    
    Same change was already applied for uDPU (also Armada 3720 board with SFP)
    in commit fe3ec631a77d ("arm64: dts: uDPU: remove i2c-fast-mode").
    
    Fixes: 7109d817db2e ("arm64: dts: marvell: add DTS for Turris Mox")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Reviewed-by: Marek Behún <kabel@kernel.org>
    Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71ecd71e4e6e0eaa518372e22a8498ada765bad5
Author: Ye Bin <yebin10@huawei.com>
Date:   Tue Jul 13 10:27:28 2021 +0800

    ext4: fix potential uninitialized access to retval in kmmpd
    
    [ Upstream commit b66541422824cf6cf20e9a35112e9cb5d82cdf62 ]
    
    if (!ext4_has_feature_mmp(sb)) then retval can be unitialized before
    we jump to the wait_to_exit label.
    
    Fixes: 61bb4a1c417e ("ext4: fix possible UAF when remounting r/o a mmp-protected file system")
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Link: https://lore.kernel.org/r/20210713022728.2533770-1-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b49b428e9462508076cf26101de696bd92f549e7
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Jul 22 13:11:34 2021 +0300

    arm64: dts: armada-3720-turris-mox: fixed indices for the SDHC controllers
    
    [ Upstream commit 923f98929182dfd04e9149be839160b63a3db145 ]
    
    Since drivers/mmc/host/sdhci-xenon.c declares the PROBE_PREFER_ASYNCHRONOUS
    probe type, it is not guaranteed whether /dev/mmcblk0 will belong to
    sdhci0 or sdhci1. In turn, this will break booting by:
    
    root=/dev/mmcblk0p1
    
    Fix the issue by adding aliases so that the old MMC controller indices
    are preserved.
    
    Fixes: 7320915c8861 ("mmc: Set PROBE_PREFER_ASYNCHRONOUS for drivers that existed in v4.14")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 710be2446523f631927bea840f21f921afe8e9f4
Author: Marek Vasut <marex@denx.de>
Date:   Sun Jul 18 23:43:02 2021 +0200

    ARM: dts: imx: Swap M53Menlo pinctrl_power_button/pinctrl_power_out pins
    
    [ Upstream commit 3d9e30a52047f2d464efdfd1d561ae1f707a0286 ]
    
    The pinctrl_power_button/pinctrl_power_out each define single GPIO
    pinmux, except it is exactly the other one than the matching gpio-keys
    and gpio-poweroff DT nodes use for that functionality. Swap the two
    GPIOs to correct this error.
    
    Fixes: 50d29fdb765d ("ARM: dts: imx53: Add power GPIOs on M53Menlo")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: NXP Linux Team <linux-imx@nxp.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 15d9eb484ebd7f923661733acadf0b94f22af82e
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Jul 15 14:23:21 2021 +0100

    ARM: imx: fix missing 3rd argument in macro imx_mmdc_perf_init
    
    [ Upstream commit 20fb73911fec01f06592de1cdbca00b66602ebd7 ]
    
    The function imx_mmdc_perf_init recently had a 3rd argument added to
    it but the equivalent macro was not updated and is still the older
    2 argument version. Fix this by adding in the missing 3rd argumement
    mmdc_ipg_clk.
    
    Fixes: f07ec8536580 ("ARM: imx: add missing clk_disable_unprepare()")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50f5768127aa21e72cac6fdf543036fa967c80aa
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 c9658f4ddfce88a59c39ba405675cdc5739f6d4b
Author: Michael Walle <michael@walle.cc>
Date:   Fri Jul 2 21:49:14 2021 +0200

    arm64: dts: ls1028: sl28: fix networking for variant 2
    
    [ Upstream commit 29f6a20c21b5bdc7eb623a712bbf7b99612ee746 ]
    
    The PHY configuration for the variant 2 is still missing the flag for
    in-band signalling between PHY and MAC. Both sides - MAC and PHY - have
    to match the setting. For now, Linux only supports setting the MAC side
    and thus it has to match the setting the bootloader is configuring.
    Enable in-band signalling to make ethernet work.
    
    Fixes: ab43f0307449 ("arm64: dts: ls1028a: sl28: add support for variant 2")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d882c91b158521344e46a750b6c39c7292a8bf42
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Wed Jul 14 11:50:06 2021 -0700

    dmaengine: idxd: fix submission race window
    
    [ Upstream commit 6b4b87f2c31ac1af4f244990a7cbfb50d3f3e33f ]
    
    Konstantin observed that when descriptors are submitted, the descriptor is
    added to the pending list after the submission. This creates a race window
    with the slight possibility that the descriptor can complete before it
    gets added to the pending list and this window would cause the completion
    handler to miss processing the descriptor.
    
    To address the issue, the addition of the descriptor to the pending list
    must be done before it gets submitted to the hardware. However, submitting
    to swq with ENQCMDS instruction can cause a failure with the condition of
    either wq is full or wq is not "active".
    
    With the descriptor allocation being the gate to the wq capacity, it is not
    possible to hit a retry with ENQCMDS submission to the swq. The only
    possible failure can happen is when wq is no longer "active" due to hw
    error and therefore we are moving towards taking down the portal. Given
    this is a rare condition and there's no longer concern over I/O
    performance, the driver can walk the completion lists in order to retrieve
    and abort the descriptor.
    
    The error path will set the descriptor to aborted status. It will take the
    work list lock to prevent further processing of worklist. It will do a
    delete_all on the pending llist to retrieve all descriptors on the pending
    llist. The delete_all action does not require a lock. It will walk through
    the acquired llist to find the aborted descriptor while add all remaining
    descriptors to the work list since it holds the lock. If it does not find
    the aborted descriptor on the llist, it will walk through the work
    list. And if it still does not find the descriptor, then it means the
    interrupt handler has removed the desc from the llist but is pending on
    the work list lock and will process it once the error path releases the
    lock.
    
    Fixes: eb15e7154fbf ("dmaengine: idxd: add interrupt handle request and release support")
    Reported-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/162628855747.360485.10101925573082466530.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f2b17134c7c55edbf7fdc2ff5aa4a8e83fa8642
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Wed Jul 14 14:57:19 2021 -0700

    dmaengine: idxd: fix sequence for pci driver remove() and shutdown()
    
    [ Upstream commit 7eb25da161befbc9a80e94e1bd90d6c06aa645cf ]
    
    ->shutdown() call should only be responsible for quiescing the device.
    Currently it is doing PCI device tear down. This causes issue when things
    like MMIO mapping is removed while idxd_unregister_devices() will trigger
    removal of idxd device sub-driver and still initiates MMIO writes to the
    device. Another issue is with the unregistering of idxd 'struct device',
    the memory context gets freed. So the teardown calls are accessing freed
    memory and can cause kernel oops. Move all the teardown bits that doesn't
    belong in shutdown to ->remove() call. Move unregistering of the idxd
    conf_dev 'struct device' to after doing all the teardown to free all
    the memory that's no longer needed.
    
    Fixes: 47c16ac27d4c ("dmaengine: idxd: fix idxd conf_dev 'struct device' lifetime")
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/162629983901.395844.17964803190905549615.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c3b6b10a84fd07139402b82534eebec8980e36d
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Wed Jul 14 11:38:41 2021 -0700

    dmaengine: idxd: fix desc->vector that isn't being updated
    
    [ Upstream commit 8ba89a3c7967808f33478a8573277cf6a7412c4c ]
    
    Missing update for desc->vector when the wq vector gets updated. This
    causes the desc->vector to always be at 0.
    
    Fixes: da435aedb00a ("dmaengine: idxd: fix array index when int_handles are being used")
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/162628784374.353761.4736602409627820431.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48b425d005b52679ce1407670b0425f2c13ace8a
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Mon Jun 28 23:09:55 2021 +0200

    Revert "soc: imx8m: change to use platform driver"
    
    [ Upstream commit ac34de14ac30ba4484d68f8845a54b6b6c23db42 ]
    
    With the SoC matching changed to a platform driver the match data
    is available only after other drivers, which may rely on it are
    already probed. This breaks at least the CAAM driver on i.MX8M.
    Revert the change until all those drivers have been audited and
    changed to be able to eal with match data being available later
    in the boot process.
    
    Fixes: 7d981405d0fd ("soc: imx8m: change to use platform driver")
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Acked-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad6ef82f56953a627fea1c3ba69005b1ef63df8e
Author: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date:   Fri Jun 25 14:13:53 2021 +0200

    ARM: dts: imx6qdl-sr-som: Increase the PHY reset duration to 10ms
    
    [ Upstream commit fd8e83884fdd7b5fc411f201a58d8d01890198a2 ]
    
    The AR803x PHY used on this modules seems to require the reset line to
    be asserted for around 10ms in order to avoid rare cases where the PHY
    gets stuck in an incoherent state that prevents it to function
    correctly.
    
    The previous value of 2ms was found to be problematic on some setups,
    causing intermittent issues where the PHY would be unresponsive
    every once in a while on some sytems, with a low occurrence (it typically
    took around 30 consecutive reboots to encounter the issue).
    
    Bumping the delay to the 10ms makes the issue dissapear, with more than
    2500 consecutive reboots performed without the issue showing-up.
    
    Fixes: 208d7baf8085 ("ARM: imx: initial SolidRun HummingBoard support")
    Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Tested-by: Hervé Codina <herve.codina@bootlin.com>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

    ARM: imx: add missing clk_disable_unprepare()
    
    [ Upstream commit f07ec85365807b3939f32d0094a6dd5ce065d1b9 ]
    
    clock source is prepared and enabled by clk_prepare_enable()
    in probe function, but no disable or unprepare in remove and
    error path.
    
    Fixes: 9454a0caff6a ("ARM: imx: add mmdc ipg clock operation for mmdc")
    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 f6624656c389ce43b665b55c20e2790abedf8bfb
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 e1045d5ac6ad74f8b3ec956752660d5c10dacae8
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Thu Jun 24 13:43:32 2021 -0700

    dmaengine: idxd: fix setup sequence for MSIXPERM table
    
    [ Upstream commit d5c10e0fc8645342fe5c9796b00c84ab078cd713 ]
    
    The MSIX permission table should be programmed BEFORE request_irq()
    happens. This prevents any possibility of an interrupt happening before the
    MSIX perm table is setup, however slight.
    
    Fixes: 6df0e6c57dfc ("dmaengine: idxd: clear MSIX permission entry on shutdown")
    Sign-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/162456741222.1138073.1298447364671237896.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c8a2fa0600a8f685d1b23a72b46d80ef2e80d4a
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Thu Jun 24 12:09:29 2021 -0700

    dmaengine: idxd: fix array index when int_handles are being used
    
    [ Upstream commit da435aedb00a4ef61019ff11ae0c08ffb9b1fb18 ]
    
    The index to the irq vector should be local and has no relation to
    the assigned interrupt handle. Assign the MSIX interrupt index that is
    programmed for the descriptor. The interrupt handle only matters when it
    comes to hardware descriptor programming.
    
    Fixes: eb15e7154fbf ("dmaengine: idxd: add interrupt handle request and release support")
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/162456176939.1121476.3366256009925001897.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84e5c5ccd6ef87b63df95986e5fe3b8436d6f851
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Tue Jun 8 14:26:58 2021 +0300

    arm64: dts: ls1028a: fix node name for the sysclk
    
    [ Upstream commit 7e71b85473f863a29eb1c69265ef025389b4091d ]
    
    U-Boot attempts to fix up the "clock-frequency" property of the "/sysclk" node:
    https://elixir.bootlin.com/u-boot/v2021.04/source/arch/arm/cpu/armv8/fsl-layerscape/fdt.c#L512
    
    but fails to do so:
    
      ## Booting kernel from Legacy Image at a1000000 ...
         Image Name:
         Created:      2021-06-08  10:31:38 UTC
         Image Type:   AArch64 Linux Kernel Image (gzip compressed)
         Data Size:    15431370 Bytes = 14.7 MiB
         Load Address: 80080000
         Entry Point:  80080000
         Verifying Checksum ... OK
      ## Flattened Device Tree blob at a0000000
         Booting using the fdt blob at 0xa0000000
         Uncompressing Kernel Image
         Loading Device Tree to 00000000fbb19000, end 00000000fbb22717 ... OK
      Unable to update property /sysclk:clock-frequency, err=FDT_ERR_NOTFOUND
    
      Starting kernel ...
    
    All Layerscape SoCs except LS1028A use "sysclk" as the node name, and
    not "clock-sysclk". So change the node name of LS1028A accordingly.
    
    Fixes: 8897f3255c9c ("arm64: dts: Add support for NXP LS1028A SoC")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e95a18d6f83a1f44c640326d2f5d79f8b7d81403
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Fri Jun 25 13:23:54 2021 +0300

    net: xfrm: fix memory leak in xfrm_user_rcv_msg
    
    [ Upstream commit 7c1a80e80cde008f271bae630d28cf684351e807 ]
    
    Syzbot reported memory leak in xfrm_user_rcv_msg(). The
    problem was is non-freed skb's frag_list.
    
    In skb_release_all() skb_release_data() will be called only
    in case of skb->head != NULL, but netlink_skb_destructor()
    sets head to NULL. So, allocated frag_list skb should be
    freed manualy, since consume_skb() won't take care of it
    
    Fixes: 5106f4a8acff ("xfrm/compat: Add 32=>64-bit messages translator")
    Reported-and-tested-by: syzbot+fb347cf82c73a90efcca@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c03d1a2a4b99a28d1f7a4cda39a1984e0e797806
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Jun 11 08:42:50 2021 +0300

    bus: ti-sysc: Fix gpt12 system timer issue with reserved status
    
    [ Upstream commit 3ff340e24c9dd5cff9fc07d67914c5adf67f80d6 ]
    
    Jarkko Nikula <jarkko.nikula@bitmer.com> reported that Beagleboard
    revision c2 stopped booting. Jarkko bisected the issue down to
    commit 6cfcd5563b4f ("clocksource/drivers/timer-ti-dm: Fix suspend
    and resume for am3 and am4").
    
    Let's fix the issue by tagging system timers as reserved rather than
    ignoring them. And let's not probe any interconnect target module child
    devices for reserved modules.
    
    This allows PM runtime to keep track of clocks and clockdomains for
    the interconnect target module, and prevent the system timer from idling
    as we already have SYSC_QUIRK_NO_IDLE and SYSC_QUIRK_NO_IDLE_ON_INIT
    flags set for system timers.
    
    Fixes: 6cfcd5563b4f ("clocksource/drivers/timer-ti-dm: Fix suspend and resume for am3 and am4")
    Reported-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Tested-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3419672f00c8c456612612828a233471d1586c64
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 873180433191c44691aa8bc02564208afd115fa5
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>