commit 132a8267adabd645476b542b3b132c1b91988fe8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Aug 12 13:22:21 2021 +0200

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

commit 3d7d1b0f5f41d66a2d177f9fdcdb32e23a4b2513
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>
    [Mark: trivial conflict resolution for v5.10.y]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb65051dcd1fd380a73ca52c87f89522e15bf62d
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 c8b7cfa674ee18dcef601427c07aad987e4195a3
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 8cfdd039ca186adc332170818940f287d29c921c
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 fbbb209268e5d4fff68c63812e62d7fe45cd0223
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 13d0a9b3b91752ef83248192924f89b0b013f303
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 1478e902bcbc327bb40c442b775d980f51a64898
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 ecd8614809eb97dc48cf70c3bebeb7ddeb08c137
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 dbe4f82fedc6726abc2c328a0a6a777e21b16b97
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 0f05e0ffa247e97ed2586a0e41b1bb4c385d5089
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 11891adab23daa7e08a8e0c25bebfba9c5b5a579
Author: Jonathan Gray <jsg@jsg.id.au>
Date:   Mon Aug 9 21:30:22 2021 +1000

    drm/i915: avoid uninitialised var in eb_parse()
    
    The backport of c9d9fdbc108af8915d3f497bbdf3898bf8f321b8 to 5.10 in
    6976f3cf34a1a8b791c048bbaa411ebfe48666b1 removed more than it should
    have leading to 'batch' being used uninitialised.  The 5.13 backport and
    the mainline commit did not remove the portion this patch adds back.
    
    Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
    Fixes: 6976f3cf34a1 ("drm/i915: Revert "drm/i915/gem: Asynchronous cmdparser"")
    Cc: <stable@vger.kernel.org> # 5.10
    Cc: Jason Ekstrand <jason@jlekstrand.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3e6bd0c71bb5e4821aff9ab8f221bfc08039d73
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 c797b8872bb996f703ef0d68e763caa3770f8a5f
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 2d94cffc94a5e06c604638794387027b8df0f526
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 7397034905acaecbc64f6838779bdc81667e682f
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 16aecf1e36d9089b88af9b2581955ee22d065a38
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 22b4917c85af0f0ccdd9f4c4cdbcfe7442e2fca7
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 ccfe4f62ff9fc5db046767f50b53c180305da694
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 05565b469358a9a03034f7f712d83590a9f125a4
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 1a084e78217dcce8bef262980e0659ce52eed5c5
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 dcc23e58511b75d53cc05c2979a2e00ad30e5885
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 37cbd27ef4b2abafcb79b18063b7effdb470348c
Author: Will Deacon <will@kernel.org>
Date:   Thu Mar 18 17:07:37 2021 +0000

    arm64: vdso: Avoid ISB after reading from cntvct_el0
    
    commit 77ec462536a13d4b428a1eead725c4818a49f0b1 upstream.
    
    We can avoid the expensive ISB instruction after reading the counter in
    the vDSO gettime functions by creating a fake address hazard against a
    dummy stack read, just like we do inside the kernel.
    
    Signed-off-by: Will Deacon <will@kernel.org>
    Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Link: https://lore.kernel.org/r/20210318170738.7756-5-will@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Chanho Park <chanho61.park@samsung.com>

commit 7a2b5bb00f5474a435d69ae03d4e3067d1450830
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 32f55c25ee292dbd1d57a7fcfe2d435fa41c19f5
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 309a31127befd0c9809036f3ea500fcf662f2bf3
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 a786282b55b4d1134931c679a80e900c46461eae
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 3d7d2d2b069bdc736d491cb989d3d00483e4e9e6
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 9851ad2f71075448ac22a6b01be2ac33b5fc737c
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 57c44e7ac7887eef3a6f954b156b015756492bb0
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 f4984f60acc79bf4f626f42a152e6148d0fa4601
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 100f8396d15480435b889e7ac571da3303b6b12e
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 afcd5a0e015f966d804ea54c1a305a5bc5b799ad
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 f08b2d078cbb9a0561b85ceb6a07b670c84e1a04
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 23e36a8610ca4db5726c6e89910857c9fe3ac997
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 9a69d0d24d69578071c638d464bf5fa8a5565ea3
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 bfb5f1a12325888da12f07168239118149928db5
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 0f30fedced7ca612122c4517d7147a1c61faf649
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 17f3c64f707bdcef58c7328040ae9534a37aa2a0
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 8a1624f4a8d3e38c416862a4b37a4d4faa296bd6
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 c03cef67157afb91eafaf5aac74566ec1d9972b1
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 a4f8bfc919ee748fd2811feb4aae136f6bb0435c
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 cc7300776808de742101b64d84c6445e98ec72fb
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 6b5a3d2c2b89de999eaed8f81f54181734375966
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 556e7f204d34fde917ecd662a3e842136824daa1
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 551e0c5d6b2eae5cc7f46cf499f6a0c5a11e2e26
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 faec2c68ea5fa6c237723467156ae29637527781
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 e468a357af68ca15d99530f8f760fb6799eb762d
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 369101e399117a4019d3ee3c03318f820a9d7745
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 1628b64efb3638ae959cc81ff2b293eba92ee2e0
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 2a879ff9719fdb75bdedfca029a381105aea6d72
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 ad80c25987feb8930e573ff405ea16e391134971
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 1340dc3fb75ea69221f4f5dcb0cbace55ad0331c
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 6b2ded93d35caa31e4349c3fee7d6b5f8b15e622
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 5e9d8202142577b3cef54d536bd4c2fc5102b171
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 e5d8fd87091c0fc596caf88c6fd8733486bd939d
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 7799ad4d181f4694f62e668e1b86bc64f7fac88b
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 14673e19291c49e5d53258e98d1c2da27f468525
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 046e12323ab459f20082d57ed16b055a14f0f6dc
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 b2aca8daa50eb48592683e66e204d53b55fe596e
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 b10ccc2c588871fcbb911a80af3f5ce6a8f6c76b
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 f9727452803733ae331242911d70c041e012582c
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 fd3afb81f44843d5055f74dabcd17eb41a251a94
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 948ff2f214fb5b298543ff1821c01cf0ae78a472
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 8f8645de092a4c80d4c6905f6015375226300002
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 5b4318885a4388b6b7c9227be53b8411bb1457ac
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 1f2015506d9cca9ada79ed82de702b863a28d5c1
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 825ac3f0bc3516a3a93f48c573f7cb8f4f0d86fe
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 683702dff7c8b2b181f916876182eb078ce2b49c
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 051518d9cfe3b6aa20fa9a8a37bbb01bf5b18453
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 822bec5cbb05846b2a647f20c4acb2dec0e01ff0
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 98c83d72614e47ed67d6b42dc4884fcf3a5be627
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 79e9389038c4116e05b7d9aa32726042e6494195
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 b7532db2d458ee15f1f2b8953a7ae8cb51a3a78c
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 80b7aa2651bcbfb7321f3db0cbe93dbda06e544c
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 de30786fb25ab28b4c582bea85fa8df1098f5047
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 c0b626f0a29a966d37d6dd7784005e47b38c1497
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 dd3f7c5c890450ab2ad6f269a3fdf7bcd6fc2908
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 ecb739cf15a9bae040ce6b60209b78b92512d120
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 5019f5812bbf375c95a3b7f4f62e1b3580431c26
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 aa3b8bc17e2a128d46577e13c43207b4b5c80eb3
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 d245a76719cf31b4b4f66e70cc22c480e36852c1
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 0470385e63bb1ebe77b558d4dded39162d362b40
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 ba4a395668b5d79ad64629cc0263b235cbc8487e
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 f2f856b65ac4b77049c76c0e89ecd3a177e9fcd1
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 821e6a61335443cd3d56c85427c7f950cb4fd551
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 c5a499b8607a65570170e5df6276e40756f34ab5
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 fb49d67262ca2de4f730a38dee84a1807d666045
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 f12b6b6bc15f42f1b98b4ce8bd29abfac7857133
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 c66d273b70fe8e48da4836329d7265da63f5ba72
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 f76f9caccb464a3c6f8b3ca438433255320ef8eb
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 f93b7b0000444e006e0bef52366d2e604faa50a9
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 9b2b2f07712bd2ab0566dde3bd2ac770841b8a16
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 d1f2abe57bc1c9cf2fba49174d6e184e9a7ac924
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 a45ee8ed0c7df7d459e8134feac9a5287dc9e9c6
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 f87be69b7fe92bc037be4302b4b579a83f2e797c
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 44f2e360e78413207eab7b77b0f0e7044533488f
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 e74551ba938aef92cb9b476339edb4604858a7f8
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 1242ca9369b17e1c67e570e9c8a397989d113683
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 4ef549dc9c1aac8d3b9180070fce1b4259c957e7
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 1dc3eef381c1c5d576527f35332cf53b89a03753
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 e09dba75cafd5dce28b71b2dbb5dd1fb05e3991d
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 c0b14a0e61e7c852749ed036a1092f720c1887d1
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 00bf923dce2abe69cc6b7d6b24f844df894d8104
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 de425f1c3a60020e14af2aafc841be00c80f8cb3
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 74bcf85ff1e270aee6ccc6bccc862ed286ead05a
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 80fd533ac3f9871e59c5cd242da5449b99ebdae7
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 163e6d87216de5237547cd5e6aa7ab04b506d66c
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 442f7e04d59207e377827b742fc5075c7bc30bed
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 449991df08d571595e47f593acc7840a25d50144
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 3e8bba6012122b4d7e676741e7a3e6097c675da0
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 aaaf6e6e417450fa9d05267caced500a305f162f
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 cd989e119272abc112091e3f9d24c5aa10bad15f
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 281514da66a4ce121bd071240ce7c5aa4e9f6bdf
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 bbce3c99f6226b2aafe21ce29b3cb186ae9ade29
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 84656b4c27bf576e5c6901054376c67c77337ece
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 edf1b7911af221d3168ae3a465a426f72561f144
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 4ebd11d1c78202d4c8ba4e2191cafca1b3d176ef
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 9bf056b99fa0b28679b50389319f73e2e5a3aea0
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 e79a30f71d9514b3cd9441f64c1d4e5cce34f969
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 71f39badc898616ca4ff765d1dd755ffd8c68554
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 c4fcda128780531178bfe9beac966b4de87f6840
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 8d13f6a0a6569d75ded68382d98752131a9657b0
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 f239369f37d98ef8135ae0484298519f6ec4bf38
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 ee6f7084324d6735756385b9c7ece158afcde700
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 e1011b9c597df889b82b390b53680d1210cde19b
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 c0f61abbefdfcb462d4fe604a1e4f339225aae91
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 54555c399668193c469c174604d334a057bde448
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 3790f940981df941145349fe89b7558ade34b5af
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 a28569b510e5132e07651cb4084274c2f7fdaa05
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 9189d77f0e2182478a697510cef3100ccf1f0ea1
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 d61dc8c634bb38bac8d68007e6d3cb938a8038f3
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 8efe3a635f22de4a1b8d8affc95f8604251d402a
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 e32a291736fc792b96c579e450872158d901b764
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 b917f123b50d05242ef9bfee6e4646ec36b8425d
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>