commit 839e9e06c834ab488744eaa91f092c8b1ea0a139
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Nov 10 12:39:11 2020 +0100

    Linux 5.9.7
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Jeffrin Jose T <jeffrin@rajagiritech.edu.in>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Link: https://lore.kernel.org/r/20201109125030.706496283@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85669bd0f0641edf3e8afd90256a3f34bde7bb70
Author: kiyin(尹亮) <kiyin@tencent.com>
Date:   Wed Nov 4 08:23:22 2020 +0300

    perf/core: Fix a memory leak in perf_event_parse_addr_filter()
    
    commit 7bdb157cdebbf95a1cd94ed2e01b338714075d00 upstream.
    
    As shown through runtime testing, the "filename" allocation is not
    always freed in perf_event_parse_addr_filter().
    
    There are three possible ways that this could happen:
    
     - It could be allocated twice on subsequent iterations through the loop,
     - or leaked on the success path,
     - or on the failure path.
    
    Clean up the code flow to make it obvious that 'filename' is always
    freed in the reallocation path and in the two return paths as well.
    
    We rely on the fact that kfree(NULL) is NOP and filename is initialized
    with NULL.
    
    This fixes the leak. No other side effects expected.
    
    [ Dan Carpenter: cleaned up the code flow & added a changelog. ]
    [ Ingo Molnar: updated the changelog some more. ]
    
    Fixes: 375637bc5249 ("perf/core: Introduce address range filtering")
    Signed-off-by: "kiyin(尹亮)" <kiyin@tencent.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: "Srivatsa S. Bhat" <srivatsa@csail.mit.edu>
    Cc: Anthony Liguori <aliguori@amazon.com>
    --
     kernel/events/core.c |   12 +++++-------
     1 file changed, 5 insertions(+), 7 deletions(-)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ce3877c1e933456fcd7439e3780fd136334cba6
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Oct 22 07:41:27 2020 +0100

    drm/i915/gt: Use the local HWSP offset during submission
    
    commit 8ce70996f759a37bac92e69ae0addd715227bfd1 upstream.
    
    We wrap the timeline on construction of the next request, but there may
    still be requests in flight that have not yet finalized the breadcrumb.
    (The breadcrumb is delayed as we need engine-local offsets, and for the
    virtual engine that is not known until execution.) As such, by the time
    we write to the timeline's HWSP offset it may have changed, and we
    should use the value we preserved in the request instead.
    
    Though the window is small and infrequent (at full flow we can expect a
    timeline's seqno to wrap once every 30 minutes), the impact of writing
    the old seqno into the new HWSP is severe: the old requests are never
    completed, and the new requests are completed before they are even
    submitted.
    
    Fixes: ebece7539242 ("drm/i915: Keep timeline HWSP allocated until idle across the system")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v5.2+
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201022064127.10159-1-chris@chris-wilson.co.uk
    (cherry picked from commit c10f6019d0b2dc8a6a62b55459f3ada5bc4e5e1a)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c321a0b8ab0f0fd66ebeb0212192bd5a2cbb2d8
Author: Imre Deak <imre.deak@intel.com>
Date:   Tue Oct 27 18:09:28 2020 +0200

    drm/i915: Fix encoder lookup during PSR atomic check
    
    commit d9a57c853975742c8281f703b9e536d8aa016ec2 upstream.
    
    The atomic check hooks must look up the encoder to be used with a
    connector from the connector's atomic state, and not assume that it's
    the connector's current attached encoder. The latter one can change
    under the atomic check func, or can be unset yet as in the case of MST
    connectors.
    
    This fixes
    [    7.940719] Oops: 0000 [#1] SMP NOPTI
    [    7.944407] CPU: 2 PID: 143 Comm: kworker/2:2 Not tainted 5.6.0-1023-oem #23-Ubuntu
    [    7.952102] Hardware name: Dell Inc. Latitude 7320/, BIOS 88.87.11 09/07/2020
    [    7.959278] Workqueue: events output_poll_execute [drm_kms_helper]
    [    7.965511] RIP: 0010:intel_psr_atomic_check+0x37/0xa0 [i915]
    [    7.971327] Code: 80 2d 06 00 00 20 74 42 80 b8 34 71 00 00 00 74 39 48 8b 72 08 48 85 f6 74 30 80 b8 f8 71 00 00 00 74 27 4c 8b 87 80 04 00 00 <41> 8b 78 78 83 ff 08 77 19 31 c9 83 ff 05 77 19 48 81 c1 20 01 00
    [    7.977541] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input5
    [    7.990154] RSP: 0018:ffffb864c073fac8 EFLAGS: 00010202
    [    7.990155] RAX: ffff8c5d55ce0000 RBX: ffff8c5d54519000 RCX: 0000000000000000
    [    7.990155] RDX: ffff8c5d55cb30c0 RSI: ffff8c5d89a0c800 RDI: ffff8c5d55fcf800
    [    7.990156] RBP: ffffb864c073fac8 R08: 0000000000000000 R09: ffff8c5d55d9f3a0
    [    7.990156] R10: ffff8c5d55cb30c0 R11: 0000000000000009 R12: ffff8c5d55fcf800
    [    7.990156] R13: ffff8c5d55cb30c0 R14: ffff8c5d56989cc0 R15: ffff8c5d56989cc0
    [    7.990158] FS:  0000000000000000(0000) GS:ffff8c5d8e480000(0000) knlGS:0000000000000000
    [    8.047193] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    8.052970] CR2: 0000000000000078 CR3: 0000000856500005 CR4: 0000000000760ee0
    [    8.060137] PKRU: 55555554
    [    8.062867] Call Trace:
    [    8.065361]  intel_digital_connector_atomic_check+0x53/0x130 [i915]
    [    8.071703]  intel_dp_mst_atomic_check+0x5b/0x200 [i915]
    [    8.077074]  drm_atomic_helper_check_modeset+0x1db/0x790 [drm_kms_helper]
    [    8.083942]  intel_atomic_check+0x92/0xc50 [i915]
    [    8.088705]  ? drm_plane_check_pixel_format+0x4f/0xb0 [drm]
    [    8.094345]  ? drm_atomic_plane_check+0x7a/0x3a0 [drm]
    [    8.099548]  drm_atomic_check_only+0x2b1/0x450 [drm]
    [    8.104573]  drm_atomic_commit+0x18/0x50 [drm]
    [    8.109070]  drm_client_modeset_commit_atomic+0x1c9/0x200 [drm]
    [    8.115056]  drm_client_modeset_commit_force+0x55/0x160 [drm]
    [    8.120866]  drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xb0 [drm_kms_helper]
    [    8.128415]  drm_fb_helper_set_par+0x34/0x50 [drm_kms_helper]
    [    8.134225]  drm_fb_helper_hotplug_event.part.0+0xb4/0xe0 [drm_kms_helper]
    [    8.141150]  drm_fb_helper_hotplug_event+0x1c/0x30 [drm_kms_helper]
    [    8.147481]  intel_fbdev_output_poll_changed+0x6f/0xa0 [i915]
    [    8.153287]  drm_kms_helper_hotplug_event+0x2c/0x40 [drm_kms_helper]
    [    8.159709]  output_poll_execute+0x1aa/0x1c0 [drm_kms_helper]
    [    8.165506]  process_one_work+0x1e8/0x3b0
    [    8.169561]  worker_thread+0x4d/0x400
    [    8.173249]  kthread+0x104/0x140
    [    8.176515]  ? process_one_work+0x3b0/0x3b0
    [    8.180726]  ? kthread_park+0x90/0x90
    [    8.184416]  ret_from_fork+0x1f/0x40
    
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2361
    References: https://gitlab.freedesktop.org/drm/intel/-/issues/2486
    Reported-by: William Tseng <william.tseng@intel.com>
    Reported-by: Cooper Chiou <cooper.chiou@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201027160928.3665377-1-imre.deak@intel.com
    (cherry picked from commit 00e5deb5c4f5fe367311465e720e65cfa1178792)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42efc4e0edde1c1ac213b547efdd73f48d993fc9
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu Oct 22 17:38:22 2020 +0200

    PM: runtime: Resume the device earlier in __device_release_driver()
    
    commit 9226c504e364158a17a68ff1fe9d67d266922f50 upstream.
    
    Since the device is resumed from runtime-suspend in
    __device_release_driver() anyway, it is better to do that before
    looking for busy managed device links from it to consumers, because
    if there are any, device_links_unbind_consumers() will be called
    and it will cause the consumer devices' drivers to unbind, so the
    consumer devices will be runtime-resumed.  In turn, resuming each
    consumer device will cause the supplier to be resumed and when the
    runtime PM references from the given consumer to it are dropped, it
    may be suspended.  Then, the runtime-resume of the next consumer
    will cause the supplier to resume again and so on.
    
    Update the code accordingly.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Fixes: 9ed9895370ae ("driver core: Functional dependencies tracking support")
    Cc: All applicable <stable@vger.kernel.org> # All applicable
    Tested-by: Xiang Chen <chenxiang66@hisilicon.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 345b6e7348fa0afb83da904e5633642d5fdf3144
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Oct 21 21:13:10 2020 +0200

    PM: runtime: Drop pm_runtime_clean_up_links()
    
    commit d6e36668598154820177bfd78c1621d8e6c580a2 upstream.
    
    After commit d12544fb2aa9 ("PM: runtime: Remove link state checks in
    rpm_get/put_supplier()") nothing prevents the consumer device's
    runtime PM from acquiring additional references to the supplier
    device after pm_runtime_clean_up_links() has run (or even while it
    is running), so calling this function from __device_release_driver()
    may be pointless (or even harmful).
    
    Moreover, it ignores stateless device links, so the runtime PM
    handling of managed and stateless device links is inconsistent
    because of it, so better get rid of it entirely.
    
    Fixes: d12544fb2aa9 ("PM: runtime: Remove link state checks in rpm_get/put_supplier()")
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: 5.1+ <stable@vger.kernel.org> # 5.1+
    Tested-by: Xiang Chen <chenxiang66@hisilicon.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4163d25d6e9852806c9c86776d2db7fb0c3ee8ca
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Oct 21 21:12:15 2020 +0200

    PM: runtime: Drop runtime PM references to supplier on link removal
    
    commit e0e398e204634db8fb71bd89cf2f6e3e5bd09b51 upstream.
    
    While removing a device link, drop the supplier device's runtime PM
    usage counter as many times as needed to drop all of the runtime PM
    references to it from the consumer in addition to dropping the
    consumer's link count.
    
    Fixes: baa8809f6097 ("PM / runtime: Optimize the use of device links")
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: 5.1+ <stable@vger.kernel.org> # 5.1+
    Tested-by: Xiang Chen <chenxiang66@hisilicon.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f20461e8434063478c075477d47004d4463eee9
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Tue Oct 27 15:01:17 2020 -0700

    ARC: stack unwinding: avoid indefinite looping
    
    commit 328d2168ca524d501fc4b133d6be076142bd305c upstream.
    
    Currently stack unwinder is a while(1) loop which relies on the dwarf
    unwinder to signal termination, which in turn relies on dwarf info to do
    so. This in theory could cause an infinite loop if the dwarf info was
    somehow messed up or the register contents were etc.
    
    This fix thus detects the excessive looping and breaks the loop.
    
    | Mem: 26184K used, 1009136K free, 0K shrd, 0K buff, 14416K cached
    | CPU:  0.0% usr 72.8% sys  0.0% nic 27.1% idle  0.0% io  0.0% irq  0.0% sirq
    | Load average: 4.33 2.60 1.11 2/74 139
    |   PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    |   133     2 root     SWN      0  0.0   3 22.9 [rcu_torture_rea]
    |   132     2 root     SWN      0  0.0   0 22.0 [rcu_torture_rea]
    |   131     2 root     SWN      0  0.0   3 21.5 [rcu_torture_rea]
    |   126     2 root     RW       0  0.0   2  5.4 [rcu_torture_wri]
    |   129     2 root     SWN      0  0.0   0  0.2 [rcu_torture_fak]
    |   137     2 root     SW       0  0.0   0  0.2 [rcu_torture_cbf]
    |   127     2 root     SWN      0  0.0   0  0.1 [rcu_torture_fak]
    |   138   115 root     R     1464  0.1   2  0.1 top
    |   130     2 root     SWN      0  0.0   0  0.1 [rcu_torture_fak]
    |   128     2 root     SWN      0  0.0   0  0.1 [rcu_torture_fak]
    |   115     1 root     S     1472  0.1   1  0.0 -/bin/sh
    |   104     1 root     S     1464  0.1   0  0.0 inetd
    |     1     0 root     S     1456  0.1   2  0.0 init
    |    78     1 root     S     1456  0.1   0  0.0 syslogd -O /var/log/messages
    |   134     2 root     SW       0  0.0   2  0.0 [rcu_torture_sta]
    |    10     2 root     IW       0  0.0   1  0.0 [rcu_preempt]
    |    88     2 root     IW       0  0.0   1  0.0 [kworker/1:1-eve]
    |    66     2 root     IW       0  0.0   2  0.0 [kworker/2:2-eve]
    |    39     2 root     IW       0  0.0   2  0.0 [kworker/2:1-eve]
    | unwinder looping too long, aborting !
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 084cb44ea6d66ccefcbe803fa9369b56c202032c
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Sun Nov 1 18:40:16 2020 +0100

    drm/panfrost: Fix a deadlock between the shrinker and madvise path
    
    commit 7d2d6d01293e6d9b42a6cb410be4158571f7fe9d upstream.
    
    panfrost_ioctl_madvise() and panfrost_gem_purge() acquire the mappings
    and shmem locks in different orders, thus leading to a potential
    the mappings lock first.
    
    Fixes: bdefca2d8dc0 ("drm/panfrost: Add the panfrost_gem_mapping concept")
    Cc: <stable@vger.kernel.org>
    Cc: Christian Hewitt <christianshewitt@gmail.com>
    Reported-by: Christian Hewitt <christianshewitt@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201101174016.839110-1-boris.brezillon@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d44362506d6d5f157d6233bb8d1e89684fcda198
Author: Mathy Vanhoef <Mathy.Vanhoef@kuleuven.be>
Date:   Mon Oct 19 20:01:13 2020 +0400

    mac80211: fix regression where EAPOL frames were sent in plaintext
    
    commit 804fc6a2931e692f50e8e317fcb0c8887331b405 upstream.
    
    When sending EAPOL frames via NL80211 they are treated as injected
    frames in mac80211. Due to commit 1df2bdba528b ("mac80211: never drop
    injected frames even if normally not allowed") these injected frames
    were not assigned a sta context in the function ieee80211_tx_dequeue,
    causing certain wireless network cards to always send EAPOL frames in
    plaintext. This may cause compatibility issues with some clients or
    APs, which for instance can cause the group key handshake to fail and
    in turn would cause the station to get disconnected.
    
    This commit fixes this regression by assigning a sta context in
    ieee80211_tx_dequeue to injected frames as well.
    
    Note that sending EAPOL frames in plaintext is not a security issue
    since they contain their own encryption and authentication protection.
    
    Cc: stable@vger.kernel.org
    Fixes: 1df2bdba528b ("mac80211: never drop injected frames even if normally not allowed")
    Reported-by: Thomas Deutschmann <whissi@gentoo.org>
    Tested-by: Christian Hesse <list@eworm.de>
    Tested-by: Thomas Deutschmann <whissi@gentoo.org>
    Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@kuleuven.be>
    Link: https://lore.kernel.org/r/20201019160113.350912-1-Mathy.Vanhoef@kuleuven.be
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eafe730e12a933cf06dfb2ccf214cd0857429c09
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Nov 5 22:31:37 2020 +0000

    io_uring: fix link lookup racing with link timeout
    
    commit 9a472ef7a3690ac0b77ebfb04c88fa795de2adea upstream.
    
    We can't just go over linked requests because it may race with linked
    timeouts. Take ctx->completion_lock in that case.
    
    Cc: stable@vger.kernel.org # v5.7+
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f12882d431184717a21eaa4009cf9e44cf9ff749
Author: Macpaul Lin <macpaul.lin@mediatek.com>
Date:   Fri Nov 6 13:54:29 2020 +0800

    usb: mtu3: fix panic in mtu3_gadget_stop()
    
    commit 20914919ad31849ee2b9cfe0428f4a20335c9e2a upstream.
    
    This patch fixes a possible issue when mtu3_gadget_stop()
    already assigned NULL to mtu->gadget_driver during mtu_gadget_disconnect().
    
    [<ffffff9008161974>] notifier_call_chain+0xa4/0x128
    [<ffffff9008161fd4>] __atomic_notifier_call_chain+0x84/0x138
    [<ffffff9008162ec0>] notify_die+0xb0/0x120
    [<ffffff900809e340>] die+0x1f8/0x5d0
    [<ffffff90080d03b4>] __do_kernel_fault+0x19c/0x280
    [<ffffff90080d04dc>] do_bad_area+0x44/0x140
    [<ffffff90080d0f9c>] do_translation_fault+0x4c/0x90
    [<ffffff9008080a78>] do_mem_abort+0xb8/0x258
    [<ffffff90080849d0>] el1_da+0x24/0x3c
    [<ffffff9009bde01c>] mtu3_gadget_disconnect+0xac/0x128
    [<ffffff9009bd576c>] mtu3_irq+0x34c/0xc18
    [<ffffff90082ac03c>] __handle_irq_event_percpu+0x2ac/0xcd0
    [<ffffff90082acae0>] handle_irq_event_percpu+0x80/0x138
    [<ffffff90082acc44>] handle_irq_event+0xac/0x148
    [<ffffff90082b71cc>] handle_fasteoi_irq+0x234/0x568
    [<ffffff90082a8708>] generic_handle_irq+0x48/0x68
    [<ffffff90082a96ac>] __handle_domain_irq+0x264/0x1740
    [<ffffff90080819f4>] gic_handle_irq+0x14c/0x250
    [<ffffff9008084cec>] el1_irq+0xec/0x194
    [<ffffff90085b985c>] dma_pool_alloc+0x6e4/0xae0
    [<ffffff9008d7f890>] cmdq_mbox_pool_alloc_impl+0xb0/0x238
    [<ffffff9008d80904>] cmdq_pkt_alloc_buf+0x2dc/0x7c0
    [<ffffff9008d80f60>] cmdq_pkt_add_cmd_buffer+0x178/0x270
    [<ffffff9008d82320>] cmdq_pkt_perf_begin+0x108/0x148
    [<ffffff9008d824d8>] cmdq_pkt_create+0x178/0x1f0
    [<ffffff9008f96230>] mtk_crtc_config_default_path+0x328/0x7a0
    [<ffffff90090246cc>] mtk_drm_idlemgr_kick+0xa6c/0x1460
    [<ffffff9008f9bbb4>] mtk_drm_crtc_atomic_begin+0x1a4/0x1a68
    [<ffffff9008e8df9c>] drm_atomic_helper_commit_planes+0x154/0x878
    [<ffffff9008f2fb70>] mtk_atomic_complete.isra.16+0xe80/0x19c8
    [<ffffff9008f30910>] mtk_atomic_commit+0x258/0x898
    [<ffffff9008ef142c>] drm_atomic_commit+0xcc/0x108
    [<ffffff9008ef7cf0>] drm_mode_atomic_ioctl+0x1c20/0x2580
    [<ffffff9008ebc768>] drm_ioctl_kernel+0x118/0x1b0
    [<ffffff9008ebcde8>] drm_ioctl+0x5c0/0x920
    [<ffffff900863b030>] do_vfs_ioctl+0x188/0x1820
    [<ffffff900863c754>] SyS_ioctl+0x8c/0xa0
    
    Fixes: df2069acb005 ("usb: Add MediaTek USB3 DRD driver")
    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Acked-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/1604642069-20961-1-git-send-email-macpaul.lin@mediatek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8db5e9033d21698752fa74c680a62066d7b24c61
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Nov 2 09:58:21 2020 -0500

    USB: Add NO_LPM quirk for Kingston flash drive
    
    commit afaa2e745a246c5ab95103a65b1ed00101e1bc63 upstream.
    
    In Bugzilla #208257, Julien Humbert reports that a 32-GB Kingston
    flash drive spontaneously disconnects and reconnects, over and over.
    Testing revealed that disabling Link Power Management for the drive
    fixed the problem.
    
    This patch adds a quirk entry for that drive to turn off LPM permanently.
    
    CC: Hans de Goede <jwrdegoede@fedoraproject.org>
    CC: <stable@vger.kernel.org>
    Reported-and-tested-by: Julien Humbert <julroy67@gmail.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20201102145821.GA1478741@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cf7734e0dd02045faf47c7dec6aeb709eae17d5
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu Oct 22 15:44:59 2020 -0700

    usb: dwc3: ep0: Fix delay status handling
    
    commit fa27e2f6c5e674f3f1225f9ca7a7821faaf393bb upstream.
    
    If we want to send a control status on our own time (through
    delayed_status), make sure to handle a case where we may queue the
    delayed status before the host requesting for it (when XferNotReady
    is generated). Otherwise, the driver won't send anything because it's
    not EP0_STATUS_PHASE yet. To resolve this, regardless whether
    dwc->ep0state is EP0_STATUS_PHASE, make sure to clear the
    dwc->delayed_status flag if dwc3_ep0_send_delayed_status() is called.
    The control status can be sent when the host requests it later.
    
    Cc: <stable@vger.kernel.org>
    Fixes: d97c78a1908e ("usb: dwc3: gadget: END_TRANSFER before CLEAR_STALL command")
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0220dd58ee0eca20548dbd7eb6ec02a1f35c6e2
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Tue Nov 3 13:44:25 2020 +0100

    USB: serial: option: add Telit FN980 composition 0x1055
    
    commit db0362eeb22992502764e825c79b922d7467e0eb upstream.
    
    Add the following Telit FN980 composition:
    
    0x1055: tty, adb, tty, tty, tty, tty
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Link: https://lore.kernel.org/r/20201103124425.12940-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 03a77e6d839cf0b27daaf088008f6f4586e8dd20
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Sat Oct 31 23:54:58 2020 +0100

    USB: serial: option: add LE910Cx compositions 0x1203, 0x1230, 0x1231
    
    commit 489979b4aab490b6b917c11dc02d81b4b742784a upstream.
    
    Add following Telit LE910Cx compositions:
    
    0x1203: rndis, tty, adb, tty, tty, tty, tty
    0x1230: tty, adb, rmnet, audio, tty, tty, tty, tty
    0x1231: rndis, tty, adb, audio, tty, tty, tty, tty
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Link: https://lore.kernel.org/r/20201031225458.10512-1-dnlplm@gmail.com
    [ johan: add comments after entries ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25dae6c2ac3c0b17fbbc8fd23e102f3de6fe8929
Author: Ziyi Cao <kernel@septs.pw>
Date:   Tue Oct 20 00:08:06 2020 +0800

    USB: serial: option: add Quectel EC200T module support
    
    commit a46b973bced1ba57420752bf38426acd9f6cbfa6 upstream.
    
    Add usb product id of the Quectel EC200T module.
    
    Signed-off-by: Ziyi Cao <kernel@septs.pw>
    Link: https://lore.kernel.org/r/17f8a2a3-ce0f-4be7-8544-8fdf286907d0@www.fastmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b3a5e5def3824230afc45855e9b3673ff6b55d5
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 26 09:25:48 2020 +0100

    USB: serial: cyberjack: fix write-URB completion race
    
    commit 985616f0457d9f555fff417d0da56174f70cc14f upstream.
    
    The write-URB busy flag was being cleared before the completion handler
    was done with the URB, something which could lead to corrupt transfers
    due to a racing write request if the URB is resubmitted.
    
    Fixes: 507ca9bc0476 ("[PATCH] USB: add ability for usb-serial drivers to determine if their write urb is currently being used.")
    Cc: stable <stable@vger.kernel.org>     # 2.6.13
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be5d35c29a2a2e0359d691dbc190dfb1f59b6a87
Author: Qinglang Miao <miaoqinglang@huawei.com>
Date:   Tue Nov 3 16:49:42 2020 +0800

    serial: txx9: add missing platform_driver_unregister() on error in serial_txx9_init
    
    commit 0c5fc92622ed5531ff324b20f014e9e3092f0187 upstream.
    
    Add the missing platform_driver_unregister() before return
    from serial_txx9_init in the error handling case when failed
    to register serial_txx9_pci_driver with macro ENABLE_SERIAL_TXX9_PCI
    defined.
    
    Fixes: ab4382d27412 ("tty: move drivers/serial/ to drivers/tty/serial/")
    Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
    Link: https://lore.kernel.org/r/20201103084942.109076-1-miaoqinglang@huawei.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee9f9c96fbb0b0b56072df9ef6d9fdbadf8a331c
Author: Claire Chang <tientzu@chromium.org>
Date:   Mon Nov 2 20:07:49 2020 +0800

    serial: 8250_mtk: Fix uart_get_baud_rate warning
    
    commit 912ab37c798770f21b182d656937072b58553378 upstream.
    
    Mediatek 8250 port supports speed higher than uartclk / 16. If the baud
    rates in both the new and the old termios setting are higher than
    uartclk / 16, the WARN_ON in uart_get_baud_rate() will be triggered.
    Passing NULL as the old termios so uart_get_baud_rate() will use
    uartclk / 16 - 1 as the new baud rate which will be replaced by the
    original baud rate later by tty_termios_encode_baud_rate() in
    mtk8250_set_termios().
    
    Fixes: 551e553f0d4a ("serial: 8250_mtk: Fix high-speed baud rates clamping")
    Signed-off-by: Claire Chang <tientzu@chromium.org>
    Link: https://lore.kernel.org/r/20201102120749.374458-1-tientzu@chromium.org
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fd5b1ef488eed4e8c4251b458cd3c625b5e0835
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Sat Oct 10 15:14:29 2020 +0000

    powerpc/40x: Always fault when _PAGE_ACCESSED is not set
    
    commit 0540b0d2ce9073fd2a736d636218faa61c99e572 upstream.
    
    The kernel expects pte_young() to work regardless of CONFIG_SWAP.
    
    Make sure a minor fault is taken to set _PAGE_ACCESSED when it
    is not already set, regardless of the selection of CONFIG_SWAP.
    
    Fixes: 2c74e2586bb9 ("powerpc/40x: Rework 40x PTE access and TLB miss")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/b02ca2ed2d3676a096219b48c0f69ec982a75bcf.1602342801.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9971a694a03670378fb71af5b5f71da3ddfa7215
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Mon Oct 12 08:54:31 2020 +0000

    powerpc/8xx: Always fault when _PAGE_ACCESSED is not set
    
    commit 29daf869cbab69088fe1755d9dd224e99ba78b56 upstream.
    
    The kernel expects pte_young() to work regardless of CONFIG_SWAP.
    
    Make sure a minor fault is taken to set _PAGE_ACCESSED when it
    is not already set, regardless of the selection of CONFIG_SWAP.
    
    This adds at least 3 instructions to the TLB miss exception
    handlers fast path. Following patch will reduce this overhead.
    
    Also update the rotation instruction to the correct number of bits
    to reflect all changes done to _PAGE_ACCESSED over time.
    
    Fixes: d069cb4373fe ("powerpc/8xx: Don't touch ACCESSED when no SWAP.")
    Fixes: 5f356497c384 ("powerpc/8xx: remove unused _PAGE_WRITETHRU")
    Fixes: e0a8e0d90a9f ("powerpc/8xx: Handle PAGE_USER via APG bits")
    Fixes: 5b2753fc3e8a ("powerpc/8xx: Implementation of PAGE_EXEC")
    Fixes: a891c43b97d3 ("powerpc/8xx: Prepare handlers for _PAGE_HUGE for 512k pages.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/af834e8a0f1fa97bfae65664950f0984a70c4750.1602492856.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f729792f620a9a1e0752316f49e5fd9ae005851
Author: Harald Freudenberger <freude@linux.ibm.com>
Date:   Tue Sep 15 11:00:17 2020 +0200

    s390/pkey: fix paes selftest failure with paes and pkey static build
    
    commit 5b35047eb467c8cdd38a31beb9ac109221777843 upstream.
    
    When both the paes and the pkey kernel module are statically build
    into the kernel, the paes cipher selftests run before the pkey
    kernel module is initialized. So a static variable set in the pkey
    init function and used in the pkey_clr2protkey function is not
    initialized when the paes cipher's selftests request to call pckmo for
    transforming a clear key value into a protected key.
    
    This patch moves the initial setup of the static variable into
    the function pck_clr2protkey. So it's possible, to use the function
    for transforming a clear to a protected key even before the pkey
    init function has been called and the paes selftests may run
    successful.
    
    Reported-by: Alexander Egorenkov <Alexander.Egorenkov@ibm.com>
    Cc: <stable@vger.kernel.org> # 4.20
    Fixes: f822ad2c2c03 ("s390/pkey: move pckmo subfunction available checks away from module init")
    Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1772dd4d57ca02470882842e797090406a4981be
Author: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Date:   Tue Oct 20 20:20:07 2020 +0200

    s390/mm: make pmd/pud_deref() large page aware
    
    commit b0e98aa9c411585eb586b2fa98873c936735008e upstream.
    
    pmd/pud_deref() assume that they will never operate on large pmd/pud
    entries, and therefore only use the non-large _xxx_ENTRY_ORIGIN mask.
    With commit 9ec8fa8dc331b ("s390/vmemmap: extend modify_pagetable()
    to handle vmemmap"), that assumption is no longer true, at least for
    pmd_deref().
    
    In theory, we could end up with wrong addresses because some of the
    non-address bits of a large entry would not be masked out.
    In practice, this does not (yet) show any impact, because vmemmap_free()
    is currently never used for s390.
    
    Fix pmd/pud_deref() to check for the entry type and use the
    _xxx_ENTRY_ORIGIN_LARGE mask for large entries.
    
    While at it, also move pmd/pud_pfn() around, in order to avoid code
    duplication, because they do the same thing.
    
    Fixes: 9ec8fa8dc331b ("s390/vmemmap: extend modify_pagetable() to handle vmemmap")
    Cc: <stable@vger.kernel.org> # 5.9
    Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2941054990baffcc94ff16c04d46078ae88d328c
Author: Niklas Schnelle <schnelle@linux.ibm.com>
Date:   Mon Nov 2 11:33:04 2020 +0100

    s390/pci: fix hot-plug of PCI function missing bus
    
    commit 0b2ca2c7d0c9e2731d01b6c862375d44a7e13923 upstream.
    
    Under some circumstances in particular with "Reconfigure I/O Path"
    a zPCI function may first appear in Standby through a PCI event with
    PEC 0x0302 which initially makes it visible to the zPCI subsystem,
    Only after that is it configured with a zPCI event  with PEC 0x0301.
    If the zbus is still missing a PCI function zero (devfn == 0) when the
    PCI event 0x0301 is handled zdev->zbus->bus is still NULL and gets
    dereferenced in common code.
    Check for this case and enable but don't scan the zPCI function.
    This matches what would happen if we immediately got the 0x0301
    configuration request or the function was included in CLP List PCI.
    In all cases the PCI functions with devfn != 0 will be scanned once
    function 0 appears.
    
    Fixes: 3047766bc6ec ("s390/pci: fix enabling a reserved PCI function")
    Cc: <stable@vger.kernel.org> # 5.8
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Acked-by: Pierre Morel <pmorel@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f7a50f1d7ba92977d6c880aefaad0a6ef234029
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Nov 4 14:06:23 2020 +0100

    entry: Fix the incorrect ordering of lockdep and RCU check
    
    commit 9d820f68b2bdba5b2e7bf135123c3f57c5051d05 upstream.
    
    When an exception/interrupt hits kernel space and the kernel is not
    currently in the idle task then RCU must be watching.
    
    irqentry_enter() validates this via rcu_irq_enter_check_tick(), which in
    turn invokes lockdep when taking a lock. But at that point lockdep does not
    yet know about the fact that interrupts have been disabled by the CPU,
    which triggers a lockdep splat complaining about inconsistent state.
    
    Invoking trace_hardirqs_off() before rcu_irq_enter_check_tick() defeats the
    point of rcu_irq_enter_check_tick() because trace_hardirqs_off() uses RCU.
    
    So use the same sequence as for the idle case and tell lockdep about the
    irq state change first, invoke the RCU check and then do the lockdep and
    tracer update.
    
    Fixes: a5497bab5f72 ("entry: Provide generic interrupt entry/exit code")
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Mark Rutland <mark.rutland@arm.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/87y2jhl19s.fsf@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 362dfa5e0205a5ea70bf3ac2ae00487e1a5bb8f5
Author: Eddy Wu <itseddy0402@gmail.com>
Date:   Sat Nov 7 14:47:22 2020 +0800

    fork: fix copy_process(CLONE_PARENT) race with the exiting ->real_parent
    
    commit b4e00444cab4c3f3fec876dc0cccc8cbb0d1a948 upstream.
    
    current->group_leader->exit_signal may change during copy_process() if
    current->real_parent exits.
    
    Move the assignment inside tasklist_lock to avoid the race.
    
    Signed-off-by: Eddy Wu <eddy_wu@trendmicro.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db495aa9fb84c083333d48ab8e560274f504f0fc
Author: Matthias Reichl <hias@horus.com>
Date:   Thu Nov 5 13:34:32 2020 +0100

    tty: fix crash in release_tty if tty->port is not set
    
    commit 4466d6d2f80c1193e0845d110277c56da77a6418 upstream.
    
    Commit 2ae0b31e0face ("tty: don't crash in tty_init_dev when missing
    tty_port") didn't fully prevent the crash as the cleanup path in
    tty_init_dev() calls release_tty() which dereferences tty->port
    without checking it for non-null.
    
    Add tty->port checks to release_tty to avoid the kernel crash.
    
    Fixes: 2ae0b31e0face ("tty: don't crash in tty_init_dev when missing tty_port")
    Signed-off-by: Matthias Reichl <hias@horus.com>
    Link: https://lore.kernel.org/r/20201105123432.4448-1-hias@horus.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3f90dcc09090bf6f0f034be750c3e0ddfa35a29
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Thu Nov 5 21:40:26 2020 +0100

    tty: serial: imx: enable earlycon by default if IMX_SERIAL_CONSOLE is enabled
    
    commit 427627a23c3e86e31113f9db9bfdca41698a0ee5 upstream.
    
    Since 699cc4dfd140 (tty: serial: imx: add imx earlycon driver), the earlycon
    part of imx serial is a separate driver and isn't necessarily enabled anymore
    when the console is enabled. This causes users to loose the earlycon
    functionality when upgrading their kenrel configuration via oldconfig.
    
    Enable earlycon by default when IMX_SERIAL_CONSOLE is enabled.
    
    Fixes: 699cc4dfd140 (tty: serial: imx: add imx earlycon driver)
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Reviewed-by: Fugang Duan <fugang.duan@nxp.com>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Link: https://lore.kernel.org/r/20201105204026.1818219-1-l.stach@pengutronix.de
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ecba10d25f7530aeb6b5366f5aed4ab818b4ea6b
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Sun Nov 8 16:38:06 2020 +0100

    vt: Disable KD_FONT_OP_COPY
    
    commit 3c4e0dff2095c579b142d5a0693257f1c58b4804 upstream.
    
    It's buggy:
    
    On Fri, Nov 06, 2020 at 10:30:08PM +0800, Minh Yuan wrote:
    > We recently discovered a slab-out-of-bounds read in fbcon in the latest
    > kernel ( v5.10-rc2 for now ).  The root cause of this vulnerability is that
    > "fbcon_do_set_font" did not handle "vc->vc_font.data" and
    > "vc->vc_font.height" correctly, and the patch
    > <https://lkml.org/lkml/2020/9/27/223> for VT_RESIZEX can't handle this
    > issue.
    >
    > Specifically, we use KD_FONT_OP_SET to set a small font.data for tty6, and
    > use  KD_FONT_OP_SET again to set a large font.height for tty1. After that,
    > we use KD_FONT_OP_COPY to assign tty6's vc_font.data to tty1's vc_font.data
    > in "fbcon_do_set_font", while tty1 retains the original larger
    > height. Obviously, this will cause an out-of-bounds read, because we can
    > access a smaller vc_font.data with a larger vc_font.height.
    
    Further there was only one user ever.
    - Android's loadfont, busybox and console-tools only ever use OP_GET
      and OP_SET
    - fbset documentation only mentions the kernel cmdline font: option,
      not anything else.
    - systemd used OP_COPY before release 232 published in Nov 2016
    
    Now unfortunately the crucial report seems to have gone down with
    gmane, and the commit message doesn't say much. But the pull request
    hints at OP_COPY being broken
    
    https://github.com/systemd/systemd/pull/3651
    
    So in other words, this never worked, and the only project which
    foolishly every tried to use it, realized that rather quickly too.
    
    Instead of trying to fix security issues here on dead code by adding
    missing checks, fix the entire thing by removing the functionality.
    
    Note that systemd code using the OP_COPY function ignored the return
    value, so it doesn't matter what we're doing here really - just in
    case a lone server somewhere happens to be extremely unlucky and
    running an affected old version of systemd. The relevant code from
    font_copy_to_all_vcs() in systemd was:
    
            /* copy font from active VT, where the font was uploaded to */
            cfo.op = KD_FONT_OP_COPY;
            cfo.height = vcs.v_active-1; /* tty1 == index 0 */
            (void) ioctl(vcfd, KDFONTOP, &cfo);
    
    Note this just disables the ioctl, garbage collecting the now unused
    callbacks is left for -next.
    
    v2: Tetsuo found the old mail, which allowed me to find it on another
    archive. Add the link too.
    
    Acked-by: Peilin Ye <yepeilin.cs@gmail.com>
    Reported-by: Minh Yuan <yuanmingbuaa@gmail.com>
    References: https://lists.freedesktop.org/archives/systemd-devel/2016-June/036935.html
    References: https://github.com/systemd/systemd/pull/3651
    Cc: Greg KH <greg@kroah.com>
    Cc: Peilin Ye <yepeilin.cs@gmail.com>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Link: https://lore.kernel.org/r/20201108153806.3140315-1-daniel.vetter@ffwll.ch
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c33303d77dec4af112d8764a64fbba02c2bc2499
Author: Qian Cai <cai@redhat.com>
Date:   Wed Oct 28 14:26:14 2020 -0400

    arm64/smp: Move rcu_cpu_starting() earlier
    
    [ Upstream commit ce3d31ad3cac765484463b4f5a0b6b1f8f1a963e ]
    
    The call to rcu_cpu_starting() in secondary_start_kernel() is not early
    enough in the CPU-hotplug onlining process, which results in lockdep
    splats as follows:
    
     WARNING: suspicious RCU usage
     -----------------------------
     kernel/locking/lockdep.c:3497 RCU-list traversed in non-reader section!!
    
     other info that might help us debug this:
    
     RCU used illegally from offline CPU!
     rcu_scheduler_active = 1, debug_locks = 1
     no locks held by swapper/1/0.
    
     Call trace:
      dump_backtrace+0x0/0x3c8
      show_stack+0x14/0x60
      dump_stack+0x14c/0x1c4
      lockdep_rcu_suspicious+0x134/0x14c
      __lock_acquire+0x1c30/0x2600
      lock_acquire+0x274/0xc48
      _raw_spin_lock+0xc8/0x140
      vprintk_emit+0x90/0x3d0
      vprintk_default+0x34/0x40
      vprintk_func+0x378/0x590
      printk+0xa8/0xd4
      __cpuinfo_store_cpu+0x71c/0x868
      cpuinfo_store_cpu+0x2c/0xc8
      secondary_start_kernel+0x244/0x318
    
    This is avoided by moving the call to rcu_cpu_starting up near the
    beginning of the secondary_start_kernel() function.
    
    Signed-off-by: Qian Cai <cai@redhat.com>
    Acked-by: Paul E. McKenney <paulmck@kernel.org>
    Link: https://lore.kernel.org/lkml/160223032121.7002.1269740091547117869.tip-bot2@tip-bot2/
    Link: https://lore.kernel.org/r/20201028182614.13655-1-cai@redhat.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b74c934d47a6b2a868a519c37d19dfcd9ea0bfd5
Author: Karol Herbst <kherbst@redhat.com>
Date:   Wed Oct 7 00:08:09 2020 +0200

    drm/nouveau/gem: fix "refcount_t: underflow; use-after-free"
    
    [ Upstream commit 925681454d7b557d404b5d28ef4469fac1b2e105 ]
    
    we can't use nouveau_bo_ref here as no ttm object was allocated and
    nouveau_bo_ref mainly deals with that. Simply deallocate the object.
    
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 009296595df7cdb41845feceae449e549759d4e0
Author: Ralph Campbell <rcampbell@nvidia.com>
Date:   Mon Aug 31 13:31:11 2020 -0700

    drm/nouveau/nouveau: fix the start/end range for migration
    
    [ Upstream commit cfa736f5a6f31ca8a05459b5720aac030247ad1b ]
    
    The user level OpenCL code shouldn't have to align start and end
    addresses to a page boundary. That is better handled in the nouveau
    driver. The npages field is also redundant since it can be computed
    from the start and end addresses.
    
    Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f23480fd3e6d92015f15163c1090ab2d48e3fe2
Author: Peter Chen <peter.chen@nxp.com>
Date:   Thu Oct 22 08:55:03 2020 +0800

    usb: cdns3: gadget: suspicious implicit sign extension
    
    [ Upstream commit 5fca3f062879f8e5214c56f3e3e2be6727900f5d ]
    
    The code:
    trb->length = cpu_to_le32(TRB_BURST_LEN(priv_ep->trb_burst_size)
                    | TRB_LEN(length));
    
    TRB_BURST_LEN(priv_ep->trb_burst_size) may be overflow for int 32 if
    priv_ep->trb_burst_size is equal or larger than 0x80;
    
    Below is the Coverity warning:
    sign_extension: Suspicious implicit sign extension: priv_ep->trb_burst_size
    with type u8 (8 bits, unsigned) is promoted in priv_ep->trb_burst_size << 24
    to type int (32 bits, signed), then sign-extended to type unsigned long
    (64 bits, unsigned). If priv_ep->trb_burst_size << 24 is greater than 0x7FFFFFFF,
    the upper bits of the result will all be 1.
    
    To fix it, it needs to add an explicit cast to unsigned int type for ((p) << 24).
    
    Reviewed-by: Jun Li <jun.li@nxp.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b195d1d2dfc318443a5a7e3d4e16b0278d7e7ded
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Tue Oct 27 21:49:01 2020 +0800

    ACPI: NFIT: Fix comparison to '-ENXIO'
    
    [ Upstream commit 85f971b65a692b68181438e099b946cc06ed499b ]
    
    Initial value of rc is '-ENXIO', and we should
    use the initial value to check it.
    
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
    Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
    [ rjw: Subject edit ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd57344de7360ab8b10a6b5dfb37a3175908be16
Author: Hoegeun Kwon <hoegeun.kwon@samsung.com>
Date:   Tue Oct 27 13:14:42 2020 +0900

    drm/vc4: drv: Add error handding for bind
    
    [ Upstream commit 9ce0af3e9573fb84c4c807183d13ea2a68271e4b ]
    
    There is a problem that if vc4_drm bind fails, a memory leak occurs on
    the drm_property_create side. Add error handding for drm_mode_config.
    
    Signed-off-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201027041442.30352-2-hoegeun.kwon@samsung.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2803667311ea8cf187e54332b91c1c3b81189d47
Author: Seung-Woo Kim <sw0312.kim@samsung.com>
Date:   Mon Oct 26 18:55:50 2020 +0900

    staging: mmal-vchiq: Fix memory leak for vchiq_instance
    
    [ Upstream commit b6ae84d648954fae096d94faea1ddb6518b27841 ]
    
    The vchiq_instance is allocated with vchiq_initialise() but never
    freed properly. Fix memory leak for the vchiq_instance.
    
    Reported-by: Jaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
    Link: https://lore.kernel.org/r/1603706150-10806-1-git-send-email-sw0312.kim@samsung.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71ea9f2760095641140aea29c2de9c15b6bb2ed0
Author: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Date:   Thu Oct 22 16:58:21 2020 -0700

    nvmet: fix a NULL pointer dereference when tracing the flush command
    
    [ Upstream commit 3c3751f2daf6675f6b5bee83b792354c272f5bd2 ]
    
    When target side trace in turned on and flush command is issued from the
    host it results in the following Oops.
    
    [  856.789724] BUG: kernel NULL pointer dereference, address: 0000000000000068
    [  856.790686] #PF: supervisor read access in kernel mode
    [  856.791262] #PF: error_code(0x0000) - not-present page
    [  856.791863] PGD 6d7110067 P4D 6d7110067 PUD 66f0ad067 PMD 0
    [  856.792527] Oops: 0000 [#1] SMP NOPTI
    [  856.792950] CPU: 15 PID: 7034 Comm: nvme Tainted: G           OE     5.9.0nvme-5.9+ #71
    [  856.793790] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e3214
    [  856.794956] RIP: 0010:trace_event_raw_event_nvmet_req_init+0x13e/0x170 [nvmet]
    [  856.795734] Code: 41 5c 41 5d c3 31 d2 31 f6 e8 4e 9b b8 e0 e9 0e ff ff ff 49 8b 55 00 48 8b 38 8b 0
    [  856.797740] RSP: 0018:ffffc90001be3a60 EFLAGS: 00010246
    [  856.798375] RAX: 0000000000000000 RBX: ffff8887e7d2c01c RCX: 0000000000000000
    [  856.799234] RDX: 0000000000000020 RSI: 0000000057e70ea2 RDI: ffff8887e7d2c034
    [  856.800088] RBP: ffff88869f710578 R08: ffff888807500d40 R09: 00000000fffffffe
    [  856.800951] R10: 0000000064c66670 R11: 00000000ef955201 R12: ffff8887e7d2c034
    [  856.801807] R13: ffff88869f7105c8 R14: 0000000000000040 R15: ffff88869f710440
    [  856.802667] FS:  00007f6a22bd8780(0000) GS:ffff888813a00000(0000) knlGS:0000000000000000
    [  856.803635] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  856.804367] CR2: 0000000000000068 CR3: 00000006d73e0000 CR4: 00000000003506e0
    [  856.805283] Call Trace:
    [  856.805613]  nvmet_req_init+0x27c/0x480 [nvmet]
    [  856.806200]  nvme_loop_queue_rq+0xcb/0x1d0 [nvme_loop]
    [  856.806862]  blk_mq_dispatch_rq_list+0x123/0x7b0
    [  856.807459]  ? kvm_sched_clock_read+0x14/0x30
    [  856.808025]  __blk_mq_sched_dispatch_requests+0xc7/0x170
    [  856.808708]  blk_mq_sched_dispatch_requests+0x30/0x60
    [  856.809372]  __blk_mq_run_hw_queue+0x70/0x100
    [  856.809935]  __blk_mq_delay_run_hw_queue+0x156/0x170
    [  856.810574]  blk_mq_run_hw_queue+0x86/0xe0
    [  856.811104]  blk_mq_sched_insert_request+0xef/0x160
    [  856.811733]  blk_execute_rq+0x69/0xc0
    [  856.812212]  ? blk_mq_rq_ctx_init+0xd0/0x230
    [  856.812784]  nvme_execute_passthru_rq+0x57/0x130 [nvme_core]
    [  856.813461]  nvme_submit_user_cmd+0xeb/0x300 [nvme_core]
    [  856.814099]  nvme_user_cmd.isra.82+0x11e/0x1a0 [nvme_core]
    [  856.814752]  blkdev_ioctl+0x1dc/0x2c0
    [  856.815197]  block_ioctl+0x3f/0x50
    [  856.815606]  __x64_sys_ioctl+0x84/0xc0
    [  856.816074]  do_syscall_64+0x33/0x40
    [  856.816533]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  856.817168] RIP: 0033:0x7f6a222ed107
    [  856.817617] Code: 44 00 00 48 8b 05 81 cd 2c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 8
    [  856.819901] RSP: 002b:00007ffca848f058 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
    [  856.820846] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f6a222ed107
    [  856.821726] RDX: 00007ffca848f060 RSI: 00000000c0484e43 RDI: 0000000000000003
    [  856.822603] RBP: 0000000000000003 R08: 000000000000003f R09: 0000000000000005
    [  856.823478] R10: 00007ffca848ece0 R11: 0000000000000202 R12: 00007ffca84912d3
    [  856.824359] R13: 00007ffca848f4d0 R14: 0000000000000002 R15: 000000000067e900
    [  856.825236] Modules linked in: nvme_loop(OE) nvmet(OE) nvme_fabrics(OE) null_blk nvme(OE) nvme_corel
    
    Move the nvmet_req_init() tracepoint after we parse the command in
    nvmet_req_init() so that we can get rid of the duplicate
    nvmet_find_namespace() call.
    Rename __assign_disk_name() ->  __assign_req_name(). Now that we call
    tracepoint after parsing the command simplify the newly added
    __assign_req_name() which fixes this bug.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b8e8c4716366ccdfd5bad6e25a67dfd208555b8
Author: zhenwei pi <pizhenwei@bytedance.com>
Date:   Sun Oct 25 19:51:24 2020 +0800

    nvme-rdma: handle unexpected nvme completion data length
    
    [ Upstream commit 25c1ca6ecaba3b751d3f7ff92d5cddff3b05f8d0 ]
    
    Receiving a zero length message leads to the following warnings because
    the CQE is processed twice:
    
    refcount_t: underflow; use-after-free.
    WARNING: CPU: 0 PID: 0 at lib/refcount.c:28
    
    RIP: 0010:refcount_warn_saturate+0xd9/0xe0
    Call Trace:
     <IRQ>
     nvme_rdma_recv_done+0xf3/0x280 [nvme_rdma]
     __ib_process_cq+0x76/0x150 [ib_core]
     ...
    
    Sanity check the received data length, to avoids this.
    
    Thanks to Chao Leng & Sagi for suggestions.
    
    Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52f2be46098c2a2e552f5e44d8e081ebca1c173f
Author: Jeff Vander Stoep <jeffv@google.com>
Date:   Fri Oct 23 16:37:57 2020 +0200

    vsock: use ns_capable_noaudit() on socket create
    
    [ Upstream commit af545bb5ee53f5261db631db2ac4cde54038bdaf ]
    
    During __vsock_create() CAP_NET_ADMIN is used to determine if the
    vsock_sock->trusted should be set to true. This value is used later
    for determing if a remote connection should be allowed to connect
    to a restricted VM. Unfortunately, if the caller doesn't have
    CAP_NET_ADMIN, an audit message such as an selinux denial is
    generated even if the caller does not want a trusted socket.
    
    Logging errors on success is confusing. To avoid this, switch the
    capable(CAP_NET_ADMIN) check to the noaudit version.
    
    Reported-by: Roman Kiryanov <rkir@google.com>
    https://android-review.googlesource.com/c/device/generic/goldfish/+/1468545/
    Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
    Reviewed-by: James Morris <jamorris@linux.microsoft.com>
    Link: https://lore.kernel.org/r/20201023143757.377574-1-jeffv@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 999e1a56ead930e198b4c19ba9f74d03c9547002
Author: Martin Leung <martin.leung@amd.com>
Date:   Wed Oct 7 12:17:22 2020 -0400

    drm/amd/display: adding ddc_gpio_vga_reg_list to ddc reg def'ns
    
    [ Upstream commit a1d2afc5dde29a943d32bf92eb0408c9f19541fc ]
    
    why:
    oem-related ddc read/write fails without these regs
    
    how:
    copy from hw_factory_dcn20.c
    
    Signed-off-by: Martin Leung <martin.leung@amd.com>
    Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c4cb6cb14da227e884272e3340177e572eda010b
Author: Tyrel Datwyler <tyreld@linux.ibm.com>
Date:   Sat Oct 24 19:13:55 2020 -0500

    scsi: ibmvscsi: Fix potential race after loss of transport
    
    [ Upstream commit 665e0224a3d76f36da40bd9012270fa629aa42ed ]
    
    After a loss of transport due to an adapter migration or crash/disconnect
    from the host partner there is a tiny window where we can race adjusting
    the request_limit of the adapter. The request limit is atomically
    increased/decreased to track the number of inflight requests against the
    allowed limit of our VIOS partner.
    
    After a transport loss we set the request_limit to zero to reflect this
    state.  However, there is a window where the adapter may attempt to queue a
    command because the transport loss event hasn't been fully processed yet
    and request_limit is still greater than zero.  The hypercall to send the
    event will fail and the error path will increment the request_limit as a
    result.  If the adapter processes the transport event prior to this
    increment the request_limit becomes out of sync with the adapter state and
    can result in SCSI commands being submitted on the now reset connection
    prior to an SRP Login resulting in a protocol violation.
    
    Fix this race by protecting request_limit with the host lock when changing
    the value via atomic_set() to indicate no transport.
    
    Link: https://lore.kernel.org/r/20201025001355.4527-1-tyreld@linux.ibm.com
    Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dca6a2dadf82ba6f950cbb08d6a7f083344e83c5
Author: David Galiffi <David.Galiffi@amd.com>
Date:   Wed Apr 29 13:31:12 2020 -0400

    drm/amd/display: Fixed panic during seamless boot.
    
    [ Upstream commit 866e09f0110c6e86071954033e3067975946592a ]
    
    [why]
    get_pixel_clk_frequency_100hz is undefined in clock_source_funcs.
    
    [how]
    set function pointer: ".get_pixel_clk_frequency_100hz = get_pixel_clk_frequency_100hz"
    
    Signed-off-by: David Galiffi <David.Galiffi@amd.com>
    Reviewed-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9cee54ebdd900f16d9a43c46c85c0efb573c73b6
Author: Tianci.Yin <tianci.yin@amd.com>
Date:   Wed Oct 14 17:05:50 2020 +0800

    drm/amdgpu: add DID for navi10 blockchain SKU
    
    [ Upstream commit 8942881144a7365143f196f5eafed24783a424a3 ]
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Guchun Chen <guchun.chen@amd.com>
    Signed-off-by: Tianci.Yin <tianci.yin@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2cc04437f6c399b2c314b289ad9f9d87afa33c8
Author: Tianci.Yin <tianci.yin@amd.com>
Date:   Thu Oct 22 11:40:26 2020 +0800

    drm/amdgpu: disable DCN and VCN for navi10 blockchain SKU(v3)
    
    [ Upstream commit a305e7dc5fa86ff9cf6cd2da30215a92d43c9285 ]
    
    The blockchain SKU has no display and video support, remove them.
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Tianci.Yin <tianci.yin@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 096bdeca44cb93e4cab1eb1882262f597e150aeb
Author: Ming Lei <ming.lei@redhat.com>
Date:   Sat Oct 10 11:25:39 2020 +0800

    scsi: core: Don't start concurrent async scan on same host
    
    [ Upstream commit 831e3405c2a344018a18fcc2665acc5a38c3a707 ]
    
    The current scanning mechanism is supposed to fall back to a synchronous
    host scan if an asynchronous scan is in progress. However, this rule isn't
    strictly respected, scsi_prep_async_scan() doesn't hold scan_mutex when
    checking shost->async_scan. When scsi_scan_host() is called concurrently,
    two async scans on same host can be started and a hang in do_scan_async()
    is observed.
    
    Fixes this issue by checking & setting shost->async_scan atomically with
    shost->scan_mutex.
    
    Link: https://lore.kernel.org/r/20201010032539.426615-1-ming.lei@redhat.com
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Ewan D. Milne <emilne@redhat.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8810488b0135b0461fb55181a67a7f4939f97f87
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Mon Oct 19 16:02:31 2020 -0400

    btrfs: add a helper to read the tree_root commit root for backref lookup
    
    [ Upstream commit 49d11bead7d596e031fbd34051d8765587cd645b ]
    
    I got the following lockdep splat with tree locks converted to rwsem
    patches on btrfs/104:
    
      ======================================================
      WARNING: possible circular locking dependency detected
      5.9.0+ #102 Not tainted
      ------------------------------------------------------
      btrfs-cleaner/903 is trying to acquire lock:
      ffff8e7fab6ffe30 (btrfs-root-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x32/0x170
    
      but task is already holding lock:
      ffff8e7fab628a88 (&fs_info->commit_root_sem){++++}-{3:3}, at: btrfs_find_all_roots+0x41/0x80
    
      which lock already depends on the new lock.
    
      the existing dependency chain (in reverse order) is:
    
      -> #3 (&fs_info->commit_root_sem){++++}-{3:3}:
             down_read+0x40/0x130
             caching_thread+0x53/0x5a0
             btrfs_work_helper+0xfa/0x520
             process_one_work+0x238/0x540
             worker_thread+0x55/0x3c0
             kthread+0x13a/0x150
             ret_from_fork+0x1f/0x30
    
      -> #2 (&caching_ctl->mutex){+.+.}-{3:3}:
             __mutex_lock+0x7e/0x7b0
             btrfs_cache_block_group+0x1e0/0x510
             find_free_extent+0xb6e/0x12f0
             btrfs_reserve_extent+0xb3/0x1b0
             btrfs_alloc_tree_block+0xb1/0x330
             alloc_tree_block_no_bg_flush+0x4f/0x60
             __btrfs_cow_block+0x11d/0x580
             btrfs_cow_block+0x10c/0x220
             commit_cowonly_roots+0x47/0x2e0
             btrfs_commit_transaction+0x595/0xbd0
             sync_filesystem+0x74/0x90
             generic_shutdown_super+0x22/0x100
             kill_anon_super+0x14/0x30
             btrfs_kill_super+0x12/0x20
             deactivate_locked_super+0x36/0xa0
             cleanup_mnt+0x12d/0x190
             task_work_run+0x5c/0xa0
             exit_to_user_mode_prepare+0x1df/0x200
             syscall_exit_to_user_mode+0x54/0x280
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #1 (&space_info->groups_sem){++++}-{3:3}:
             down_read+0x40/0x130
             find_free_extent+0x2ed/0x12f0
             btrfs_reserve_extent+0xb3/0x1b0
             btrfs_alloc_tree_block+0xb1/0x330
             alloc_tree_block_no_bg_flush+0x4f/0x60
             __btrfs_cow_block+0x11d/0x580
             btrfs_cow_block+0x10c/0x220
             commit_cowonly_roots+0x47/0x2e0
             btrfs_commit_transaction+0x595/0xbd0
             sync_filesystem+0x74/0x90
             generic_shutdown_super+0x22/0x100
             kill_anon_super+0x14/0x30
             btrfs_kill_super+0x12/0x20
             deactivate_locked_super+0x36/0xa0
             cleanup_mnt+0x12d/0x190
             task_work_run+0x5c/0xa0
             exit_to_user_mode_prepare+0x1df/0x200
             syscall_exit_to_user_mode+0x54/0x280
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #0 (btrfs-root-00){++++}-{3:3}:
             __lock_acquire+0x1167/0x2150
             lock_acquire+0xb9/0x3d0
             down_read_nested+0x43/0x130
             __btrfs_tree_read_lock+0x32/0x170
             __btrfs_read_lock_root_node+0x3a/0x50
             btrfs_search_slot+0x614/0x9d0
             btrfs_find_root+0x35/0x1b0
             btrfs_read_tree_root+0x61/0x120
             btrfs_get_root_ref+0x14b/0x600
             find_parent_nodes+0x3e6/0x1b30
             btrfs_find_all_roots_safe+0xb4/0x130
             btrfs_find_all_roots+0x60/0x80
             btrfs_qgroup_trace_extent_post+0x27/0x40
             btrfs_add_delayed_data_ref+0x3fd/0x460
             btrfs_free_extent+0x42/0x100
             __btrfs_mod_ref+0x1d7/0x2f0
             walk_up_proc+0x11c/0x400
             walk_up_tree+0xf0/0x180
             btrfs_drop_snapshot+0x1c7/0x780
             btrfs_clean_one_deleted_snapshot+0xfb/0x110
             cleaner_kthread+0xd4/0x140
             kthread+0x13a/0x150
             ret_from_fork+0x1f/0x30
    
      other info that might help us debug this:
    
      Chain exists of:
        btrfs-root-00 --> &caching_ctl->mutex --> &fs_info->commit_root_sem
    
       Possible unsafe locking scenario:
    
             CPU0                    CPU1
             ----                    ----
        lock(&fs_info->commit_root_sem);
                                     lock(&caching_ctl->mutex);
                                     lock(&fs_info->commit_root_sem);
        lock(btrfs-root-00);
    
       *** DEADLOCK ***
    
      3 locks held by btrfs-cleaner/903:
       #0: ffff8e7fab628838 (&fs_info->cleaner_mutex){+.+.}-{3:3}, at: cleaner_kthread+0x6e/0x140
       #1: ffff8e7faadac640 (sb_internal){.+.+}-{0:0}, at: start_transaction+0x40b/0x5c0
       #2: ffff8e7fab628a88 (&fs_info->commit_root_sem){++++}-{3:3}, at: btrfs_find_all_roots+0x41/0x80
    
      stack backtrace:
      CPU: 0 PID: 903 Comm: btrfs-cleaner Not tainted 5.9.0+ #102
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-2.fc32 04/01/2014
      Call Trace:
       dump_stack+0x8b/0xb0
       check_noncircular+0xcf/0xf0
       __lock_acquire+0x1167/0x2150
       ? __bfs+0x42/0x210
       lock_acquire+0xb9/0x3d0
       ? __btrfs_tree_read_lock+0x32/0x170
       down_read_nested+0x43/0x130
       ? __btrfs_tree_read_lock+0x32/0x170
       __btrfs_tree_read_lock+0x32/0x170
       __btrfs_read_lock_root_node+0x3a/0x50
       btrfs_search_slot+0x614/0x9d0
       ? find_held_lock+0x2b/0x80
       btrfs_find_root+0x35/0x1b0
       ? do_raw_spin_unlock+0x4b/0xa0
       btrfs_read_tree_root+0x61/0x120
       btrfs_get_root_ref+0x14b/0x600
       find_parent_nodes+0x3e6/0x1b30
       btrfs_find_all_roots_safe+0xb4/0x130
       btrfs_find_all_roots+0x60/0x80
       btrfs_qgroup_trace_extent_post+0x27/0x40
       btrfs_add_delayed_data_ref+0x3fd/0x460
       btrfs_free_extent+0x42/0x100
       __btrfs_mod_ref+0x1d7/0x2f0
       walk_up_proc+0x11c/0x400
       walk_up_tree+0xf0/0x180
       btrfs_drop_snapshot+0x1c7/0x780
       ? btrfs_clean_one_deleted_snapshot+0x73/0x110
       btrfs_clean_one_deleted_snapshot+0xfb/0x110
       cleaner_kthread+0xd4/0x140
       ? btrfs_alloc_root+0x50/0x50
       kthread+0x13a/0x150
       ? kthread_create_worker_on_cpu+0x40/0x40
       ret_from_fork+0x1f/0x30
      BTRFS info (device sdb): disk space caching is enabled
      BTRFS info (device sdb): has skinny extents
    
    This happens because qgroups does a backref lookup when we create a
    delayed ref.  From here it may have to look up a root from an indirect
    ref, which does a normal lookup on the tree_root, which takes the read
    lock on the tree_root nodes.
    
    To fix this we need to add a variant for looking up roots that searches
    the commit root of the tree_root.  Then when we do the backref search
    using the commit root we are sure to not take any locks on the tree_root
    nodes.  This gets rid of the lockdep splat when running btrfs/104.
    
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ecce1be9f2a366990d0e75dd249fb324e83c34a9
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Mon Oct 19 16:02:29 2020 -0400

    btrfs: drop the path before adding qgroup items when enabling qgroups
    
    [ Upstream commit 5223cc60b40ae525ae6c94e98824129f1a5b4ae5 ]
    
    When enabling qgroups we walk the tree_root and then add a qgroup item
    for every root that we have.  This creates a lock dependency on the
    tree_root and qgroup_root, which results in the following lockdep splat
    (with tree locks using rwsem), eg. in tests btrfs/017 or btrfs/022:
    
      ======================================================
      WARNING: possible circular locking dependency detected
      5.9.0-default+ #1299 Not tainted
      ------------------------------------------------------
      btrfs/24552 is trying to acquire lock:
      ffff9142dfc5f630 (btrfs-quota-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
    
      but task is already holding lock:
      ffff9142dfc5d0b0 (btrfs-root-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
    
      which lock already depends on the new lock.
    
      the existing dependency chain (in reverse order) is:
    
      -> #1 (btrfs-root-00){++++}-{3:3}:
             __lock_acquire+0x3fb/0x730
             lock_acquire.part.0+0x6a/0x130
             down_read_nested+0x46/0x130
             __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
             __btrfs_read_lock_root_node+0x3a/0x50 [btrfs]
             btrfs_search_slot_get_root+0x11d/0x290 [btrfs]
             btrfs_search_slot+0xc3/0x9f0 [btrfs]
             btrfs_insert_item+0x6e/0x140 [btrfs]
             btrfs_create_tree+0x1cb/0x240 [btrfs]
             btrfs_quota_enable+0xcd/0x790 [btrfs]
             btrfs_ioctl_quota_ctl+0xc9/0xe0 [btrfs]
             __x64_sys_ioctl+0x83/0xa0
             do_syscall_64+0x2d/0x70
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #0 (btrfs-quota-00){++++}-{3:3}:
             check_prev_add+0x91/0xc30
             validate_chain+0x491/0x750
             __lock_acquire+0x3fb/0x730
             lock_acquire.part.0+0x6a/0x130
             down_read_nested+0x46/0x130
             __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
             __btrfs_read_lock_root_node+0x3a/0x50 [btrfs]
             btrfs_search_slot_get_root+0x11d/0x290 [btrfs]
             btrfs_search_slot+0xc3/0x9f0 [btrfs]
             btrfs_insert_empty_items+0x58/0xa0 [btrfs]
             add_qgroup_item.part.0+0x72/0x210 [btrfs]
             btrfs_quota_enable+0x3bb/0x790 [btrfs]
             btrfs_ioctl_quota_ctl+0xc9/0xe0 [btrfs]
             __x64_sys_ioctl+0x83/0xa0
             do_syscall_64+0x2d/0x70
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      other info that might help us debug this:
    
       Possible unsafe locking scenario:
    
             CPU0                    CPU1
             ----                    ----
        lock(btrfs-root-00);
                                     lock(btrfs-quota-00);
                                     lock(btrfs-root-00);
        lock(btrfs-quota-00);
    
       *** DEADLOCK ***
    
      5 locks held by btrfs/24552:
       #0: ffff9142df431478 (sb_writers#10){.+.+}-{0:0}, at: mnt_want_write_file+0x22/0xa0
       #1: ffff9142f9b10cc0 (&fs_info->subvol_sem){++++}-{3:3}, at: btrfs_ioctl_quota_ctl+0x7b/0xe0 [btrfs]
       #2: ffff9142f9b11a08 (&fs_info->qgroup_ioctl_lock){+.+.}-{3:3}, at: btrfs_quota_enable+0x3b/0x790 [btrfs]
       #3: ffff9142df431698 (sb_internal#2){.+.+}-{0:0}, at: start_transaction+0x406/0x510 [btrfs]
       #4: ffff9142dfc5d0b0 (btrfs-root-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
    
      stack backtrace:
      CPU: 1 PID: 24552 Comm: btrfs Not tainted 5.9.0-default+ #1299
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba527-rebuilt.opensuse.org 04/01/2014
      Call Trace:
       dump_stack+0x77/0x97
       check_noncircular+0xf3/0x110
       check_prev_add+0x91/0xc30
       validate_chain+0x491/0x750
       __lock_acquire+0x3fb/0x730
       lock_acquire.part.0+0x6a/0x130
       ? __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
       ? lock_acquire+0xc4/0x140
       ? __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
       down_read_nested+0x46/0x130
       ? __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
       __btrfs_tree_read_lock+0x35/0x1c0 [btrfs]
       ? btrfs_root_node+0xd9/0x200 [btrfs]
       __btrfs_read_lock_root_node+0x3a/0x50 [btrfs]
       btrfs_search_slot_get_root+0x11d/0x290 [btrfs]
       btrfs_search_slot+0xc3/0x9f0 [btrfs]
       btrfs_insert_empty_items+0x58/0xa0 [btrfs]
       add_qgroup_item.part.0+0x72/0x210 [btrfs]
       btrfs_quota_enable+0x3bb/0x790 [btrfs]
       btrfs_ioctl_quota_ctl+0xc9/0xe0 [btrfs]
       __x64_sys_ioctl+0x83/0xa0
       do_syscall_64+0x2d/0x70
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fix this by dropping the path whenever we find a root item, add the
    qgroup item, and then re-lookup the root item we found and continue
    processing roots.
    
    Reported-by: David Sterba <dsterba@suse.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d2509917188a1b668256a1e5e2e91950edf5fc4
Author: Gabriel Krisman Bertazi <krisman@collabora.com>
Date:   Thu Oct 22 16:58:42 2020 -0400

    blk-cgroup: Pre-allocate tree node on blkg_conf_prep
    
    [ Upstream commit f255c19b3ab46d3cad3b1b2e1036f4c926cb1d0c ]
    
    Similarly to commit 457e490f2b741 ("blkcg: allocate struct blkcg_gq
    outside request queue spinlock"), blkg_create can also trigger
    occasional -ENOMEM failures at the radix insertion because any
    allocation inside blkg_create has to be non-blocking, making it more
    likely to fail.  This causes trouble for userspace tools trying to
    configure io weights who need to deal with this condition.
    
    This patch reduces the occurrence of -ENOMEMs on this path by preloading
    the radix tree element on a GFP_KERNEL context, such that we guarantee
    the later non-blocking insertion won't fail.
    
    A similar solution exists in blkcg_init_queue for the same situation.
    
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89c94a3a8ea2247dbd16600dca5300cafb5151e5
Author: Gabriel Krisman Bertazi <krisman@collabora.com>
Date:   Thu Oct 22 16:58:41 2020 -0400

    blk-cgroup: Fix memleak on error path
    
    [ Upstream commit 52abfcbd57eefdd54737fc8c2dc79d8f46d4a3e5 ]
    
    If new_blkg allocation raced with blk_policy change and
    blkg_lookup_check fails, new_blkg is leaked.
    
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9070c2bc4896e2a3a3b45181e72b412f780e13c0
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Oct 26 12:49:05 2020 +0300

    drm/v3d: Fix double free in v3d_submit_cl_ioctl()
    
    [ Upstream commit 897dbea6b716c0f2c5bcd4ba1eb4d809caba290c ]
    
    Originally this error path used to leak "bin" but then we accidentally
    applied two separate commits to fix it and ended up with a double free.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201026094905.GA1634423@mwanda
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d55c598c7f73c40e433b3d0374934d511547a97
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Thu Oct 15 11:36:42 2020 +0200

    drm/sun4i: frontend: Fix the scaler phase on A33
    
    [ Upstream commit e3190b5e9462067714d267c40d8c8c1d0463dda3 ]
    
    The A33 has a different phase parameter in the Allwinner BSP on the
    channel1 than the one currently applied. Fix this.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Acked-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201015093642.261440-3-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b040fb8758e5c5f9734bf05b5c6ef953c0d00d1
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Thu Oct 15 11:36:41 2020 +0200

    drm/sun4i: frontend: Reuse the ch0 phase for RGB formats
    
    [ Upstream commit 2db9ef9d9e6ea89a9feb5338f58d1f8f83875577 ]
    
    When using the scaler on the A10-like frontend with single-planar formats,
    the current code will setup the channel 0 filter (used for the R or Y
    component) with a different phase parameter than the channel 1 filter (used
    for the G/B or U/V components).
    
    This creates a bleed out that keeps repeating on of the last line of the
    RGB plane across the rest of the display. The Allwinner BSP either applies
    the same phase parameter over both channels or use a separate one, the
    condition being whether the input format is YUV420 or not.
    
    Since YUV420 is both subsampled and multi-planar, and since YUYV is
    subsampled but single-planar, we can rule out the subsampling and assume
    that the condition is actually whether the format is single or
    multi-planar. And it looks like applying the same phase parameter over both
    channels for single-planar formats fixes our issue, while we keep the
    multi-planar formats working properly.
    
    Reported-by: Taras Galchenko <tpgalchenko@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Acked-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201015093642.261440-2-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 644f1d4e1178d1862f6a901b0e39ac041dcc2ec6
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Thu Oct 15 11:36:40 2020 +0200

    drm/sun4i: frontend: Rework a bit the phase data
    
    [ Upstream commit 84c971b356379c621df595bd00c3114579dfa59f ]
    
    The scaler filter phase setup in the allwinner kernel has two different
    cases for setting up the scaler filter, the first one using different phase
    parameters for the two channels, and the second one reusing the first
    channel parameters on the second channel.
    
    The allwinner kernel has a third option where the horizontal phase of the
    second channel will be set to a different value than the vertical one (and
    seems like it's the same value than one used on the first channel).
    However, that code path seems to never be taken, so we can ignore it for
    now, and it's essentially what we're doing so far as well.
    
    Since we will have always the same values across each components of the
    filter setup for a given channel, we can simplify a bit our frontend
    structure by only storing the phase value we want to apply to a given
    channel.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Acked-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201015093642.261440-1-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d971d2691a2119a6d6932a3a03779d96ca39430
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sat Sep 26 01:48:04 2020 +0200

    ARM: dts: mmp3: Add power domain for the camera
    
    [ Upstream commit 202f8e5c4975a95babf3bcdfb2c18952f06b030a ]
    
    The camera interfaces on MMP3 are on a separate power island that needs
    to be turned on for them to operate and, ideally, turned off when the
    cameras are not in use.
    
    This hooks the power island with the camera interfaces in the device
    tree.
    
    Link: https://lore.kernel.org/r/20200925234805.228251-2-lkundrak@v3.sk
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit afed6853ce10c85ddf058130abbaf6313164fc16
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Wed Oct 21 11:53:59 2020 +0200

    of: Fix reserved-memory overlap detection
    
    [ Upstream commit ca05f33316559a04867295dd49f85aeedbfd6bfd ]
    
    The reserved-memory overlap detection code fails to detect overlaps if
    either of the regions starts at address 0x0.  The code explicitly checks
    for and ignores such regions, apparently in order to ignore dynamically
    allocated regions which have an address of 0x0 at this point.  These
    dynamically allocated regions also have a size of 0x0 at this point, so
    fix this by removing the check and sorting the dynamically allocated
    regions ahead of any static regions at address 0x0.
    
    For example, there are two overlaps in this case but they are not
    currently reported:
    
            foo@0 {
                    reg = <0x0 0x2000>;
            };
    
            bar@0 {
                    reg = <0x0 0x1000>;
            };
    
            baz@1000 {
                    reg = <0x1000 0x1000>;
            };
    
            quux {
                    size = <0x1000>;
            };
    
    but they are after this patch:
    
     OF: reserved mem: OVERLAP DETECTED!
     bar@0 (0x00000000--0x00001000) overlaps with foo@0 (0x00000000--0x00002000)
     OF: reserved mem: OVERLAP DETECTED!
     foo@0 (0x00000000--0x00002000) overlaps with baz@1000 (0x00001000--0x00002000)
    
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Link: https://lore.kernel.org/r/ded6fd6b47b58741aabdcc6967f73eca6a3f311e.1603273666.git-series.vincent.whitchurch@axis.com
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 61500bf55a0357cfe8116fbc8f09c024a9417e25
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Oct 22 16:47:16 2020 +0100

    io_uring: don't miss setting IO_WQ_WORK_CONCURRENT
    
    [ Upstream commit feaadc4fc2ebdbd53ffed1735077725855a2af53 ]
    
    Set IO_WQ_WORK_CONCURRENT for all REQ_F_FORCE_ASYNC requests, do that in
    that is also looks better.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99a16993c5f8ec24eba14a638c91904e8d8a8c8d
Author: Anand Moon <linux.amoon@gmail.com>
Date:   Tue Oct 20 14:01:41 2020 +0200

    arm64: dts: amlogic: add missing ethernet reset ID
    
    [ Upstream commit f3362f0c18174a1f334a419ab7d567a36bd1b3f3 ]
    
    Add reset external reset of the ethernet mac controller
    
    Signed-off-by: Anand Moon <linux.amoon@gmail.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Link: https://lore.kernel.org/r/20201020120141.298240-1-jbrunet@baylibre.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 306e15d44882c565fad060938f2ee5c24cf2b84b
Author: Kairui Song <kasong@redhat.com>
Date:   Wed Oct 14 17:24:29 2020 +0800

    hyperv_fb: Update screen_info after removing old framebuffer
    
    [ Upstream commit 3cb73bc3fa2a3cb80b88aa63b48409939e0d996b ]
    
    On gen2 HyperV VM, hyperv_fb will remove the old framebuffer, and the
    new allocated framebuffer address could be at a differnt location,
    and it might be no longer a VGA framebuffer.
    
    Update screen_info so that after kexec the kernel won't try to reuse
    the old invalid/stale framebuffer address as VGA, corrupting memory.
    
    [ mingo: Tidied up the changelog. ]
    
    Signed-off-by: Kairui Song <kasong@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Dexuan Cui <decui@microsoft.com>
    Cc: Jake Oshins <jakeo@microsoft.com>
    Cc: Wei Hu <weh@microsoft.com>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Link: https://lore.kernel.org/r/20201014092429.1415040-3-kasong@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99dc4da7eff3902de84532f9feb7de574a75e716
Author: Kairui Song <kasong@redhat.com>
Date:   Wed Oct 14 17:24:28 2020 +0800

    x86/kexec: Use up-to-dated screen_info copy to fill boot params
    
    [ Upstream commit afc18069a2cb7ead5f86623a5f3d4ad6e21f940d ]
    
    kexec_file_load() currently reuses the old boot_params.screen_info,
    but if drivers have change the hardware state, boot_param.screen_info
    could contain invalid info.
    
    For example, the video type might be no longer VGA, or the frame buffer
    address might be changed. If the kexec kernel keeps using the old screen_info,
    kexec'ed kernel may attempt to write to an invalid framebuffer
    memory region.
    
    There are two screen_info instances globally available, boot_params.screen_info
    and screen_info. Later one is a copy, and is updated by drivers.
    
    So let kexec_file_load use the updated copy.
    
    [ mingo: Tidied up the changelog. ]
    
    Signed-off-by: Kairui Song <kasong@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20201014092429.1415040-2-kasong@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae396da3782139661bb674c43cb69be59a321b68
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Fri Sep 25 23:17:43 2020 +0200

    arm64: dts: amlogic: meson-g12: use the G12A specific dwmac compatible
    
    [ Upstream commit 1fdc97ae450ede2b4911d6737a57e6fca63b5f4a ]
    
    We have a dedicated "amlogic,meson-g12a-dwmac" compatible string for the
    Ethernet controller since commit 3efdb92426bf4 ("dt-bindings: net:
    dwmac-meson: Add a compatible string for G12A onwards").
    Using the AXG compatible string worked fine so far because the
    dwmac-meson8b driver doesn't handle the newly introduced register bits
    for G12A. However, once that changes the driver must be probed with the
    correct compatible string to manage these new register bits.
    
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Link: https://lore.kernel.org/r/20200925211743.537496-1-martin.blumenstingl@googlemail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd53a81b6a1b7a4506aa704a85faa5c3e5a0ff70
Author: Scott K Logan <logans@cottsay.net>
Date:   Fri Sep 25 01:43:53 2020 -0700

    arm64: dts: meson: add missing g12 rng clock
    
    [ Upstream commit a1afbbb0285797e01313779c71287d936d069245 ]
    
    This adds the missing perpheral clock for the RNG for Amlogic G12. As
    stated in amlogic,meson-rng.yaml, this isn't always necessary for the
    RNG to function, but is better to have in case the clock is disabled for
    some reason prior to loading.
    
    Signed-off-by: Scott K Logan <logans@cottsay.net>
    Suggested-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Link: https://lore.kernel.org/r/520a1a8ec7a958b3d918d89563ec7e93a4100a45.camel@cottsay.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7490851b3c8d2c76695cd36d463a2b1642cc41ab
Author: Clément Péron <peron.clem@gmail.com>
Date:   Sat Oct 3 12:03:32 2020 +0200

    ARM: dts: sun4i-a10: fix cpu_alert temperature
    
    [ Upstream commit dea252fa41cd8ce332d148444e4799235a8a03ec ]
    
    When running dtbs_check thermal_zone warn about the
    temperature declared.
    
    thermal-zones: cpu-thermal:trips:cpu-alert0:temperature:0:0: 850000 is greater than the maximum of 200000
    
    It's indeed wrong the real value is 85°C and not 850°C.
    
    Signed-off-by: Clément Péron <peron.clem@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://lore.kernel.org/r/20201003100332.431178-1-peron.clem@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 305da744c138487864a46b2fb0bd7cf54e1e03b4
Author: Fangrui Song <maskray@google.com>
Date:   Mon Nov 2 17:23:58 2020 -0800

    x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S
    
    commit 4d6ffa27b8e5116c0abb318790fd01d4e12d75e6 upstream.
    
    Commit
    
      393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions")
    
    added .weak directives to arch/x86/lib/mem*_64.S instead of changing the
    existing ENTRY macros to WEAK. This can lead to the assembly snippet
    
      .weak memcpy
      ...
      .globl memcpy
    
    which will produce a STB_WEAK memcpy with GNU as but STB_GLOBAL memcpy
    with LLVM's integrated assembler before LLVM 12. LLVM 12 (since
    https://reviews.llvm.org/D90108) will error on such an overridden symbol
    binding.
    
    Commit
    
      ef1e03152cb0 ("x86/asm: Make some functions local")
    
    changed ENTRY in arch/x86/lib/memcpy_64.S to SYM_FUNC_START_LOCAL, which
    was ineffective due to the preceding .weak directive.
    
    Use the appropriate SYM_FUNC_START_WEAK instead.
    
    Fixes: 393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions")
    Fixes: ef1e03152cb0 ("x86/asm: Make some functions local")
    Reported-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Fangrui Song <maskray@google.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201103012358.168682-1-maskray@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f953584b6db32e0f37d66f792ffdb82e0319b65
Author: Mike Galbraith <efault@gmx.de>
Date:   Wed Nov 4 16:12:44 2020 +0100

    futex: Handle transient "ownerless" rtmutex state correctly
    
    commit 9f5d1c336a10c0d24e83e40b4c1b9539f7dba627 upstream.
    
    Gratian managed to trigger the BUG_ON(!newowner) in fixup_pi_state_owner().
    This is one possible chain of events leading to this:
    
    Task Prio       Operation
    T1   120        lock(F)
    T2   120        lock(F)   -> blocks (top waiter)
    T3   50 (RT)    lock(F)   -> boosts T1 and blocks (new top waiter)
    XX              timeout/  -> wakes T2
                    signal
    T1   50         unlock(F) -> wakes T3 (rtmutex->owner == NULL, waiter bit is set)
    T2   120        cleanup   -> try_to_take_mutex() fails because T3 is the top waiter
                                 and the lower priority T2 cannot steal the lock.
                              -> fixup_pi_state_owner() sees newowner == NULL -> BUG_ON()
    
    The comment states that this is invalid and rt_mutex_real_owner() must
    return a non NULL owner when the trylock failed, but in case of a queued
    and woken up waiter rt_mutex_real_owner() == NULL is a valid transient
    state. The higher priority waiter has simply not yet managed to take over
    the rtmutex.
    
    The BUG_ON() is therefore wrong and this is just another retry condition in
    fixup_pi_state_owner().
    
    Drop the locks, so that T3 can make progress, and then try the fixup again.
    
    Gratian provided a great analysis, traces and a reproducer. The analysis is
    to the point, but it confused the hell out of that tglx dude who had to
    page in all the futex horrors again. Condensed version is above.
    
    [ tglx: Wrote comment and changelog ]
    
    Fixes: c1e2f0eaf015 ("futex: Avoid violating the 10th rule of futex")
    Reported-by: Gratian Crisan <gratian.crisan@ni.com>
    Signed-off-by: Mike Galbraith <efault@gmx.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/87a6w6x7bb.fsf@ni.com
    Link: https://lore.kernel.org/r/87sg9pkvf7.fsf@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03580221f4290d80b5b396604326f95b6ec9f633
Author: Qiujun Huang <hqjagain@gmail.com>
Date:   Fri Oct 30 00:19:05 2020 +0800

    tracing: Fix out of bounds write in get_trace_buf
    
    commit c1acb4ac1a892cf08d27efcb964ad281728b0545 upstream.
    
    The nesting count of trace_printk allows for 4 levels of nesting. The
    nesting counter starts at zero and is incremented before being used to
    retrieve the current context's buffer. But the index to the buffer uses the
    nesting counter after it was incremented, and not its original number,
    which in needs to do.
    
    Link: https://lkml.kernel.org/r/20201029161905.4269-1-hqjagain@gmail.com
    
    Cc: stable@vger.kernel.org
    Fixes: 3d9622c12c887 ("tracing: Add barrier to trace_printk() buffer nesting modification")
    Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d42bafdcd8348a8cf23ff0f8d657b01c854b33ae
Author: Martin Hundebøll <martin@geanix.com>
Date:   Wed Oct 14 11:02:30 2020 +0200

    spi: bcm2835: fix gpio cs level inversion
    
    commit 5e31ba0c0543a04483b53151eb5b7413efece94c upstream.
    
    The work on improving gpio chip-select in spi core, and the following
    fixes, has caused the bcm2835 spi driver to use wrong levels. Fix this
    by simply removing level handling in the bcm2835 driver, and let the
    core do its work.
    
    Fixes: 3e5ec1db8bfe ("spi: Fix SPI_CS_HIGH setting when using native and GPIO CS")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Martin Hundebøll <martin@geanix.com>
    Link: https://lore.kernel.org/r/20201014090230.2706810-1-martin@geanix.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ba48d276dab93bb5f1b2391e541547a4ed8b229
Author: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Date:   Mon Nov 2 22:27:27 2020 +0100

    regulator: defer probe when trying to get voltage from unresolved supply
    
    commit cf1ad559a20d1930aa7b47a52f54e1f8718de301 upstream.
    
    regulator_get_voltage_rdev() is called in regulator probe() when
    applying machine constraints.  The "fixed" commit exposed the problem
    that non-bypassed regulators can forward the request to its parent
    (like bypassed ones) supply. Return -EPROBE_DEFER when the supply
    is expected but not resolved yet.
    
    Fixes: aea6cb99703e ("regulator: resolve supply after creating regulator")
    Cc: stable@vger.kernel.org
    Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
    Reported-by: Ondřej Jirman <megous@megous.com>
    Reported-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Tested-by: Ondřej Jirman <megous@megous.com>
    Link: https://lore.kernel.org/r/a9041d68b4d35e4a2dd71629c8a6422662acb5ee.1604351936.git.mirq-linux@rere.qmqm.pl
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f22d0206d6b4f0a7d548ff253b63ce46a847151f
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Oct 29 19:35:08 2020 -0400

    ftrace: Handle tracing when switching between context
    
    commit 726b3d3f141fba6f841d715fc4d8a4a84f02c02a upstream.
    
    When an interrupt or NMI comes in and switches the context, there's a delay
    from when the preempt_count() shows the update. As the preempt_count() is
    used to detect recursion having each context have its own bit get set when
    tracing starts, and if that bit is already set, it is considered a recursion
    and the function exits. But if this happens in that section where context
    has changed but preempt_count() has not been updated, this will be
    incorrectly flagged as a recursion.
    
    To handle this case, create another bit call TRANSITION and test it if the
    current context bit is already set. Flag the call as a recursion if the
    TRANSITION bit is already set, and if not, set it and continue. The
    TRANSITION bit will be cleared normally on the return of the function that
    set it, or if the current context bit is clear, set it and clear the
    TRANSITION bit to allow for another transition between the current context
    and an even higher one.
    
    Cc: stable@vger.kernel.org
    Fixes: edc15cafcbfa3 ("tracing: Avoid unnecessary multiple recursion checks")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25d4a0366ad7d3c201747b8e640e87ee4feba129
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Oct 29 17:31:45 2020 -0400

    ftrace: Fix recursion check for NMI test
    
    commit ee11b93f95eabdf8198edd4668bf9102e7248270 upstream.
    
    The code that checks recursion will work to only do the recursion check once
    if there's nested checks. The top one will do the check, the other nested
    checks will see recursion was already checked and return zero for its "bit".
    On the return side, nothing will be done if the "bit" is zero.
    
    The problem is that zero is returned for the "good" bit when in NMI context.
    This will set the bit for NMIs making it look like *all* NMI tracing is
    recursing, and prevent tracing of anything in NMI context!
    
    The simple fix is to return "bit + 1" and subtract that bit on the end to
    get the real bit.
    
    Cc: stable@vger.kernel.org
    Fixes: edc15cafcbfa3 ("tracing: Avoid unnecessary multiple recursion checks")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be38f0141ad13e2165df663bc68f1dcbf8f4b5e6
Author: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Date:   Mon Oct 5 10:48:03 2020 +0200

    mtd: spi-nor: Don't copy self-pointing struct around
    
    commit 69a8eed58cc09aea3b01a64997031dd5d3c02c07 upstream.
    
    spi_nor_parse_sfdp() modifies the passed structure so that it points to
    itself (params.erase_map.regions to params.erase_map.uniform_region). This
    makes it impossible to copy the local struct anywhere else.
    
    Therefore only use memcpy() in backup-restore scenario. The bug may show up
    like below:
    
    BUG: unable to handle page fault for address: ffffc90000b377f8
    Oops: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 4 PID: 3500 Comm: flashcp Tainted: G           O      5.4.53-... #1
    ...
    RIP: 0010:spi_nor_erase+0x8e/0x5c0
    Code: 64 24 18 89 db 4d 8b b5 d0 04 00 00 4c 89 64 24 18 4c 89 64 24 20 eb 12 a8 10 0f 85 59 02 00 00 49 83 c6 10 0f 84 4f 02 00 00 <49> 8b 06 48 89 c2 48 83 e2 c0 48 89 d1 49 03 4e 08 48 39 cb 73 d8
    RSP: 0018:ffffc9000217fc48 EFLAGS: 00010206
    RAX: 0000000000740000 RBX: 0000000000000000 RCX: 0000000000740000
    RDX: ffff8884550c9980 RSI: ffff88844f9c0bc0 RDI: ffff88844ede7bb8
    RBP: 0000000000740000 R08: ffffffff815bfbe0 R09: ffff88844f9c0bc0
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffc9000217fc60
    R13: ffff88844ede7818 R14: ffffc90000b377f8 R15: 0000000000000000
    FS:  00007f4699780500(0000) GS:ffff88846ff00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffc90000b377f8 CR3: 00000004538ee000 CR4: 0000000000340fe0
    Call Trace:
     part_erase+0x27/0x50
     mtdchar_ioctl+0x831/0xba0
     ? filemap_map_pages+0x186/0x3d0
     ? do_filp_open+0xad/0x110
     ? _copy_to_user+0x22/0x30
     ? cp_new_stat+0x150/0x180
     mtdchar_unlocked_ioctl+0x2a/0x40
     do_vfs_ioctl+0xa0/0x630
     ? __do_sys_newfstat+0x3c/0x60
     ksys_ioctl+0x70/0x80
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x6a/0x200
     ? prepare_exit_to_usermode+0x50/0xd0
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x7f46996b6817
    
    Cc: stable@vger.kernel.org
    Fixes: c46872170a54 ("mtd: spi-nor: Move erase_map to 'struct spi_nor_flash_parameter'")
    Co-developed-by: Matija Glavinic Pecotic <matija.glavinic-pecotic.ext@nokia.com>
    Signed-off-by: Matija Glavinic Pecotic <matija.glavinic-pecotic.ext@nokia.com>
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Tested-by: Baurzhan Ismagulov <ibr@radix50.net>
    Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20201005084803.23460-1-alexander.sverdlin@nokia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 223258ab99b833f3f278dbb76be823969a037b69
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Wed Oct 28 15:07:25 2020 +0800

    iommu/vt-d: Fix kernel NULL pointer dereference in find_domain()
    
    commit 6097df457adfb67cb75ca700fd1085ede2e1201d upstream.
    
    If calling find_domain() for a device which hasn't been probed by the
    iommu core, below kernel NULL pointer dereference issue happens.
    
    [  362.736947] BUG: kernel NULL pointer dereference, address: 0000000000000038
    [  362.743953] #PF: supervisor read access in kernel mode
    [  362.749115] #PF: error_code(0x0000) - not-present page
    [  362.754278] PGD 0 P4D 0
    [  362.756843] Oops: 0000 [#1] SMP NOPTI
    [  362.760528] CPU: 0 PID: 844 Comm: cat Not tainted 5.9.0-rc4-intel-next+ #1
    [  362.767428] Hardware name: Intel Corporation Ice Lake Client Platform/IceLake
                   U DDR4 SODIMM PD RVP TLC, BIOS ICLSFWR1.R00.3384.A02.1909200816
                   09/20/2019
    [  362.781109] RIP: 0010:find_domain+0xd/0x40
    [  362.785234] Code: 48 81 fb 60 28 d9 b2 75 de 5b 41 5c 41 5d 5d c3 0f 1f 00 66
                         2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 87 e0 02 00
                         00 55 <48> 8b 40 38 48 89 e5 48 83 f8 fe 0f 94 c1 48 85 ff
                         0f 94 c2 08 d1
    [  362.804041] RSP: 0018:ffffb09cc1f0bd38 EFLAGS: 00010046
    [  362.809292] RAX: 0000000000000000 RBX: ffff905b98e4fac8 RCX: 0000000000000000
    [  362.816452] RDX: 0000000000000001 RSI: ffff905b98e4fac8 RDI: ffff905b9ccd40d0
    [  362.823617] RBP: ffffb09cc1f0bda0 R08: ffffb09cc1f0bd48 R09: 000000000000000f
    [  362.830778] R10: ffffffffb266c080 R11: ffff905b9042602d R12: ffff905b98e4fac8
    [  362.837944] R13: ffffb09cc1f0bd48 R14: ffff905b9ccd40d0 R15: ffff905b98e4fac8
    [  362.845108] FS:  00007f8485460740(0000) GS:ffff905b9fc00000(0000)
                   knlGS:0000000000000000
    [  362.853227] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  362.858996] CR2: 0000000000000038 CR3: 00000004627a6003 CR4: 0000000000770ef0
    [  362.866161] PKRU: fffffffc
    [  362.868890] Call Trace:
    [  362.871363]  ? show_device_domain_translation+0x32/0x100
    [  362.876700]  ? bind_store+0x110/0x110
    [  362.880387]  ? klist_next+0x91/0x120
    [  362.883987]  ? domain_translation_struct_show+0x50/0x50
    [  362.889237]  bus_for_each_dev+0x79/0xc0
    [  362.893121]  domain_translation_struct_show+0x36/0x50
    [  362.898204]  seq_read+0x135/0x410
    [  362.901545]  ? handle_mm_fault+0xeb8/0x1750
    [  362.905755]  full_proxy_read+0x5c/0x90
    [  362.909526]  vfs_read+0xa6/0x190
    [  362.912782]  ksys_read+0x61/0xe0
    [  362.916037]  __x64_sys_read+0x1a/0x20
    [  362.919725]  do_syscall_64+0x37/0x80
    [  362.923329]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  362.928405] RIP: 0033:0x7f84855c5e95
    
    Filter out those devices to avoid such error.
    
    Fixes: e2726daea583d ("iommu/vt-d: debugfs: Add support to show page table internals")
    Reported-and-tested-by: Xu Pengfei <pengfei.xu@intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Cc: stable@vger.kernel.org#v5.6+
    Link: https://lore.kernel.org/r/20201028070725.24979-1-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12325bc7837b101ab782e12061683b1550250730
Author: John Clements <john.clements@amd.com>
Date:   Tue Nov 3 16:19:44 2020 +0800

    drm/amdgpu: resolved ASD loading issue on sienna
    
    commit 26f4fd6d87cbf72376ee4f6a9dca1c95a3143563 upstream.
    
    updated fw header v2 parser to set asd fw memory
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: John Clements <john.clements@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org # 5.9.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fb1132786c143048ea5697398c6e58994a86516
Author: Likun Gao <Likun.Gao@amd.com>
Date:   Fri Oct 30 14:22:03 2020 +0800

    drm/amdgpu: update golden setting for sienna_cichlid
    
    commit a2404fd4823053db08d82582f4361e0978a98a24 upstream.
    
    Update golden setting for sienna_cichlid.
    
    Signed-off-by: Likun Gao <Likun.Gao@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@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 9961dccadaebab32db887fd9cfd839a12cc53787
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Mon Nov 2 15:31:27 2020 -0500

    ring-buffer: Fix recursion protection transitions between interrupt context
    
    commit b02414c8f045ab3b9afc816c3735bc98c5c3d262 upstream.
    
    The recursion protection of the ring buffer depends on preempt_count() to be
    correct. But it is possible that the ring buffer gets called after an
    interrupt comes in but before it updates the preempt_count(). This will
    trigger a false positive in the recursion code.
    
    Use the same trick from the ftrace function callback recursion code which
    uses a "transition" bit that gets set, to allow for a single recursion for
    to handle transitions between contexts.
    
    Cc: stable@vger.kernel.org
    Fixes: 567cd4da54ff4 ("ring-buffer: User context bit recursion checking")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 591ce666fd163c6e6fb6d3ce073334278f9fd116
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Nov 2 21:11:30 2020 +0100

    gfs2: Don't call cancel_delayed_work_sync from within delete work function
    
    commit 6bd1c7bd4ee7b17980cdc347522dcb76feac9b98 upstream.
    
    Right now, we can end up calling cancel_delayed_work_sync from within
    delete_work_func via gfs2_lookup_by_inum -> gfs2_inode_lookup ->
    gfs2_cancel_delete_work.  When that happens, it will result in a
    deadlock.  Instead, gfs2_inode_lookup should skip the call to
    gfs2_cancel_delete_work when called from delete_work_func (blktype ==
    GFS2_BLKST_UNLINKED).
    
    Reported-by: Alexander Ahring Oder Aring <aahringo@redhat.com>
    Fixes: a0e3cc65fa29 ("gfs2: Turn gl_delete into a delayed work")
    Cc: stable@vger.kernel.org # v5.8+
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee4891e425bedb81ae866d4cf3e9e4a0406a5aca
Author: Alexander Aring <aahringo@redhat.com>
Date:   Mon Oct 26 10:52:29 2020 -0400

    gfs2: Wake up when sd_glock_disposal becomes zero
    
    commit da7d554f7c62d0c17c1ac3cc2586473c2d99f0bd upstream.
    
    Commit fc0e38dae645 ("GFS2: Fix glock deallocation race") fixed a
    sd_glock_disposal accounting bug by adding a missing atomic_dec
    statement, but it failed to wake up sd_glock_wait when that decrement
    causes sd_glock_disposal to reach zero.  As a consequence,
    gfs2_gl_hash_clear can now run into a 10-minute timeout instead of
    being woken up.  Add the missing wakeup.
    
    Fixes: fc0e38dae645 ("GFS2: Fix glock deallocation race")
    Cc: stable@vger.kernel.org # v2.6.39+
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c3962ba12c4e8cd1a40764a6b07b3604cbaa298
Author: Song Liu <songliubraving@fb.com>
Date:   Fri Oct 30 16:54:31 2020 -0700

    perf hists browser: Increase size of 'buf' in perf_evsel__hists_browse()
    
    commit 86449b12f626a65d2a2ecfada1e024488471f9e2 upstream.
    
    Making perf with gcc-9.1.1 generates the following warning:
    
        CC       ui/browsers/hists.o
      ui/browsers/hists.c: In function 'perf_evsel__hists_browse':
      ui/browsers/hists.c:3078:61: error: '%d' directive output may be \
      truncated writing between 1 and 11 bytes into a region of size \
      between 2 and 12 [-Werror=format-truncation=]
    
       3078 |       "Max event group index to sort is %d (index from 0 to %d)",
            |                                                             ^~
      ui/browsers/hists.c:3078:7: note: directive argument in the range [-2147483648, 8]
       3078 |       "Max event group index to sort is %d (index from 0 to %d)",
            |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from /usr/include/stdio.h:937,
                       from ui/browsers/hists.c:5:
    
    IOW, the string in line 3078 might be too long for buf[] of 64 bytes.
    
    Fix this by increasing the size of buf[] to 128.
    
    Fixes: dbddf1747441  ("perf report/top TUI: Support hotkeys to let user select any event for sorting")
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: stable@vger.kernel.org # v5.7+
    Link: http://lore.kernel.org/lkml/20201030235431.534417-1-songliubraving@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de544d15cae2218ca55e63e7d2cdf9807a6a173a
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Sun Nov 1 17:08:00 2020 -0800

    mm: always have io_remap_pfn_range() set pgprot_decrypted()
    
    commit f8f6ae5d077a9bdaf5cbf2ac960a5d1a04b47482 upstream.
    
    The purpose of io_remap_pfn_range() is to map IO memory, such as a
    memory mapped IO exposed through a PCI BAR.  IO devices do not
    understand encryption, so this memory must always be decrypted.
    Automatically call pgprot_decrypted() as part of the generic
    implementation.
    
    This fixes a bug where enabling AMD SME causes subsystems, such as RDMA,
    using io_remap_pfn_range() to expose BAR pages to user space to fail.
    The CPU will encrypt access to those BAR pages instead of passing
    unencrypted IO directly to the device.
    
    Places not mapping IO should use remap_pfn_range().
    
    Fixes: aca20d546214 ("x86/mm: Add support to make use of Secure Memory Encryption")
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: "Dave Young" <dyoung@redhat.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Larry Woodman <lwoodman@redhat.com>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Toshimitsu Kani <toshi.kani@hpe.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/0-v1-025d64bdf6c4+e-amd_sme_fix_jgg@nvidia.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08bf0cde2289d95125a187b6b936be4c3daced71
Author: Zqiang <qiang.zhang@windriver.com>
Date:   Sun Nov 1 17:07:53 2020 -0800

    kthread_worker: prevent queuing delayed work from timer_fn when it is being canceled
    
    commit 6993d0fdbee0eb38bfac350aa016f65ad11ed3b1 upstream.
    
    There is a small race window when a delayed work is being canceled and
    the work still might be queued from the timer_fn:
    
            CPU0                                            CPU1
    kthread_cancel_delayed_work_sync()
       __kthread_cancel_work_sync()
         __kthread_cancel_work()
            work->canceling++;
                                                  kthread_delayed_work_timer_fn()
                                                       kthread_insert_work();
    
    BUG: kthread_insert_work() should not get called when work->canceling is
    set.
    
    Signed-off-by: Zqiang <qiang.zhang@windriver.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201014083030.16895-1-qiang.zhang@windriver.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6327a768d99a9c56a66aa9c2c9ed52cabe3a194
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Sun Nov 1 17:07:47 2020 -0800

    lib/crc32test: remove extra local_irq_disable/enable
    
    commit aa4e460f0976351fddd2f5ac6e08b74320c277a1 upstream.
    
    Commit 4d004099a668 ("lockdep: Fix lockdep recursion") uncovered the
    following issue in lib/crc32test reported on s390:
    
      BUG: using __this_cpu_read() in preemptible [00000000] code: swapper/0/1
      caller is lockdep_hardirqs_on_prepare+0x48/0x270
      CPU: 6 PID: 1 Comm: swapper/0 Not tainted 5.9.0-next-20201015-15164-g03d992bd2de6 #19
      Hardware name: IBM 3906 M04 704 (LPAR)
      Call Trace:
        lockdep_hardirqs_on_prepare+0x48/0x270
        trace_hardirqs_on+0x9c/0x1b8
        crc32_test.isra.0+0x170/0x1c0
        crc32test_init+0x1c/0x40
        do_one_initcall+0x40/0x130
        do_initcalls+0x126/0x150
        kernel_init_freeable+0x1f6/0x230
        kernel_init+0x22/0x150
        ret_from_fork+0x24/0x2c
      no locks held by swapper/0/1.
    
    Remove extra local_irq_disable/local_irq_enable helpers calls.
    
    Fixes: 5fb7f87408f1 ("lib: add module support to crc32 tests")
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lkml.kernel.org/r/patch.git-4369da00c06e.your-ad-here.call-01602859837-ext-1679@work.hours
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cc7790a8834557c84248372b1d70c5a55e8b746
Author: Shijie Luo <luoshijie1@huawei.com>
Date:   Sun Nov 1 17:07:40 2020 -0800

    mm: mempolicy: fix potential pte_unmap_unlock pte error
    
    commit 3f08842098e842c51e3b97d0dcdebf810b32558e upstream.
    
    When flags in queue_pages_pte_range don't have MPOL_MF_MOVE or
    MPOL_MF_MOVE_ALL bits, code breaks and passing origin pte - 1 to
    pte_unmap_unlock seems like not a good idea.
    
    queue_pages_pte_range can run in MPOL_MF_MOVE_ALL mode which doesn't
    migrate misplaced pages but returns with EIO when encountering such a
    page.  Since commit a7f40cfe3b7a ("mm: mempolicy: make mbind() return
    -EIO when MPOL_MF_STRICT is specified") and early break on the first pte
    in the range results in pte_unmap_unlock on an underflow pte.  This can
    lead to lockups later on when somebody tries to lock the pte resp.
    page_table_lock again..
    
    Fixes: a7f40cfe3b7a ("mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified")
    Signed-off-by: Shijie Luo <luoshijie1@huawei.com>
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Feilong Lin <linfeilong@huawei.com>
    Cc: Shijie Luo <luoshijie1@huawei.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201019074853.50856-1-luoshijie1@huawei.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f87004c0b2bdf0f1066b88795d8e6c1dfad6cea0
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Sun Nov 1 17:07:27 2020 -0800

    hugetlb_cgroup: fix reservation accounting
    
    commit 79aa925bf239c234be8586780e482872dc4690dd upstream.
    
    Michal Privoznik was using "free page reporting" in QEMU/virtio-balloon
    with hugetlbfs and hit the warning below.  QEMU with free page hinting
    uses fallocate(FALLOC_FL_PUNCH_HOLE) to discard pages that are reported
    as free by a VM.  The reporting granularity is in pageblock granularity.
    So when the guest reports 2M chunks, we fallocate(FALLOC_FL_PUNCH_HOLE)
    one huge page in QEMU.
    
      WARNING: CPU: 7 PID: 6636 at mm/page_counter.c:57 page_counter_uncharge+0x4b/0x50
      Modules linked in: ...
      CPU: 7 PID: 6636 Comm: qemu-system-x86 Not tainted 5.9.0 #137
      Hardware name: Gigabyte Technology Co., Ltd. X570 AORUS PRO/X570 AORUS PRO, BIOS F21 07/31/2020
      RIP: 0010:page_counter_uncharge+0x4b/0x50
      ...
      Call Trace:
        hugetlb_cgroup_uncharge_file_region+0x4b/0x80
        region_del+0x1d3/0x300
        hugetlb_unreserve_pages+0x39/0xb0
        remove_inode_hugepages+0x1a8/0x3d0
        hugetlbfs_fallocate+0x3c4/0x5c0
        vfs_fallocate+0x146/0x290
        __x64_sys_fallocate+0x3e/0x70
        do_syscall_64+0x33/0x40
        entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Investigation of the issue uncovered bugs in hugetlb cgroup reservation
    accounting.  This patch addresses the found issues.
    
    Fixes: 075a61d07a8e ("hugetlb_cgroup: add accounting for shared mappings")
    Reported-by: Michal Privoznik <mprivozn@redhat.com>
    Co-developed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Tested-by: Michal Privoznik <mprivozn@redhat.com>
    Reviewed-by: Mina Almasry <almasrymina@google.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Cc: <stable@vger.kernel.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: "Aneesh Kumar K . V" <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Tejun Heo <tj@kernel.org>
    Link: https://lkml.kernel.org/r/20201021204426.36069-1-mike.kravetz@oracle.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14ad9c5a9b89793bc840d7386bfe49dffdc0f594
Author: Geoffrey D. Bennett <g@b4.vu>
Date:   Wed Nov 4 22:37:05 2020 +1030

    ALSA: usb-audio: Add implicit feedback quirk for MODX
    
    commit 26201ddc1373c99b2a67c5774da2f0eecd749b93 upstream.
    
    This patch fixes audio distortion on playback for the Yamaha MODX.
    
    Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
    Tested-by: Frank Slotta <frank.slotta@posteo.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201104120705.GA19126@b4.vu
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0494fe79feef2c0a50ca078563cd0fa3af492587
Author: Geoffrey D. Bennett <g@b4.vu>
Date:   Wed Nov 4 22:27:17 2020 +1030

    ALSA: usb-audio: Add implicit feedback quirk for Qu-16
    
    commit 0938ecae432e7ac8b01080c35dd81d50a1e43033 upstream.
    
    This patch fixes audio distortion on playback for the Allen&Heath
    Qu-16.
    
    Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201104115717.GA19046@b4.vu
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94af1b64983eddaed06a402b8dee08342faaa5e0
Author: Artem Lapkin <art@khadas.com>
Date:   Tue Nov 3 18:08:09 2020 +0800

    ALSA: usb-audio: add usb vendor id as DSD-capable for Khadas devices
    
    commit 07815a2b3501adeaae6384a25b9c4a9c81dae59f upstream.
    
    Khadas audio devices ( USB_ID_VENDOR 0x3353 )
    have DSD-capable implementations from XMOS
    need add new usb vendor id for recognition
    
    Signed-off-by: Artem Lapkin <art@khadas.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201103103311.5435-1-art@khadas.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c77099bc9b725feebb94c9af25d1b1dce8659eb4
Author: Keith Winstein <keithw@cs.stanford.edu>
Date:   Sun Oct 25 22:05:47 2020 -0700

    ALSA: usb-audio: Add implicit feedback quirk for Zoom UAC-2
    
    commit f15cfca818d756dd1c9492530091dfd583359db3 upstream.
    
    The Zoom UAC-2 USB audio interface provides an async playback endpoint
    ("1 OUT (ASYNC)") and capture endpoint ("2 IN (ASYNC)"), both with
    2-channel S32_LE in 44.1, 48, 88.2, 96, 176.4, or 192
    kilosamples/s. The device provides explicit feedback to adjust the
    host's playback rate, but the feedback appears unstable and biased
    relative to the device's capture rate.
    
    "alsaloop -t 1000" experiences playback underruns and tries to
    resample the captured audio to match the varying playback
    rate. Forcing the kernel to use implicit feedback appears to
    produce more stable results. This causes the host to transmit one
    playback sample for each capture sample received. (Zoom North America
    has been notified of this change.)
    
    Signed-off-by: Keith Winstein <keithw@cs.stanford.edu>
    Tested-by: Keith Winstein <keithw@cs.stanford.edu>
    Cc: <stable@vger.kernel.org>
    BugLink: https://lore.kernel.org/r/20201027071841.GA164525@trolley.csail.mit.edu
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53881a9212e240d7cc2073f98957ba38dee94a76
Author: Kailang Yang <kailang@realtek.com>
Date:   Tue Nov 3 15:40:35 2020 +0800

    ALSA: hda/realtek - Enable headphone for ASUS TM420
    
    commit ef9ce66fab959c66d270bbee7ca79b92ee957893 upstream.
    
    ASUS TM420 had depop circuit for headphone.
    It need to turn on by COEF bit.
    
    [ fixed the missing enum definition by tiwai ]
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/3d6177d7023b4783bf2793861c577ada@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 912efd21bf82a5a3052d27d293717e92dbd15d8b
Author: Kailang Yang <kailang@realtek.com>
Date:   Tue Oct 27 16:46:38 2020 +0800

    ALSA: hda/realtek - Fixed HP headset Mic can't be detected
    
    commit 8a8de09cb2adc119104f35044d1a840dd47aa9d8 upstream.
    
    System boot with plugged headset. It will not detect headset Mic.
    It will happen on cold boot restart resume state.
    Quirk by SSID change to quirk by pin verb.
    
    Fixes: 13468bfa8c58 ("ALSA: hda/realtek - set mic to auto detect on a HP AIO machine")
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/f42ae1ede1cf47029ae2bef1a42caf03@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c39e4808c860300f92ea38f665151e858985f89
Author: Lee Jones <lee.jones@linaro.org>
Date:   Mon Nov 2 13:32:42 2020 -0500

    Fonts: Replace discarded const qualifier
    
    commit 9522750c66c689b739e151fcdf895420dc81efc0 upstream.
    
    Commit 6735b4632def ("Fonts: Support FONT_EXTRA_WORDS macros for built-in
    fonts") introduced the following error when building rpc_defconfig (only
    this build appears to be affected):
    
     `acorndata_8x8' referenced in section `.text' of arch/arm/boot/compressed/ll_char_wr.o:
        defined in discarded section `.data' of arch/arm/boot/compressed/font.o
     `acorndata_8x8' referenced in section `.data.rel.ro' of arch/arm/boot/compressed/font.o:
        defined in discarded section `.data' of arch/arm/boot/compressed/font.o
     make[3]: *** [/scratch/linux/arch/arm/boot/compressed/Makefile:191: arch/arm/boot/compressed/vmlinux] Error 1
     make[2]: *** [/scratch/linux/arch/arm/boot/Makefile:61: arch/arm/boot/compressed/vmlinux] Error 2
     make[1]: *** [/scratch/linux/arch/arm/Makefile:317: zImage] Error 2
    
    The .data section is discarded at link time.  Reinstating acorndata_8x8 as
    const ensures it is still available after linking.  Do the same for the
    other 12 built-in fonts as well, for consistency purposes.
    
    Cc: <stable@vger.kernel.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Fixes: 6735b4632def ("Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts")
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Co-developed-by: Peilin Ye <yepeilin.cs@gmail.com>
    Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201102183242.2031659-1-yepeilin.cs@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7626a0e901c40c91ce0e28fc6aaa8791cb9f99c6
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Sep 29 18:31:32 2020 -0400

    drm/nouveau/kms/nv50-: Fix clock checking algorithm in nv50_dp_mode_valid()
    
    commit d7787cc04e0a1f2043264d1550465081096bd065 upstream.
    
    While I thought I had this correct (since it actually did reject modes
    like I expected during testing), Ville Syrjala from Intel pointed out
    that the logic here isn't correct. max_clock refers to the max data rate
    supported by the DP encoder. So, limiting it to the output of ds_clock (which
    refers to the maximum dotclock of the downstream DP device) doesn't make any
    sense. Additionally, since we're using the connector's bpc as the canonical BPC
    we should use this in mode_valid until we support dynamically setting the bpp
    based on bandwidth constraints.
    
    https://lists.freedesktop.org/archives/dri-devel/2020-September/280276.html
    
    For more info.
    
    So, let's rewrite this using Ville's advice.
    
    v2:
    * Ville pointed out I mixed up the dotclock and the link rate. So fix that...
    * ...and also rename all the variables in this function to be more appropriately
      labeled so I stop mixing them up.
    * Reuse the bpp from the connector for now until we have dynamic bpp selection.
    * Use use DIV_ROUND_UP for calculating the mode rate like i915 does, which we
      should also have been doing from the start
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Fixes: 409d38139b42 ("drm/nouveau/kms/nv50-: Use downstream DP clock limits for mode validation")
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7ea105620623023b6608c5dc50b0c8b9915dddb
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Sep 29 18:31:31 2020 -0400

    drm/nouveau/kms/nv50-: Get rid of bogus nouveau_conn_mode_valid()
    
    commit 2d831155cf0607566e43d8465da33774b2dc7221 upstream.
    
    Ville also pointed out that I got a lot of the logic here wrong as well, whoops.
    While I don't think anyone's likely using 3D output with nouveau, the next patch
    will make nouveau_conn_mode_valid() make a lot less sense. So, let's just get
    rid of it and open-code it like before, while taking care to move the 3D frame
    packing calculations on the dot clock into the right place.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Fixes: d6a9efece724 ("drm/nouveau/kms/nv50-: Share DP SST mode_valid() handling with MST")
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v5.8+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72802c8f5fa1978e64936231226360dd51029512
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Tue Nov 3 18:52:18 2020 +0100

    r8169: work around short packet hw bug on RTL8125
    
    [ Upstream commit 2aaf09a0e7842b3ac7be6e0b8fb1888b3daeb3b3 ]
    
    Network problems with RTL8125B have been reported [0] and with help
    from Realtek it turned out that this chip version has a hw problem
    with short packets (similar to RTL8168evl). Having said that activate
    the same workaround as for RTL8168evl.
    Realtek suggested to activate the workaround for RTL8125A too, even
    though they're not 100% sure yet which RTL8125 versions are affected.
    
    [0] https://bugzilla.kernel.org/show_bug.cgi?id=209839
    
    Fixes: 0439297be951 ("r8169: add support for RTL8125B")
    Reported-by: Maxim Plotnikov <wgh@torlan.ru>
    Tested-by: Maxim Plotnikov <wgh@torlan.ru>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/8002c31a-60b9-58f1-f0dd-8fd07239917f@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2900f10062d901a84933785d20495e23812e7843
Author: Eelco Chaudron <echaudro@redhat.com>
Date:   Tue Nov 3 09:25:49 2020 +0100

    net: openvswitch: silence suspicious RCU usage warning
    
    [ Upstream commit fea07a487c6dd422dc8837237c9d2bc7c33119af ]
    
    Silence suspicious RCU usage warning in ovs_flow_tbl_masks_cache_resize()
    by replacing rcu_dereference() with rcu_dereference_ovsl().
    
    In addition, when creating a new datapath, make sure it's configured under
    the ovs_lock.
    
    Fixes: 9bf24f594c6a ("net: openvswitch: make masks cache size configurable")
    Reported-by: syzbot+9a8f8bfcc56e8578016c@syzkaller.appspotmail.com
    Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
    Link: https://lore.kernel.org/r/160439190002.56943.1418882726496275961.stgit@ebuild
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 202a14566585526b22a005ec728d02a8ea90211f
Author: Jonathan McDowell <noodles@earth.li>
Date:   Fri Oct 30 18:33:15 2020 +0000

    net: dsa: qca8k: Fix port MTU setting
    
    [ Upstream commit 99cab7107d914a71c57f5a4e6d34292425fbbb61 ]
    
    The qca8k only supports a switch-wide MTU setting, and the code to take
    the max of all ports was only looking at the port currently being set.
    Fix to examine all ports.
    
    Reported-by: DENG Qingfang <dqfext@gmail.com>
    Fixes: f58d2598cf70 ("net: dsa: qca8k: implement the port MTU callbacks")
    Signed-off-by: Jonathan McDowell <noodles@earth.li>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20201030183315.GA6736@earth.li
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 177ee26ca0a5ef13d0a0dcc4adb7f1589e12953d
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Mon Nov 2 10:09:49 2020 +0100

    mptcp: token: fix unititialized variable
    
    [ Upstream commit e16b874ee87aa70cd0a7145346ff5f41349b514c ]
    
    gcc complains about use of uninitialized 'num'. Fix it by doing the first
    assignment of 'num' when the variable is declared.
    
    Fixes: 96d890daad05 ("mptcp: add msk interations helper")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Link: https://lore.kernel.org/r/49e20da5d467a73414d4294a8bd35e2cb1befd49.1604308087.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1789e80f40980a41d74ea9abbcc7b8d503e53e32
Author: Greg Ungerer <gerg@linux-m68k.org>
Date:   Wed Oct 28 15:22:32 2020 +1000

    net: fec: fix MDIO probing for some FEC hardware blocks
    
    [ Upstream commit 1e6114f51f9d4090390fcec2f5d67d8cc8dc4bfc ]
    
    Some (apparently older) versions of the FEC hardware block do not like
    the MMFR register being cleared to avoid generation of MII events at
    initialization time. The action of clearing this register results in no
    future MII events being generated at all on the problem block. This means
    the probing of the MDIO bus will find no PHYs.
    
    Create a quirk that can be checked at the FECs MII init time so that
    the right thing is done. The quirk is set as appropriate for the FEC
    hardware blocks that are known to need this.
    
    Fixes: f166f890c8f0 ("net: ethernet: fec: Replace interrupt driven MDIO with polled IO")
    Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
    Acked-by: Fugang Duan <fugand.duan@nxp.com>
    Tested-by: Andrew Lunn <andrew@lunn.ch>
    Tested-by: Clemens Gruber <clemens.gruber@pqgruber.com>
    Link: https://lore.kernel.org/r/20201028052232.1315167-1-gerg@linux-m68k.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97b8d97359869f4b6b71d0cc7fa49911f6fe9551
Author: Alexander Ovechkin <ovov@yandex-team.ru>
Date:   Thu Oct 29 20:10:12 2020 +0300

    ip6_tunnel: set inner ipproto before ip6_tnl_encap
    
    [ Upstream commit 9e7c5b396e98eed859d3dd1ab235912a296faab5 ]
    
    ip6_tnl_encap assigns to proto transport protocol which
    encapsulates inner packet, but we must pass to set_inner_ipproto
    protocol of that inner packet.
    
    Calling set_inner_ipproto after ip6_tnl_encap might break gso.
    For example, in case of encapsulating ipv6 packet in fou6 packet, inner_ipproto
    would be set to IPPROTO_UDP instead of IPPROTO_IPV6. This would lead to
    incorrect calling sequence of gso functions:
    ipv6_gso_segment -> udp6_ufo_fragment -> skb_udp_tunnel_segment -> udp6_ufo_fragment
    instead of:
    ipv6_gso_segment -> udp6_ufo_fragment -> skb_udp_tunnel_segment -> ip6ip6_gso_segment
    
    Fixes: 6c11fbf97e69 ("ip6_tunnel: add MPLS transmit support")
    Signed-off-by: Alexander Ovechkin <ovov@yandex-team.ru>
    Link: https://lore.kernel.org/r/20201029171012.20904-1-ovov@yandex-team.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3b186c962a6db00b1b0567bbb38f3dd6cd3800b
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat Oct 31 11:10:53 2020 +0800

    sfp: Fix error handing in sfp_probe()
    
    [ Upstream commit 9621618130bf7e83635367c13b9a6ee53935bb37 ]
    
    gpiod_to_irq() never return 0, but returns negative in
    case of error, check it and set gpio_irq to 0.
    
    Fixes: 73970055450e ("sfp: add SFP module support")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20201031031053.25264-1-yuehaibing@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9870842a72a12d89eb017920808e81d925e474b0
Author: Petr Malat <oss@malat.biz>
Date:   Fri Oct 30 14:26:33 2020 +0100

    sctp: Fix COMM_LOST/CANT_STR_ASSOC err reporting on big-endian platforms
    
    [ Upstream commit b6df8c81412190fbd5eaa3cec7f642142d9c16cd ]
    
    Commit 978aa0474115 ("sctp: fix some type cast warnings introduced since
    very beginning")' broke err reading from sctp_arg, because it reads the
    value as 32-bit integer, although the value is stored as 16-bit integer.
    Later this value is passed to the userspace in 16-bit variable, thus the
    user always gets 0 on big-endian platforms. Fix it by reading the __u16
    field of sctp_arg union, as reading err field would produce a sparse
    warning.
    
    Fixes: 978aa0474115 ("sctp: fix some type cast warnings introduced since very beginning")
    Signed-off-by: Petr Malat <oss@malat.biz>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Link: https://lore.kernel.org/r/20201030132633.7045-1-oss@malat.biz
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b909175783b0a91a6e3d02a3903cef7e9a7ae354
Author: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Date:   Fri Oct 30 10:07:11 2020 -0700

    powerpc/vnic: Extend "failover pending" window
    
    [ Upstream commit 1d8504937478fdc2f3ef2174a816fd3302eca882 ]
    
    Commit 5a18e1e0c193b introduced the 'failover_pending' state to track
    the "failover pending window" - where we wait for the partner to become
    ready (after a transport event) before actually attempting to failover.
    i.e window is between following two events:
    
            a. we get a transport event due to a FAILOVER
    
            b. later, we get CRQ_INITIALIZED indicating the partner is
               ready  at which point we schedule a FAILOVER reset.
    
    and ->failover_pending is true during this window.
    
    If during this window, we attempt to open (or close) a device, we pretend
    that the operation succeded and let the FAILOVER reset path complete the
    operation.
    
    This is fine, except if the transport event ("a" above) occurs during the
    open and after open has already checked whether a failover is pending. If
    that happens, we fail the open, which can cause the boot scripts to leave
    the interface down requiring administrator to manually bring up the device.
    
    This fix "extends" the failover pending window till we are _actually_
    ready to perform the failover reset (i.e until after we get the RTNL
    lock). Since open() holds the RTNL lock, we can be sure that we either
    finish the open or if the open() fails due to the failover pending window,
    we can again pretend that open is done and let the failover complete it.
    
    We could try and block the open until failover is completed but a) that
    could still timeout the application and b) Existing code "pretends" that
    failover occurred "just after" open succeeded, so marks the open successful
    and lets the failover complete the open. So, mark the open successful even
    if the transport event occurs before we actually start the open.
    
    Fixes: 5a18e1e0c193 ("ibmvnic: Fix failover case for non-redundant configuration")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
    Acked-by: Dany Madden <drt@linux.ibm.com>
    Link: https://lore.kernel.org/r/20201030170711.1562994-1-sukadev@linux.ibm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5769709a59bd9d02dcd86e21414b82ba8599e1e1
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Mon Nov 2 12:01:08 2020 +0100

    net: usb: qmi_wwan: add Telit LE910Cx 0x1230 composition
    
    [ Upstream commit 5fd8477ed8ca77e64b93d44a6dae4aa70c191396 ]
    
    Add support for Telit LE910Cx 0x1230 composition:
    
    0x1230: tty, adb, rmnet, audio, tty, tty, tty, tty
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Link: https://lore.kernel.org/r/20201102110108.17244-1-dnlplm@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0283cc60d89986b41002a779b01b9ebef082a022
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Thu Oct 29 21:09:10 2020 +0200

    net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement
    
    [ Upstream commit 0a26ba0603d637eb6673a2ea79808cc73909ef3a ]
    
    The TI CPTS does not natively support PTPv1, only PTPv2. But, as it
    happens, the CPTS can provide HW timestamp for PTPv1 Sync messages, because
    CPTS HW parser looks for PTP messageType id in PTP message octet 0 which
    value is 0 for PTPv1. As result, CPTS HW can detect Sync messages for PTPv1
    and PTPv2 (Sync messageType = 0 for both), but it fails for any other PTPv1
    messages (Delay_req/resp) and will return PTP messageType id 0 for them.
    
    The commit e9523a5a32a1 ("net: ethernet: ti: cpsw: enable
    HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter") added PTPv1 hw timestamping
    advertisement by mistake, only to make Linux Kernel "timestamping" utility
    work, and this causes issues with only PTPv1 compatible HW/SW - Sync HW
    timestamped, but Delay_req/resp are not.
    
    Hence, fix it disabling PTPv1 hw timestamping advertisement, so only PTPv1
    compatible HW/SW can properly roll back to SW timestamping.
    
    Fixes: e9523a5a32a1 ("net: ethernet: ti: cpsw: enable HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter")
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Link: https://lore.kernel.org/r/20201029190910.30789-1-grygorii.strashko@ti.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 696c05fed23366b75a40051c705223d9384611d3
Author: wenxu <wenxu@ucloud.cn>
Date:   Fri Oct 30 11:32:08 2020 +0800

    ip_tunnel: fix over-mtu packet send fail without TUNNEL_DONT_FRAGMENT flags
    
    [ Upstream commit 20149e9eb68c003eaa09e7c9a49023df40779552 ]
    
    The tunnel device such as vxlan, bareudp and geneve in the lwt mode set
    the outer df only based TUNNEL_DONT_FRAGMENT.
    And this was also the behavior for gre device before switching to use
    ip_md_tunnel_xmit in commit 962924fa2b7a ("ip_gre: Refactor collect
    metatdata mode tunnel xmit to ip_md_tunnel_xmit")
    
    When the ip_gre in lwt mode xmit with ip_md_tunnel_xmi changed the rule and
    make the discrepancy between handling of DF by different tunnels. So in the
    ip_md_tunnel_xmit should follow the same rule like other tunnels.
    
    Fixes: cfc7381b3002 ("ip_tunnel: add collect_md mode to IPIP tunnel")
    Signed-off-by: wenxu <wenxu@ucloud.cn>
    Link: https://lore.kernel.org/r/1604028728-31100-1-git-send-email-wenxu@ucloud.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 185e170306ea7c7d3b34a8e8054a58d65b1b48b2
Author: Shannon Nelson <snelson@pensando.io>
Date:   Wed Nov 4 11:56:06 2020 -0800

    ionic: check port ptr before use
    
    [ Upstream commit 2bcbf42add911ef63a6d90e92001dc2bcb053e68 ]
    
    Check for corner case of port_init failure before using
    the port_info pointer.
    
    Fixes: 4d03e00a2140 ("ionic: Add initial ethtool support")
    Signed-off-by: Shannon Nelson <snelson@pensando.io>
    Link: https://lore.kernel.org/r/20201104195606.61184-1-snelson@pensando.io
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e99df22a6791a8df2cc178812248a9f7d4ee071d
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
Date:   Tue Oct 20 20:36:05 2020 +0300

    gianfar: Account for Tx PTP timestamp in the skb headroom
    
    [ Upstream commit d6a076d68c6b5d6a5800f3990a513facb7016dea ]
    
    When PTP timestamping is enabled on Tx, the controller
    inserts the Tx timestamp at the beginning of the frame
    buffer, between SFD and the L2 frame header. This means
    that the skb provided by the stack is required to have
    enough headroom otherwise a new skb needs to be created
    by the driver to accommodate the timestamp inserted by h/w.
    Up until now the driver was relying on the second option,
    using skb_realloc_headroom() to create a new skb to accommodate
    PTP frames. Turns out that this method is not reliable, as
    reallocation of skbs for PTP frames along with the required
    overhead (skb_set_owner_w, consume_skb) is causing random
    crashes in subsequent skb_*() calls, when multiple concurrent
    TCP streams are run at the same time on the same device
    (as seen in James' report).
    Note that these crashes don't occur with a single TCP stream,
    nor with multiple concurrent UDP streams, but only when multiple
    TCP streams are run concurrently with the PTP packet flow
    (doing skb reallocation).
    This patch enforces the first method, by requesting enough
    headroom from the stack to accommodate PTP frames, and so avoiding
    skb_realloc_headroom() & co, and the crashes no longer occur.
    There's no reason not to set needed_headroom to a large enough
    value to accommodate PTP frames, so in this regard this patch
    is a fix.
    
    Reported-by: James Jurack <james.jurack@ametek.com>
    Fixes: bee9e58c9e98 ("gianfar:don't add FCB length to hard_header_len")
    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://lore.kernel.org/r/20201020173605.1173-1-claudiu.manoil@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cc397654db59ed92dcd4aa7bd32140cda8ea831
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
Date:   Thu Oct 29 10:10:56 2020 +0200

    gianfar: Replace skb_realloc_headroom with skb_cow_head for PTP
    
    [ Upstream commit d145c9031325fed963a887851d9fa42516efd52b ]
    
    When PTP timestamping is enabled on Tx, the controller
    inserts the Tx timestamp at the beginning of the frame
    buffer, between SFD and the L2 frame header.  This means
    that the skb provided by the stack is required to have
    enough headroom otherwise a new skb needs to be created
    by the driver to accommodate the timestamp inserted by h/w.
    Up until now the driver was relying on skb_realloc_headroom()
    to create new skbs to accommodate PTP frames.  Turns out that
    this method is not reliable in this context at least, as
    skb_realloc_headroom() for PTP frames can cause random crashes,
    mostly in subsequent skb_*() calls, when multiple concurrent
    TCP streams are run at the same time with the PTP flow
    on the same device (as seen in James' report).  I also noticed
    that when the system is loaded by sending multiple TCP streams,
    the driver receives cloned skbs in large numbers.
    skb_cow_head() instead proves to be stable in this scenario,
    and not only handles cloned skbs too but it's also more efficient
    and widely used in other drivers.
    The commit introducing skb_realloc_headroom in the driver
    goes back to 2009, commit 93c1285c5d92
    ("gianfar: reallocate skb when headroom is not enough for fcb").
    For practical purposes I'm referencing a newer commit (from 2012)
    that brings the code to its current structure (and fixes the PTP
    case).
    
    Fixes: 9c4886e5e63b ("gianfar: Fix invalid TX frames returned on error queue when time stamping")
    Reported-by: James Jurack <james.jurack@ametek.com>
    Suggested-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://lore.kernel.org/r/20201029081057.8506-1-claudiu.manoil@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03e0784ad48e845b1a4f6e6667936da8d2c77f33
Author: Camelia Groza <camelia.groza@nxp.com>
Date:   Mon Nov 2 20:34:36 2020 +0200

    dpaa_eth: fix the RX headroom size alignment
    
    [ Upstream commit 7834e494f42627769d3f965d5d203e9c6ddb8403 ]
    
    The headroom reserved for received frames needs to be aligned to an
    RX specific value. There is currently a discrepancy between the values
    used in the Ethernet driver and the values passed to the FMan.
    Coincidentally, the resulting aligned values are identical.
    
    Fixes: 3c68b8fffb48 ("dpaa_eth: FMan erratum A050385 workaround")
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4b98f3c1ce96893c5e9bc0abd06ce5b7b52d7c9
Author: Camelia Groza <camelia.groza@nxp.com>
Date:   Mon Nov 2 20:34:35 2020 +0200

    dpaa_eth: update the buffer layout for non-A050385 erratum scenarios
    
    [ Upstream commit acef159a0cb2a978d62b641e2366a33ad1d5afef ]
    
    Impose a larger RX private data area only when the A050385 erratum is
    present on the hardware. A smaller buffer size is sufficient in all
    other scenarios. This enables a wider range of linear Jumbo frame
    sizes in non-erratum scenarios, instead of turning to multi
    buffer Scatter/Gather frames. The maximum linear frame size is
    increased by 128 bytes for non-erratum arm64 platforms.
    
    Cleanup the hardware annotations header defines in the process.
    
    Fixes: 3c68b8fffb48 ("dpaa_eth: FMan erratum A050385 workaround")
    Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b18ec4a9634d510bf70df3393ec27e1b52ca5329
Author: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
Date:   Mon Nov 2 23:09:10 2020 +0530

    chelsio/chtls: fix always leaking ctrl_skb
    
    [ Upstream commit dbfe394dad33f99cf8458be50483ec40a5d29c34 ]
    
    Correct skb refcount in alloc_ctrl_skb(), causing skb memleak
    when chtls_send_abort() called with NULL skb.
    it was always leaking the skb, correct it by incrementing skb
    refs by one.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
    Link: https://lore.kernel.org/r/20201102173909.24826-1-vinay.yadav@chelsio.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d38c4b58aaa78f475d88ece4199472c9008ebc1c
Author: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
Date:   Mon Nov 2 23:06:51 2020 +0530

    chelsio/chtls: fix memory leaks caused by a race
    
    [ Upstream commit 8080b462b6aa856ae05ea010441a702599e579f2 ]
    
    race between user context and softirq causing memleak,
    consider the call sequence scenario
    
    chtls_setkey()         //user context
    chtls_peer_close()
    chtls_abort_req_rss()
    chtls_setkey()         //user context
    
    work request skb queued in chtls_setkey() won't be freed
    because resources are already cleaned for this connection,
    fix it by not queuing work request while socket is closing.
    
    v1->v2:
    - fix W=1 warning.
    
    v2->v3:
    - separate it out from another memleak fix.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
    Link: https://lore.kernel.org/r/20201102173650.24754-1-vinay.yadav@chelsio.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2c1c56dfb25eb3390bb1fba00757c9b455ab3b0
Author: Mark Deneen <mdeneen@saucontech.com>
Date:   Fri Oct 30 15:58:14 2020 +0000

    cadence: force nonlinear buffers to be cloned
    
    [ Upstream commit 403dc16796f5516acf23d94a1cd9eba564d03210 ]
    
    In my test setup, I had a SAMA5D27 device configured with ip forwarding, and
    second device with usb ethernet (r8152) sending ICMP packets.  If the packet
    was larger than about 220 bytes, the SAMA5 device would "oops" with the
    following trace:
    
    kernel BUG at net/core/skbuff.c:1863!
    Internal error: Oops - BUG: 0 [#1] ARM
    Modules linked in: xt_MASQUERADE ppp_async ppp_generic slhc iptable_nat xt_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 can_raw can bridge stp llc ipt_REJECT nf_reject_ipv4 sd_mod cdc_ether usbnet usb_storage r8152 scsi_mod mii o
    ption usb_wwan usbserial micrel macb at91_sama5d2_adc phylink gpio_sama5d2_piobu m_can_platform m_can industrialio_triggered_buffer kfifo_buf of_mdio can_dev fixed_phy sdhci_of_at91 sdhci_pltfm libphy sdhci mmc_core ohci_at91 ehci_atmel o
    hci_hcd iio_rescale industrialio sch_fq_codel spidev prox2_hal(O)
    CPU: 0 PID: 0 Comm: swapper Tainted: G           O      5.9.1-prox2+ #1
    Hardware name: Atmel SAMA5
    PC is at skb_put+0x3c/0x50
    LR is at macb_start_xmit+0x134/0xad0 [macb]
    pc : [<c05258cc>]    lr : [<bf0ea5b8>]    psr: 20070113
    sp : c0d01a60  ip : c07232c0  fp : c4250000
    r10: c0d03cc8  r9 : 00000000  r8 : c0d038c0
    r7 : 00000000  r6 : 00000008  r5 : c59b66c0  r4 : 0000002a
    r3 : 8f659eff  r2 : c59e9eea  r1 : 00000001  r0 : c59b66c0
    Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    Control: 10c53c7d  Table: 2640c059  DAC: 00000051
    Process swapper (pid: 0, stack limit = 0x75002d81)
    
    <snipped stack>
    
    [<c05258cc>] (skb_put) from [<bf0ea5b8>] (macb_start_xmit+0x134/0xad0 [macb])
    [<bf0ea5b8>] (macb_start_xmit [macb]) from [<c053e504>] (dev_hard_start_xmit+0x90/0x11c)
    [<c053e504>] (dev_hard_start_xmit) from [<c0571180>] (sch_direct_xmit+0x124/0x260)
    [<c0571180>] (sch_direct_xmit) from [<c053eae4>] (__dev_queue_xmit+0x4b0/0x6d0)
    [<c053eae4>] (__dev_queue_xmit) from [<c05a5650>] (ip_finish_output2+0x350/0x580)
    [<c05a5650>] (ip_finish_output2) from [<c05a7e24>] (ip_output+0xb4/0x13c)
    [<c05a7e24>] (ip_output) from [<c05a39d0>] (ip_forward+0x474/0x500)
    [<c05a39d0>] (ip_forward) from [<c05a13d8>] (ip_sublist_rcv_finish+0x3c/0x50)
    [<c05a13d8>] (ip_sublist_rcv_finish) from [<c05a19b8>] (ip_sublist_rcv+0x11c/0x188)
    [<c05a19b8>] (ip_sublist_rcv) from [<c05a2494>] (ip_list_rcv+0xf8/0x124)
    [<c05a2494>] (ip_list_rcv) from [<c05403c4>] (__netif_receive_skb_list_core+0x1a0/0x20c)
    [<c05403c4>] (__netif_receive_skb_list_core) from [<c05405c4>] (netif_receive_skb_list_internal+0x194/0x230)
    [<c05405c4>] (netif_receive_skb_list_internal) from [<c0540684>] (gro_normal_list.part.0+0x14/0x28)
    [<c0540684>] (gro_normal_list.part.0) from [<c0541280>] (napi_complete_done+0x16c/0x210)
    [<c0541280>] (napi_complete_done) from [<bf14c1c0>] (r8152_poll+0x684/0x708 [r8152])
    [<bf14c1c0>] (r8152_poll [r8152]) from [<c0541424>] (net_rx_action+0x100/0x328)
    [<c0541424>] (net_rx_action) from [<c01012ec>] (__do_softirq+0xec/0x274)
    [<c01012ec>] (__do_softirq) from [<c012d6d4>] (irq_exit+0xcc/0xd0)
    [<c012d6d4>] (irq_exit) from [<c0160960>] (__handle_domain_irq+0x58/0xa4)
    [<c0160960>] (__handle_domain_irq) from [<c0100b0c>] (__irq_svc+0x6c/0x90)
    Exception stack(0xc0d01ef0 to 0xc0d01f38)
    1ee0:                                     00000000 0000003d 0c31f383 c0d0fa00
    1f00: c0d2eb80 00000000 c0d2e630 4dad8c49 4da967b0 0000003d 0000003d 00000000
    1f20: fffffff5 c0d01f40 c04e0f88 c04e0f8c 30070013 ffffffff
    [<c0100b0c>] (__irq_svc) from [<c04e0f8c>] (cpuidle_enter_state+0x7c/0x378)
    [<c04e0f8c>] (cpuidle_enter_state) from [<c04e12c4>] (cpuidle_enter+0x28/0x38)
    [<c04e12c4>] (cpuidle_enter) from [<c014f710>] (do_idle+0x194/0x214)
    [<c014f710>] (do_idle) from [<c014fa50>] (cpu_startup_entry+0xc/0x14)
    [<c014fa50>] (cpu_startup_entry) from [<c0a00dc8>] (start_kernel+0x46c/0x4a0)
    Code: e580c054 8a000002 e1a00002 e8bd8070 (e7f001f2)
    ---[ end trace 146c8a334115490c ]---
    
    The solution was to force nonlinear buffers to be cloned.  This was previously
    reported by Klaus Doth (https://www.spinics.net/lists/netdev/msg556937.html)
    but never formally submitted as a patch.
    
    This is the third revision, hopefully the formatting is correct this time!
    
    Suggested-by: Klaus Doth <krnl@doth.eu>
    Fixes: 653e92a9175e ("net: macb: add support for padding and fcs computation")
    Signed-off-by: Mark Deneen <mdeneen@saucontech.com>
    Link: https://lore.kernel.org/r/20201030155814.622831-1-mdeneen@saucontech.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23c1c1cbb3247582a248c66a007c7b2fe059a1ba
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Sun Nov 1 17:07:44 2020 -0800

    ptrace: fix task_join_group_stop() for the case when current is traced
    
    commit 7b3c36fc4c231ca532120bbc0df67a12f09c1d96 upstream.
    
    This testcase
    
            #include <stdio.h>
            #include <unistd.h>
            #include <signal.h>
            #include <sys/ptrace.h>
            #include <sys/wait.h>
            #include <pthread.h>
            #include <assert.h>
    
            void *tf(void *arg)
            {
                    return NULL;
            }
    
            int main(void)
            {
                    int pid = fork();
                    if (!pid) {
                            kill(getpid(), SIGSTOP);
    
                            pthread_t th;
                            pthread_create(&th, NULL, tf, NULL);
    
                            return 0;
                    }
    
                    waitpid(pid, NULL, WSTOPPED);
    
                    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_TRACECLONE);
                    waitpid(pid, NULL, 0);
    
                    ptrace(PTRACE_CONT, pid, 0,0);
                    waitpid(pid, NULL, 0);
    
                    int status;
                    int thread = waitpid(-1, &status, 0);
                    assert(thread > 0 && thread != pid);
                    assert(status == 0x80137f);
    
                    return 0;
            }
    
    fails and triggers WARN_ON_ONCE(!signr) in do_jobctl_trap().
    
    This is because task_join_group_stop() has 2 problems when current is traced:
    
            1. We can't rely on the "JOBCTL_STOP_PENDING" check, a stopped tracee
               can be woken up by debugger and it can clone another thread which
               should join the group-stop.
    
               We need to check group_stop_count || SIGNAL_STOP_STOPPED.
    
            2. If SIGNAL_STOP_STOPPED is already set, we should not increment
               sig->group_stop_count and add JOBCTL_STOP_CONSUME. The new thread
               should stop without another do_notify_parent_cldstop() report.
    
    To clarify, the problem is very old and we should blame
    ptrace_init_task().  But now that we have task_join_group_stop() it makes
    more sense to fix this helper to avoid the code duplication.
    
    Reported-by: syzbot+3485e3773f7da290eecc@syzkaller.appspotmail.com
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Christian Brauner <christian@brauner.io>
    Cc: "Eric W . Biederman" <ebiederm@xmission.com>
    Cc: Zhiqiang Liu <liuzhiqiang26@huawei.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201019134237.GA18810@redhat.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 656ebbda99312d2cc558deb928caec657286fa0c
Author: Karol Herbst <kherbst@redhat.com>
Date:   Tue Oct 13 14:01:26 2020 +0200

    drm/nouveau/device: fix changing endianess code to work on older GPUs
    
    commit dcd292c172493067a72672b245a3dd1bcf7268dd upstream.
    
    With this we try to detect if the endianess switch works and assume LE if
    not. Suggested by Ben.
    
    Fixes: 51c05340e407 ("drm/nouveau/device: detect if changing endianness failed")
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Cc: <stable@vger.kernel.org> # v5.8+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d6ef44fb1a96111b1d66c1d7de0452fe9331e24
Author: Lyude Paul <lyude@redhat.com>
Date:   Fri Sep 4 16:27:58 2020 -0400

    drm/nouveau/kms/nv50-: Program notifier offset before requesting disp caps
    
    commit 24d9422e26ea75118acf00172f83417c296f5b5f upstream.
    
    Not entirely sure why this never came up when I originally tested this
    (maybe some BIOSes already have this setup?) but the ->caps_init vfunc
    appears to cause the display engine to throw an exception on driver
    init, at least on my ThinkPad P72:
    
    nouveau 0000:01:00.0: disp: chid 0 mthd 008c data 00000000 0000508c 0000102b
    
    This is magic nvidia speak for "You need to have the DMA notifier offset
    programmed before you can call NV507D_GET_CAPABILITIES." So, let's fix
    this by doing that, and also perform an update afterwards to prevent
    racing with the GPU when reading capabilities.
    
    v2:
    * Don't just program the DMA notifier offset, make sure to actually
      perform an update
    v3:
    * Don't call UPDATE()
    * Actually read the correct notifier fields, as apparently the
      CAPABILITIES_DONE field lives in a different location than the main
      NV_DISP_CORE_NOTIFIER_1 field. As well, 907d+ use a different
      CAPABILITIES_DONE field then pre-907d cards.
    v4:
    * Don't forget to check the return value of core507d_read_caps()
    v5:
    * Get rid of NV50_DISP_CAPS_NTFY[14], use NV50_DISP_CORE_NTFY
    * Disable notifier after calling GetCapabilities()
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Fixes: 4a2cb4181b07 ("drm/nouveau/kms/nv50-: Probe SOR and PIOR caps for DP interlacing support")
    Cc: <stable@vger.kernel.org> # v5.8+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ffafe85ae1f0da4865b280cb558001a6a38ae27
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Oct 21 16:14:39 2020 +0300

    drm/i915: Restore ILK-M RPS support
    
    commit 5cbd7685b22823ebf432ec71eac1691b71c41037 upstream.
    
    Restore RPS for ILK-M. We lost it when an extra HAS_RPS()
    check appeared in intel_rps_enable().
    
    Unfortunaltey this just makes the performance worse on my
    ILK because intel_ips insists on limiting the GPU freq to
    the minimum. If we don't do the RPS init then intel_ips will
    not limit the frequency for whatever reason. Either it can't
    get at some required information and thus makes wrong decisions,
    or we mess up some weights/etc. and cause it to make the wrong
    decisions when RPS init has been done, or the entire thing is
    just wrong. Would require a bunch of reverse engineering to
    figure out what's going on.
    
    Cc: stable@vger.kernel.org
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Fixes: 9c878557b1eb ("drm/i915/gt: Use the RPM config register to determine clk frequencies")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201021131443.25616-1-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit 2bf06370bcfb0dea5655e9a5ad460c7f7dca7739)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33c59beb426bbbad4361faf7d13764c7a4fbfdbf
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue Oct 20 22:43:29 2020 +0300

    drm/i915: Reject 90/270 degree rotated initial fbs
    
    commit 61334ed227a5852100115180f5535b1396ed5227 upstream.
    
    We don't currently handle the initial fb readout correctly
    for 90/270 degree rotated scanout. Reject it.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201020194330.28568-1-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit a40a8305a732f4ecc2186ac7ca132ba062ed770d)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 574104177afae81446ffe22d5b72684dcfd14859
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Oct 16 10:25:27 2020 +0100

    drm/i915: Use the active reference on the vma while capturing
    
    commit db9bc2d35f49fed248296d3216597b078c0bab37 upstream.
    
    During error capture, we need to take a reference to the vma from before
    the reset in order to catpure the contents of the vma later. Currently
    we are using both an active reference and a kref, but due to nature of
    the i915_vma reference handling, that kref is on the vma->obj and not
    the vma itself. This means the vma may be destroyed as soon as it is
    idle, that is in between the i915_active_release(&vma->active) and the
    i915_vma_put(vma):
    
    <3> [197.866181] BUG: KASAN: use-after-free in intel_engine_coredump_add_vma+0x36c/0x4a0 [i915]
    <3> [197.866339] Read of size 8 at addr ffff8881258cb800 by task gem_exec_captur/1041
    <3> [197.866467]
    <4> [197.866512] CPU: 2 PID: 1041 Comm: gem_exec_captur Not tainted 5.9.0-g5e4234f97efba-kasan_200+ #1
    <4> [197.866521] Hardware name: Intel Corp. Broxton P/Apollolake RVP1A, BIOS APLKRVPA.X64.0150.B11.1608081044 08/08/2016
    <4> [197.866530] Call Trace:
    <4> [197.866549]  dump_stack+0x99/0xd0
    <4> [197.866760]  ? intel_engine_coredump_add_vma+0x36c/0x4a0 [i915]
    <4> [197.866783]  print_address_description.constprop.8+0x3e/0x60
    <4> [197.866797]  ? kmsg_dump_rewind_nolock+0xd4/0xd4
    <4> [197.866819]  ? lockdep_hardirqs_off+0xd4/0x120
    <4> [197.867037]  ? intel_engine_coredump_add_vma+0x36c/0x4a0 [i915]
    <4> [197.867249]  ? intel_engine_coredump_add_vma+0x36c/0x4a0 [i915]
    <4> [197.867270]  kasan_report.cold.10+0x1f/0x37
    <4> [197.867492]  ? intel_engine_coredump_add_vma+0x36c/0x4a0 [i915]
    <4> [197.867710]  intel_engine_coredump_add_vma+0x36c/0x4a0 [i915]
    <4> [197.867949]  i915_gpu_coredump.part.29+0x150/0x7b0 [i915]
    <4> [197.868186]  i915_capture_error_state+0x5e/0xc0 [i915]
    <4> [197.868396]  intel_gt_handle_error+0x6eb/0xa20 [i915]
    <4> [197.868624]  ? intel_gt_reset_global+0x370/0x370 [i915]
    <4> [197.868644]  ? check_flags+0x50/0x50
    <4> [197.868662]  ? __lock_acquire+0xd59/0x6b00
    <4> [197.868678]  ? register_lock_class+0x1ad0/0x1ad0
    <4> [197.868944]  i915_wedged_set+0xcf/0x1b0 [i915]
    <4> [197.869147]  ? i915_wedged_get+0x90/0x90 [i915]
    <4> [197.869371]  ? i915_wedged_get+0x90/0x90 [i915]
    <4> [197.869398]  simple_attr_write+0x153/0x1c0
    <4> [197.869428]  full_proxy_write+0xee/0x180
    <4> [197.869442]  ? __sb_start_write+0x1f3/0x310
    <4> [197.869465]  vfs_write+0x1a3/0x640
    <4> [197.869492]  ksys_write+0xec/0x1c0
    <4> [197.869507]  ? __ia32_sys_read+0xa0/0xa0
    <4> [197.869525]  ? lockdep_hardirqs_on_prepare+0x32b/0x4e0
    <4> [197.869541]  ? syscall_enter_from_user_mode+0x1c/0x50
    <4> [197.869566]  do_syscall_64+0x33/0x80
    <4> [197.869579]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    <4> [197.869590] RIP: 0033:0x7fd8b7aee281
    <4> [197.869604] Code: c3 0f 1f 84 00 00 00 00 00 48 8b 05 59 8d 20 00 c3 0f 1f 84 00 00 00 00 00 8b 05 8a d1 20 00 85 c0 75 16 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 57 f3 c3 0f 1f 44 00 00 41 54 55 49 89 d4 53
    <4> [197.869613] RSP: 002b:00007ffea3b72008 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    <4> [197.869625] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fd8b7aee281
    <4> [197.869633] RDX: 0000000000000002 RSI: 00007fd8b81a82e7 RDI: 000000000000000d
    <4> [197.869641] RBP: 0000000000000002 R08: 0000000000000000 R09: 0000000000000034
    <4> [197.869650] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fd8b81a82e7
    <4> [197.869658] R13: 000000000000000d R14: 0000000000000000 R15: 0000000000000000
    <3> [197.869707]
    <3> [197.869757] Allocated by task 1041:
    <4> [197.869833]  kasan_save_stack+0x19/0x40
    <4> [197.869843]  __kasan_kmalloc.constprop.5+0xc1/0xd0
    <4> [197.869853]  kmem_cache_alloc+0x106/0x8e0
    <4> [197.870059]  i915_vma_instance+0x212/0x1930 [i915]
    <4> [197.870270]  eb_lookup_vmas+0xe06/0x1d10 [i915]
    <4> [197.870475]  i915_gem_do_execbuffer+0x131d/0x4080 [i915]
    <4> [197.870682]  i915_gem_execbuffer2_ioctl+0x103/0x5d0 [i915]
    <4> [197.870701]  drm_ioctl_kernel+0x1d2/0x270
    <4> [197.870710]  drm_ioctl+0x40d/0x85c
    <4> [197.870721]  __x64_sys_ioctl+0x10d/0x170
    <4> [197.870731]  do_syscall_64+0x33/0x80
    <4> [197.870740]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    <3> [197.870748]
    <3> [197.870798] Freed by task 22:
    <4> [197.870865]  kasan_save_stack+0x19/0x40
    <4> [197.870875]  kasan_set_track+0x1c/0x30
    <4> [197.870884]  kasan_set_free_info+0x1b/0x30
    <4> [197.870894]  __kasan_slab_free+0x111/0x160
    <4> [197.870903]  kmem_cache_free+0xcd/0x710
    <4> [197.871109]  i915_vma_parked+0x618/0x800 [i915]
    <4> [197.871307]  __gt_park+0xdb/0x1e0 [i915]
    <4> [197.871501]  ____intel_wakeref_put_last+0xb1/0x190 [i915]
    <4> [197.871516]  process_one_work+0x8dc/0x15d0
    <4> [197.871525]  worker_thread+0x82/0xb30
    <4> [197.871535]  kthread+0x36d/0x440
    <4> [197.871545]  ret_from_fork+0x22/0x30
    <3> [197.871553]
    <3> [197.871602] The buggy address belongs to the object at ffff8881258cb740
     which belongs to the cache i915_vma of size 968
    
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2553
    Fixes: 2850748ef876 ("drm/i915: Pull i915_vma_pin under the vm->mutex")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v5.5+
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201016092527.29039-1-chris@chris-wilson.co.uk
    (cherry picked from commit 178536b8292ecd118f59d2fac4509c7e70b99854)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bc462243188e05cc976587bc9942e7c05241140
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Oct 15 13:21:35 2020 +0100

    drm/i915: Mark ininitial fb obj as WT on eLLC machines to avoid rcu lockup during fbdev init
    
    commit 1664ffee760a5d98952318fdd9b198fae396d660 upstream.
    
    Currently we leave the cache_level of the initial fb obj
    set to NONE. This means on eLLC machines the first pin_to_display()
    will try to switch it to WT which requires a vma unbind+bind.
    If that happens during the fbdev initialization rcu does not
    seem operational which causes the unbind to get stuck. To
    most appearances this looks like a dead machine on boot.
    
    Avoid the unbind by already marking the object cache_level
    as WT when creating it. We still do an excplicit ggtt pin
    which will rewrite the PTEs anyway, so they will match whatever
    cache level we set.
    
    Cc: <stable@vger.kernel.org> # v5.7+
    Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2381
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201007120329.17076-1-ville.syrjala@linux.intel.com
    Link: https://patchwork.freedesktop.org/patch/msgid/20201015122138.30161-1-chris@chris-wilson.co.uk
    (cherry picked from commit d46b60a2e8d246f1f0faa38e52f4f5a73858c338)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdd9f067ddf89e1d9f68ce06b4814f9563d472e6
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Oct 19 17:50:05 2020 +0100

    drm/i915: Exclude low pages (128KiB) of stolen from use
    
    commit 3da3c5c1c9825c24168f27b021339e90af37e969 upstream.
    
    The GPU is trashing the low pages of its reserved memory upon reset. If
    we are using this memory for ringbuffers, then we will dutiful resubmit
    the trashed rings after the reset causing further resets, and worse. We
    must exclude this range from our own use. The value of 128KiB was found
    by empirical measurement (and verified now with a selftest) on gen9.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@vger.kernel.org
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201019165005.18128-2-chris@chris-wilson.co.uk
    (cherry picked from commit d3606757e611fbd48bb239e8c2fe9779b3f50035)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49dbd8b0c669886a00c085e1e7c8f5aa61641a05
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Aug 11 10:25:32 2020 +0100

    drm/i915: Drop runtime-pm assert from vgpu io accessors
    
    commit 5c6c13cd1102caf92d006a3cf4591c0229019daf upstream.
    
    The "mmio" writes into vgpu registers are simple memory traps from the
    guest into the host. We do not need to assert in the guest that the
    device is awake for the io as we do not write to the device itself.
    
    However, over time we have refactored all the mmio accessors with the
    result that the vgpu reuses the gen2 accessors and so inherits the
    assert for runtime-pm of the native device. The assert though has
    actually been there since commit 3be0bf5acca6 ("drm/i915: Create vGPU
    specific MMIO operations to reduce traps").
    
    References: 3be0bf5acca6 ("drm/i915: Create vGPU specific MMIO operations to reduce traps")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Yan Zhao <yan.y.zhao@intel.com>
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20200811092532.13753-1-chris@chris-wilson.co.uk
    (cherry picked from commit 0e65ce24a33c1d37da4bf43c34e080334ec6cb60)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 915ec0ae7125ad74b14ff7c369d934a94712b70a
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Oct 15 20:50:23 2020 +0100

    drm/i915/gt: Delay execlist processing for tgl
    
    commit 9b99e5ba3e5d68039bd6b657e4bbe520a3521f4c upstream.
    
    When running gem_exec_nop, it floods the system with many requests (with
    the goal of userspace submitting faster than the HW can process a single
    empty batch). This causes the driver to continually resubmit new
    requests onto the end of an active context, a flood of lite-restore
    preemptions. If we time this just right, Tigerlake hangs.
    
    Inserting a small delay between the processing of CS events and
    submitting the next context, prevents the hang. Naturally it does not
    occur with debugging enabled. The suspicion then is that this is related
    to the issues with the CS event buffer, and inserting an mmio read of
    the CS pointer status appears to be very successful in preventing the
    hang. Other registers, or uncached reads, or plain mb, do not prevent
    the hang, suggesting that register is key -- but that the hang can be
    prevented by a simple udelay, suggests it is just a timing issue like
    that encountered by commit 233c1ae3c83f ("drm/i915/gt: Wait for CSB
    entries on Tigerlake"). Also note that the hang is not prevented by
    applying CTX_DESC_FORCE_RESTORE, or by inserting a delay on the GPU
    between requests.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Bruce Chang <yu.bruce.chang@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201015195023.32346-1-chris@chris-wilson.co.uk
    (cherry picked from commit 6ca7217dffaf1abba91558e67a2efb655ac91405)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38655915794d4bb40b073086f9b7e9f1c9606942
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Oct 2 09:34:25 2020 +0100

    drm/i915/gt: Undo forced context restores after trivial preemptions
    
    commit 64402570e12f7b63ab33fc4640d3709c9ce2b380 upstream.
    
    We may try to preempt the currently executing request, only to find that
    after unravelling all the dependencies that the original executing
    context is still the earliest in the topological sort and re-submitted
    back to HW (if we do detect some change in the ELSP that requires
    re-submission). However, due to the way we check for wrap-around during
    the unravelling, we mark any context that has been submitted just once
    (i.e. with the rq->wa_tail set, but the ring->tail earlier) as
    potentially wrapping and requiring a forced restore on resubmission.
    This was expected to be not a problem, as it was anticipated that most
    unwinding for preemption would result in a context switch and the few
    that did not would be lost in the noise. It did not take long for
    someone to find one particular workload where the cost of those extra
    context restores was measurable.
    
    However, since we know the wa_tail is of fixed size, and we know that a
    request must be larger than the wa_tail itself, we can safely maintain
    the check for request wrapping and check against a slightly future point
    in the ring that includes an expected wa_tail. (That is if the
    ring->tail is already set to rq->wa_tail, including another 8 bytes in
    the check does not invalidate the incremental wrap detection.)
    
    Fixes: 8ab3a3812aa9 ("drm/i915/gt: Incrementally check for rewinding")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Bruce Chang <yu.bruce.chang@intel.com>
    Cc: Ramalingam C <ramalingam.c@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v5.4+
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201002083425.4605-1-chris@chris-wilson.co.uk
    (cherry picked from commit bb65548e3c6e299175a9e8c3e24b2b9577656a5d)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ae847ff58dd2590de39e0681264090d8aab3428
Author: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Date:   Wed Jul 29 15:55:39 2020 +0530

    drm/i915/gt: Initialize reserved and unspecified MOCS indices
    
    commit 849c0fe9e831dcebea1b46e2237e13f274a8756a upstream.
    
    In order to avoid functional breakage of mis-programmed applications that
    have grown to depend on unused MOCS entries, we are programming
    those entries to be equal to fully cached ("L3 + LLC") entry.
    
    These reserved and unspecified entries should not be used as they may be
    changed to less performant variants with better coherency in the future
    if more entries are needed.
    
    v2: As suggested by Lucas De Marchi to utilise __init_mocs_table for
    programming default value, setting I915_MOCS_PTE index of tgl_mocs_table
    with desired value.
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: Tomasz Lis <tomasz.lis@intel.com>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Francisco Jerez <currojerez@riseup.net>
    Cc: Mathew Alwin <alwin.mathew@intel.com>
    Cc: Mcguire Russell W <russell.w.mcguire@intel.com>
    Cc: Spruit Neil R <neil.r.spruit@intel.com>
    Cc: Zhou Cheng <cheng.zhou@intel.com>
    Cc: Benemelis Mike G <mike.g.benemelis@intel.com>
    
    Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
    Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Acked-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200729102539.134731-2-ayaz.siddiqui@intel.com
    Cc: stable@vger.kernel.org
    (cherry picked from commit 4d8a5cfe3b131f60903949f998c5961cc922e0b0)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab468bfb409cf1efe8f755be6455c63f8f5c082f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Oct 1 01:36:42 2020 +0300

    drm/i915: Fix TGL DKL PHY DP vswing handling
    
    commit f0b707c125a2e228bcc047cd46040943bef61931 upstream.
    
    The HDMI vs. not-HDMI check got inverted whem the bogus encoder->type
    checks were eliminated. So now we're using 0 as the link rate on DP
    and potentially non-zero on HDMI, which is exactly the opposite of
    what we want. The original bogus check actually worked more correctly
    by accident since if would always evaluate to true. Due to this we
    now always use the RBR/HBR1 vswing table and never ever the HBR2+
    vswing table. That is probably not a good way to get a high quality
    signal at HBR2+ rates. Fix the check so we pick the right table.
    
    Cc: stable@vger.kernel.org
    Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
    Cc: Uma Shankar <uma.shankar@intel.com>
    Fixes: 94641eb6c696 ("drm/i915/display: Fix the encoder type check")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200930223642.28565-1-ville.syrjala@linux.intel.com
    Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
    Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
    (cherry picked from commit 945b18fb4803b01e822ade6aef6cc0b6e4bd644f)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00fc96c64a1b9fa78fe60ec304b0610e5a72dc9b
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Sep 28 22:59:42 2020 +0100

    drm/i915: Avoid mixing integer types during batch copies
    
    commit c60b93cd4862d108214a14e655358ea714d7a12a upstream.
    
    Be consistent and use unsigned long throughout the chunk copies to
    avoid the inherent clumsiness of mixing integer types of different
    widths and signs. Failing to take acount of a wider unsigned type when
    using min_t can lead to treating it as a negative, only for it flip back
    to a large unsigned value after passing a boundary check.
    
    Fixes: ed13033f0287 ("drm/i915/cmdparser: Only cache the dst vmap")
    Testcase: igt/gen9_exec_parse/bb-large
    Reported-by: "Candelaria, Jared" <jared.candelaria@intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: "Candelaria, Jared" <jared.candelaria@intel.com>
    Cc: "Bloomfield, Jon" <jon.bloomfield@intel.com>
    Cc: <stable@vger.kernel.org> # v4.9+
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200928215942.31917-1-chris@chris-wilson.co.uk
    (cherry picked from commit b7eeb2b4132ccf1a7d38f434cde7043913d1ed3c)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce60ff7db89094ec27419a3b32336e9d4db2dcc0
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Sep 28 23:15:08 2020 +0100

    drm/i915: Cancel outstanding work after disabling heartbeats on an engine
    
    commit 7d442ea7c504adcc9798b07cd8f6a0d235fca2da upstream.
    
    We only allow persistent requests to remain on the GPU past the closure
    of their containing context (and process) so long as they are continuously
    checked for hangs or allow other requests to preempt them, as we need to
    ensure forward progress of the system. If we allow persistent contexts
    to remain on the system after the the hangcheck mechanism is disabled,
    the system may grind to a halt. On disabling the mechanism, we sent a
    pulse along the engine to remove all executing contexts from the engine
    which would check for hung contexts -- but we did not prevent those
    contexts from being resubmitted if they survived the final hangcheck.
    
    Fixes: 9a40bddd47ca ("drm/i915/gt: Expose heartbeat interval via sysfs")
    Testcase: igt/gem_ctx_persistence/heartbeat-stop
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v5.7+
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Acked-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200928221510.26044-1-chris@chris-wilson.co.uk
    (cherry picked from commit 7a991cd3e3da9a56d5616b62d425db000a3242f2)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dd3fea703ebd98a66a901410891983383ccc055
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Sep 16 10:00:58 2020 +0100

    drm/i915: Break up error capture compression loops with cond_resched()
    
    commit 7d5553147613b50149238ac1385c60e5c7cacb34 upstream.
    
    As the error capture will compress user buffers as directed to by the
    user, it can take an arbitrary amount of time and space. Break up the
    compression loops with a call to cond_resched(), that will allow other
    processes to schedule (avoiding the soft lockups) and also serve as a
    warning should we try to make this loop atomic in the future.
    
    Testcase: igt/gem_exec_capture/many-*
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200916090059.3189-2-chris@chris-wilson.co.uk
    (cherry picked from commit 293f43c80c0027ff9299036c24218ac705ce584e)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9557e87164d347865d0f074cb124516b8403f000
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Sep 28 23:15:09 2020 +0100

    drm/i915/gt: Always send a pulse down the engine after disabling heartbeat
    
    commit ca65fc0d8e01dca8fc82f0ccf433725469256c71 upstream.
    
    Currently, we check we can send a pulse prior to disabling the
    heartbeat to verify that we can change the heartbeat, but since we may
    re-evaluate execution upon changing the heartbeat interval we need another
    pulse afterwards to refresh execution.
    
    v2: Tvrtko asked if we could reduce the double pulse to a single, which
    opened up a discussion of how we should handle the pulse-error after
    attempting to change the property, and the desire to serialise
    adjustment of the property with its validating pulse, and unwind upon
    failure.
    
    Fixes: 9a40bddd47ca ("drm/i915/gt: Expose heartbeat interval via sysfs")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: <stable@vger.kernel.org> # v5.7+
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Acked-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200928221510.26044-2-chris@chris-wilson.co.uk
    (cherry picked from commit 3dd66a94de59d7792e7917eb3075342e70f06f44)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83279333780bde1ec99b62c5a413159b228dbf2d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Sep 28 23:15:10 2020 +0100

    drm/i915/gem: Always test execution status on closing the context
    
    commit 651dabe27f9638f569f6a794f9d3cc1889cd315e upstream.
    
    Verify that if a context is active at the time it is closed, that it is
    either persistent and preemptible (with hangcheck running) or it shall
    be removed from execution.
    
    Fixes: 9a40bddd47ca ("drm/i915/gt: Expose heartbeat interval via sysfs")
    Testcase: igt/gem_ctx_persistence/heartbeat-close
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v5.7+
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Acked-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200928221510.26044-3-chris@chris-wilson.co.uk
    (cherry picked from commit d3bb2f9b5ee66d5e000293edd6b6575e59d11db9)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6aac58d71d99d0082dc64e0b3571839d474c7203
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Sep 15 10:14:16 2020 +0100

    drm/i915/gem: Prevent using pgprot_writecombine() if PAT is not supported
    
    commit ba2ebf605d5f32a9be0f7b05d3174bbc501b83fe upstream.
    
    Let's not try and use PAT attributes for I915_MAP_WC if the CPU doesn't
    support PAT.
    
    Fixes: 6056e50033d9 ("drm/i915/gem: Support discontiguous lmem object maps")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Cc: <stable@vger.kernel.org> # v5.6+
    Link: https://patchwork.freedesktop.org/patch/msgid/20200915091417.4086-2-chris@chris-wilson.co.uk
    (cherry picked from commit 121ba69ffddc60df11da56f6d5b29bdb45c8eb80)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fed4aa9fd5540160d2adf2c1eadd4067e279916
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Sep 15 10:14:15 2020 +0100

    drm/i915/gem: Avoid implicit vmap for highmem on x86-32
    
    commit 4caf017ee93703ba1c4504f3d73b50e6bbd4249e upstream.
    
    On 32b, highmem using a finite set of indirect PTE (i.e. vmap) to provide
    virtual mappings of the high pages.  As these are finite, map_new_virtual()
    must wait for some other kmap() to finish when it runs out. If we map a
    large number of objects, there is no method for it to tell us to release
    the mappings, and we deadlock.
    
    However, if we make an explicit vmap of the page, that uses a larger
    vmalloc arena, and also has the ability to tell us to release unwanted
    mappings. Most importantly, it will fail and propagate an error instead
    of waiting forever.
    
    Fixes: fb8621d3bee8 ("drm/i915: Avoid allocating a vmap arena for a single page") #x86-32
    References: e87666b52f00 ("drm/i915/shrinker: Hook up vmap allocation failure notifier")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Cc: <stable@vger.kernel.org> # v4.7+
    Link: https://patchwork.freedesktop.org/patch/msgid/20200915091417.4086-1-chris@chris-wilson.co.uk
    (cherry picked from commit 060bb115c2d664f04db9c7613a104dfaef3fdd98)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e240d9ca8801050d7bf74d1ddb190f55906b54f8
Author: Hoang Huu Le <hoang.h.le@dektech.com.au>
Date:   Thu Aug 27 09:56:51 2020 +0700

    tipc: fix use-after-free in tipc_bcast_get_mode
    
    commit fdeba99b1e58ecd18c2940c453e19e4ef20ff591 upstream.
    
    Syzbot has reported those issues as:
    
    ==================================================================
    BUG: KASAN: use-after-free in tipc_bcast_get_mode+0x3ab/0x400 net/tipc/bcast.c:759
    Read of size 1 at addr ffff88805e6b3571 by task kworker/0:6/3850
    
    CPU: 0 PID: 3850 Comm: kworker/0:6 Not tainted 5.8.0-rc7-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: events tipc_net_finalize_work
    
    Thread 1's call trace:
    [...]
      kfree+0x103/0x2c0 mm/slab.c:3757 <- bcbase releasing
      tipc_bcast_stop+0x1b0/0x2f0 net/tipc/bcast.c:721
      tipc_exit_net+0x24/0x270 net/tipc/core.c:112
    [...]
    
    Thread 2's call trace:
    [...]
      tipc_bcast_get_mode+0x3ab/0x400 net/tipc/bcast.c:759 <- bcbase
    has already been freed by Thread 1
    
      tipc_node_broadcast+0x9e/0xcc0 net/tipc/node.c:1744
      tipc_nametbl_publish+0x60b/0x970 net/tipc/name_table.c:752
      tipc_net_finalize net/tipc/net.c:141 [inline]
      tipc_net_finalize+0x1fa/0x310 net/tipc/net.c:131
      tipc_net_finalize_work+0x55/0x80 net/tipc/net.c:150
    [...]
    
    ==================================================================
    BUG: KASAN: use-after-free in tipc_named_reinit+0xef/0x290 net/tipc/name_distr.c:344
    Read of size 8 at addr ffff888052ab2000 by task kworker/0:13/30628
    CPU: 0 PID: 30628 Comm: kworker/0:13 Not tainted 5.8.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: events tipc_net_finalize_work
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1f0/0x31e lib/dump_stack.c:118
     print_address_description+0x66/0x5a0 mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report+0x132/0x1d0 mm/kasan/report.c:530
     tipc_named_reinit+0xef/0x290 net/tipc/name_distr.c:344
     tipc_net_finalize+0x85/0xe0 net/tipc/net.c:138
     tipc_net_finalize_work+0x50/0x70 net/tipc/net.c:150
     process_one_work+0x789/0xfc0 kernel/workqueue.c:2269
     worker_thread+0xaa4/0x1460 kernel/workqueue.c:2415
     kthread+0x37e/0x3a0 drivers/block/aoe/aoecmd.c:1234
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293
    [...]
    Freed by task 14058:
     save_stack mm/kasan/common.c:48 [inline]
     set_track mm/kasan/common.c:56 [inline]
     kasan_set_free_info mm/kasan/common.c:316 [inline]
     __kasan_slab_free+0x114/0x170 mm/kasan/common.c:455
     __cache_free mm/slab.c:3426 [inline]
     kfree+0x10a/0x220 mm/slab.c:3757
     tipc_exit_net+0x29/0x50 net/tipc/core.c:113
     ops_exit_list net/core/net_namespace.c:186 [inline]
     cleanup_net+0x708/0xba0 net/core/net_namespace.c:603
     process_one_work+0x789/0xfc0 kernel/workqueue.c:2269
     worker_thread+0xaa4/0x1460 kernel/workqueue.c:2415
     kthread+0x37e/0x3a0 drivers/block/aoe/aoecmd.c:1234
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293
    
    Fix it by calling flush_scheduled_work() to make sure the
    tipc_net_finalize_work() stopped before releasing bcbase object.
    
    Reported-by: syzbot+6ea1f7a8df64596ef4d7@syzkaller.appspotmail.com
    Reported-by: syzbot+e9cc557752ab126c1b99@syzkaller.appspotmail.com
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Hoang Huu Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73a97c51a0dcaff972cd5057b4fcf4e7df0bc189
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Thu Oct 15 16:26:06 2020 +0000

    net: core: use list_del_init() instead of list_del() in netdev_run_todo()
    
    commit 0e8b8d6a2d85344d80dda5beadd98f5f86e8d3d3 upstream.
    
    dev->unlink_list is reused unless dev is deleted.
    So, list_del() should not be used.
    Due to using list_del(), dev->unlink_list can't be reused so that
    dev->nested_level update logic doesn't work.
    In order to fix this bug, list_del_init() should be used instead
    of list_del().
    
    Test commands:
        ip link add bond0 type bond
        ip link add bond1 type bond
        ip link set bond0 master bond1
        ip link set bond0 nomaster
        ip link set bond1 master bond0
        ip link set bond1 nomaster
    
    Splat looks like:
    [  255.750458][ T1030] ============================================
    [  255.751967][ T1030] WARNING: possible recursive locking detected
    [  255.753435][ T1030] 5.9.0-rc8+ #772 Not tainted
    [  255.754553][ T1030] --------------------------------------------
    [  255.756047][ T1030] ip/1030 is trying to acquire lock:
    [  255.757304][ T1030] ffff88811782a280 (&dev_addr_list_lock_key/1){+...}-{2:2}, at: dev_mc_sync_multiple+0xc2/0x150
    [  255.760056][ T1030]
    [  255.760056][ T1030] but task is already holding lock:
    [  255.761862][ T1030] ffff88811130a280 (&dev_addr_list_lock_key/1){+...}-{2:2}, at: bond_enslave+0x3d4d/0x43e0 [bonding]
    [  255.764581][ T1030]
    [  255.764581][ T1030] other info that might help us debug this:
    [  255.766645][ T1030]  Possible unsafe locking scenario:
    [  255.766645][ T1030]
    [  255.768566][ T1030]        CPU0
    [  255.769415][ T1030]        ----
    [  255.770259][ T1030]   lock(&dev_addr_list_lock_key/1);
    [  255.771629][ T1030]   lock(&dev_addr_list_lock_key/1);
    [  255.772994][ T1030]
    [  255.772994][ T1030]  *** DEADLOCK ***
    [  255.772994][ T1030]
    [  255.775091][ T1030]  May be due to missing lock nesting notation
    [  255.775091][ T1030]
    [  255.777182][ T1030] 2 locks held by ip/1030:
    [  255.778299][ T1030]  #0: ffffffffb1f63250 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x2e4/0x8b0
    [  255.780600][ T1030]  #1: ffff88811130a280 (&dev_addr_list_lock_key/1){+...}-{2:2}, at: bond_enslave+0x3d4d/0x43e0 [bonding]
    [  255.783411][ T1030]
    [  255.783411][ T1030] stack backtrace:
    [  255.784874][ T1030] CPU: 7 PID: 1030 Comm: ip Not tainted 5.9.0-rc8+ #772
    [  255.786595][ T1030] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    [  255.789030][ T1030] Call Trace:
    [  255.789850][ T1030]  dump_stack+0x99/0xd0
    [  255.790882][ T1030]  __lock_acquire.cold.71+0x166/0x3cc
    [  255.792285][ T1030]  ? register_lock_class+0x1a30/0x1a30
    [  255.793619][ T1030]  ? rcu_read_lock_sched_held+0x91/0xc0
    [  255.794963][ T1030]  ? rcu_read_lock_bh_held+0xa0/0xa0
    [  255.796246][ T1030]  lock_acquire+0x1b8/0x850
    [  255.797332][ T1030]  ? dev_mc_sync_multiple+0xc2/0x150
    [  255.798624][ T1030]  ? bond_enslave+0x3d4d/0x43e0 [bonding]
    [  255.800039][ T1030]  ? check_flags+0x50/0x50
    [  255.801143][ T1030]  ? lock_contended+0xd80/0xd80
    [  255.802341][ T1030]  _raw_spin_lock_nested+0x2e/0x70
    [  255.803592][ T1030]  ? dev_mc_sync_multiple+0xc2/0x150
    [  255.804897][ T1030]  dev_mc_sync_multiple+0xc2/0x150
    [  255.806168][ T1030]  bond_enslave+0x3d58/0x43e0 [bonding]
    [  255.807542][ T1030]  ? __lock_acquire+0xe53/0x51b0
    [  255.808824][ T1030]  ? bond_update_slave_arr+0xdc0/0xdc0 [bonding]
    [  255.810451][ T1030]  ? check_chain_key+0x236/0x5e0
    [  255.811742][ T1030]  ? mutex_is_locked+0x13/0x50
    [  255.812910][ T1030]  ? rtnl_is_locked+0x11/0x20
    [  255.814061][ T1030]  ? netdev_master_upper_dev_get+0xf/0x120
    [  255.815553][ T1030]  do_setlink+0x94c/0x3040
    [ ... ]
    
    Reported-by: syzbot+4a0f7bc34e3997a6c7df@syzkaller.appspotmail.com
    Fixes: 1fc70edb7d7b ("net: core: add nested_level variable in net_device")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Link: https://lore.kernel.org/r/20201015162606.9377-1-ap420073@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>