commit b97134d151275424dc83864d6d2cf52f327adaef
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jan 27 11:55:30 2021 +0100

    Linux 5.10.11
    
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20210126094313.589480033@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1daa298a04181a6acb26050f06c9c367dab66836
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 26 10:39:46 2021 -0800

    Revert "mm: fix initialization of struct page for holes in memory layout"
    
    commit 377bf660d07a47269510435d11f3b65d53edca20 upstream.
    
    This reverts commit d3921cb8be29ce5668c64e23ffdaeec5f8c69399.
    
    Chris Wilson reports that it causes boot problems:
    
     "We have half a dozen or so different machines in CI that are silently
      failing to boot, that we believe is bisected to this patch"
    
    and the CI team confirmed that a revert fixed the issues.
    
    The cause is unknown for now, so let's revert it.
    
    Link: https://lore.kernel.org/lkml/161160687463.28991.354987542182281928@build.alporthouse.com/
    Reported-and-tested-by: Chris Wilson <chris@chris-wilson.co.uk>
    Acked-by: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2a79851c776a5345643e0234957f98528ada168
Author: Mike Rapoport <rppt@kernel.org>
Date:   Sat Jan 23 21:01:02 2021 -0800

    mm: fix initialization of struct page for holes in memory layout
    
    commit d3921cb8be29ce5668c64e23ffdaeec5f8c69399 upstream.
    
    There could be struct pages that are not backed by actual physical
    memory.  This can happen when the actual memory bank is not a multiple
    of SECTION_SIZE or when an architecture does not register memory holes
    reserved by the firmware as memblock.memory.
    
    Such pages are currently initialized using init_unavailable_mem()
    function that iterates through PFNs in holes in memblock.memory and if
    there is a struct page corresponding to a PFN, the fields if this page
    are set to default values and the page is marked as Reserved.
    
    init_unavailable_mem() does not take into account zone and node the page
    belongs to and sets both zone and node links in struct page to zero.
    
    On a system that has firmware reserved holes in a zone above ZONE_DMA,
    for instance in a configuration below:
    
            # grep -A1 E820 /proc/iomem
            7a17b000-7a216fff : Unknown E820 type
            7a217000-7bffffff : System RAM
    
    unset zone link in struct page will trigger
    
            VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
    
    because there are pages in both ZONE_DMA32 and ZONE_DMA (unset zone link
    in struct page) in the same pageblock.
    
    Update init_unavailable_mem() to use zone constraints defined by an
    architecture to properly setup the zone link and use node ID of the
    adjacent range in memblock.memory to set the node link.
    
    Link: https://lkml.kernel.org/r/20210111194017.22696-3-rppt@kernel.org
    Fixes: 73a6e474cb37 ("mm: memmap_init: iterate over memblock regions rather that check each PFN")
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5405cb30db87e027281f3b62202c207f1d5a1163
Author: Sami Tolvanen <samitolvanen@google.com>
Date:   Mon Jan 25 11:09:25 2021 -0800

    Commit 9bb48c82aced ("tty: implement write_iter") converted the tty layer to use write_iter. Fix the redirected_tty_write declaration also in n_tty and change the comparisons to use write_iter instead of write. also in n_tty and change the comparisons to use write_iter instead of write.
    
    commit 9f12e37cae44a96132fc3031535a0b165486941a upstream.
    
    [ Also moved the declaration of redirected_tty_write() to the proper
      location in a header file. The reason for the bug was the bogus extern
      declaration in n_tty.c silently not matching the changed definition in
      tty_io.c, and because it wasn't in a shared header file, there was no
      cross-checking of the declaration.
    
      Sami noticed because Clang's Control Flow Integrity checking ended up
      incidentally noticing the inconsistent declaration.    - Linus ]
    
    Fixes: 9bb48c82aced ("tty: implement write_iter")
    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8572713897eb9e4bfaef90bf15d5dd00d7126fc
Author: Johannes Berg <johannes@sipsolutions.net>
Date:   Mon Jan 25 10:16:15 2021 +0100

    fs/pipe: allow sendfile() to pipe again
    
    commit f8ad8187c3b536ee2b10502a8340c014204a1af0 upstream.
    
    After commit 36e2c7421f02 ("fs: don't allow splice read/write
    without explicit ops") sendfile() could no longer send data
    from a real file to a pipe, breaking for example certain cgit
    setups (e.g. when running behind fcgiwrap), because in this
    case cgit will try to do exactly this: sendfile() to a pipe.
    
    Fix this by using iter_file_splice_write for the splice_write
    method of pipes, as suggested by Christoph.
    
    Cc: stable@vger.kernel.org
    Fixes: 36e2c7421f02 ("fs: don't allow splice read/write without explicit ops")
    Suggested-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Tested-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb5381efaf367e7976c9f337a507f7529f964917
Author: Martin Kepplinger <martink@posteo.de>
Date:   Mon Dec 28 14:03:02 2020 +0200

    interconnect: imx8mq: Use icc_sync_state
    
    commit 67288f74d4837b82ef937170da3389b0779c17be upstream.
    
    Add the icc_sync_state callback to notify the framework when consumers
    are probed and the bandwidth doesn't have to be kept at maximum anymore.
    
    Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm>
    Suggested-by: Georgi Djakov <georgi.djakov@linaro.org>
    Fixes: 7d3b0b0d8184 ("interconnect: qcom: Use icc_sync_state")
    Link: https://lore.kernel.org/r/20201210100906.18205-6-martin.kepplinger@puri.sm
    Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b6672fd778cd92caed7206ba520a3f056d10484
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 20 21:46:31 2021 +0100

    kernfs: wire up ->splice_read and ->splice_write
    
    commit f2d6c2708bd84ca953fa6b6ca5717e79eb0140c7 upstream.
    
    Wire up the splice_read and splice_write methods to the default
    helpers using ->read_iter and ->write_iter now that those are
    implemented for kernfs.  This restores support to use splice and
    sendfile on kernfs files.
    
    Fixes: 36e2c7421f02 ("fs: don't allow splice read/write without explicit ops")
    Reported-by: Siddharth Gupta <sidgup@codeaurora.org>
    Tested-by: Siddharth Gupta <sidgup@codeaurora.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20210120204631.274206-4-hch@lst.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11167454e9cbfa95856fea3f8e5428b4215a534c
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 20 21:46:30 2021 +0100

    kernfs: implement ->write_iter
    
    commit cc099e0b399889c6485c88368b19824b087c9f8c upstream.
    
    Switch kernfs to implement the write_iter method instead of plain old
    write to prepare to supporting splice and sendfile again.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20210120204631.274206-3-hch@lst.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ce10b6481cd46040bf3c8f3daec08d3fafa30f4
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 20 21:46:29 2021 +0100

    kernfs: implement ->read_iter
    
    commit 4eaad21a6ac9865df7f31983232ed5928450458d upstream.
    
    Switch kernfs to implement the read_iter method instead of plain old
    read to prepare to supporting splice and sendfile again.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20210120204631.274206-2-hch@lst.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 436bc4c45a586fd89831c8819be12f5c7be0498a
Author: KP Singh <kpsingh@kernel.org>
Date:   Tue Jan 12 07:55:24 2021 +0000

    bpf: Local storage helpers should check nullness of owner ptr passed
    
    commit 1a9c72ad4c26821e215a396167c14959cf24a7f1 upstream.
    
    The verifier allows ARG_PTR_TO_BTF_ID helper arguments to be NULL, so
    helper implementations need to check this before dereferencing them.
    This was already fixed for the socket storage helpers but not for task
    and inode.
    
    The issue can be reproduced by attaching an LSM program to
    inode_rename hook (called when moving files) which tries to get the
    inode of the new file without checking for its nullness and then trying
    to move an existing file to a new path:
    
      mv existing_file new_file_does_not_exist
    
    The report including the sample program and the steps for reproducing
    the bug:
    
      https://lore.kernel.org/bpf/CANaYP3HWkH91SN=wTNO9FL_2ztHfqcXKX38SSE-JJ2voh+vssw@mail.gmail.com
    
    Fixes: 4cf1bc1f1045 ("bpf: Implement task local storage")
    Fixes: 8ea636848aca ("bpf: Implement bpf_local_storage for inodes")
    Reported-by: Gilad Reti <gilad.reti@gmail.com>
    Signed-off-by: KP Singh <kpsingh@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20210112075525.256820-3-kpsingh@kernel.org
    [ just take 1/2 of this patch for 5.10.y - gregkh ]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b379dfbc1edd03a658d68f1f0950fa66f8ff5aea
Author: Anshuman Gupta <anshuman.gupta@intel.com>
Date:   Mon Jan 11 13:41:03 2021 +0530

    drm/i915/hdcp: Get conn while content_type changed
    
    commit 8662e1119a7d1baa1b2001689b2923e9050754bd upstream.
    
    Get DRM connector reference count while scheduling a prop work
    to avoid any possible destroy of DRM connector when it is in
    DRM_CONNECTOR_REGISTERED state.
    
    Fixes: a6597faa2d59 ("drm/i915: Protect workers against disappearing connectors")
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: Ramalingam C <ramalingam.c@intel.com>
    Reviewed-by: Uma Shankar <uma.shankar@intel.com>
    Reviewed-by: Ramalingam C <ramalingam.c@intel.com>
    Tested-by: Karthik B S <karthik.b.s@intel.com>
    Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210111081120.28417-3-anshuman.gupta@intel.com
    (cherry picked from commit b3c6661aad979ec3d4f5675cf3e6a35828607d6a)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e9ae646eb801ff0055ee47b5265ffebf5258fd0
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Jan 13 02:11:25 2021 +0800

    ASoC: SOF: Intel: hda: Avoid checking jack on system suspend
    
    commit ef4d764c99f792b725d4754a3628830f094f5c58 upstream.
    
    System takes a very long time to suspend after commit 215a22ed31a1
    ("ALSA: hda: Refactor codec PM to use direct-complete optimization"):
    [   90.065964] PM: suspend entry (s2idle)
    [   90.067337] Filesystems sync: 0.001 seconds
    [   90.185758] Freezing user space processes ... (elapsed 0.002 seconds) done.
    [   90.188713] OOM killer disabled.
    [   90.188714] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
    [   90.190024] printk: Suspending console(s) (use no_console_suspend to debug)
    [   90.904912] intel_pch_thermal 0000:00:12.0: CPU-PCH is cool [49C], continue to suspend
    [  321.262505] snd_hda_codec_realtek ehdaudio0D0: Unable to sync register 0x2b8000. -5
    [  328.426919] snd_hda_codec_realtek ehdaudio0D0: Unable to sync register 0x2b8000. -5
    [  329.490933] ACPI: EC: interrupt blocked
    
    That commit keeps the codec suspended during the system suspend. However,
    mute/micmute LED will clear codec's direct-complete flag by
    dpm_clear_superiors_direct_complete().
    
    This doesn't play well with SOF driver. When its runtime resume is
    called for system suspend, hda_codec_jack_check() schedules
    jackpoll_work which uses snd_hdac_is_power_on() to check whether codec
    is suspended. Because the direct-complete path isn't taken,
    pm_runtime_disable() isn't called so snd_hdac_is_power_on() returns
    false and jackpoll continues to run, and snd_hda_power_up_pm() cannot
    power up an already suspended codec in multiple attempts, causes the
    long delay on system suspend:
    
    if (dev->power.direct_complete) {
            if (pm_runtime_status_suspended(dev)) {
                    pm_runtime_disable(dev);
                    if (pm_runtime_status_suspended(dev)) {
                            pm_dev_dbg(dev, state, "direct-complete ");
                            goto Complete;
                    }
    
                    pm_runtime_enable(dev);
            }
            dev->power.direct_complete = false;
    }
    
    When direct-complete path is taken, snd_hdac_is_power_on() returns true
    and hda_jackpoll_work() is skipped by accident. So this is still not
    correct.
    
    If we were to use snd_hdac_is_power_on() in system PM path,
    pm_runtime_status_suspended() should be used instead of
    pm_runtime_suspended(), otherwise pm_runtime_{enable,disable}() may
    change the outcome of snd_hdac_is_power_on().
    
    Because devices suspend in reverse order (i.e. child first), it doesn't
    make much sense to resume an already suspended codec from audio
    controller. So avoid the issue by making sure jackpoll isn't used in
    system PM process.
    
    Fixes: 215a22ed31a1 ("ALSA: hda: Refactor codec PM to use direct-complete optimization")
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20210112181128.1229827-3-kai.heng.feng@canonical.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9c4068fb0f695a084273a0b5db244e449d4d6a1
Author: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Date:   Mon Jan 18 14:59:20 2021 +0900

    tcp: Fix potential use-after-free due to double kfree()
    
    commit c89dffc70b340780e5b933832d8c3e045ef3791e upstream.
    
    Receiving ACK with a valid SYN cookie, cookie_v4_check() allocates struct
    request_sock and then can allocate inet_rsk(req)->ireq_opt. After that,
    tcp_v4_syn_recv_sock() allocates struct sock and copies ireq_opt to
    inet_sk(sk)->inet_opt. Normally, tcp_v4_syn_recv_sock() inserts the full
    socket into ehash and sets NULL to ireq_opt. Otherwise,
    tcp_v4_syn_recv_sock() has to reset inet_opt by NULL and free the full
    socket.
    
    The commit 01770a1661657 ("tcp: fix race condition when creating child
    sockets from syncookies") added a new path, in which more than one cores
    create full sockets for the same SYN cookie. Currently, the core which
    loses the race frees the full socket without resetting inet_opt, resulting
    in that both sock_put() and reqsk_put() call kfree() for the same memory:
    
      sock_put
        sk_free
          __sk_free
            sk_destruct
              __sk_destruct
                sk->sk_destruct/inet_sock_destruct
                  kfree(rcu_dereference_protected(inet->inet_opt, 1));
    
      reqsk_put
        reqsk_free
          __reqsk_free
            req->rsk_ops->destructor/tcp_v4_reqsk_destructor
              kfree(rcu_dereference_protected(inet_rsk(req)->ireq_opt, 1));
    
    Calling kmalloc() between the double kfree() can lead to use-after-free, so
    this patch fixes it by setting NULL to inet_opt before sock_put().
    
    As a side note, this kind of issue does not happen for IPv6. This is
    because tcp_v6_syn_recv_sock() clones both ipv6_opt and pktopts which
    correspond to ireq_opt in IPv4.
    
    Fixes: 01770a166165 ("tcp: fix race condition when creating child sockets from syncookies")
    CC: Ricardo Dias <rdias@singlestore.com>
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
    Reviewed-by: Benjamin Herrenschmidt <benh@amazon.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20210118055920.82516-1-kuniyu@amazon.co.jp
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cc760632083f2ee80ce6c098c6afd492120227e
Author: Hyunwook (Wooky) Baek <baekhw@google.com>
Date:   Sat Jan 9 23:11:02 2021 -0800

    x86/sev-es: Handle string port IO to kernel memory properly
    
    commit 7024f60d655272bd2ca1d3a4c9e0a63319b1eea1 upstream.
    
    Don't assume dest/source buffers are userspace addresses when manually
    copying data for string I/O or MOVS MMIO, as {get,put}_user() will fail
    if handed a kernel address and ultimately lead to a kernel panic.
    
    When invoking INSB/OUTSB instructions in kernel space in a
    SEV-ES-enabled VM, the kernel crashes with the following message:
    
      "SEV-ES: Unsupported exception in #VC instruction emulation - can't continue"
    
    Handle that case properly.
    
     [ bp: Massage commit message. ]
    
    Fixes: f980f9c31a92 ("x86/sev-es: Compile early handler code into kernel image")
    Signed-off-by: Hyunwook (Wooky) Baek <baekhw@google.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: David Rientjes <rientjes@google.com>
    Link: https://lkml.kernel.org/r/20210110071102.2576186-1-baekhw@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c19578d46346aa709d954fa30268139034fa57b
Author: Pan Bian <bianpan2016@163.com>
Date:   Tue Jan 19 20:44:23 2021 -0800

    net: systemport: free dev before on error path
    
    commit 0c630a66bf10991b0ef13d27c93d7545e692ef5b upstream.
    
    On the error path, it should goto the error handling label to free
    allocated memory rather than directly return.
    
    Fixes: 31bc72d97656 ("net: systemport: fetch and use clock resources")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20210120044423.1704-1-bianpan2016@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e018e57fd5c0788c752efdaaa386b19b4ca7c24b
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Jan 21 10:04:27 2021 -0800

    tty: fix up hung_up_tty_write() conversion
    
    commit 17749851eb9ca2298e7c3b81aae4228961b36f28 upstream.
    
    In commit "tty: implement write_iter", I left the write_iter conversion
    of the hung up tty case alone, because I incorrectly thought it didn't
    matter.
    
    Jiri showed me the errors of my ways, and pointed out the problems with
    that incomplete conversion.  Fix it all up.
    
    Reported-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/CAHk-=wh+-rGsa=xruEWdg_fJViFG8rN9bpLrfLz=_yBYh2tBhA@mail.gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 875f1b4bf8906eb1d5f30b62d82010a3854ad325
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 19 11:41:16 2021 -0800

    tty: implement write_iter
    
    commit 9bb48c82aced07698a2d08ee0f1475a6c4f6b266 upstream.
    
    This makes the tty layer use the .write_iter() function instead of the
    traditional .write() functionality.
    
    That allows writev(), but more importantly also makes it possible to
    enable .splice_write() for ttys, reinstating the "splice to tty"
    functionality that was lost in commit 36e2c7421f02 ("fs: don't allow
    splice read/write without explicit ops").
    
    Fixes: 36e2c7421f02 ("fs: don't allow splice read/write without explicit ops")
    Reported-by: Oliver Giles <ohw.giles@gmail.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5bbf7f47570eed9deb515752193d73d7f622ddf
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Jan 6 15:36:21 2021 +0100

    x86/sev: Fix nonistr violation
    
    commit a1d5c98aac33a5a0004ecf88905dcc261c52f988 upstream.
    
    When the compiler fails to inline, it violates nonisntr:
    
      vmlinux.o: warning: objtool: __sev_es_nmi_complete()+0xc7: call to sev_es_wr_ghcb_msr() leaves .noinstr.text section
    
    Fixes: 4ca68e023b11 ("x86/sev-es: Handle NMI State")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20210106144017.532902065@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39afef8a282b8ce63edb8d2ceb8a71e5440de059
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Jan 14 19:16:24 2021 -0800

    pinctrl: qcom: Don't clear pending interrupts when enabling
    
    commit cf9d052aa6005f1e8dfaf491d83bf37f368af69e upstream.
    
    In Linux, if a driver does disable_irq() and later does enable_irq()
    on its interrupt, I believe it's expecting these properties:
    * If an interrupt was pending when the driver disabled then it will
      still be pending after the driver re-enables.
    * If an edge-triggered interrupt comes in while an interrupt is
      disabled it should assert when the interrupt is re-enabled.
    
    If you think that the above sounds a lot like the disable_irq() and
    enable_irq() are supposed to be masking/unmasking the interrupt
    instead of disabling/enabling it then you've made an astute
    observation.  Specifically when talking about interrupts, "mask"
    usually means to stop posting interrupts but keep tracking them and
    "disable" means to fully shut off interrupt detection.  It's
    unfortunate that this is so confusing, but presumably this is all the
    way it is for historical reasons.
    
    Perhaps more confusing than the above is that, even though clients of
    IRQs themselves don't have a way to request mask/unmask
    vs. disable/enable calls, IRQ chips themselves can implement both.
    ...and yet more confusing is that if an IRQ chip implements
    disable/enable then they will be called when a client driver calls
    disable_irq() / enable_irq().
    
    It does feel like some of the above could be cleared up.  However,
    without any other core interrupt changes it should be clear that when
    an IRQ chip gets a request to "disable" an IRQ that it has to treat it
    like a mask of that IRQ.
    
    In any case, after that long interlude you can see that the "unmask
    and clear" can break things.  Maulik tried to fix it so that we no
    longer did "unmask and clear" in commit 71266d9d3936 ("pinctrl: qcom:
    Move clearing pending IRQ to .irq_request_resources callback"), but it
    only handled the PDC case and it had problems (it caused
    sc7180-trogdor devices to fail to suspend).  Let's fix.
    
    >From my understanding the source of the phantom interrupt in the
    were these two things:
    1. One that could have been introduced in msm_gpio_irq_set_type()
       (only for the non-PDC case).
    2. Edges could have been detected when a GPIO was muxed away.
    
    Fixing case #1 is easy.  We can just add a clear in
    msm_gpio_irq_set_type().
    
    Fixing case #2 is harder.  Let's use a concrete example.  In
    sc7180-trogdor.dtsi we configure the uart3 to have two pinctrl states,
    sleep and default, and mux between the two during runtime PM and
    system suspend (see geni_se_resources_{on,off}() for more
    details). The difference between the sleep and default state is that
    the RX pin is muxed to a GPIO during sleep and muxed to the UART
    otherwise.
    
    As per Qualcomm, when we mux the pin over to the UART function the PDC
    (or the non-PDC interrupt detection logic) is still watching it /
    latching edges.  These edges don't cause interrupts because the
    current code masks the interrupt unless we're entering suspend.
    However, as soon as we enter suspend we unmask the interrupt and it's
    counted as a wakeup.
    
    Let's deal with the problem like this:
    * When we mux away, we'll mask our interrupt.  This isn't necessary in
      the above case since the client already masked us, but it's a good
      idea in general.
    * When we mux back will clear any interrupts and unmask.
    
    Fixes: 4b7618fdc7e6 ("pinctrl: qcom: Add irq_enable callback for msm gpio")
    Fixes: 71266d9d3936 ("pinctrl: qcom: Move clearing pending IRQ to .irq_request_resources callback")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Maulik Shah <mkshah@codeaurora.org>
    Tested-by: Maulik Shah <mkshah@codeaurora.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20210114191601.v7.4.I7cf3019783720feb57b958c95c2b684940264cd1@changeid
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8a622d212958ce1003fd2c6b1b98b66107af239
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Jan 14 19:16:23 2021 -0800

    pinctrl: qcom: Properly clear "intr_ack_high" interrupts when unmasking
    
    commit a95881d6aa2c000e3649f27a1a7329cf356e6bb3 upstream.
    
    In commit 4b7618fdc7e6 ("pinctrl: qcom: Add irq_enable callback for
    msm gpio") we tried to Ack interrupts during unmask.  However, that
    patch forgot to check "intr_ack_high" so, presumably, it only worked
    for a certain subset of SoCs.
    
    Let's add a small accessor so we don't need to open-code the logic in
    both places.
    
    This was found by code inspection.  I don't have any access to the
    hardware in question nor software that needs the Ack during unmask.
    
    Fixes: 4b7618fdc7e6 ("pinctrl: qcom: Add irq_enable callback for msm gpio")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Maulik Shah <mkshah@codeaurora.org>
    Tested-by: Maulik Shah <mkshah@codeaurora.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20210114191601.v7.3.I32d0f4e174d45363b49ab611a13c3da8f1e87d0f@changeid
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 022dac5bcde951bddbc4b30cab994d7c42f638df
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Jan 14 19:16:22 2021 -0800

    pinctrl: qcom: No need to read-modify-write the interrupt status
    
    commit 4079d35fa4fca4ee0ffd66968312fc86a5e8c290 upstream.
    
    When the Qualcomm pinctrl driver wants to Ack an interrupt, it does a
    read-modify-write on the interrupt status register.  On some SoCs it
    makes sure that the status bit is 1 to "Ack" and on others it makes
    sure that the bit is 0 to "Ack".  Presumably the first type of
    interrupt controller is a "write 1 to clear" type register and the
    second just let you directly set the interrupt status register.
    
    As far as I can tell from scanning structure definitions, the
    interrupt status bit is always in a register by itself.  Thus with
    both types of interrupt controllers it is safe to "Ack" interrupts
    without doing a read-modify-write.  We can do a simple write.
    
    It should be noted that if the interrupt status bit _was_ ever in a
    register with other things (like maybe status bits for other GPIOs):
    a) For "write 1 clear" type controllers then read-modify-write would
       be totally wrong because we'd accidentally end up clearing
       interrupts we weren't looking at.
    b) For "direct set" type controllers then read-modify-write would also
       be wrong because someone setting one of the other bits in the
       register might accidentally clear (or set) our interrupt.
    I say this simply to show that the current read-modify-write doesn't
    provide any sort of "future proofing" of the code.  In fact (for
    "write 1 clear" controllers) the new code is slightly more "future
    proof" since it would allow more than one interrupt status bits to
    share a register.
    
    NOTE: this code fixes no bugs--it simply avoids an extra register
    read.
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Maulik Shah <mkshah@codeaurora.org>
    Tested-by: Maulik Shah <mkshah@codeaurora.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20210114191601.v7.2.I3635de080604e1feda770591c5563bd6e63dd39d@changeid
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49aec69ee40cc2f83b714698adce6c096946cf92
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Jan 14 19:16:21 2021 -0800

    pinctrl: qcom: Allow SoCs to specify a GPIO function that's not 0
    
    commit a82e537807d5c85706cd4c16fd2de77a8495dc8d upstream.
    
    There's currently a comment in the code saying function 0 is GPIO.
    Instead of hardcoding it, let's add a member where an SoC can specify
    it.  No known SoCs use a number other than 0, but this just makes the
    code clearer.  NOTE: no SoC code needs to be updated since we can rely
    on zero-initialization.
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Maulik Shah <mkshah@codeaurora.org>
    Tested-by: Maulik Shah <mkshah@codeaurora.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20210114191601.v7.1.I3ad184e3423d8e479bc3e86f5b393abb1704a1d1@changeid
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22c3cb558a4bbda0234186c8847d2243098cdbdc
Author: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
Date:   Tue Jan 19 10:53:33 2021 +0200

    net: core: devlink: use right genl user_ptr when handling port param get/set
    
    commit 7e238de8283acd32c26c2bc2a50672d0ea862ff7 upstream.
    
    Fix incorrect user_ptr dereferencing when handling port param get/set:
    
        idx [0] stores the 'struct devlink' pointer;
        idx [1] stores the 'struct devlink_port' pointer;
    
    Fixes: 637989b5d77e ("devlink: Always use user_ptr[0] for devlink and simplify post_doit")
    CC: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
    Signed-off-by: Vadym Kochan <vadym.kochan@plvision.eu>
    Link: https://lore.kernel.org/r/20210119085333.16833-1-vadym.kochan@plvision.eu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a791693a0134f197784368965bc3ccbb32192c1
Author: Alban Bedel <alban.bedel@aerq.com>
Date:   Tue Jan 19 15:06:38 2021 +0100

    net: mscc: ocelot: Fix multicast to the CPU port
    
    commit 584b7cfcdc7d6d416a9d6fece9516764bd977d2e upstream.
    
    Multicast entries in the MAC table use the high bits of the MAC
    address to encode the ports that should get the packets. But this port
    mask does not work for the CPU port, to receive these packets on the
    CPU port the MAC_CPU_COPY flag must be set.
    
    Because of this IPv6 was effectively not working because neighbor
    solicitations were never received. This was not apparent before commit
    9403c158 (net: mscc: ocelot: support IPv4, IPv6 and plain Ethernet mdb
    entries) as the IPv6 entries were broken so all incoming IPv6
    multicast was then treated as unknown and flooded on all ports.
    
    To fix this problem rework the ocelot_mact_learn() to set the
    MAC_CPU_COPY flag when a multicast entry that target the CPU port is
    added. For this we have to read back the ports endcoded in the pseudo
    MAC address by the caller. It is not a very nice design but that avoid
    changing the callers and should make backporting easier.
    
    Signed-off-by: Alban Bedel <alban.bedel@aerq.com>
    Fixes: 9403c158b872 ("net: mscc: ocelot: support IPv4, IPv6 and plain Ethernet mdb entries")
    Link: https://lore.kernel.org/r/20210119140638.203374-1-alban.bedel@aerq.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70746a4779ad861fcdc80ac93df3c916a04c6c5b
Author: Enke Chen <enchen@paloaltonetworks.com>
Date:   Fri Jan 15 14:30:58 2021 -0800

    tcp: fix TCP_USER_TIMEOUT with zero window
    
    commit 9d9b1ee0b2d1c9e02b2338c4a4b0a062d2d3edac upstream.
    
    The TCP session does not terminate with TCP_USER_TIMEOUT when data
    remain untransmitted due to zero window.
    
    The number of unanswered zero-window probes (tcp_probes_out) is
    reset to zero with incoming acks irrespective of the window size,
    as described in tcp_probe_timer():
    
        RFC 1122 4.2.2.17 requires the sender to stay open indefinitely
        as long as the receiver continues to respond probes. We support
        this by default and reset icsk_probes_out with incoming ACKs.
    
    This counter, however, is the wrong one to be used in calculating the
    duration that the window remains closed and data remain untransmitted.
    Thanks to Jonathan Maxwell <jmaxwell37@gmail.com> for diagnosing the
    actual issue.
    
    In this patch a new timestamp is introduced for the socket in order to
    track the elapsed time for the zero-window probes that have not been
    answered with any non-zero window ack.
    
    Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
    Reported-by: William McCall <william.mccall@gmail.com>
    Co-developed-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
    Reviewed-by: Yuchung Cheng <ycheng@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20210115223058.GA39267@localhost.localdomain
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 981e1807748af57283a11d566b787aed6107dae9
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 19 08:49:00 2021 -0800

    tcp: do not mess with cloned skbs in tcp_add_backlog()
    
    commit b160c28548bc0a87cbd16d5af6d3edcfd70b8c9a upstream.
    
    Heiner Kallweit reported that some skbs were sent with
    the following invalid GSO properties :
    - gso_size > 0
    - gso_type == 0
    
    This was triggerring a WARN_ON_ONCE() in rtl8169_tso_csum_v2.
    
    Juerg Haefliger was able to reproduce a similar issue using
    a lan78xx NIC and a workload mixing TCP incoming traffic
    and forwarded packets.
    
    The problem is that tcp_add_backlog() is writing
    over gso_segs and gso_size even if the incoming packet will not
    be coalesced to the backlog tail packet.
    
    While skb_try_coalesce() would bail out if tail packet is cloned,
    this overwriting would lead to corruptions of other packets
    cooked by lan78xx, sharing a common super-packet.
    
    The strategy used by lan78xx is to use a big skb, and split
    it into all received packets using skb_clone() to avoid copies.
    The drawback of this strategy is that all the small skb share a common
    struct skb_shared_info.
    
    This patch rewrites TCP gso_size/gso_segs handling to only
    happen on the tail skb, since skb_try_coalesce() made sure
    it was not cloned.
    
    Fixes: 4f693b55c3d2 ("tcp: implement coalescing on backlog queue")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Bisected-by: Juerg Haefliger <juergh@canonical.com>
    Tested-by: Juerg Haefliger <juergh@canonical.com>
    Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=209423
    Link: https://lore.kernel.org/r/20210119164900.766957-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 013ed7c845dfe123f7dad97936cf6f4bc6284f45
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 19 17:48:03 2021 +0300

    net: dsa: b53: fix an off by one in checking "vlan->vid"
    
    commit 8e4052c32d6b4b39c1e13c652c7e33748d447409 upstream.
    
    The > comparison should be >= to prevent accessing one element beyond
    the end of the dev->vlans[] array in the caller function, b53_vlan_add().
    The "dev->vlans" array is allocated in the b53_switch_init() function
    and it has "dev->num_vlans" elements.
    
    Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/YAbxI97Dl/pmBy5V@mwanda
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0f3d3e6e938d72c371e9838dad0014b1a788dbd
Author: Tariq Toukan <tariqt@nvidia.com>
Date:   Sun Jan 17 17:15:38 2021 +0200

    net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled
    
    commit a3eb4e9d4c9218476d05c52dfd2be3d6fdce6b91 upstream.
    
    With NETIF_F_HW_TLS_RX packets are decrypted in HW. This cannot be
    logically done when RXCSUM offload is off.
    
    Fixes: 14136564c8ee ("net: Add TLS RX offload feature")
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Boris Pismenny <borisp@nvidia.com>
    Link: https://lore.kernel.org/r/20210117151538.9411-1-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 261b8f617d2ad8913b04fbd5992ba3f98b2d4d4b
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Mon Jan 18 15:52:10 2021 +0200

    net: mscc: ocelot: allow offloading of bridge on top of LAG
    
    commit 79267ae22615496655feee2db0848f6786bcf67a upstream.
    
    The blamed commit was too aggressive, and it made ocelot_netdevice_event
    react only to network interface events emitted for the ocelot switch
    ports.
    
    In fact, only the PRECHANGEUPPER should have had that check.
    
    When we ignore all events that are not for us, we miss the fact that the
    upper of the LAG changes, and the bonding interface gets enslaved to a
    bridge. This is an operation we could offload under certain conditions.
    
    Fixes: 7afb3e575e5a ("net: mscc: ocelot: don't handle netdev events for other netdevs")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20210118135210.2666246-1-olteanv@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9898801780ed7cc0d7217bab46d82a5972e172ed
Author: Matteo Croce <mcroce@microsoft.com>
Date:   Fri Jan 15 19:42:09 2021 +0100

    ipv6: set multicast flag on the multicast route
    
    commit ceed9038b2783d14e0422bdc6fd04f70580efb4c upstream.
    
    The multicast route ff00::/8 is created with type RTN_UNICAST:
    
      $ ip -6 -d route
      unicast ::1 dev lo proto kernel scope global metric 256 pref medium
      unicast fe80::/64 dev eth0 proto kernel scope global metric 256 pref medium
      unicast ff00::/8 dev eth0 proto kernel scope global metric 256 pref medium
    
    Set the type to RTN_MULTICAST which is more appropriate.
    
    Fixes: e8478e80e5a7 ("net/ipv6: Save route type in rt6_info")
    Signed-off-by: Matteo Croce <mcroce@microsoft.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0083dc292ee4f6357cdbcd530fb46eafb391bc32
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 14 08:06:37 2021 -0800

    net_sched: reject silly cell_log in qdisc_get_rtab()
    
    commit e4bedf48aaa5552bc1f49703abd17606e7e6e82a upstream.
    
    iproute2 probably never goes beyond 8 for the cell exponent,
    but stick to the max shift exponent for signed 32bit.
    
    UBSAN reported:
    UBSAN: shift-out-of-bounds in net/sched/sch_api.c:389:22
    shift exponent 130 is too large for 32-bit type 'int'
    CPU: 1 PID: 8450 Comm: syz-executor586 Not tainted 5.11.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:79 [inline]
     dump_stack+0x183/0x22e lib/dump_stack.c:120
     ubsan_epilogue lib/ubsan.c:148 [inline]
     __ubsan_handle_shift_out_of_bounds+0x432/0x4d0 lib/ubsan.c:395
     __detect_linklayer+0x2a9/0x330 net/sched/sch_api.c:389
     qdisc_get_rtab+0x2b5/0x410 net/sched/sch_api.c:435
     cbq_init+0x28f/0x12c0 net/sched/sch_cbq.c:1180
     qdisc_create+0x801/0x1470 net/sched/sch_api.c:1246
     tc_modify_qdisc+0x9e3/0x1fc0 net/sched/sch_api.c:1662
     rtnetlink_rcv_msg+0xb1d/0xe60 net/core/rtnetlink.c:5564
     netlink_rcv_skb+0x1f0/0x460 net/netlink/af_netlink.c:2494
     netlink_unicast_kernel net/netlink/af_netlink.c:1304 [inline]
     netlink_unicast+0x7de/0x9b0 net/netlink/af_netlink.c:1330
     netlink_sendmsg+0xaa6/0xe90 net/netlink/af_netlink.c:1919
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg net/socket.c:672 [inline]
     ____sys_sendmsg+0x5a2/0x900 net/socket.c:2345
     ___sys_sendmsg net/socket.c:2399 [inline]
     __sys_sendmsg+0x319/0x400 net/socket.c:2432
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/r/20210114160637.1660597-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56ef551205e4f0a90291f3e481cfb753eae0d15e
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 14 10:52:29 2021 -0800

    net_sched: avoid shift-out-of-bounds in tcindex_set_parms()
    
    commit bcd0cf19ef8258ac31b9a20248b05c15a1f4b4b0 upstream.
    
    tc_index being 16bit wide, we need to check that TCA_TCINDEX_SHIFT
    attribute is not silly.
    
    UBSAN: shift-out-of-bounds in net/sched/cls_tcindex.c:260:29
    shift exponent 255 is too large for 32-bit type 'int'
    CPU: 0 PID: 8516 Comm: syz-executor228 Not tainted 5.10.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:79 [inline]
     dump_stack+0x107/0x163 lib/dump_stack.c:120
     ubsan_epilogue+0xb/0x5a lib/ubsan.c:148
     __ubsan_handle_shift_out_of_bounds.cold+0xb1/0x181 lib/ubsan.c:395
     valid_perfect_hash net/sched/cls_tcindex.c:260 [inline]
     tcindex_set_parms.cold+0x1b/0x215 net/sched/cls_tcindex.c:425
     tcindex_change+0x232/0x340 net/sched/cls_tcindex.c:546
     tc_new_tfilter+0x13fb/0x21b0 net/sched/cls_api.c:2127
     rtnetlink_rcv_msg+0x8b6/0xb80 net/core/rtnetlink.c:5555
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2494
     netlink_unicast_kernel net/netlink/af_netlink.c:1304 [inline]
     netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1330
     netlink_sendmsg+0x907/0xe40 net/netlink/af_netlink.c:1919
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:672
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2336
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2390
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2423
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20210114185229.1742255-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cb2de5242ecddcd80ec7eb9584e3a07a199da2a
Author: Matteo Croce <mcroce@microsoft.com>
Date:   Fri Jan 15 19:42:08 2021 +0100

    ipv6: create multicast route with RTPROT_KERNEL
    
    commit a826b04303a40d52439aa141035fca5654ccaccd upstream.
    
    The ff00::/8 multicast route is created without specifying the fc_protocol
    field, so the default RTPROT_BOOT value is used:
    
      $ ip -6 -d route
      unicast ::1 dev lo proto kernel scope global metric 256 pref medium
      unicast fe80::/64 dev eth0 proto kernel scope global metric 256 pref medium
      unicast ff00::/8 dev eth0 proto boot scope global metric 256 pref medium
    
    As the documentation says, this value identifies routes installed during
    boot, but the route is created when interface is set up.
    Change the value to RTPROT_KERNEL which is a better value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Matteo Croce <mcroce@microsoft.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5f323b7aba3d9ec5b8a7a1afed04f25d29ff387
Author: Guillaume Nault <gnault@redhat.com>
Date:   Sat Jan 16 11:44:22 2021 +0100

    udp: mask TOS bits in udp_v4_early_demux()
    
    commit 8d2b51b008c25240914984208b2ced57d1dd25a5 upstream.
    
    udp_v4_early_demux() is the only function that calls
    ip_mc_validate_source() with a TOS that hasn't been masked with
    IPTOS_RT_MASK.
    
    This results in different behaviours for incoming multicast UDPv4
    packets, depending on if ip_mc_validate_source() is called from the
    early-demux path (udp_v4_early_demux) or from the regular input path
    (ip_route_input_noref).
    
    ECN would normally not be used with UDP multicast packets, so the
    practical consequences should be limited on that side. However,
    IPTOS_RT_MASK is used to also masks the TOS' high order bits, to align
    with the non-early-demux path behaviour.
    
    Reproducer:
    
      Setup two netns, connected with veth:
      $ ip netns add ns0
      $ ip netns add ns1
      $ ip -netns ns0 link set dev lo up
      $ ip -netns ns1 link set dev lo up
      $ ip link add name veth01 netns ns0 type veth peer name veth10 netns ns1
      $ ip -netns ns0 link set dev veth01 up
      $ ip -netns ns1 link set dev veth10 up
      $ ip -netns ns0 address add 192.0.2.10 peer 192.0.2.11/32 dev veth01
      $ ip -netns ns1 address add 192.0.2.11 peer 192.0.2.10/32 dev veth10
    
      In ns0, add route to multicast address 224.0.2.0/24 using source
      address 198.51.100.10:
      $ ip -netns ns0 address add 198.51.100.10/32 dev lo
      $ ip -netns ns0 route add 224.0.2.0/24 dev veth01 src 198.51.100.10
    
      In ns1, define route to 198.51.100.10, only for packets with TOS 4:
      $ ip -netns ns1 route add 198.51.100.10/32 tos 4 dev veth10
    
      Also activate rp_filter in ns1, so that incoming packets not matching
      the above route get dropped:
      $ ip netns exec ns1 sysctl -wq net.ipv4.conf.veth10.rp_filter=1
    
      Now try to receive packets on 224.0.2.11:
      $ ip netns exec ns1 socat UDP-RECVFROM:1111,ip-add-membership=224.0.2.11:veth10,ignoreeof -
    
      In ns0, send packet to 224.0.2.11 with TOS 4 and ECT(0) (that is,
      tos 6 for socat):
      $ echo test0 | ip netns exec ns0 socat - UDP-DATAGRAM:224.0.2.11:1111,bind=:1111,tos=6
    
      The "test0" message is properly received by socat in ns1, because
      early-demux has no cached dst to use, so source address validation
      is done by ip_route_input_mc(), which receives a TOS that has the
      ECN bits masked.
    
      Now send another packet to 224.0.2.11, still with TOS 4 and ECT(0):
      $ echo test1 | ip netns exec ns0 socat - UDP-DATAGRAM:224.0.2.11:1111,bind=:1111,tos=6
    
      The "test1" message isn't received by socat in ns1, because, now,
      early-demux has a cached dst to use and calls ip_mc_validate_source()
      immediately, without masking the ECN bits.
    
    Fixes: bc044e8db796 ("udp: perform source validation for mcast early demux")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03ca5c229a4964e2e87c80b303aed237e01bf012
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 14 10:19:29 2021 -0800

    net_sched: gen_estimator: support large ewma log
    
    commit dd5e073381f2ada3630f36be42833c6e9c78b75e upstream.
    
    syzbot report reminded us that very big ewma_log were supported in the past,
    even if they made litle sense.
    
    tc qdisc replace dev xxx root est 1sec 131072sec ...
    
    While fixing the bug, also add boundary checks for ewma_log, in line
    with range supported by iproute2.
    
    UBSAN: shift-out-of-bounds in net/core/gen_estimator.c:83:38
    shift exponent -1 is negative
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.10.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:79 [inline]
     dump_stack+0x107/0x163 lib/dump_stack.c:120
     ubsan_epilogue+0xb/0x5a lib/ubsan.c:148
     __ubsan_handle_shift_out_of_bounds.cold+0xb1/0x181 lib/ubsan.c:395
     est_timer.cold+0xbb/0x12d net/core/gen_estimator.c:83
     call_timer_fn+0x1a5/0x710 kernel/time/timer.c:1417
     expire_timers kernel/time/timer.c:1462 [inline]
     __run_timers.part.0+0x692/0xa80 kernel/time/timer.c:1731
     __run_timers kernel/time/timer.c:1712 [inline]
     run_timer_softirq+0xb3/0x1d0 kernel/time/timer.c:1744
     __do_softirq+0x2bc/0xa77 kernel/softirq.c:343
     asm_call_irq_on_stack+0xf/0x20
     </IRQ>
     __run_on_irqstack arch/x86/include/asm/irq_stack.h:26 [inline]
     run_on_irqstack_cond arch/x86/include/asm/irq_stack.h:77 [inline]
     do_softirq_own_stack+0xaa/0xd0 arch/x86/kernel/irq_64.c:77
     invoke_softirq kernel/softirq.c:226 [inline]
     __irq_exit_rcu+0x17f/0x200 kernel/softirq.c:420
     irq_exit_rcu+0x5/0x20 kernel/softirq.c:432
     sysvec_apic_timer_interrupt+0x4d/0x100 arch/x86/kernel/apic/apic.c:1096
     asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:628
    RIP: 0010:native_save_fl arch/x86/include/asm/irqflags.h:29 [inline]
    RIP: 0010:arch_local_save_flags arch/x86/include/asm/irqflags.h:79 [inline]
    RIP: 0010:arch_irqs_disabled arch/x86/include/asm/irqflags.h:169 [inline]
    RIP: 0010:acpi_safe_halt drivers/acpi/processor_idle.c:111 [inline]
    RIP: 0010:acpi_idle_do_entry+0x1c9/0x250 drivers/acpi/processor_idle.c:516
    
    Fixes: 1c0d32fde5bd ("net_sched: gen_estimator: complete rewrite of rate estimators")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20210114181929.1717985-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6fc8314dc40c3101a68b5c6bf85472f95c89f89
Author: Yuchung Cheng <ycheng@google.com>
Date:   Tue Jan 19 11:26:19 2021 -0800

    tcp: fix TCP socket rehash stats mis-accounting
    
    commit 9c30ae8398b0813e237bde387d67a7f74ab2db2d upstream.
    
    The previous commit 32efcc06d2a1 ("tcp: export count for rehash attempts")
    would mis-account rehashing SNMP and socket stats:
    
      a. During handshake of an active open, only counts the first
         SYN timeout
    
      b. After handshake of passive and active open, stop updating
         after (roughly) TCP_RETRIES1 recurring RTOs
    
      c. After the socket aborts, over count timeout_rehash by 1
    
    This patch fixes this by checking the rehash result from sk_rethink_txhash.
    
    Fixes: 32efcc06d2a1 ("tcp: export count for rehash attempts")
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Link: https://lore.kernel.org/r/20210119192619.1848270-1-ycheng@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fee5a83dfc4af016b8cd957d8bd4e289954588ef
Author: Lecopzer Chen <lecopzer@gmail.com>
Date:   Sat Jan 23 21:01:29 2021 -0800

    kasan: fix incorrect arguments passing in kasan_add_zero_shadow
    
    commit 5dabd1712cd056814f9ab15f1d68157ceb04e741 upstream.
    
    kasan_remove_zero_shadow() shall use original virtual address, start and
    size, instead of shadow address.
    
    Link: https://lkml.kernel.org/r/20210103063847.5963-1-lecopzer@gmail.com
    Fixes: 0207df4fa1a86 ("kernel/memremap, kasan: make ZONE_DEVICE with work with KASAN")
    Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com>
    Reviewed-by: Andrey Konovalov <andreyknvl@google.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ecd63f04e72879b7c85c9e12698d2a3aabe34c94
Author: Lecopzer Chen <lecopzer@gmail.com>
Date:   Sat Jan 23 21:01:25 2021 -0800

    kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow
    
    commit a11a496ee6e2ab6ed850233c96b94caf042af0b9 upstream.
    
    During testing kasan_populate_early_shadow and kasan_remove_zero_shadow,
    if the shadow start and end address in kasan_remove_zero_shadow() is not
    aligned to PMD_SIZE, the remain unaligned PTE won't be removed.
    
    In the test case for kasan_remove_zero_shadow():
    
        shadow_start: 0xffffffb802000000, shadow end: 0xffffffbfbe000000
    
        3-level page table:
          PUD_SIZE: 0x40000000 PMD_SIZE: 0x200000 PAGE_SIZE: 4K
    
    0xffffffbf80000000 ~ 0xffffffbfbdf80000 will not be removed because in
    kasan_remove_pud_table(), kasan_pmd_table(*pud) is true but the next
    address is 0xffffffbfbdf80000 which is not aligned to PUD_SIZE.
    
    In the correct condition, this should fallback to the next level
    kasan_remove_pmd_table() but the condition flow always continue to skip
    the unaligned part.
    
    Fix by correcting the condition when next and addr are neither aligned.
    
    Link: https://lkml.kernel.org/r/20210103135621.83129-1-lecopzer@gmail.com
    Fixes: 0207df4fa1a86 ("kernel/memremap, kasan: make ZONE_DEVICE with work with KASAN")
    Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: YJ Chiang <yj.chiang@mediatek.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b65578cec113b357228997d872d73d51e698f2d3
Author: Alexander Lobakin <alobakin@pm.me>
Date:   Fri Jan 15 15:04:40 2021 +0000

    skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too
    
    commit 66c556025d687dbdd0f748c5e1df89c977b6c02a upstream.
    
    Commit 3226b158e67c ("net: avoid 32 x truesize under-estimation for
    tiny skbs") ensured that skbs with data size lower than 1025 bytes
    will be kmalloc'ed to avoid excessive page cache fragmentation and
    memory consumption.
    However, the fix adressed only __napi_alloc_skb() (primarily for
    virtio_net and napi_get_frags()), but the issue can still be achieved
    through __netdev_alloc_skb(), which is still used by several drivers.
    Drivers often allocate a tiny skb for headers and place the rest of
    the frame to frags (so-called copybreak).
    Mirror the condition to __netdev_alloc_skb() to handle this case too.
    
    Since v1 [0]:
     - fix "Fixes:" tag;
     - refine commit message (mention copybreak usecase).
    
    [0] https://lore.kernel.org/netdev/20210114235423.232737-1-alobakin@pm.me
    
    Fixes: a1c7fff7e18f ("net: netdev_alloc_skb() use build_skb()")
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Link: https://lore.kernel.org/r/20210115150354.85967-1-alobakin@pm.me
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73171b677fc41b89202d35a699f15f01a1f4e5d0
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Jan 20 23:22:02 2021 -0800

    lightnvm: fix memory leak when submit fails
    
    commit 97784481757fba7570121a70dd37ca74a29f50a8 upstream.
    
    The allocated page is not released if error occurs in
    nvm_submit_io_sync_raw(). __free_page() is moved ealier to avoid
    possible memory leak issue.
    
    Fixes: aff3fb18f957 ("lightnvm: move bad block and chunk state logic to core")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76e2b0b65d47206754084233d268d57ade2a988e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 20 16:11:12 2021 +0000

    cachefiles: Drop superfluous readpages aops NULL check
    
    commit db58465f1121086b524be80be39d1fedbe5387f3 upstream.
    
    After the recent actions to convert readpages aops to readahead, the
    NULL checks of readpages aops in cachefiles_read_or_alloc_page() may
    hit falsely.  More badly, it's an ASSERT() call, and this panics.
    
    Drop the superfluous NULL checks for fixing this regression.
    
    [DH: Note that cachefiles never actually used readpages, so this check was
     never actually necessary]
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=208883
    BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1175245
    Fixes: 9ae326a69004 ("CacheFiles: A cache that backs onto a mounted filesystem")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20fa3a7442798f2e9b7d33ff67e1bde873b9e0e5
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 20 09:35:01 2021 +0100

    nvme-pci: fix error unwind in nvme_map_data
    
    commit fa0732168fa1369dd089e5b06d6158a68229f7b7 upstream.
    
    Properly unwind step by step using refactored helpers from nvme_unmap_data
    to avoid a potential double dma_unmap on a mapping failure.
    
    Fixes: 7fe07d14f71f ("nvme-pci: merge nvme_free_iod into nvme_unmap_data")
    Reported-by: Marc Orr <marcorr@google.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Marc Orr <marcorr@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88072260f3cac26b88102c01bd57cb6004b175ac
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 20 09:33:52 2021 +0100

    nvme-pci: refactor nvme_unmap_data
    
    commit 9275c206f88e5c49cb3e71932c81c8561083db9e upstream.
    
    Split out three helpers from nvme_unmap_data that will allow finer grained
    unwinding from nvme_map_data.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Marc Orr <marcorr@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13bcd09b2f509717c01cfe6baa1db0f39b74668f
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jan 18 16:08:12 2021 +0100

    sh_eth: Fix power down vs. is_opened flag ordering
    
    commit f6a2e94b3f9d89cb40771ff746b16b5687650cbb upstream.
    
    sh_eth_close() does a synchronous power down of the device before
    marking it closed.  Revert the order, to make sure the device is never
    marked opened while suspended.
    
    While at it, use pm_runtime_put() instead of pm_runtime_put_sync(), as
    there is no reason to do a synchronous power down.
    
    Fixes: 7fa2955ff70ce453 ("sh_eth: Fix sleeping function called from invalid context")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Link: https://lore.kernel.org/r/20210118150812.796791-1-geert+renesas@glider.be
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e2bf98d534f4c55763168e446b349c725c5a1de
Author: Sandipan Das <sandipan@linux.ibm.com>
Date:   Mon Jan 18 15:01:45 2021 +0530

    selftests/powerpc: Fix exit status of pkey tests
    
    commit 92a5e1fdb286851d5bd0eb966b8d075be27cf5ee upstream.
    
    Since main() does not return a value explicitly, the
    return values from FAIL_IF() conditions are ignored
    and the tests can still pass irrespective of failures.
    This makes sure that we always explicitly return the
    correct test exit status.
    
    Fixes: 1addb6444791 ("selftests/powerpc: Add test for execute-disabled pkeys")
    Fixes: c27f2fd1705a ("selftests/powerpc: Add test for pkey siginfo verification")
    Reported-by: Eirik Fuller <efuller@redhat.com>
    Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210118093145.10134-1-sandipan@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55c869b1324f49890d2c3898b9b473e71acfa893
Author: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Date:   Sat Jan 16 03:39:35 2021 +0100

    net: dsa: mv88e6xxx: also read STU state in mv88e6250_g1_vtu_getnext
    
    commit 87fe04367d842c4d97a77303242d4dd4ac351e46 upstream.
    
    mv88e6xxx_port_vlan_join checks whether the VTU already contains an
    entry for the given vid (via mv88e6xxx_vtu_getnext), and if so, merely
    changes the relevant .member[] element and loads the updated entry
    into the VTU.
    
    However, at least for the mv88e6250, the on-stack struct
    mv88e6xxx_vtu_entry vlan never has its .state[] array explicitly
    initialized, neither in mv88e6xxx_port_vlan_join() nor inside the
    getnext implementation. So the new entry has random garbage for the
    STU bits, breaking VLAN filtering.
    
    When the VTU entry is initially created, those bits are all zero, and
    we should make sure to keep them that way when the entry is updated.
    
    Fixes: 92307069a96c (net: dsa: mv88e6xxx: Avoid VTU corruption on 6097)
    Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Tobias Waldekranz <tobias@waldekranz.com>
    Tested-by: Tobias Waldekranz <tobias@waldekranz.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fc06bfa701d031e27ba24c6aec24f124fe13650
Author: Yingjie Wang <wangyingjie55@126.com>
Date:   Fri Jan 15 06:10:04 2021 -0800

    octeontx2-af: Fix missing check bugs in rvu_cgx.c
    
    commit b7ba6cfabc42fc846eb96e33f1edcd3ea6290a27 upstream.
    
    In rvu_mbox_handler_cgx_mac_addr_get()
    and rvu_mbox_handler_cgx_mac_addr_set(),
    the msg is expected only from PFs that are mapped to CGX LMACs.
    It should be checked before mapping,
    so we add the is_cgx_config_permitted() in the functions.
    
    Fixes: 96be2e0da85e ("octeontx2-af: Support for MAC address filters in CGX")
    Signed-off-by: Yingjie Wang <wangyingjie55@126.com>
    Reviewed-by: Geetha sowjanya<gakula@marvell.com>
    Link: https://lore.kernel.org/r/1610719804-35230-1-git-send-email-wangyingjie55@126.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19187877057d2f358a13f608d6e61cca4e464d68
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Wed Jan 13 17:07:15 2021 +0200

    ASoC: SOF: Intel: fix page fault at probe if i915 init fails
    
    commit 9c25af250214e45f6d1c21ff6239a1ffeeedf20e upstream.
    
    The earlier commit to fix runtime PM in case i915 init fails,
    introduces a possibility to hit a page fault.
    
    snd_hdac_ext_bus_device_exit() is designed to be called from
    dev.release(). Calling it outside device reference counting, is
    not safe and may lead to calling the device_exit() function
    twice. Additionally, as part of ext_bus_device_init(), the device
    is also registered with snd_hdac_device_register(). Thus before
    calling device_exit(), the device must be removed from device
    hierarchy first.
    
    Fix the issue by rolling back init actions by calling
    hdac_device_unregister() and then releasing device with put_device().
    This matches with existing code in hdac-ext module.
    
    To complete the fix, add handling for the case where
    hda_codec_load_module() returns -ENODEV, and clean up the hdac_ext
    resources also in this case.
    
    In future work, hdac-ext interface should be extended to allow clients
    more flexibility to handle the life-cycle of individual devices, beyond
    just the current snd_hdac_ext_bus_device_remove(), which removes all
    devices.
    
    BugLink: https://github.com/thesofproject/linux/issues/2646
    Reported-by: Jaroslav Kysela <perex@perex.cz>
    Fixes: 6c63c954e1c5 ("ASoC: SOF: fix a runtime pm issue in SOF when HDMI codec doesn't work")
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Reviewed-by: Rander Wang <rander.wang@intel.com>
    Reviewed-by: Libin Yang <libin.yang@intel.com>
    Reviewed-by: Bard Liao <bard.liao@intel.com>
    Link: https://lore.kernel.org/r/20210113150715.3992635-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba548335c8e8abf61f77cdf751517617d1d5359f
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Jan 6 15:36:22 2021 +0100

    locking/lockdep: Cure noinstr fail
    
    commit 0afda3a888dccf12557b41ef42eee942327d122b upstream.
    
    When the compiler doesn't feel like inlining, it causes a noinstr
    fail:
    
      vmlinux.o: warning: objtool: lock_is_held_type()+0xb: call to lockdep_enabled() leaves .noinstr.text section
    
    Fixes: 4d004099a668 ("lockdep: Fix lockdep recursion")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20210106144017.592595176@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c262be154ff300f1f6eecdddc6187e229485607
Author: Jinyang He <hejinyang@loongson.cn>
Date:   Mon Oct 12 11:50:24 2020 +0800

    sh: Remove unused HAVE_COPY_THREAD_TLS macro
    
    commit 19170492735be935747b0545b7eed8bb40cc1209 upstream.
    
    Fixes:  e1cc9d8d596e ("sh: switch to copy_thread_tls()")
    Signed-off-by: Jinyang He <hejinyang@loongson.cn>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 233900505617a4b069e11e7de33b5fef78eb901d
Author: Necip Fazil Yildiran <fazilyildiran@gmail.com>
Date:   Thu Sep 17 18:45:48 2020 +0300

    sh: dma: fix kconfig dependency for G2_DMA
    
    commit f477a538c14d07f8c45e554c8c5208d588514e98 upstream.
    
    When G2_DMA is enabled and SH_DMA is disabled, it results in the following
    Kbuild warning:
    
    WARNING: unmet direct dependencies detected for SH_DMA_API
      Depends on [n]: SH_DMA [=n]
      Selected by [y]:
      - G2_DMA [=y] && SH_DREAMCAST [=y]
    
    The reason is that G2_DMA selects SH_DMA_API without depending on or
    selecting SH_DMA while SH_DMA_API depends on SH_DMA.
    
    When G2_DMA was first introduced with commit 40f49e7ed77f
    ("sh: dma: Make G2 DMA configurable."), this wasn't an issue since
    SH_DMA_API didn't have such dependency, and this way was the only way to
    enable it since SH_DMA_API was non-visible. However, later SH_DMA_API was
    made visible and dependent on SH_DMA with commit d8902adcc1a9
    ("dmaengine: sh: Add Support SuperH DMA Engine driver").
    
    Let G2_DMA depend on SH_DMA_API instead to avoid Kbuild issues.
    
    Fixes: d8902adcc1a9 ("dmaengine: sh: Add Support SuperH DMA Engine driver")
    Signed-off-by: Necip Fazil Yildiran <fazilyildiran@gmail.com>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e929068ad5b333ac880a7b69a7903892c2023564
Author: Anshuman Gupta <anshuman.gupta@intel.com>
Date:   Mon Jan 11 13:41:02 2021 +0530

    drm/i915/hdcp: Update CP property in update_pipe
    
    commit b3c95d0bdb0855b1f28370629e9eebec6bceac17 upstream.
    
    When crtc state need_modeset is true it is not necessary
    it is going to be a real modeset, it can turns to be a
    fastset instead of modeset.
    This turns content protection property to be DESIRED and hdcp
    update_pipe left with property to be in DESIRED state but
    actual hdcp->value was ENABLED.
    
    This issue is caught with DP MST setup, where we have multiple
    connector in same DP_MST topology. When disabling HDCP on one of
    DP MST connector leads to set the crtc state need_modeset to true
    for all other crtc driving the other DP-MST topology connectors.
    This turns up other DP MST connectors CP property to be DESIRED
    despite the actual hdcp->value is ENABLED.
    Above scenario fails the DP MST HDCP IGT test, disabling HDCP on
    one MST stream should not cause to disable HDCP on another MST
    stream on same DP MST topology.
    
    v2:
    - Fixed connector->base.registration_state == DRM_CONNECTOR_REGISTERED
      WARN_ON.
    
    v3:
    - Commit log improvement. [Uma]
    - Added a comment before scheduling prop_work. [Uma]
    
    Fixes: 33f9a623bfc6 ("drm/i915/hdcp: Update CP as per the kernel internal state")
    Cc: Ramalingam C <ramalingam.c@intel.com>
    Reviewed-by: Uma Shankar <uma.shankar@intel.com>
    Reviewed-by: Ramalingam C <ramalingam.c@intel.com>
    Tested-by: Karthik B S <karthik.b.s@intel.com>
    Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210111081120.28417-2-anshuman.gupta@intel.com
    (cherry picked from commit d276e16702e2d634094f75f69df3b493f359fe31)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5897a78fd13f16954bba64d18e48709919f81b85
Author: Kent Gibson <warthog618@gmail.com>
Date:   Thu Jan 7 12:00:20 2021 +0800

    tools: gpio: fix %llu warning in gpio-watch.c
    
    commit 1fc7c1ef37f86f207b4db40aba57084bb2f6a69a upstream.
    
    Some platforms, such as mips64, don't map __u64 to long long unsigned
    int so using %llu produces a warning:
    
    gpio-watch.c: In function ‘main’:
    gpio-watch.c:89:30: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ {aka ‘long unsigned int’} [-Wformat=]
       89 |    printf("line %u: %s at %llu\n",
          |                           ~~~^
          |                              |
          |                              long long unsigned int
          |                           %lu
       90 |           chg.info.offset, event, chg.timestamp_ns);
          |                                   ~~~~~~~~~~~~~~~~
          |                                      |
          |                                      __u64 {aka long unsigned int}
    
    Replace the %llu with PRIu64 and cast the argument to uint64_t.
    
    Fixes: 33f0c47b8fb4 ("tools: gpio: implement gpio-watch")
    Signed-off-by: Kent Gibson <warthog618@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fa4a03fd01e5e885621a5946764d918e32afe2a
Author: Kent Gibson <warthog618@gmail.com>
Date:   Thu Jan 7 12:00:19 2021 +0800

    tools: gpio: fix %llu warning in gpio-event-mon.c
    
    commit 2fe7c2f99440d52613e1cf845c96e8e463c28111 upstream.
    
    Some platforms, such as mips64, don't map __u64 to long long unsigned
    int so using %llu produces a warning:
    
    gpio-event-mon.c:110:37: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘__u64’ {aka ‘long unsigned int’} [-Wformat=]
      110 |   fprintf(stdout, "GPIO EVENT at %llu on line %d (%d|%d) ",
          |                                  ~~~^
          |                                     |
          |                                     long long unsigned int
          |                                  %lu
      111 |    event.timestamp_ns, event.offset, event.line_seqno,
          |    ~~~~~~~~~~~~~~~~~~
          |         |
          |         __u64 {aka long unsigned int}
    
    Replace the %llu with PRIu64 and cast the argument to uint64_t.
    
    Fixes: 03fd11b03362 ("tools/gpio/gpio-event-mon: fix warning")
    Signed-off-by: Kent Gibson <warthog618@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83d7403b2e3e3bc42679e0867e9f30af04e58e77
Author: Guillaume Nault <gnault@redhat.com>
Date:   Sat Jan 16 11:44:26 2021 +0100

    netfilter: rpfilter: mask ecn bits before fib lookup
    
    commit 2e5a6266fbb11ae93c468dfecab169aca9c27b43 upstream.
    
    RT_TOS() only masks one of the two ECN bits. Therefore rpfilter_mt()
    treats Not-ECT or ECT(1) packets in a different way than those with
    ECT(0) or CE.
    
    Reproducer:
    
      Create two netns, connected with a veth:
      $ ip netns add ns0
      $ ip netns add ns1
      $ ip link add name veth01 netns ns0 type veth peer name veth10 netns ns1
      $ ip -netns ns0 link set dev veth01 up
      $ ip -netns ns1 link set dev veth10 up
      $ ip -netns ns0 address add 192.0.2.10/32 dev veth01
      $ ip -netns ns1 address add 192.0.2.11/32 dev veth10
    
      Add a route to ns1 in ns0:
      $ ip -netns ns0 route add 192.0.2.11/32 dev veth01
    
      In ns1, only packets with TOS 4 can be routed to ns0:
      $ ip -netns ns1 route add 192.0.2.10/32 tos 4 dev veth10
    
      Ping from ns0 to ns1 works regardless of the ECN bits, as long as TOS
      is 4:
      $ ip netns exec ns0 ping -Q 4 192.0.2.11   # TOS 4, Not-ECT
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 5 192.0.2.11   # TOS 4, ECT(1)
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 6 192.0.2.11   # TOS 4, ECT(0)
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 7 192.0.2.11   # TOS 4, CE
        ... 0% packet loss ...
    
      Now use iptable's rpfilter module in ns1:
      $ ip netns exec ns1 iptables-legacy -t raw -A PREROUTING -m rpfilter --invert -j DROP
    
      Not-ECT and ECT(1) packets still pass:
      $ ip netns exec ns0 ping -Q 4 192.0.2.11   # TOS 4, Not-ECT
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 5 192.0.2.11   # TOS 4, ECT(1)
        ... 0% packet loss ...
    
      But ECT(0) and ECN packets are dropped:
      $ ip netns exec ns0 ping -Q 6 192.0.2.11   # TOS 4, ECT(0)
        ... 100% packet loss ...
      $ ip netns exec ns0 ping -Q 7 192.0.2.11   # TOS 4, CE
        ... 100% packet loss ...
    
    After this patch, rpfilter doesn't drop ECT(0) and CE packets anymore.
    
    Fixes: 8f97339d3feb ("netfilter: add ipv4 reverse path filter match")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 238b5ebdb6a6e4bc90810b9f8ec0063b3dfda41a
Author: Cong Wang <cong.wang@bytedance.com>
Date:   Fri Jan 15 10:50:24 2021 -0800

    cls_flower: call nla_ok() before nla_next()
    
    commit c96adff95619178e2118925578343ad54857c80c upstream.
    
    fl_set_enc_opt() simply checks if there are still bytes left to parse,
    but this is not sufficent as syzbot seems to be able to generate
    malformatted netlink messages. nla_ok() is more strict so should be
    used to validate the next nlattr here.
    
    And nla_validate_nested_deprecated() has less strict check too, it is
    probably too late to switch to the strict version, but we can just
    call nla_ok() too after it.
    
    Reported-and-tested-by: syzbot+2624e3778b18fc497c92@syzkaller.appspotmail.com
    Fixes: 0a6e77784f49 ("net/sched: allow flower to match tunnel options")
    Fixes: 79b1011cb33d ("net: sched: allow flower to match erspan options")
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Xin Long <lucien.xin@gmail.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/r/20210115185024.72298-1-xiyou.wangcong@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23d02ee1d455b42e13a7ceccf8eec11224f7e5ba
Author: Yazen Ghannam <Yazen.Ghannam@amd.com>
Date:   Mon Jan 11 11:04:29 2021 +0100

    x86/cpu/amd: Set __max_die_per_package on AMD
    
    commit 76e2fc63ca40977af893b724b00cc2f8e9ce47a4 upstream.
    
    Set the maximum DIE per package variable on AMD using the
    NodesPerProcessor topology value. This will be used by RAPL, among
    others, to determine the maximum number of DIEs on the system in order
    to do per-DIE manipulations.
    
     [ bp: Productize into a proper patch. ]
    
    Fixes: 028c221ed190 ("x86/CPU/AMD: Save AMD NodeId as cpu_die_id")
    Reported-by: Johnathan Smithinovic <johnathan.smithinovic@gmx.at>
    Reported-by: Rafael Kitover <rkitover@gmail.com>
    Signed-off-by: Yazen Ghannam <Yazen.Ghannam@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Johnathan Smithinovic <johnathan.smithinovic@gmx.at>
    Tested-by: Rafael Kitover <rkitover@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=210939
    Link: https://lkml.kernel.org/r/20210106112106.GE5729@zn.tnic
    Link: https://lkml.kernel.org/r/20210111101455.1194-1-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b3efe55e583aad4e17da8b51ad90994785119a6
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Jan 6 15:36:20 2021 +0100

    x86/entry: Fix noinstr fail
    
    commit 9caa7ff509add50959a793b811cc7c9339e281cd upstream.
    
      vmlinux.o: warning: objtool: __do_fast_syscall_32()+0x47: call to syscall_enter_from_user_mode_work() leaves .noinstr.text section
    
    Fixes: 4facb95b7ada ("x86/entry: Unbreak 32bit fast syscall")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20210106144017.472696632@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2989acadc8b6fb11a56442a1bb43b2370bd1f9f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Jan 18 17:43:55 2021 +0200

    drm/i915: Only enable DFP 4:4:4->4:2:0 conversion when outputting YCbCr 4:4:4
    
    commit 1c4995b0a576d24bb7ead991fb037c8b47ab6e32 upstream.
    
    Let's not enable the 4:4:4->4:2:0 conversion bit in the DFP unless we're
    actually outputting YCbCr 4:4:4. It would appear some protocol
    converters blindy consult this bit even when the source is outputting
    RGB, resulting in a visual mess.
    
    Cc: stable@vger.kernel.org
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2914
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210111164111.13302-1-ville.syrjala@linux.intel.com
    Fixes: 181567aa9f0d ("drm/i915: Do YCbCr 444->420 conversion via DP protocol converters")
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit 3170a21f7059c4660c469f59bf529f372a57da5f)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210118154355.24453-1-ville.syrjala@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75b94440300065bd672bd55906d83b787765f8ef
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Oct 16 22:48:00 2020 +0300

    drm/i915: s/intel_dp_sink_dpms/intel_dp_set_power/
    
    commit 0e634efd858e0e9331ea037e1a142e34a446e9e3 upstream.
    
    Rename intel_dp_sink_dpms() to intel_dp_set_power()
    so one doesn't always have to convert from the DPMS
    enum values to the actual DP D-states.
    
    Also when dealing with a branch device this has nothing to
    do with any sink, so the old name was nonsense anyway.
    Also adjust the debug message accordingly, and pimp it
    with the standard encoder id+name thing.
    
    Trivial bits done with cocci:
    @@
    expression DP;
    @@
    (
    - intel_dp_sink_dpms(DP, DRM_MODE_DPMS_OFF)
    + intel_dp_set_power(DP, DP_SET_POWER_D3)
    |
    - intel_dp_sink_dpms(DP, DRM_MODE_DPMS_ON)
    + intel_dp_set_power(DP, DP_SET_POWER_D0)
    )
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201016194800.25581-2-ville.syrjala@linux.intel.com
    Reviewed-by: Imre Deak <imre.deak@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 881363cbddb18a6258d3a7fc2b2a023d8f029dc3
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Jan 15 19:30:51 2021 +0100

    driver core: Extend device_is_dependent()
    
    commit 3d1cf435e201d1fd63e4346b141881aed086effd upstream.
    
    If the device passed as the target (second argument) to
    device_is_dependent() is not completely registered (that is, it has
    been initialized, but not added yet), but the parent pointer of it
    is set, it may be missing from the list of the parent's children
    and device_for_each_child() called by device_is_dependent() cannot
    be relied on to catch that dependency.
    
    For this reason, modify device_is_dependent() to check the ancestors
    of the target device by following its parent pointer in addition to
    the device_for_each_child() walk.
    
    Fixes: 9ed9895370ae ("driver core: Functional dependencies tracking support")
    Reported-by: Stephan Gerhold <stephan@gerhold.net>
    Tested-by: Stephan Gerhold <stephan@gerhold.net>
    Reviewed-by: Saravana Kannan <saravanak@google.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://lore.kernel.org/r/17705994.d592GUb2YH@kreacher
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3bc56e3f503281a0d30896fe4f17a9a3d7d03c0
Author: Saravana Kannan <saravanak@google.com>
Date:   Sun Jan 10 09:54:07 2021 -0800

    driver core: Fix device link device name collision
    
    commit e020ff611ba9be54e959e6b548038f8a020da1c9 upstream.
    
    The device link device's name was of the form:
    <supplier-dev-name>--<consumer-dev-name>
    
    This can cause name collision as reported here [1] as device names are
    not globally unique. Since device names have to be unique within the
    bus/class, add the bus/class name as a prefix to the device names used to
    construct the device link device name.
    
    So the devuce link device's name will be of the form:
    <supplier-bus-name>:<supplier-dev-name>--<consumer-bus-name>:<consumer-dev-name>
    
    [1] - https://lore.kernel.org/lkml/20201229033440.32142-1-michael@walle.cc/
    
    Fixes: 287905e68dd2 ("driver core: Expose device link details in sysfs")
    Cc: stable@vger.kernel.org
    Reported-by: Michael Walle <michael@walle.cc>
    Tested-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Saravana Kannan <saravanak@google.com>
    Link: https://lore.kernel.org/r/20210110175408.1465657-1-saravanak@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cd3c48c1baf8c99dd573c41f25c1bb066f641b3
Author: Meng Li <Meng.Li@windriver.com>
Date:   Tue Jan 5 15:09:27 2021 +0800

    drivers core: Free dma_range_map when driver probe failed
    
    commit d0243bbd5dd3ebbd49dafa8b56bb911d971131d0 upstream.
    
    There will be memory leak if driver probe failed. Trace as below:
      backtrace:
        [<000000002415258f>] kmemleak_alloc+0x3c/0x50
        [<00000000f447ebe4>] __kmalloc+0x208/0x530
        [<0000000048bc7b3a>] of_dma_get_range+0xe4/0x1b0
        [<0000000041e39065>] of_dma_configure_id+0x58/0x27c
        [<000000006356866a>] platform_dma_configure+0x2c/0x40
        ......
        [<000000000afcf9b5>] ret_from_fork+0x10/0x3c
    
    This issue is introduced by commit e0d072782c73("dma-mapping:
    introduce DMA range map, supplanting dma_pfn_offset "). It doesn't
    free dma_range_map when driver probe failed and cause above
    memory leak. So, add code to free it in error path.
    
    Fixes: e0d072782c73 ("dma-mapping: introduce DMA range map, supplanting dma_pfn_offset ")
    Cc: stable@vger.kernel.org
    Signed-off-by: Meng Li <Meng.Li@windriver.com>
    Link: https://lore.kernel.org/r/20210105070927.14968-1-Meng.Li@windriver.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a9eb1141390133eed5cc9285cc2bd4170c2230f
Author: JC Kuo <jckuo@nvidia.com>
Date:   Fri Jan 15 18:19:07 2021 +0200

    xhci: tegra: Delay for disabling LFPS detector
    
    commit da7e0c3c2909a3d9bf8acfe1db3cb213bd7febfb upstream.
    
    Occasionally, we are seeing some SuperSpeed devices resumes right after
    being directed to U3. This commits add 500us delay to ensure LFPS
    detector is disabled before sending ACK to firmware.
    
    [   16.099363] tegra-xusb 70090000.usb: entering ELPG
    [   16.104343] tegra-xusb 70090000.usb: 2-1 isn't suspended: 0x0c001203
    [   16.114576] tegra-xusb 70090000.usb: not all ports suspended: -16
    [   16.120789] tegra-xusb 70090000.usb: entering ELPG failed
    
    The register write passes through a few flop stages of 32KHz clock domain.
    NVIDIA ASIC designer reviewed RTL and suggests 500us delay.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: JC Kuo <jckuo@nvidia.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115161907.2875631-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e7d7c0347081f9d2ca88df5298cfca3c6668e56
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Jan 15 18:19:06 2021 +0200

    xhci: make sure TRB is fully written before giving it to the controller
    
    commit 576667bad341516edc4e18eb85acb0a2b4c9c9d9 upstream.
    
    Once the command ring doorbell is rung the xHC controller will parse all
    command TRBs on the command ring that have the cycle bit set properly.
    
    If the driver just started writing the next command TRB to the ring when
    hardware finished the previous TRB, then HW might fetch an incomplete TRB
    as long as its cycle bit set correctly.
    
    A command TRB is 16 bytes (128 bits) long.
    Driver writes the command TRB in four 32 bit chunks, with the chunk
    containing the cycle bit last. This does however not guarantee that
    chunks actually get written in that order.
    
    This was detected in stress testing when canceling URBs with several
    connected USB devices.
    Two consecutive "Set TR Dequeue pointer" commands got queued right
    after each other, and the second one was only partially written when
    the controller parsed it, causing the dequeue pointer to be set
    to bogus values. This was seen as error messages:
    
    "Mismatch between completed Set TR Deq Ptr command & xHCI internal state"
    
    Solution is to add a write memory barrier before writing the cycle bit.
    
    Cc: <stable@vger.kernel.org>
    Tested-by: Ross Zwisler <zwisler@google.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115161907.2875631-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b81e926bb986d88fcccf2f34e8d2ff50e30090f
Author: Peter Chen <peter.chen@nxp.com>
Date:   Thu Dec 10 21:31:37 2020 +0800

    usb: cdns3: imx: fix can't create core device the second time issue
    
    commit 2ef02b846ee2526249a562a66d6dcb25fcbca9d8 upstream.
    
    The cdns3 core device is populated by calling of_platform_populate,
    the flag OF_POPULATED is set for core device node, if this flag
    is not cleared, when calling of_platform_populate the second time
    after loading parent module again, the OF code will not try to create
    platform device for core device.
    
    To fix it, it uses of_platform_depopulate to depopulate the core
    device which the parent created, and the flag OF_POPULATED for
    core device node will be cleared accordingly.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 1e056efab993 ("usb: cdns3: add NXP imx8qm glue layer")
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc7f1a32424ef6689665a91e66c43f6836889623
Author: Peter Chen <peter.chen@nxp.com>
Date:   Thu Dec 10 21:31:36 2020 +0800

    usb: cdns3: imx: fix writing read-only memory issue
    
    commit 92cbdb923c17544684c2dd3be9f8636617898a44 upstream.
    
    The memory for struct clk_bulk_data should not be static which will be written
    during the clk_bulk_get. It fixed below oops when loading cdns3-imx as module.
    
    [   17.272605] Unable to handle kernel write to read-only memory at virtual address ffff8000092a5398
    [   17.299730] Mem abort info:
    [   17.313542] unregister ISI channel: mxc_isi.4
    [   17.324076]   ESR = 0x9600004f
    [   17.344658]   EC = 0x25: DABT (current EL), IL = 32 bits
    [   17.402055]   SET = 0, FnV = 0
    [   17.404321] mxs_phy 5b100000.usbphy: supply phy-3p0 not found, using dummy regulator
    [   17.405121]   EA = 0, S1PTW = 0
    [   17.405133] Data abort info:
    [   17.496231]   ISV = 0, ISS = 0x0000004f
    [   17.510871]   CM = 0, WnR = 1
    [   17.533542] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000081ea5000
    [   17.545709] [ffff8000092a5398] pgd=00000008bffff003, p4d=00000008bffff003, pud=00000008bfffe003, pmd=0000000885041003, pte=006000088513b783
    [   17.573521] Internal error: Oops: 9600004f [#1] PREEMPT SMP
    [   17.579113] Modules linked in: usbmisc_imx phy_mxs_usb phy_cadence_salvo cdns3_imx(+) tcpci imx8_media_dev(C) caam error
    [   17.590044] CPU: 2 PID: 253 Comm: systemd-udevd Tainted: G         C        5.10.0-rc4-04445-g11f3c3a29d0-dirty #19
    [   17.600488] Hardware name: Freescale i.MX8QXP MEK (DT)
    [   17.605633] pstate: 20000005 (nzCv daif -PAN -UAO -TCO BTYPE=--)
    [   17.611662] pc : __clk_bulk_get+0x48/0x130
    [   17.615786] lr : clk_bulk_get+0x18/0x20
    [   17.619634] sp : ffff80001369b880
    [   17.622953] x29: ffff80001369b880 x28: 0000000000000013
    [   17.628277] x27: 0000000000000100 x26: ffff00080553b100
    [   17.633602] x25: ffff80001229b4d8 x24: 0000000000000000
    [   17.638928] x23: ffff000800665410 x22: 0000000000000005
    [   17.644275] x21: ffff8000092a5390 x20: ffff000800665400
    [   17.649605] x19: ffff000804e6f980 x18: 000000005b110000
    [   17.654946] x17: 0000000000000000 x16: 0000000000000000
    [   17.660274] x15: ffff800011989100 x14: 0000000000000000
    [   17.665599] x13: ffff800013ce1000 x12: ffff800013ca1000
    [   17.670924] x11: 000000005b110000 x10: 0000000000000000
    [   17.676249] x9 : ffff8000106c5a30 x8 : ffff000804e6fa00
    [   17.681575] x7 : 0000000000000000 x6 : 000000000000003f
    [   17.686901] x5 : 0000000000000040 x4 : ffff80001369b8b0
    [   17.692228] x3 : ffff8000092a5398 x2 : ffff8000092a5390
    [   17.697574] x1 : ffff8000092a53e8 x0 : 0000000000000004
    [   17.702905] Call trace:
    [   17.705366]  __clk_bulk_get+0x48/0x130
    [   17.709125]  clk_bulk_get+0x18/0x20
    [   17.712620]  devm_clk_bulk_get+0x58/0xb8
    [   17.716563]  cdns_imx_probe+0x84/0x1f0 [cdns3_imx]
    [   17.721363]  platform_drv_probe+0x58/0xa8
    [   17.725381]  really_probe+0xec/0x4c8
    [   17.728967]  driver_probe_device+0xf4/0x160
    [   17.733160]  device_driver_attach+0x74/0x80
    [   17.737355]  __driver_attach+0xa4/0x170
    [   17.741202]  bus_for_each_dev+0x74/0xc8
    [   17.745043]  driver_attach+0x28/0x30
    [   17.748620]  bus_add_driver+0x144/0x228
    [   17.752462]  driver_register+0x68/0x118
    [   17.756308]  __platform_driver_register+0x4c/0x58
    [   17.761022]  cdns_imx_driver_init+0x24/0x1000 [cdns3_imx]
    [   17.766434]  do_one_initcall+0x48/0x2c0
    [   17.770280]  do_init_module+0x5c/0x220
    [   17.774029]  load_module+0x210c/0x2858
    [   17.777784]  __do_sys_finit_module+0xb8/0x120
    [   17.782148]  __arm64_sys_finit_module+0x24/0x30
    [   17.786691]  el0_svc_common.constprop.0+0x70/0x168
    [   17.791497]  do_el0_svc+0x28/0x88
    [   17.794822]  el0_sync_handler+0x158/0x160
    [   17.798833]  el0_sync+0x140/0x180
    [   17.802158] Code: aa0203f5 91002043 8b205021 a90153f3 (f801047f)
    
    Cc: <stable@vger.kernel.org>
    Fixes: 1e056efab993 ("usb: cdns3: add NXP imx8qm glue layer")
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb87dd389e0fb4c608afb959e0febc0ff58e09bc
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Mon Jan 18 21:36:15 2021 +0100

    usb: bdc: Make bdc pci driver depend on BROKEN
    
    commit ef02684c4e67d8c35ac83083564135bc7b1d3445 upstream.
    
    The bdc pci driver is going to be removed due to it not existing in the
    wild. This patch turns off compilation of the driver so that stable
    kernels can also pick up the change. This helps the out-of-tree
    facetimehd webcam driver as the pci id conflicts with bdc.
    
    Cc: Al Cooper <alcooperx@gmail.com>
    Cc: <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://lore.kernel.org/r/20210118203615.13995-1-patrik.r.jakobsson@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bbf039671dcd9522f0061747f97ec0c615bfa50
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu Jan 14 00:09:51 2021 -0800

    usb: udc: core: Use lock when write to soft_connect
    
    commit c28095bc99073ddda65e4f31f6ae0d908d4d5cd8 upstream.
    
    Use lock to guard against concurrent access for soft-connect/disconnect
    operations when writing to soft_connect sysfs.
    
    Fixes: 2ccea03a8f7e ("usb: gadget: introduce UDC Class")
    Cc: stable@vger.kernel.org
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/338ea01fbd69b1985ef58f0f59af02c805ddf189.1610611437.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43e2ae5a7493e2d5e42639b40fdeda1f19a5138c
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Jan 13 14:45:10 2021 -0500

    USB: gadget: dummy-hcd: Fix errors in port-reset handling
    
    commit 6e6aa61d81194c01283880950df563b1b9abec46 upstream.
    
    Commit c318840fb2a4 ("USB: Gadget: dummy-hcd: Fix shift-out-of-bounds
    bug") messed up the way dummy-hcd handles requests to turn on the
    RESET port feature (I didn't notice that the original switch case
    ended with a fallthrough).  The call to set_link_state() was
    inadvertently removed, as was the code to set the USB_PORT_STAT_RESET
    flag when the speed is USB2.
    
    In addition, the original code never checked whether the port was
    connected before handling the port-reset request.  There was a check
    for the port being powered, but it was removed by that commit!  In
    practice this doesn't matter much because the kernel doesn't try to
    reset disconnected ports, but it's still bad form.
    
    This patch fixes these problems by changing the fallthrough to break,
    adding back in the missing set_link_state() call, setting the
    port-reset status flag, adding a port-is-connected test, and removing
    a redundant assignment statement.
    
    Fixes: c318840fb2a4 ("USB: Gadget: dummy-hcd: Fix shift-out-of-bounds bug")
    CC: <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20210113194510.GA1290698@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea0dd2da3ac756b8c6d32b4b17c642e64d5d908d
Author: Ryan Chen <ryan_chen@aspeedtech.com>
Date:   Fri Jan 8 16:12:38 2021 +0800

    usb: gadget: aspeed: fix stop dma register setting.
    
    commit 4e0dcf62ab4cf917d0cbe751b8bf229a065248d4 upstream.
    
    The vhub engine has two dma mode, one is descriptor list, another
    is single stage DMA. Each mode has different stop register setting.
    Descriptor list operation (bit2) : 0 disable reset, 1: enable reset
    Single mode operation (bit0) : 0 : disable, 1: enable
    
    Fixes: 7ecca2a4080c ("usb/gadget: Add driver for Aspeed SoC virtual hub")
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Acked-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
    Link: https://lore.kernel.org/r/20210108081238.10199-2-ryan_chen@aspeedtech.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6e50ff9363c37c6bed193377fee9d62ef6756f7
Author: Longfang Liu <liulongfang@huawei.com>
Date:   Tue Jan 12 09:57:27 2021 +0800

    USB: ehci: fix an interrupt calltrace error
    
    commit 643a4df7fe3f6831d14536fd692be85f92670a52 upstream.
    
    The system that use Synopsys USB host controllers goes to suspend
    when using USB audio player. This causes the USB host controller
    continuous send interrupt signal to system, When the number of
    interrupts exceeds 100000, the system will forcibly close the
    interrupts and output a calltrace error.
    
    When the system goes to suspend, the last interrupt is reported to
    the driver. At this time, the system has set the state to suspend.
    This causes the last interrupt to not be processed by the system and
    not clear the interrupt flag. This uncleared interrupt flag constantly
    triggers new interrupt event. This causing the driver to receive more
    than 100,000 interrupts, which causes the system to forcibly close the
    interrupt report and report the calltrace error.
    
    so, when the driver goes to sleep and changes the system state to
    suspend, the interrupt flag needs to be cleared.
    
    Signed-off-by: Longfang Liu <liulongfang@huawei.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/1610416647-45774-1-git-send-email-liulongfang@huawei.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f270d1d7556350234d370c54304a8760101bfb0c
Author: Eugene Korenevsky <ekorenevsky@astralinux.ru>
Date:   Sun Jan 10 20:36:09 2021 +0300

    ehci: fix EHCI host controller initialization sequence
    
    commit 280a9045bb18833db921b316a5527d2b565e9f2e upstream.
    
    According to EHCI spec, EHCI HC clears USBSTS.HCHalted whenever
    USBCMD.RS=1.
    
    However, it is a good practice to wait some time after setting USBCMD.RS
    (approximately 100ms) until USBSTS.HCHalted become zero.
    
    Without this waiting, VirtualBox's EHCI virtual HC accidentally hangs
    (see BugLink).
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=211095
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Eugene Korenevsky <ekorenevsky@astralinux.ru>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210110173609.GA17313@himera.home
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee3a62cb263bcf77fa5174bf78dd67d5f13c9f50
Author: Pali Rohár <pali@kernel.org>
Date:   Wed Dec 23 20:19:31 2020 +0100

    serial: mvebu-uart: fix tx lost characters at power off
    
    commit 54ca955b5a4024e2ce0f206b03adb7109bc4da26 upstream.
    
    Commit c685af1108d7 ("serial: mvebu-uart: fix tx lost characters") fixed tx
    lost characters at low baud rates but started causing tx lost characters
    when kernel is going to power off or reboot.
    
    TX_EMP tells us when transmit queue is empty therefore all characters were
    transmitted. TX_RDY tells us when CPU can send a new character.
    
    Therefore we need to use different check prior transmitting new character
    and different check after all characters were sent.
    
    This patch splits polling code into two functions: wait_for_xmitr() which
    waits for TX_RDY and wait_for_xmite() which waits for TX_EMP.
    
    When rebooting A3720 platform without this patch on UART is print only:
    [   42.699�
    
    And with this patch on UART is full output:
    [   39.530216] reboot: Restarting system
    
    Fixes: c685af1108d7 ("serial: mvebu-uart: fix tx lost characters")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201223191931.18343-1-pali@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 225c87b40a78f31a47e5c97358c6e5bb731fd571
Author: Wang Hui <john.wanghui@huawei.com>
Date:   Fri Jan 15 22:59:16 2021 +0300

    stm class: Fix module init return on allocation failure
    
    commit 927633a6d20af319d986f3e42c3ef9f6d7835008 upstream.
    
    In stm_heartbeat_init(): return value gets reset after the first
    iteration by stm_source_register_device(), so allocation failures
    after that will, after a clean up, return success. Fix that.
    
    Fixes: 119291853038 ("stm class: Add heartbeat stm source device")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hui <john.wanghui@huawei.com>
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115195917.3184-2-alexander.shishkin@linux.intel.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f583ccebacdfb0ee097dba6f079d0b5182e88dd9
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Fri Jan 15 22:59:17 2021 +0300

    intel_th: pci: Add Alder Lake-P support
    
    commit cb5c681ab9037e25fcca20689c82cf034566d610 upstream.
    
    This adds support for the Trace Hub in Alder Lake-P.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115195917.3184-3-alexander.shishkin@linux.intel.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2df15ef2a9cc58142d7acf1393db3fe5434f44c2
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Jan 21 12:01:08 2021 +0000

    io_uring: fix short read retries for non-reg files
    
    commit 9a173346bd9e16ab19c7addb8862d95a5cea9feb upstream.
    
    Sockets and other non-regular files may actually expect short reads to
    happen, don't retry reads for them. Because non-reg files don't set
    FMODE_BUF_RASYNC and so it won't do second/retry do_read, we can filter
    out those cases after first do_read() attempt with ret>0.
    
    Cc: stable@vger.kernel.org # 5.9+
    Suggested-by: Jens Axboe <axboe@kernel.dk>
    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 f3ac7a5996d7cd739664c5f71cab4f8da03937e7
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue Jan 19 10:10:54 2021 -0700

    io_uring: fix SQPOLL IORING_OP_CLOSE cancelation state
    
    commit 607ec89ed18f49ca59689572659b9c0076f1991f upstream.
    
    IORING_OP_CLOSE is special in terms of cancelation, since it has an
    intermediate state where we've removed the file descriptor but hasn't
    closed the file yet. For that reason, it's currently marked with
    IO_WQ_WORK_NO_CANCEL to prevent cancelation. This ensures that the op
    is always run even if canceled, to prevent leaving us with a live file
    but an fd that is gone. However, with SQPOLL, since a cancel request
    doesn't carry any resources on behalf of the request being canceled, if
    we cancel before any of the close op has been run, we can end up with
    io-wq not having the ->files assigned. This can result in the following
    oops reported by Joseph:
    
    BUG: kernel NULL pointer dereference, address: 00000000000000d8
    PGD 800000010b76f067 P4D 800000010b76f067 PUD 10b462067 PMD 0
    Oops: 0000 [#1] SMP PTI
    CPU: 1 PID: 1788 Comm: io_uring-sq Not tainted 5.11.0-rc4 #1
    Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    RIP: 0010:__lock_acquire+0x19d/0x18c0
    Code: 00 00 8b 1d fd 56 dd 08 85 db 0f 85 43 05 00 00 48 c7 c6 98 7b 95 82 48 c7 c7 57 96 93 82 e8 9a bc f5 ff 0f 0b e9 2b 05 00 00 <48> 81 3f c0 ca 67 8a b8 00 00 00 00 41 0f 45 c0 89 04 24 e9 81 fe
    RSP: 0018:ffffc90001933828 EFLAGS: 00010002
    RAX: 0000000000000001 RBX: 0000000000000001 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000000000d8
    RBP: 0000000000000246 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: ffff888106e8a140 R15: 00000000000000d8
    FS:  0000000000000000(0000) GS:ffff88813bd00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000000000d8 CR3: 0000000106efa004 CR4: 00000000003706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     lock_acquire+0x31a/0x440
     ? close_fd_get_file+0x39/0x160
     ? __lock_acquire+0x647/0x18c0
     _raw_spin_lock+0x2c/0x40
     ? close_fd_get_file+0x39/0x160
     close_fd_get_file+0x39/0x160
     io_issue_sqe+0x1334/0x14e0
     ? lock_acquire+0x31a/0x440
     ? __io_free_req+0xcf/0x2e0
     ? __io_free_req+0x175/0x2e0
     ? find_held_lock+0x28/0xb0
     ? io_wq_submit_work+0x7f/0x240
     io_wq_submit_work+0x7f/0x240
     io_wq_cancel_cb+0x161/0x580
     ? io_wqe_wake_worker+0x114/0x360
     ? io_uring_get_socket+0x40/0x40
     io_async_find_and_cancel+0x3b/0x140
     io_issue_sqe+0xbe1/0x14e0
     ? __lock_acquire+0x647/0x18c0
     ? __io_queue_sqe+0x10b/0x5f0
     __io_queue_sqe+0x10b/0x5f0
     ? io_req_prep+0xdb/0x1150
     ? mark_held_locks+0x6d/0xb0
     ? mark_held_locks+0x6d/0xb0
     ? io_queue_sqe+0x235/0x4b0
     io_queue_sqe+0x235/0x4b0
     io_submit_sqes+0xd7e/0x12a0
     ? _raw_spin_unlock_irq+0x24/0x30
     ? io_sq_thread+0x3ae/0x940
     io_sq_thread+0x207/0x940
     ? do_wait_intr_irq+0xc0/0xc0
     ? __ia32_sys_io_uring_enter+0x650/0x650
     kthread+0x134/0x180
     ? kthread_create_worker_on_cpu+0x90/0x90
     ret_from_fork+0x1f/0x30
    
    Fix this by moving the IO_WQ_WORK_NO_CANCEL until _after_ we've modified
    the fdtable. Canceling before this point is totally fine, and running
    it in the io-wq context _after_ that point is also fine.
    
    For 5.12, we'll handle this internally and get rid of the no-cancel
    flag, as IORING_OP_CLOSE is the only user of it.
    
    Cc: stable@vger.kernel.org
    Fixes: b5dba59e0cf7 ("io_uring: add support for IORING_OP_CLOSE")
    Reported-by: "Abaci <abaci@linux.alibaba.com>"
    Reviewed-and-tested-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca75872dd9f3db7893113b8fca6f2c874a4cbccf
Author: Jens Axboe <axboe@kernel.dk>
Date:   Sat Jan 16 11:52:11 2021 -0700

    io_uring: iopoll requests should also wake task ->in_idle state
    
    commit c93cc9e16d88e0f5ea95d2d65d58a8a4dab258bc upstream.
    
    If we're freeing/finishing iopoll requests, ensure we check if the task
    is in idling in terms of cancelation. Otherwise we could end up waiting
    forever in __io_uring_task_cancel() if the task has active iopoll
    requests that need cancelation.
    
    Cc: stable@vger.kernel.org # 5.9+
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 371f3fbf4ff123598f88b028ea168f0a31dbc12c
Author: Shakeel Butt <shakeelb@google.com>
Date:   Sat Jan 23 21:01:15 2021 -0800

    mm: fix numa stats for thp migration
    
    commit 5c447d274f3746fbed6e695e7b9a2d7bd8b31b71 upstream.
    
    Currently the kernel is not correctly updating the numa stats for
    NR_FILE_PAGES and NR_SHMEM on THP migration.  Fix that.
    
    For NR_FILE_DIRTY and NR_ZONE_WRITE_PENDING, although at the moment
    there is no need to handle THP migration as kernel still does not have
    write support for file THP but to be more future proof, this patch adds
    the THP support for those stats as well.
    
    Link: https://lkml.kernel.org/r/20210108155813.2914586-2-shakeelb@google.com
    Fixes: e71769ae52609 ("mm: enable thp migration for shmem thp")
    Signed-off-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Yang Shi <shy828301@gmail.com>
    Reviewed-by: Roman Gushchin <guro@fb.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dc3a130cc3715358d65495d154aa858706ab40f
Author: Shakeel Butt <shakeelb@google.com>
Date:   Sat Jan 23 21:01:11 2021 -0800

    mm: memcg: fix memcg file_dirty numa stat
    
    commit 8a8792f600abacd7e1b9bb667759dca1c153f64c upstream.
    
    The kernel updates the per-node NR_FILE_DIRTY stats on page migration
    but not the memcg numa stats.
    
    That was not an issue until recently the commit 5f9a4f4a7096 ("mm:
    memcontrol: add the missing numa_stat interface for cgroup v2") exposed
    numa stats for the memcg.
    
    So fix the file_dirty per-memcg numa stat.
    
    Link: https://lkml.kernel.org/r/20210108155813.2914586-1-shakeelb@google.com
    Fixes: 5f9a4f4a7096 ("mm: memcontrol: add the missing numa_stat interface for cgroup v2")
    Signed-off-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Muchun Song <songmuchun@bytedance.com>
    Acked-by: Yang Shi <shy828301@gmail.com>
    Reviewed-by: Roman Gushchin <guro@fb.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26f54dac15640c65ec69867e182de7be708ea389
Author: Roman Gushchin <guro@fb.com>
Date:   Sat Jan 23 21:01:07 2021 -0800

    mm: memcg/slab: optimize objcg stock draining
    
    commit 3de7d4f25a7438f09fef4e71ef111f1805cd8e7c upstream.
    
    Imran Khan reported a 16% regression in hackbench results caused by the
    commit f2fe7b09a52b ("mm: memcg/slab: charge individual slab objects
    instead of pages").  The regression is noticeable in the case of a
    consequent allocation of several relatively large slab objects, e.g.
    skb's.  As soon as the amount of stocked bytes exceeds PAGE_SIZE,
    drain_obj_stock() and __memcg_kmem_uncharge() are called, and it leads
    to a number of atomic operations in page_counter_uncharge().
    
    The corresponding call graph is below (provided by Imran Khan):
    
      |__alloc_skb
      |    |
      |    |__kmalloc_reserve.isra.61
      |    |    |
      |    |    |__kmalloc_node_track_caller
      |    |    |    |
      |    |    |    |slab_pre_alloc_hook.constprop.88
      |    |    |     obj_cgroup_charge
      |    |    |    |    |
      |    |    |    |    |__memcg_kmem_charge
      |    |    |    |    |    |
      |    |    |    |    |    |page_counter_try_charge
      |    |    |    |    |
      |    |    |    |    |refill_obj_stock
      |    |    |    |    |    |
      |    |    |    |    |    |drain_obj_stock.isra.68
      |    |    |    |    |    |    |
      |    |    |    |    |    |    |__memcg_kmem_uncharge
      |    |    |    |    |    |    |    |
      |    |    |    |    |    |    |    |page_counter_uncharge
      |    |    |    |    |    |    |    |    |
      |    |    |    |    |    |    |    |    |page_counter_cancel
      |    |    |    |
      |    |    |    |
      |    |    |    |__slab_alloc
      |    |    |    |    |
      |    |    |    |    |___slab_alloc
      |    |    |    |    |
      |    |    |    |slab_post_alloc_hook
    
    Instead of directly uncharging the accounted kernel memory, it's
    possible to refill the generic page-sized per-cpu stock instead.  It's a
    much faster operation, especially on a default hierarchy.  As a bonus,
    __memcg_kmem_uncharge_page() will also get faster, so the freeing of
    page-sized kernel allocations (e.g.  large kmallocs) will become faster.
    
    A similar change has been done earlier for the socket memory by the
    commit 475d0487a2ad ("mm: memcontrol: use per-cpu stocks for socket
    memory uncharging").
    
    Link: https://lkml.kernel.org/r/20210106042239.2860107-1-guro@fb.com
    Fixes: f2fe7b09a52b ("mm: memcg/slab: charge individual slab objects instead of pages")
    Signed-off-by: Roman Gushchin <guro@fb.com>
    Reported-by: Imran Khan <imran.f.khan@oracle.com>
    Tested-by: Imran Khan <imran.f.khan@oracle.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Michal Koutn <mkoutny@suse.com>
    Cc: Michal Koutný <mkoutny@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb5fe25c822057c49e61229a4e83ba27c3e24c17
Author: Xiaoming Ni <nixiaoming@huawei.com>
Date:   Sat Jan 23 21:02:16 2021 -0800

    proc_sysctl: fix oops caused by incorrect command parameters
    
    commit 697edcb0e4eadc41645fe88c991fe6a206b1a08d upstream.
    
    The process_sysctl_arg() does not check whether val is empty before
    invoking strlen(val).  If the command line parameter () is incorrectly
    configured and val is empty, oops is triggered.
    
    For example:
      "hung_task_panic=1" is incorrectly written as "hung_task_panic", oops is
      triggered. The call stack is as follows:
        Kernel command line: .... hung_task_panic
        ......
        Call trace:
        __pi_strlen+0x10/0x98
        parse_args+0x278/0x344
        do_sysctl_args+0x8c/0xfc
        kernel_init+0x5c/0xf4
        ret_from_fork+0x10/0x30
    
    To fix it, check whether "val" is empty when "phram" is a sysctl field.
    Error codes are returned in the failure branch, and error logs are
    generated by parse_args().
    
    Link: https://lkml.kernel.org/r/20210118133029.28580-1-nixiaoming@huawei.com
    Fixes: 3db978d480e2843 ("kernel/sysctl: support setting sysctl parameters from kernel command line")
    Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Iurii Zaikin <yzaikin@google.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Heiner Kallweit <hkallweit1@gmail.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: <stable@vger.kernel.org>    [5.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c351dc4d774e57fdb8ec543241710cb93a7387bd
Author: Mike Rapoport <rppt@kernel.org>
Date:   Sat Jan 23 21:00:57 2021 -0800

    x86/setup: don't remove E820_TYPE_RAM for pfn 0
    
    commit bde9cfa3afe4324ec251e4af80ebf9b7afaf7afe upstream.
    
    Patch series "mm: fix initialization of struct page for holes in  memory layout", v3.
    
    Commit 73a6e474cb37 ("mm: memmap_init: iterate over memblock regions
    rather that check each PFN") exposed several issues with the memory map
    initialization and these patches fix those issues.
    
    Initially there were crashes during compaction that Qian Cai reported
    back in April [1].  It seemed back then that the problem was fixed, but
    a few weeks ago Andrea Arcangeli hit the same bug [2] and there was an
    additional discussion at [3].
    
    [1] https://lore.kernel.org/lkml/8C537EB7-85EE-4DCF-943E-3CC0ED0DF56D@lca.pw
    [2] https://lore.kernel.org/lkml/20201121194506.13464-1-aarcange@redhat.com
    [3] https://lore.kernel.org/mm-commits/20201206005401.qKuAVgOXr%akpm@linux-foundation.org
    
    This patch (of 2):
    
    The first 4Kb of memory is a BIOS owned area and to avoid its allocation
    for the kernel it was not listed in e820 tables as memory.  As the result,
    pfn 0 was never recognised by the generic memory management and it is not
    a part of neither node 0 nor ZONE_DMA.
    
    If set_pfnblock_flags_mask() would be ever called for the pageblock
    corresponding to the first 2Mbytes of memory, having pfn 0 outside of
    ZONE_DMA would trigger
    
            VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
    
    Along with reserving the first 4Kb in e820 tables, several first pages are
    reserved with memblock in several places during setup_arch().  These
    reservations are enough to ensure the kernel does not touch the BIOS area
    and it is not necessary to remove E820_TYPE_RAM for pfn 0.
    
    Remove the update of e820 table that changes the type of pfn 0 and move
    the comment describing why it was done to trim_low_memory_range() that
    reserves the beginning of the memory.
    
    Link: https://lkml.kernel.org/r/20210111194017.22696-2-rppt@kernel.org
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd08075c86405f1ddff48c95abbb5dca04e4b268
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Jan 20 21:09:49 2021 -0800

    x86/mmx: Use KFPU_387 for MMX string operations
    
    commit 67de8dca50c027ca0fa3b62a488ee5035036a0da upstream.
    
    The default kernel_fpu_begin() doesn't work on systems that support XMM but
    haven't yet enabled CR4.OSFXSR.  This causes crashes when _mmx_memcpy() is
    called too early because LDMXCSR generates #UD when the aforementioned bit
    is clear.
    
    Fix it by using kernel_fpu_begin_mask(KFPU_387) explicitly.
    
    Fixes: 7ad816762f9b ("x86/fpu: Reset MXCSR to default in kernel_fpu_begin()")
    Reported-by: Krzysztof Mazur <krzysiek@podlesie.net>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Krzysztof Piotr Olędzki <ole@ans.pl>
    Tested-by: Krzysztof Mazur <krzysiek@podlesie.net>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/e7bf21855fe99e5f3baa27446e32623358f69e8d.1611205691.git.luto@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f19c54317e1b41bad4a74fc27513bd4d692dea9f
Author: Borislav Petkov <bp@suse.de>
Date:   Thu Jan 14 10:36:59 2021 +0100

    x86/topology: Make __max_die_per_package available unconditionally
    
    commit 1eb8f690bcb565a6600f8b6dcc78f7b239ceba17 upstream.
    
    Move it outside of CONFIG_SMP in order to avoid ifdeffery at the usage
    sites.
    
    Fixes: 76e2fc63ca40 ("x86/cpu/amd: Set __max_die_per_package on AMD")
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20210114111814.5346-1-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5ee8afc19711e1dd7bacae23712e224c1b22ba4
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Jan 20 21:09:48 2021 -0800

    x86/fpu: Add kernel_fpu_begin_mask() to selectively initialize state
    
    commit e45122893a9870813f9bd7b4add4f613e6f29008 upstream.
    
    Currently, requesting kernel FPU access doesn't distinguish which parts of
    the extended ("FPU") state are needed.  This is nice for simplicity, but
    there are a few cases in which it's suboptimal:
    
     - The vast majority of in-kernel FPU users want XMM/YMM/ZMM state but do
       not use legacy 387 state.  These users want MXCSR initialized but don't
       care about the FPU control word.  Skipping FNINIT would save time.
       (Empirically, FNINIT is several times slower than LDMXCSR.)
    
     - Code that wants MMX doesn't want or need MXCSR initialized.
       _mmx_memcpy(), for example, can run before CR4.OSFXSR gets set, and
       initializing MXCSR will fail because LDMXCSR generates an #UD when the
       aforementioned CR4 bit is not set.
    
     - Any future in-kernel users of XFD (eXtended Feature Disable)-capable
       dynamic states will need special handling.
    
    Add a more specific API that allows callers to specify exactly what they
    want.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Krzysztof Piotr Olędzki <ole@ans.pl>
    Link: https://lkml.kernel.org/r/aff1cac8b8fc7ee900cf73e8f2369966621b053f.1611205691.git.luto@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c530b17272d1d5039b9fe24cb5c87f1100db1157
Author: Mathias Kresin <dev@kresin.me>
Date:   Thu Jan 7 22:36:03 2021 +0100

    irqchip/mips-cpu: Set IPI domain parent chip
    
    commit 599b3063adf4bf041a87a69244ee36aded0d878f upstream.
    
    Since commit 55567976629e ("genirq/irqdomain: Allow partial trimming of
    irq_data hierarchy") the irq_data chain is valided.
    
    The irq_domain_trim_hierarchy() function doesn't consider the irq + ipi
    domain hierarchy as valid, since the ipi domain has the irq domain set
    as parent, but the parent domain has no chip set. Hence the boot ends in
    a kernel panic.
    
    Set the chip for the parent domain as it is done in the mips gic irq
    driver, to have a valid irq_data chain.
    
    Fixes: 3838a547fda2 ("irqchip: mips-cpu: Introduce IPI IRQ domain support")
    Cc: <stable@vger.kernel.org> # v5.10+
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210107213603.1637781-1-dev@kresin.me
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2edf2c9f3e5e7a6fbeaa40b9a4ef65b4dfc97405
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Thu Jan 21 08:22:48 2021 +1000

    cifs: do not fail __smb_send_rqst if non-fatal signals are pending
    
    commit 214a5ea081e77346e4963dd6d20c5539ff8b6ae6 upstream.
    
    RHBZ 1848178
    
    The original intent of returning an error in this function
    in the patch:
      "CIFS: Mask off signals when sending SMB packets"
    was to avoid interrupting packet send in the middle of
    sending the data (and thus breaking an SMB connection),
    but we also don't want to fail the request for non-fatal
    signals even before we have had a chance to try to
    send it (the reported problem could be reproduced e.g.
    by exiting a child process when the parent process was in
    the midst of calling futimens to update a file's timestamps).
    
    In addition, since the signal may remain pending when we enter the
    sending loop, we may end up not sending the whole packet before
    TCP buffers become full. In this case the code returns -EINTR
    but what we need here is to return -ERESTARTSYS instead to
    allow system calls to be restarted.
    
    Fixes: b30c74c73c78 ("CIFS: Mask off signals when sending SMB packets")
    Cc: stable@vger.kernel.org # v5.1+
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 062dea906be1f4b79606b9813d50ddbbdb8f933c
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Mon Jan 11 16:24:08 2021 +1000

    powerpc/64s: fix scv entry fallback flush vs interrupt
    
    commit 08685be7761d69914f08c3d6211c543a385a5b9c upstream.
    
    The L1D flush fallback functions are not recoverable vs interrupts,
    yet the scv entry flush runs with MSR[EE]=1. This can result in a
    timer (soft-NMI) or MCE or SRESET interrupt hitting here and overwriting
    the EXRFI save area, which ends up corrupting userspace registers for
    scv return.
    
    Fix this by disabling RI and EE for the scv entry fallback flush.
    
    Fixes: f79643787e0a0 ("powerpc/64s: flush L1D on kernel entry")
    Cc: stable@vger.kernel.org # 5.9+ which also have flush L1D patch backport
    Reported-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210111062408.287092-1-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bac5333d47e4e5bc112f118d35103c1ef78542a
Author: David Lechner <david@lechnology.com>
Date:   Sun Dec 13 18:09:27 2020 -0600

    counter:ti-eqep: remove floor
    
    commit 49a9565a7a7ce168e3e6482fb24e62d12f72ab81 upstream.
    
    The hardware doesn't support this. QPOSINIT is an initialization value
    that is triggered by other things. When the counter overflows, it
    always wraps around to zero.
    
    Fixes: f213729f6796 "counter: new TI eQEP driver"
    Signed-off-by: David Lechner <david@lechnology.com>
    Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
    Link: https://lore.kernel.org/r/20201214000927.1793062-1-david@lechnology.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 855b115749d82ad63b7f2f7899d7478ecfbb0ae4
Author: Alexandru Ardelean <alexandru.ardelean@analog.com>
Date:   Thu Dec 3 09:26:50 2020 +0200

    iio: adc: ti_am335x_adc: remove omitted iio_kfifo_free()
    
    commit 7e6d9788aa02333a4353058816d52b9a90aae0d3 upstream.
    
    When the conversion was done to use devm_iio_kfifo_allocate(), a call to
    iio_kfifo_free() was omitted (to be removed).
    This change removes it.
    
    Fixes: 3c5308058899 ("iio: adc: ti_am335x_adc: alloc kfifo & IRQ via devm_ functions")
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Link: https://lore.kernel.org/r/20201203072650.24128-1-alexandru.ardelean@analog.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbecf66313442997dc8bd494bebe698ff571a9da
Author: Slaveyko Slaveykov <sis@melexis.com>
Date:   Wed Dec 16 13:57:20 2020 +0200

    drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c
    
    commit cf5b1385d748b2f91b0c05bb301fcaf9bdbad385 upstream.
    
    After an I2C reset command, the mlx90632 needs some time before
    responding to other I2C commands. Without that delay, there is a chance
    that the I2C command(s) after the reset will not be accepted.
    
    Signed-off-by: Slaveyko Slaveykov <sis@melexis.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Crt Mori <cmo@melexis.com>
    Fixes: e02472f74a81 ("iio:temperature:mlx90632: Adding extended calibration option")
    Link: https://lore.kernel.org/r/20201216115720.12404-2-sis@melexis.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b136903db0e0fadd5a1fb2f386b95d02ffba503
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Wed Dec 9 11:46:49 2020 +0100

    iio: ad5504: Fix setting power-down state
    
    commit efd597b2839a9895e8a98fcb0b76d2f545802cd4 upstream.
    
    The power-down mask of the ad5504 is actually a power-up mask. Meaning if
    a bit is set the corresponding channel is powered up and if it is not set
    the channel is powered down.
    
    The driver currently has this the wrong way around, resulting in the
    channel being powered up when requested to be powered down and vice versa.
    
    Fixes: 3bbbf150ffde ("staging:iio:dac:ad5504: Use strtobool for boolean values")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Link: https://lore.kernel.org/r/20201209104649.5794-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9894c169ec60a43a748736443cf84e789814ea2
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Tue Dec 8 15:36:40 2020 +0100

    iio: common: st_sensors: fix possible infinite loop in st_sensors_irq_thread
    
    commit 40c48fb79b9798954691f24b8ece1d3a7eb1b353 upstream.
    
    Return a boolean value in st_sensors_new_samples_available routine in
    order to avoid an infinite loop in st_sensors_irq_thread if
    stat_drdy.addr is not defined or stat_drdy read fails
    
    Fixes: 90efe05562921 ("iio: st_sensors: harden interrupt handling")
    Reported-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/c9ec69ed349e7200c779fd7a5bf04c1aaa2817aa.1607438132.git.lorenzo@kernel.org
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61aad39e2e13bc00ae952975dcaae9b02f357984
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Sun Jan 17 12:43:13 2021 +0100

    i2c: sprd: depend on COMMON_CLK to fix compile tests
    
    [ Upstream commit 9ecd1d2b302b600351fac50779f43fcb680c1a16 ]
    
    The I2C_SPRD uses Common Clock Framework thus it cannot be built on
    platforms without it (e.g. compile test on MIPS with LANTIQ):
    
        /usr/bin/mips-linux-gnu-ld: drivers/i2c/busses/i2c-sprd.o: in function `sprd_i2c_probe':
        i2c-sprd.c:(.text.sprd_i2c_probe+0x254): undefined reference to `clk_set_parent'
    
    Fixes: 4a2d5f663dab ("i2c: Enable compile testing for more drivers")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Reviewed-by: Baolin Wang <baolin.wang7@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b56eecdc7da4818b04455c46b0bb75a17371155
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Jan 21 14:54:46 2021 +0200

    perf evlist: Fix id index for heterogeneous systems
    
    [ Upstream commit fc705fecf3a0c9128933cc6db59159c050aaca33 ]
    
    perf_evlist__set_sid_idx() updates perf_sample_id with the evlist map
    index, CPU number and TID. It is passed indexes to the evsel's cpu and
    thread maps, but references the evlist's maps instead. That results in
    using incorrect CPU numbers on heterogeneous systems. Fix it by using
    evsel maps.
    
    The id index (PERF_RECORD_ID_INDEX) is used by AUX area tracing when in
    sampling mode. Having an incorrect CPU number causes the trace data to
    be attributed to the wrong CPU, and can result in decoder errors because
    the trace data is then associated with the wrong process.
    
    Committer notes:
    
    Keep the class prefix convention in the function name, switching from
    perf_evlist__set_sid_idx() to perf_evsel__set_sid_idx().
    
    Fixes: 3c659eedada2fbf9 ("perf tools: Add id index")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20210121125446.11287-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec939c13c3fff2114479769c8380b7f1a54feca9
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Wed Jan 20 20:41:37 2021 +0900

    can: peak_usb: fix use after free bugs
    
    [ Upstream commit 50aca891d7a554db0901b245167cd653d73aaa71 ]
    
    After calling peak_usb_netif_rx_ni(skb), dereferencing skb is unsafe.
    Especially, the can_frame cf which aliases skb memory is accessed
    after the peak_usb_netif_rx_ni().
    
    Reordering the lines solves the issue.
    
    Fixes: 0a25e1f4f185 ("can: peak_usb: add support for PEAK new CANFD USB adapters")
    Link: https://lore.kernel.org/r/20210120114137.200019-4-mailhol.vincent@wanadoo.fr
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e771a874076115df8bff27d325edfd2340e4ec69
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Wed Jan 20 20:41:36 2021 +0900

    can: vxcan: vxcan_xmit: fix use after free bug
    
    [ Upstream commit 75854cad5d80976f6ea0f0431f8cedd3bcc475cb ]
    
    After calling netif_rx_ni(skb), dereferencing skb is unsafe.
    Especially, the canfd_frame cfd which aliases skb memory is accessed
    after the netif_rx_ni().
    
    Fixes: a8f820a380a2 ("can: add Virtual CAN Tunnel driver (vxcan)")
    Link: https://lore.kernel.org/r/20210120114137.200019-3-mailhol.vincent@wanadoo.fr
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 593c072b7b3c4d7044416eb039d9ad706bedd67a
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Wed Jan 20 20:41:35 2021 +0900

    can: dev: can_restart: fix use after free bug
    
    [ Upstream commit 03f16c5075b22c8902d2af739969e878b0879c94 ]
    
    After calling netif_rx_ni(skb), dereferencing skb is unsafe.
    Especially, the can_frame cf which aliases skb memory is accessed
    after the netif_rx_ni() in:
          stats->rx_bytes += cf->len;
    
    Reordering the lines solves the issue.
    
    Fixes: 39549eef3587 ("can: CAN Network device driver and Netlink interface")
    Link: https://lore.kernel.org/r/20210120114137.200019-2-mailhol.vincent@wanadoo.fr
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66ee6d91d3275832a0722f3ea53e7ee99911e691
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Tue Jan 19 10:59:30 2021 +0800

    selftests: net: fib_tests: remove duplicate log test
    
    [ Upstream commit fd23d2dc180fccfad4b27a8e52ba1bc415d18509 ]
    
    The previous test added an address with a specified metric and check if
    correspond route was created. I somehow added two logs for the same
    test. Remove the duplicated one.
    
    Reported-by: Antoine Tenart <atenart@redhat.com>
    Fixes: 0d29169a708b ("selftests/net/fib_tests: update addr_metric_test for peer route testing")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20210119025930.2810532-1-liuhangbin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 636868a52d33d664974eb5d6920d909c1ada6e3e
Author: Maxim Mikityanskiy <maximmi@mellanox.com>
Date:   Mon Jan 18 18:03:33 2021 +0200

    xsk: Clear pool even for inactive queues
    
    [ Upstream commit b425e24a934e21a502d25089c6c7443d799c5594 ]
    
    The number of queues can change by other means, rather than ethtool. For
    example, attaching an mqprio qdisc with num_tc > 1 leads to creating
    multiple sets of TX queues, which may be then destroyed when mqprio is
    deleted. If an AF_XDP socket is created while mqprio is active,
    dev->_tx[queue_id].pool will be filled, but then real_num_tx_queues may
    decrease with deletion of mqprio, which will mean that the pool won't be
    NULLed, and a further increase of the number of TX queues may expose a
    dangling pointer.
    
    To avoid any potential misbehavior, this commit clears pool for RX and
    TX queues, regardless of real_num_*_queues, still taking into
    consideration num_*_queues to avoid overflows.
    
    Fixes: 1c1efc2af158 ("xsk: Create and free buffer pool independently from umem")
    Fixes: a41b4f3c58dd ("xsk: simplify xdp_clear_umem_at_qid implementation")
    Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Björn Töpel <bjorn.topel@intel.com>
    Link: https://lore.kernel.org/bpf/20210118160333.333439-1-maximmi@mellanox.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 517732c1b52b54824df68bb72b4030065e1aad47
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Jan 19 23:21:43 2021 +0800

    ALSA: hda: Balance runtime/system PM if direct-complete is disabled
    
    [ Upstream commit 2b73649cee65b8e33c75c66348cb1bfe0ff9d766 ]
    
    After hibernation, HDA controller can't be runtime-suspended after
    commit 215a22ed31a1 ("ALSA: hda: Refactor codjc PM to use
    direct-complete optimization"), which enables direct-complete for HDA
    codec.
    
    The HDA codec driver didn't expect direct-complete will be disabled
    after it returns a positive value from prepare() callback. However,
    there are some places that PM core can disable direct-complete. For
    instance, system hibernation or when codec has subordinates like LEDs.
    
    So if the codec is prepared for direct-complete but PM core still calls
    codec's suspend or freeze callback, partially revert the commit and take
    the original approach, which uses pm_runtime_force_*() helpers to
    ensure PM refcount are balanced. Meanwhile, still keep prepare() and
    complete() callbacks to enable direct-complete and request a resume for
    jack detection, respectively.
    
    Reported-by: Kenneth R. Crudup <kenny@panix.com>
    Fixes: 215a22ed31a1 ("ALSA: hda: Refactor codec PM to use direct-complete optimization")
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Link: https://lore.kernel.org/r/20210119152145.346558-1-kai.heng.feng@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca431352900a2d0e86bc298551fb090a39e5cf42
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Jan 18 19:18:13 2021 -0800

    gpio: sifive: select IRQ_DOMAIN_HIERARCHY rather than depend on it
    
    [ Upstream commit 18eedf2b5ec7c8ce2bb23d9148cfd63949207414 ]
    
    This is the only driver in the kernel source tree that depends on
    IRQ_DOMAIN_HIERARCHY instead of selecting it. Since it is not a
    visible Kconfig symbol, depending on it (expecting a user to
    set/enable it) doesn't make much sense, so change it to select
    instead of "depends on".
    
    Fixes: 96868dce644d ("gpio/sifive: Add GPIO driver for SiFive SoCs")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Cc: linux-gpio@vger.kernel.org
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: Greentime Hu <greentime.hu@sifive.com>
    Cc: Yash Shah <yash.shah@sifive.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc183873967e20135105a628c5f307ab5dc53f75
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 15 00:27:44 2021 +0100

    platform/x86: hp-wmi: Don't log a warning on HPWMI_RET_UNKNOWN_COMMAND errors
    
    [ Upstream commit d35c9a029a73e84d84337403d20b060494890570 ]
    
    The recently added thermal policy support makes a
    hp_wmi_perform_query(0x4c, ...) call on older devices which do not
    support thermal policies this causes the following warning to be
    logged (seen on a HP Stream x360 Convertible PC 11):
    
    [   26.805305] hp_wmi: query 0x4c returned error 0x3
    
    Error 0x3 is HPWMI_RET_UNKNOWN_COMMAND error. This commit silences
    the warning for unknown-command errors, silencing the new warning.
    
    Cc: Elia Devito <eliadevito@gmail.com>
    Fixes: 81c93798ef3e ("platform/x86: hp-wmi: add support for thermal policy")
    Link: https://lore.kernel.org/r/20210114232744.154886-1-hdegoede@redhat.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d77bc052c4386a5e4e202bb06b5c56cec89cbb0e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Jan 14 15:34:32 2021 +0100

    platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from allow-list
    
    [ Upstream commit 070222731be52d741e55d8967b1764482b81e54c ]
    
    THe HP Stream x360 Convertible PC 11 DSDT has the following VGBS function:
    
                Method (VGBS, 0, Serialized)
                {
                    If ((^^PCI0.LPCB.EC0.ROLS == Zero))
                    {
                        VBDS = Zero
                    }
                    Else
                    {
                        VBDS = Zero
                    }
    
                    Return (VBDS) /* \_SB_.VGBI.VBDS */
                }
    
    Which is obviously wrong, because it always returns 0 independent of the
    2-in-1 being in laptop or tablet mode. This causes the intel-vbtn driver
    to initially report SW_TABLET_MODE = 1 to userspace, which is known to
    cause problems when the 2-in-1 is actually in laptop mode.
    
    During earlier testing this turned out to not be a problem because the
    2-in-1 would do a Notify(..., 0xCC) or Notify(..., 0xCD) soon after
    the intel-vbtn driver loaded, correcting the SW_TABLET_MODE state.
    
    Further testing however has shown that this Notify() soon after the
    intel-vbtn driver loads, does not always happen. When the Notify
    does not happen, then intel-vbtn reports SW_TABLET_MODE = 1 resulting in
    a non-working touchpad.
    
    IOW the tablet-mode reporting is not reliable on this device, so it
    should be dropped from the allow-list, fixing the touchpad sometimes
    not working.
    
    Fixes: 8169bd3e6e19 ("platform/x86: intel-vbtn: Switch to an allow-list for SW_TABLET_MODE reporting")
    Link: https://lore.kernel.org/r/20210114143432.31750-1-hdegoede@redhat.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e21c4dbc3aec425e58d4342f9904b4cb0676cb3
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Fri Jan 15 20:12:09 2021 +0100

    drm/vc4: Unify PCM card's driver_name
    
    [ Upstream commit 33c74535b03ecf11359de14bc88302595b1de44f ]
    
    User-space ALSA matches a card's driver name against an internal list of
    aliases in order to select the correct configuration for the system.
    When the driver name isn't defined, the match is performed against the
    card's name.
    
    With the introduction of RPi4 we now have two HDMI ports with two
    distinct audio cards. This is reflected in their names, making them
    different from previous RPi versions. With this, ALSA ultimately misses
    the board's configuration on RPi4.
    
    In order to avoid this, set "card->driver_name" to "vc4-hdmi"
    unanimously.
    
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Fixes: f437bc1ec731 ("drm/vc4: drv: Support BCM2711")
    Reviewed-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210115191209.12852-1-nsaenzjulienne@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit adc0cb3adf8bcb2080f043d31fee7db70d96c9f5
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Sat Jan 9 13:43:08 2021 +0100

    i2c: octeon: check correct size of maximum RECV_LEN packet
    
    [ Upstream commit 1b2cfa2d1dbdcc3b6dba1ecb7026a537a1d7277f ]
    
    I2C_SMBUS_BLOCK_MAX defines already the maximum number as defined in the
    SMBus 2.0 specs. No reason to add one to it.
    
    Fixes: 886f6f8337dd ("i2c: octeon: Support I2C_M_RECV_LEN")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Robert Richter <rric@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37d4f78ae274d11c26eb7deb912f8fdf12bd2283
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Jan 11 18:19:26 2021 +0100

    iov_iter: fix the uaccess area in copy_compat_iovec_from_user
    
    [ Upstream commit a959a9782fa87669feeed095ced5d78181a7c02d ]
    
    sizeof needs to be called on the compat pointer, not the native one.
    
    Fixes: 89cd35c58bc2 ("iov_iter: transparently handle compat iovecs in import_iovec")
    Reported-by: David Laight <David.Laight@ACULAB.COM>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce4d02da78a30e6ba6ed61a745900ae49985ba1e
Author: John Ogness <john.ogness@linutronix.de>
Date:   Wed Jan 13 17:50:13 2021 +0106

    printk: fix kmsg_dump_get_buffer length calulations
    
    [ Upstream commit 89ccf18f032f26946e2ea6258120472eec6aa745 ]
    
    kmsg_dump_get_buffer() uses @syslog to determine if the syslog
    prefix should be written to the buffer. However, when calculating
    the maximum number of records that can fit into the buffer, it
    always counts the bytes from the syslog prefix.
    
    Use @syslog when calculating the maximum number of records that can
    fit into the buffer.
    
    Fixes: e2ae715d66bf ("kmsg - kmsg_dump() use iterator to receive log buffer content")
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20210113164413.1599-1-john.ogness@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cf3cca5f1580ce846e36c32db2c125199dca2d86
Author: John Ogness <john.ogness@linutronix.de>
Date:   Wed Jan 13 15:48:34 2021 +0106

    printk: ringbuffer: fix line counting
    
    [ Upstream commit 668af87f995b6d6d09595c088ad1fb5dd9ff25d2 ]
    
    Counting text lines in a record simply involves counting the number
    of newline characters (+1). However, it is searching the full data
    block for newline characters, even though the text data can be (and
    often is) a subset of that area. Since the extra area in the data
    block was never initialized, the result is that extra newlines may
    be seen and counted.
    
    Restrict newline searching to the text data length.
    
    Fixes: b6cf8b3f3312 ("printk: add lockless ringbuffer")
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20210113144234.6545-1-john.ogness@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cd90971a2c960c2c7a0f4e14fec8bf9c1a2e49b
Author: Neta Ostrovsky <netao@nvidia.com>
Date:   Wed Jan 13 15:02:14 2021 +0200

    RDMA/cma: Fix error flow in default_roce_mode_store
    
    [ Upstream commit 7c7b3e5d9aeed31d35c5dab0bf9c0fd4c8923206 ]
    
    In default_roce_mode_store(), we took a reference to cma_dev, but didn't
    return it with cma_dev_put in the error flow.
    
    Fixes: 1c15b4f2a42f ("RDMA/core: Modify enum ib_gid_type and enum rdma_network_type")
    Link: https://lore.kernel.org/r/20210113130214.562108-1-leon@kernel.org
    Signed-off-by: Neta Ostrovsky <netao@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56c1362981b38942c9f20ae422dcce19e8ec8527
Author: Aharon Landau <aharonl@nvidia.com>
Date:   Wed Jan 13 14:16:59 2021 +0200

    RDMA/umem: Avoid undefined behavior of rounddown_pow_of_two()
    
    [ Upstream commit b79f2dc5ffe17b03ec8c55f0d63f65e87bcac676 ]
    
    rounddown_pow_of_two() is undefined when the input is 0. Therefore we need
    to avoid it in ib_umem_find_best_pgsz and return 0.  Otherwise, it could
    result in not rejecting an invalid page size which eventually causes a
    kernel oops due to the logical inconsistency.
    
    Fixes: 3361c29e9279 ("RDMA/umem: Use simpler logic for ib_umem_find_best_pgsz()")
    Link: https://lore.kernel.org/r/20210113121703.559778-2-leon@kernel.org
    Signed-off-by: Aharon Landau <aharonl@nvidia.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb8ca93e492928447d1307a567b51e1a0b2be546
Author: Jeremy Cline <jcline@redhat.com>
Date:   Mon Jan 11 16:05:28 2021 -0500

    drm/amdkfd: Fix out-of-bounds read in kdf_create_vcrat_image_cpu()
    
    [ Upstream commit 8b335bff643f3b39935c7377dbcd361c5b605d98 ]
    
    KASAN reported a slab-out-of-bounds read of size 1 in
    kdf_create_vcrat_image_cpu().
    
    This occurs when, for example, when on an x86_64 with a single NUMA node
    because kfd_fill_iolink_info_for_cpu() is a no-op, but afterwards the
    sub_type_hdr->length, which is out-of-bounds, is read and multiplied by
    entries. Fortunately, entries is 0 in this case so the overall
    crat_table->length is still correct.
    
    Check if there were any entries before de-referencing sub_type_hdr which
    may be pointing to out-of-bounds memory.
    
    Fixes: b7b6c38529c9 ("drm/amdkfd: Calculate CPU VCRAT size dynamically (v2)")
    Suggested-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Jeremy Cline <jcline@redhat.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef9eb913c0505ba149b83e1a813ddd7fd05771a0
Author: Song Liu <songliubraving@fb.com>
Date:   Tue Jan 12 15:42:54 2021 -0800

    bpf: Reject too big ctx_size_in for raw_tp test run
    
    [ Upstream commit 7ac6ad051150592557520b45773201b987ecfce3 ]
    
    syzbot reported a WARNING for allocating too big memory:
    
    WARNING: CPU: 1 PID: 8484 at mm/page_alloc.c:4976 __alloc_pages_nodemask+0x5f8/0x730 mm/page_alloc.c:5011
    Modules linked in:
    CPU: 1 PID: 8484 Comm: syz-executor862 Not tainted 5.11.0-rc2-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__alloc_pages_nodemask+0x5f8/0x730 mm/page_alloc.c:4976
    Code: 00 00 0c 00 0f 85 a7 00 00 00 8b 3c 24 4c 89 f2 44 89 e6 c6 44 24 70 00 48 89 6c 24 58 e8 d0 d7 ff ff 49 89 c5 e9 ea fc ff ff <0f> 0b e9 b5 fd ff ff 89 74 24 14 4c 89 4c 24 08 4c 89 74 24 18 e8
    RSP: 0018:ffffc900012efb10 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 1ffff9200025df66 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: dffffc0000000000 RDI: 0000000000140dc0
    RBP: 0000000000140dc0 R08: 0000000000000000 R09: 0000000000000000
    R10: ffffffff81b1f7e1 R11: 0000000000000000 R12: 0000000000000014
    R13: 0000000000000014 R14: 0000000000000000 R15: 0000000000000000
    FS:  000000000190c880(0000) GS:ffff8880b9e00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f08b7f316c0 CR3: 0000000012073000 CR4: 00000000001506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    alloc_pages_current+0x18c/0x2a0 mm/mempolicy.c:2267
    alloc_pages include/linux/gfp.h:547 [inline]
    kmalloc_order+0x2e/0xb0 mm/slab_common.c:837
    kmalloc_order_trace+0x14/0x120 mm/slab_common.c:853
    kmalloc include/linux/slab.h:557 [inline]
    kzalloc include/linux/slab.h:682 [inline]
    bpf_prog_test_run_raw_tp+0x4b5/0x670 net/bpf/test_run.c:282
    bpf_prog_test_run kernel/bpf/syscall.c:3120 [inline]
    __do_sys_bpf+0x1ea9/0x4f10 kernel/bpf/syscall.c:4398
    do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x440499
    Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b 13 fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007ffe1f3bfb18 EFLAGS: 00000246 ORIG_RAX: 0000000000000141
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 0000000000440499
    RDX: 0000000000000048 RSI: 0000000020000600 RDI: 000000000000000a
    RBP: 00000000006ca018 R08: 0000000000000000 R09: 00000000004002c8
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000401ca0
    R13: 0000000000401d30 R14: 0000000000000000 R15: 0000000000000000
    
    This is because we didn't filter out too big ctx_size_in. Fix it by
    rejecting ctx_size_in that are bigger than MAX_BPF_FUNC_ARGS (12) u64
    numbers.
    
    Fixes: 1b4d60ec162f ("bpf: Enable BPF_PROG_TEST_RUN for raw_tracepoint")
    Reported-by: syzbot+4f98876664c7337a4ae6@syzkaller.appspotmail.com
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20210112234254.1906829-1-songliubraving@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 93f8cc947b137b1e365d711a03062c5c58f44943
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Thu Jan 7 14:53:10 2021 +0000

    arm64: entry: remove redundant IRQ flag tracing
    
    [ Upstream commit df06824767cc9a32fbdb0e3d3b7e169292a5b5fe ]
    
    All EL0 returns go via ret_to_user(), which masks IRQs and notifies
    lockdep and tracing before calling into do_notify_resume(). Therefore,
    there's no need for do_notify_resume() to call trace_hardirqs_off(), and
    the comment is stale. The call is simply redundant.
    
    In ret_to_user() we call exit_to_user_mode(), which notifies lockdep and
    tracing the IRQs will be enabled in userspace, so there's no need for
    el0_svc_common() to call trace_hardirqs_on() before returning. Further,
    at the start of ret_to_user() we call trace_hardirqs_off(), so not only
    is this redundant, but it is immediately undone.
    
    In addition to being redundant, the trace_hardirqs_on() in
    el0_svc_common() leaves lockdep inconsistent with the hardware state,
    and is liable to cause issues for any C code or instrumentation
    between this and the call to trace_hardirqs_off() which undoes it in
    ret_to_user().
    
    This patch removes the redundant tracing calls and associated stale
    comments.
    
    Fixes: 23529049c684 ("arm64: entry: fix non-NMI user<->kernel transitions")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Will Deacon <will@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210107145310.44616-1-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 29c95dc43fdece472517e8ce602600148d99452a
Author: Ariel Marcovitch <arielmarcovitch@gmail.com>
Date:   Sat Jan 2 22:11:56 2021 +0200

    powerpc: Fix alignment bug within the init sections
    
    [ Upstream commit 2225a8dda263edc35a0e8b858fe2945cf6240fde ]
    
    This is a bug that causes early crashes in builds with an .exit.text
    section smaller than a page and an .init.text section that ends in the
    beginning of a physical page (this is kinda random, which might
    explain why this wasn't really encountered before).
    
    The init sections are ordered like this:
      .init.text
      .exit.text
      .init.data
    
    Currently, these sections aren't page aligned.
    
    Because the init code might become read-only at runtime and because
    the .init.text section can potentially reside on the same physical
    page as .init.data, the beginning of .init.data might be mapped
    read-only along with .init.text.
    
    Then when the kernel tries to modify a variable in .init.data (like
    kthreadd_done, used in kernel_init()) the kernel panics.
    
    To avoid this, make _einittext page aligned and also align .exit.text
    to make sure .init.data is always seperated from the text segments.
    
    Fixes: 060ef9d89d18 ("powerpc32: PAGE_EXEC required for inittext")
    Signed-off-by: Ariel Marcovitch <ariel.marcovitch@gmail.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210102201156.10805-1-ariel.marcovitch@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3f46eda5dff40e6f67adca73fd7f4f529662ed24
Author: Youling Tang <tangyouling@loongson.cn>
Date:   Wed Nov 4 18:59:10 2020 +0800

    powerpc: Use the common INIT_DATA_SECTION macro in vmlinux.lds.S
    
    [ Upstream commit fdcfeaba38e5b183045f5b079af94f97658eabe6 ]
    
    Use the common INIT_DATA_SECTION rule for the linker script in an effort
    to regularize the linker script.
    
    Signed-off-by: Youling Tang <tangyouling@loongson.cn>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/1604487550-20040-1-git-send-email-tangyouling@loongson.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c7b2b560583e45ab1dfd17d29ead8942c6548c4
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Mon Jan 11 20:16:50 2021 +0100

    bpf: Prevent double bpf_prog_put call from bpf_tracing_prog_attach
    
    [ Upstream commit 5541075a348b6ca6ac668653f7d2c423ae8e00b6 ]
    
    The bpf_tracing_prog_attach error path calls bpf_prog_put
    on prog, which causes refcount underflow when it's called
    from link_create function.
    
      link_create
        prog = bpf_prog_get              <-- get
        ...
        tracing_bpf_link_attach(prog..
          bpf_tracing_prog_attach(prog..
            out_put_prog:
              bpf_prog_put(prog);        <-- put
    
        if (ret < 0)
          bpf_prog_put(prog);            <-- put
    
    Removing bpf_prog_put call from bpf_tracing_prog_attach
    and making sure its callers call it instead.
    
    Fixes: 4a1e7c0c63e0 ("bpf: Support attaching freplace programs to multiple attach points")
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20210111191650.1241578-1-jolsa@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cfaa4072715259ec2e06b9206c27a920f2fb5eb8
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 15:03:04 2021 +0100

    crypto: omap-sham - Fix link error without crypto-engine
    
    [ Upstream commit 382811940303f7cd01d0f3dcdf432dfd89c5a98e ]
    
    The driver was converted to use the crypto engine helper
    but is missing the corresponding Kconfig statement to ensure
    it is available:
    
    arm-linux-gnueabi-ld: drivers/crypto/omap-sham.o: in function `omap_sham_probe':
    omap-sham.c:(.text+0x374): undefined reference to `crypto_engine_alloc_init'
    arm-linux-gnueabi-ld: omap-sham.c:(.text+0x384): undefined reference to `crypto_engine_start'
    arm-linux-gnueabi-ld: omap-sham.c:(.text+0x510): undefined reference to `crypto_engine_exit'
    arm-linux-gnueabi-ld: drivers/crypto/omap-sham.o: in function `omap_sham_finish_req':
    omap-sham.c:(.text+0x98c): undefined reference to `crypto_finalize_hash_request'
    arm-linux-gnueabi-ld: omap-sham.c:(.text+0x9a0): undefined reference to `crypto_transfer_hash_request_to_engine'
    arm-linux-gnueabi-ld: drivers/crypto/omap-sham.o: in function `omap_sham_update':
    omap-sham.c:(.text+0xf24): undefined reference to `crypto_transfer_hash_request_to_engine'
    arm-linux-gnueabi-ld: drivers/crypto/omap-sham.o: in function `omap_sham_final':
    omap-sham.c:(.text+0x1020): undefined reference to `crypto_transfer_hash_request_to_engine'
    
    Fixes: 133c3d434d91 ("crypto: omap-sham - convert to use crypto engine")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f733c696e74a8ce2bc1c1839d070e710725f5a6c
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Thu Jan 7 10:53:16 2021 -0800

    scsi: ufs: Fix tm request when non-fatal error happens
    
    [ Upstream commit eeb1b55b6e25c5f7265ff45cd050f3bc2cc423a4 ]
    
    When non-fatal error like line-reset happens, ufshcd_err_handler() starts
    to abort tasks by ufshcd_try_to_abort_task(). When it tries to issue a task
    management request, we hit two warnings:
    
    WARNING: CPU: 7 PID: 7 at block/blk-core.c:630 blk_get_request+0x68/0x70
    WARNING: CPU: 4 PID: 157 at block/blk-mq-tag.c:82 blk_mq_get_tag+0x438/0x46c
    
    After fixing the above warnings we hit another tm_cmd timeout which may be
    caused by unstable controller state:
    
    __ufshcd_issue_tm_cmd: task management cmd 0x80 timed-out
    
    Then, ufshcd_err_handler() enters full reset, and kernel gets stuck. It
    turned out ufshcd_print_trs() printed too many messages on console which
    requires CPU locks. Likewise hba->silence_err_logs, we need to avoid too
    verbose messages. This is actually not an error case.
    
    Link: https://lore.kernel.org/r/20210107185316.788815-3-jaegeuk@kernel.org
    Fixes: 69a6c269c097 ("scsi: ufs: Use blk_{get,put}_request() to allocate and free TMFs")
    Reviewed-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ef1c2e25a4a7684e312c2dbb56eea32beb31243
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Jan 5 20:08:22 2021 -0800

    scsi: ufs: ufshcd-pltfrm depends on HAS_IOMEM
    
    [ Upstream commit 5e6ddadf7637d336acaad1df1f3bcbb07f7d104d ]
    
    Building ufshcd-pltfrm.c on arch/s390/ has a linker error since S390 does
    not support IOMEM, so add a dependency on HAS_IOMEM.
    
    s390-linux-ld: drivers/scsi/ufs/ufshcd-pltfrm.o: in function `ufshcd_pltfrm_init':
    ufshcd-pltfrm.c:(.text+0x38e): undefined reference to `devm_platform_ioremap_resource'
    
    where that devm_ function is inside an #ifdef CONFIG_HAS_IOMEM/#endif
    block.
    
    Link: lore.kernel.org/r/202101031125.ZEFCUiKi-lkp@intel.com
    Link: https://lore.kernel.org/r/20210106040822.933-1-rdunlap@infradead.org
    Fixes: 03b1781aa978 ("[SCSI] ufs: Add Platform glue driver for ufshcd")
    Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: Alim Akhtar <alim.akhtar@samsung.com>
    Cc: Avri Altman <avri.altman@wdc.com>
    Cc: linux-scsi@vger.kernel.org
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20758d0493c3eec78158bb32ab53dd4df3f6fe13
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 5 00:41:04 2021 +0100

    scsi: megaraid_sas: Fix MEGASAS_IOC_FIRMWARE regression
    
    [ Upstream commit b112036535eda34460677ea883eaecc3a45a435d ]
    
    Phil Oester reported that a fix for a possible buffer overrun that I sent
    caused a regression that manifests in this output:
    
     Event Message: A PCI parity error was detected on a component at bus 0 device 5 function 0.
     Severity: Critical
     Message ID: PCI1308
    
    The original code tried to handle the sense data pointer differently when
    using 32-bit 64-bit DMA addressing, which would lead to a 32-bit dma_addr_t
    value of 0x11223344 to get stored
    
    32-bit kernel:       44 33 22 11 ?? ?? ?? ??
    64-bit LE kernel:    44 33 22 11 00 00 00 00
    64-bit BE kernel:    00 00 00 00 44 33 22 11
    
    or a 64-bit dma_addr_t value of 0x1122334455667788 to get stored as
    
    32-bit kernel:       88 77 66 55 ?? ?? ?? ??
    64-bit kernel:       88 77 66 55 44 33 22 11
    
    In my patch, I tried to ensure that the same value is used on both 32-bit
    and 64-bit kernels, and picked what seemed to be the most sensible
    combination, storing 32-bit addresses in the first four bytes (as 32-bit
    kernels already did), and 64-bit addresses in eight consecutive bytes (as
    64-bit kernels already did), but evidently this was incorrect.
    
    Always storing the dma_addr_t pointer as 64-bit little-endian,
    i.e. initializing the second four bytes to zero in case of 32-bit
    addressing, apparently solved the problem for Phil, and is consistent with
    what all 64-bit little-endian machines did before.
    
    I also checked in the history that in previous versions of the code, the
    pointer was always in the first four bytes without padding, and that
    previous attempts to fix 64-bit user space, big-endian architectures and
    64-bit DMA were clearly flawed and seem to have introduced made this worse.
    
    Link: https://lore.kernel.org/r/20210104234137.438275-1-arnd@kernel.org
    Fixes: 381d34e376e3 ("scsi: megaraid_sas: Check user-provided offsets")
    Fixes: 107a60dd71b5 ("scsi: megaraid_sas: Add support for 64bit consistent DMA")
    Fixes: 94cd65ddf4d7 ("[SCSI] megaraid_sas: addded support for big endian architecture")
    Fixes: 7b2519afa1ab ("[SCSI] megaraid_sas: fix 64 bit sense pointer truncation")
    Reported-by: Phil Oester <kernel@linuxace.com>
    Tested-by: Phil Oester <kernel@linuxace.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbba7a38b0074412b22b8ac41092015e1dae12ae
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Dec 16 11:18:44 2020 -0500

    btrfs: print the actual offset in btrfs_root_name
    
    [ Upstream commit 71008734d27f2276fcef23a5e546d358430f2d52 ]
    
    We're supposed to print the root_key.offset in btrfs_root_name in the
    case of a reloc root, not the objectid.  Fix this helper to take the key
    so we have access to the offset when we need it.
    
    Fixes: 457f1864b569 ("btrfs: pretty print leaked root name")
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Nikolay Borisov <nborisov@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 1f54a26bdb60081e1ec9637236edf863339a1514
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Tue Jan 5 13:13:27 2021 +0200

    RDMA/ucma: Do not miss ctx destruction steps in some cases
    
    [ Upstream commit 8ae291cc95e49011b736b641b0cfad502b7a1526 ]
    
    The destruction flow is very complicated here because the cm_id can be
    destroyed from the event handler at any time if the device is
    hot-removed. This leaves behind a partial ctx with no cm_id in the
    xarray, and will let user space leak memory.
    
    Make everything consistent in this flow in all places:
    
     - Return the xarray back to XA_ZERO_ENTRY before beginning any
       destruction. The thread that reaches this first is responsible to
       kfree, everyone else does nothing.
    
     - Test the xarray during the special hot-removal case to block the
       queue_work, this has much simpler locking and doesn't require a
       'destroying'
    
     - Fix the ref initialization so that it is only positive if cm_id !=
       NULL, then rely on that to guide the destruction process in all cases.
    
    Now the new ucma_destroy_private_ctx() can be called in all places that
    want to free the ctx, including all the error unwinds, and none of the
    details are missed.
    
    Fixes: a1d33b70dbbc ("RDMA/ucma: Rework how new connections are passed through event delivery")
    Link: https://lore.kernel.org/r/20210105111327.230270-1-leon@kernel.org
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e00ef8a5d223c733ff5bcb6ec814693b3670763
Author: Hsin-Yi Wang <hsinyi@chromium.org>
Date:   Mon Dec 28 17:04:25 2020 +0800

    pinctrl: mediatek: Fix fallback call path
    
    [ Upstream commit 81bd1579b43e0e285cba667399f1b063f1ce7672 ]
    
    Some SoCs, eg. mt8183, are using a pinconfig operation bias_set_combo.
    The fallback path in mtk_pinconf_adv_pull_set() should also try this
    operation.
    
    Fixes: cafe19db7751 ("pinctrl: mediatek: Backward compatible to previous Mediatek's bias-pull usage")
    Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
    Acked-by: Sean Wang <sean.wang@kernel.org>
    Link: https://lore.kernel.org/r/20201228090425.2130569-1-hsinyi@chromium.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9eea5cc5f64109a46b160a42612437a682ddd3a4
Author: Billy Tsai <billy_tsai@aspeedtech.com>
Date:   Thu Dec 17 10:49:12 2020 +0800

    pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting
    
    [ Upstream commit 92ff62a7bcc17d47c0ce8dddfb7a6e1a2e55ebf4 ]
    
    The SCU offset for signal PWM8 in group PWM8G0 is wrong, fix it from
    SCU414 to SCU4B4.
    
    Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
    Fixes: 2eda1cdec49f ("pinctrl: aspeed: Add AST2600 pinmux support")
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Link: https://lore.kernel.org/r/20201217024912.3198-1-billy_tsai@aspeedtech.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 73ad8d0c7b0529f28e4afb3c887c3aed3e3aa984
Author: Kent Gibson <warthog618@gmail.com>
Date:   Mon Dec 28 00:10:40 2020 +0800

    gpiolib: cdev: fix frame size warning in gpio_ioctl()
    
    [ Upstream commit 2e202ad873365513c6ad72e29a531071dffa498a ]
    
    The kernel test robot reports the following warning in [1]:
    
     drivers/gpio/gpiolib-cdev.c: In function 'gpio_ioctl':
     >>drivers/gpio/gpiolib-cdev.c:1437:1: warning: the frame size of 1040 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    
    Refactor gpio_ioctl() to handle each ioctl in its own helper function
    and so reduce the variables stored on the stack to those explicitly
    required to service the ioctl at hand.
    
    The lineinfo_get_v1() helper handles both the GPIO_GET_LINEINFO_IOCTL
    and GPIO_GET_LINEINFO_WATCH_IOCTL, as per the corresponding v2
    implementation - lineinfo_get().
    
    [1] https://lore.kernel.org/lkml/202012270910.VW3qc1ER-lkp@intel.com/
    
    Fixes: aad955842d1c ("gpiolib: cdev: support GPIO_V2_GET_LINEINFO_IOCTL and GPIO_V2_GET_LINEINFO_WATCH_IOCTL")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Kent Gibson <warthog618@gmail.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6533681890902e3b59bbceaea311760b3791c28d
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Dec 11 12:26:15 2020 -0500

    nfsd: Don't set eof on a truncated READ_PLUS
    
    [ Upstream commit b68f0cbd3f95f2df81e525c310a41fc73c2ed0d3 ]
    
    If the READ_PLUS operation was truncated due to an error, then ensure we
    clear the 'eof' flag.
    
    Fixes: 9f0b5792f07d ("NFSD: Encode a full READ_PLUS reply")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de82ec8e5e8cba33f84ebef26478b636e94a90fb
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Dec 11 12:26:14 2020 -0500

    nfsd: Fixes for nfsd4_encode_read_plus_data()
    
    [ Upstream commit 72d78717c6d06adf65d2e3dccc96d9e9dc978593 ]
    
    Ensure that we encode the data payload + padding, and that we truncate
    the preallocated buffer to the actual read size.
    
    Fixes: 528b84934eb9 ("NFSD: Add READ_PLUS data support")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8478091a1bd50a59f66a4980fa7e6711c3a02cf1
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Fri Jan 15 11:11:23 2021 -0800

    x86/xen: fix 'nopvspin' build error
    
    [ Upstream commit bd9dcef67ffcae2de49e319fba349df76472fd10 ]
    
    Fix build error in x86/xen/ when PARAVIRT_SPINLOCKS is not enabled.
    
    Fixes this build error:
    
    ../arch/x86/xen/smp_hvm.c: In function ‘xen_hvm_smp_init’:
    ../arch/x86/xen/smp_hvm.c:77:3: error: ‘nopvspin’ undeclared (first use in this function)
       nopvspin = true;
    
    Fixes: 3d7746bea925 ("x86/xen: Fix xen_hvm_smp_init() when vector callback not available")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20210115191123.27572-1-rdunlap@infradead.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 434f246733e7f49c8844b7e1f904b4450d33ab16
Author: Atish Patra <atish.patra@wdc.com>
Date:   Mon Jan 11 15:45:04 2021 -0800

    RISC-V: Fix maximum allowed phsyical memory for RV32
    
    [ Upstream commit e557793799c5a8406afb08aa170509619f7eac36 ]
    
    Linux kernel can only map 1GB of address space for RV32 as the page offset
    is set to 0xC0000000. The current description in the Kconfig is confusing
    as it indicates that RV32 can support 2GB of physical memory. That is
    simply not true for current kernel. In future, a 2GB split support can be
    added to allow 2GB physical address space.
    
    Reviewed-by: Anup Patel <anup@brainfault.org>
    Signed-off-by: Atish Patra <atish.patra@wdc.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e1b2ecb562fa3c254f3d6b64ec60f440e0b0fb5a
Author: Atish Patra <atish.patra@wdc.com>
Date:   Mon Jan 11 15:45:02 2021 -0800

    RISC-V: Set current memblock limit
    
    [ Upstream commit abb8e86b269604e906a6a4af7a09f04b72dbb862 ]
    
    Currently, linux kernel can not use last 4k bytes of addressable space
    because IS_ERR_VALUE macro treats those as an error. This will be an issue
    for RV32 as any memblock allocator potentially allocate chunk of memory
    from the end of DRAM (2GB) leading bad address error even though the
    address was technically valid.
    
    Fix this issue by limiting the memblock if available memory spans the
    entire address space.
    
    Reviewed-by: Anup Patel <anup@brainfault.org>
    Signed-off-by: Atish Patra <atish.patra@wdc.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90ab323edfcdd054b33db0e63570a8eebb6d5559
Author: Ian Rogers <irogers@google.com>
Date:   Thu Jan 14 10:02:50 2021 -0800

    libperf tests: Fail when failing to get a tracepoint id
    
    [ Upstream commit 66dd86b2a2bee129c70f7ff054d3a6a2e5f8eb20 ]
    
    Permissions are necessary to get a tracepoint id. Fail the test when the
    read fails.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20210114180250.3853825-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 680559480c95e356ec8d002ce19a5c758fea0817
Author: Ian Rogers <irogers@google.com>
Date:   Thu Jan 14 10:02:49 2021 -0800

    libperf tests: If a test fails return non-zero
    
    [ Upstream commit bba2ea17ef553aea0df80cb64399fe2f70f225dd ]
    
    If a test fails return -1 rather than 0. This is consistent with the
    return value in test-cpumap.c
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20210114180250.3853825-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ca824c79376453e7e3df60437324b36043ff29b
Author: Marcelo Diop-Gonzalez <marcelo827@gmail.com>
Date:   Fri Jan 15 11:54:40 2021 -0500

    io_uring: flush timeouts that should already have expired
    
    [ Upstream commit f010505b78a4fa8d5b6480752566e7313fb5ca6e ]
    
    Right now io_flush_timeouts() checks if the current number of events
    is equal to ->timeout.target_seq, but this will miss some timeouts if
    there have been more than 1 event added since the last time they were
    flushed (possible in io_submit_flush_completions(), for example). Fix
    it by recording the last sequence at which timeouts were flushed so
    that the number of events seen can be compared to the number of events
    needed without overflow.
    
    Signed-off-by: Marcelo Diop-Gonzalez <marcelo827@gmail.com>
    Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3f906bb36ccc1ef8e8158b0f675dd0d74261214
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0
    
    [ Upstream commit caeb6ab899c3d36a74cda6e299c6e1c9c4e2a22e ]
    
    VRAM offset 0 is a valid address, triggered on GA102.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb2ee33ec396430b35039b10037ff2ed0e2ca5c2
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/mmu: fix vram heap sizing
    
    [ Upstream commit add42781ad76c5ae65127bf13852a4c6b2f08849 ]
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 685a45858bf96cf0e0c54b5f8769def48d6c77fd
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields
    
    [ Upstream commit ba6e9ab0fcf3d76e3952deb12b5f993991621d9c ]
    
    Noticed while debugging GA102.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2249a3f0aed9d421c397daae651d6096b7b52191
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/privring: ack interrupts the same way as RM
    
    [ Upstream commit e05e06cd34f5311f677294a08b609acfbc315236 ]
    
    Whatever it is that we were doing before doesn't work on Ampere.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c2cd3e1d69f8a3201b0c2c0650c6e793781f50a3
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/bios: fix issue shadowing expansion ROMs
    
    [ Upstream commit 402a89660e9dc880710b12773076a336c9dab3d7 ]
    
    This issue has generally been covered up by the presence of additional
    expansion ROMs after the ones we're interested in, with header fetches
    of subsequent images loading enough of the ROM to hide the issue.
    
    Noticed on GA102, which lacks a type 0x70 image compared to TU102,.
    
    [  906.364197] nouveau 0000:09:00.0: bios: 00000000: type 00, 65024 bytes
    [  906.381205] nouveau 0000:09:00.0: bios: 0000fe00: type 03, 91648 bytes
    [  906.405213] nouveau 0000:09:00.0: bios: 00026400: type e0, 22016 bytes
    [  906.410984] nouveau 0000:09:00.0: bios: 0002ba00: type e0, 366080 bytes
    
    vs
    
    [   22.961901] nouveau 0000:09:00.0: bios: 00000000: type 00, 60416 bytes
    [   22.984174] nouveau 0000:09:00.0: bios: 0000ec00: type 03, 71168 bytes
    [   23.010446] nouveau 0000:09:00.0: bios: 00020200: type e0, 48128 bytes
    [   23.028220] nouveau 0000:09:00.0: bios: 0002be00: type e0, 140800 bytes
    [   23.080196] nouveau 0000:09:00.0: bios: 0004e400: type 70, 7168 bytes
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3970a9851fe92b1a935e9aaa81ca36ce74c8a6fd
Author: Wayne Lin <Wayne.Lin@amd.com>
Date:   Tue Nov 24 19:57:03 2020 +0800

    drm/amd/display: Fix to be able to stop crc calculation
    
    [ Upstream commit 02ce73b01e09e388614b22b7ebc71debf4a588f0 ]
    
    [Why]
    Find out when we try to disable CRC calculation,
    crc generation is still enabled. Main reason is
    that dc_stream_configure_crc() will never get
    called when the source is AMDGPU_DM_PIPE_CRC_SOURCE_NONE.
    
    [How]
    Add checking condition that when source is
    AMDGPU_DM_PIPE_CRC_SOURCE_NONE, we should also call
    dc_stream_configure_crc() to disable crc calculation.
    Also, clean up crc window when disable crc calculation.
    
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
    Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a3be22a90ac61e0cf728e45ac9d454809e20c17
Author: Nicholas Miell <nmiell@gmail.com>
Date:   Sun Jan 10 22:09:25 2021 -0800

    HID: logitech-hidpp: Add product ID for MX Ergo in Bluetooth mode
    
    [ Upstream commit 7de843dbaaa68aa514090e6226ed7c6374fd7e49 ]
    
    The Logitech MX Ergo trackball supports HID++ 4.5 over Bluetooth. Add its
    product ID to the table so we can get battery monitoring support.
    (The hid-logitech-hidpp driver already recognizes it when connected via
    a Unifying Receiver.)
    
    [jkosina@suse.cz: fix whitespace damage]
    Signed-off-by: Nicholas Miell <nmiell@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17c9b51000569384766b0ee63c7ad597d65849ce
Author: Li, Roman <Roman.Li@amd.com>
Date:   Wed Dec 30 18:03:02 2020 +0000

    drm/amd/display: disable dcn10 pipe split by default
    
    [ Upstream commit 9d03bb102028b4a3f4a64d6069b219e2e1c1f306 ]
    
    [Why]
    The initial purpose of dcn10 pipe split is to support some high
    bandwidth mode which requires dispclk greater than max dispclk. By
    initial bring up power measurement data, it showed power consumption is
    less with pipe split for dcn block. This could be reason for enable pipe
    split by default. By battery life measurement of some Chromebooks,
    result shows battery life is longer with pipe split disabled.
    
    [How]
    Disable pipe split by default. Pipe split could be still enabled when
    required dispclk is greater than max dispclk.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Hersen Wu <hersenxs.wu@amd.com>
    Signed-off-by: Roman Li <Roman.Li@amd.com>
    Reviewed-by: Roman Li <Roman.Li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 285a86df680cc722cf5d73cfad55300ce1132335
Author: Victor Zhao <Victor.Zhao@amd.com>
Date:   Tue Jan 5 15:04:01 2021 +0800

    drm/amdgpu/psp: fix psp gfx ctrl cmds
    
    [ Upstream commit f14a5c34d143f6627f0be70c0de1d962f3a6ff1c ]
    
    psp GFX_CTRL_CMD_ID_CONSUME_CMD different for windows and linux,
    according to psp, linux cmds are not correct.
    
    v2: only correct GFX_CTRL_CMD_ID_CONSUME_CMD.
    
    Signed-off-by: Victor Zhao <Victor.Zhao@amd.com>
    Reviewed-by: Emily.Deng <Emily.Deng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e82f2aa5912e89000997d1d680dceec94a686b7
Author: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
Date:   Tue Nov 10 07:22:12 2020 -0800

    riscv: defconfig: enable gpio support for HiFive Unleashed
    
    [ Upstream commit 0983834a83931606a647c275e5d4165ce4e7b49f ]
    
    Ethernet phy VSC8541-01 on HiFive Unleashed has its reset line
    connected to a gpio, so enable GPIO driver's required to reset
    the phy.
    
    Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a416b33e8b7809470b6f3fa6e93d08767b83fafd
Author: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
Date:   Tue Nov 10 07:22:11 2020 -0800

    dts: phy: add GPIO number and active state used for phy reset
    
    [ Upstream commit a0fa9d727043da2238432471e85de0bdb8a8df65 ]
    
    The GEMGXL_RST line on HiFive Unleashed is pulled low and is
    using GPIO number 12. Add these reset-gpio details to dt-node
    using which the linux phylib can reset the phy.
    
    Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4685e186ab85a75b004b68daef97147085a7e940
Author: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
Date:   Tue Nov 10 07:22:10 2020 -0800

    dts: phy: fix missing mdio device and probe failure of vsc8541-01 device
    
    [ Upstream commit be969b7cfbcfa8a835a528f1dc467f0975c6d883 ]
    
    HiFive unleashed A00 board has VSC8541-01 ethernet phy, this device is
    identified as a Revision B device as described in device identification
    registers. In order to use this phy in the unmanaged mode, it requires
    a specific reset sequence of logical 0-1-0-1 transition on the NRESET pin
    as documented here [1].
    
    Currently, the bootloader (fsbl or u-boot-spl) takes care of the phy reset.
    If due to some reason the phy device hasn't received the reset by the prior
    stages before the linux macb driver comes into the picture, the MACB mii
    bus gets probed but the mdio scan fails and is not even able to read the
    phy ID registers. It gives an error message:
    
    "libphy: MACB_mii_bus: probed
    mdio_bus 10090000.ethernet-ffffffff: MDIO device at address 0 is missing."
    
    Thus adding the device OUI (Organizationally Unique Identifier) to the phy
    device node helps to probe the phy device.
    
    [1]: VSC8541-01 datasheet:
    https://www.mouser.com/ds/2/523/Microsemi_VSC8541-01_Datasheet_10496_V40-1148034.pdf
    
    Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99e301aca69c4f44518e88f445c6f2af812d7649
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Jan 6 15:39:58 2021 +0000

    x86/xen: Fix xen_hvm_smp_init() when vector callback not available
    
    [ Upstream commit 3d7746bea92530e8695258a3cf3ddec7a135edd6 ]
    
    Only the IPI-related functions in the smp_ops should be conditional
    on the vector callback being available. The rest should still happen:
    
     • xen_hvm_smp_prepare_boot_cpu()
    
       This function does two things, both of which should still happen if
       there is no vector callback support.
    
       The call to xen_vcpu_setup() for vCPU0 should still happen as it just
       sets up the vcpu_info for CPU0. That does happen for the secondary
       vCPUs too, from xen_cpu_up_prepare_hvm().
    
       The second thing it does is call xen_init_spinlocks(), which perhaps
       counter-intuitively should *also* still be happening in the case
       without vector callbacks, so that it can clear its local xen_pvspin
       flag and disable the virt_spin_lock_key accordingly.
    
       Checking xen_have_vector_callback in xen_init_spinlocks() itself
       would affect PV guests, so set the global nopvspin flag in
       xen_hvm_smp_init() instead, when vector callbacks aren't available.
    
     • xen_hvm_smp_prepare_cpus()
    
       This does some IPI-related setup by calling xen_smp_intr_init() and
       xen_init_lock_cpu(), which can be made conditional. And it sets the
       xen_vcpu_id to XEN_VCPU_ID_INVALID for all possible CPUS, which does
       need to happen.
    
     • xen_smp_cpus_done()
    
       This offlines any vCPUs which doesn't fit in the global shared_info
       page, if separate vcpu_info placement isn't available. That part also
       needs to happen regardless of vector callback support.
    
     • xen_hvm_cpu_die()
    
       This doesn't actually do anything other than commin_cpu_die() right
       right now in the !vector_callback case; all three teardown functions
       it calls should be no-ops. But to guard against future regressions
       it's useful to call it anyway, and for it to explicitly check for
       xen_have_vector_callback before calling those additional functions.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/20210106153958.584169-6-dwmw2@infradead.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8fddd4192f820edbfb57cd4cbcd58ae9fcd29ef
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Jan 6 15:39:56 2021 +0000

    x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery
    
    [ Upstream commit b36b0fe96af13460278bf9b173beced1bd15f85d ]
    
    It's useful to be able to test non-vector event channel delivery, to make
    sure Linux will work properly on older Xen which doesn't have it.
    
    It's also useful for those working on Xen and Xen-compatible hypervisors,
    because there are guest kernels still in active use which use PCI INTX
    even when vector delivery is available.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/20210106153958.584169-4-dwmw2@infradead.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa5f2e04daa44961a1026e93f0cc88caa3c27d3d
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Jan 13 13:26:02 2021 +0000

    xen: Fix event channel callback via INTX/GSI
    
    [ Upstream commit 3499ba8198cad47b731792e5e56b9ec2a78a83a2 ]
    
    For a while, event channel notification via the PCI platform device
    has been broken, because we attempt to communicate with xenstore before
    we even have notifications working, with the xs_reset_watches() call
    in xs_init().
    
    We tend to get away with this on Xen versions below 4.0 because we avoid
    calling xs_reset_watches() anyway, because xenstore might not cope with
    reading a non-existent key. And newer Xen *does* have the vector
    callback support, so we rarely fall back to INTX/GSI delivery.
    
    To fix it, clean up a bit of the mess of xs_init() and xenbus_probe()
    startup. Call xs_init() directly from xenbus_init() only in the !XS_HVM
    case, deferring it to be called from xenbus_probe() in the XS_HVM case
    instead.
    
    Then fix up the invocation of xenbus_probe() to happen either from its
    device_initcall if the callback is available early enough, or when the
    callback is finally set up. This means that the hack of calling
    xenbus_probe() from a workqueue after the first interrupt, or directly
    from the PCI platform device setup, is no longer needed.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/20210113132606.422794-2-dwmw2@infradead.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 95379fec8264d128f6452d6f4fc40ad6062f2fac
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 8 10:19:56 2021 +0100

    arm64: make atomic helpers __always_inline
    
    [ Upstream commit c35a824c31834d947fb99b0c608c1b9f922b4ba0 ]
    
    With UBSAN enabled and building with clang, there are occasionally
    warnings like
    
    WARNING: modpost: vmlinux.o(.text+0xc533ec): Section mismatch in reference from the function arch_atomic64_or() to the variable .init.data:numa_nodes_parsed
    The function arch_atomic64_or() references
    the variable __initdata numa_nodes_parsed.
    This is often because arch_atomic64_or lacks a __initdata
    annotation or the annotation of numa_nodes_parsed is wrong.
    
    for functions that end up not being inlined as intended but operating
    on __initdata variables. Mark these as __always_inline, along with
    the corresponding asm-generic wrappers.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210108092024.4034860-1-arnd@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64de608c989954fe3ec518f82ebf7e0bb39e2497
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Wed Dec 23 00:01:52 2020 +0800

    riscv: cacheinfo: Fix using smp_processor_id() in preemptible
    
    [ Upstream commit 80709af7325d179b433817f421c85449f2454046 ]
    
    Use raw_smp_processor_id instead of smp_processor_id() to fix warning,
    
    BUG: using smp_processor_id() in preemptible [00000000] code: init/1
    caller is debug_smp_processor_id+0x1c/0x26
    CPU: 0 PID: 1 Comm: init Not tainted 5.10.0-rc4 #211
    Call Trace:
      walk_stackframe+0x0/0xaa
      show_stack+0x32/0x3e
      dump_stack+0x76/0x90
      check_preemption_disabled+0xaa/0xac
      debug_smp_processor_id+0x1c/0x26
      get_cache_size+0x18/0x68
      load_elf_binary+0x868/0xece
      bprm_execve+0x224/0x498
      kernel_execve+0xdc/0x142
      run_init_process+0x90/0x9e
      try_to_run_init_process+0x12/0x3c
      kernel_init+0xb4/0xf8
      ret_from_exception+0x0/0xc
    
    The issue is found when CONFIG_DEBUG_PREEMPT enabled.
    
    Reviewed-by: Atish Patra <atish.patra@wdc.com>
    Tested-by: Atish Patra <atish.patra@wdc.com>
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    [Palmer: Added a comment.]
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cec20e26750cb0e18209d5a0f886a88b51983ef2
Author: Peter Geis <pgwipeout@gmail.com>
Date:   Fri Jan 8 13:59:13 2021 +0000

    ALSA: hda/tegra: fix tegra-hda on tegra30 soc
    
    [ Upstream commit 615d435400435876ac68c1de37e9526a9164eaec ]
    
    Currently hda on tegra30 fails to open a stream with an input/output error.
    
    For example:
    speaker-test -Dhw:0,3 -c 2
    
    speaker-test 1.2.2
    
    Playback device is hw:0,3
    Stream parameters are 48000Hz, S16_LE, 2 channels
    Using 16 octaves of pink noise
    Rate set to 48000Hz (requested 48000Hz)
    Buffer size range from 64 to 16384
    Period size range from 32 to 8192
    Using max buffer size 16384
    Periods = 4
    was set period_size = 4096
    was set buffer_size = 16384
     0 - Front Left
    Write error: -5,Input/output error
    xrun_recovery failed: -5,Input/output error
    Transfer failed: Input/output error
    
    The tegra-hda device was introduced in tegra30 but only utilized in
    tegra124 until recent chips. Tegra210/186 work only due to a hardware
    change. For this reason it is unknown when this issue first manifested.
    Discussions with the hardware team show this applies to all current tegra
    chips. It has been resolved in the tegra234, which does not have hda
    support at this time.
    
    The explanation from the hardware team is this:
    Below is the striping formula referenced from HD audio spec.
       { ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
    
    The current issue is seen because Tegra HW has a problem with boundary
    condition (= 8) for striping. The reason why it is not seen on
    Tegra210/Tegra186 is because it uses max 2SDO lines. Max SDO lines is
    read from GCAP register.
    
    For the given stream (channels = 2, bps = 16);
    ratio = (channels * bps) / NSDO = 32 / NSDO;
    
    On Tegra30,      ratio = 32/4 = 8  (FAIL)
    On Tegra210/186, ratio = 32/2 = 16 (PASS)
    On Tegra194,     ratio = 32/4 = 8  (FAIL) ==> Earlier workaround was
    applied for it
    
    If Tegra210/186 is forced to use 4SDO, it fails there as well. So the
    behavior is consistent across all these chips.
    
    Applying the fix in [1] universally resolves this issue on tegra30-hda.
    Tested on the Ouya game console and the tf201 tablet.
    
    [1] commit 60019d8c650d ("ALSA: hda/tegra: workaround playback failure on
    Tegra194")
    
    Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Ion Agorria <ion@agorria.com>
    Reviewed-by: Sameer Pujar <spujar@nvidia.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Peter Geis <pgwipeout@gmail.com>
    Link: https://lore.kernel.org/r/20210108135913.2421585-3-pgwipeout@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8749dfcb892e7a42a9eeb8b1dc402a3d6188dbd
Author: Peter Geis <pgwipeout@gmail.com>
Date:   Fri Jan 8 13:59:12 2021 +0000

    clk: tegra30: Add hda clock default rates to clock driver
    
    [ Upstream commit f4eccc7fea203cfb35205891eced1ab51836f362 ]
    
    Current implementation defaults the hda clocks to clk_m. This causes hda
    to run too slow to operate correctly. Fix this by defaulting to pll_p and
    setting the frequency to the correct rate.
    
    This matches upstream t124 and downstream t30.
    
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Ion Agorria <ion@agorria.com>
    Acked-by: Sameer Pujar <spujar@nvidia.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Peter Geis <pgwipeout@gmail.com>
    Link: https://lore.kernel.org/r/20210108135913.2421585-2-pgwipeout@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4301e3448aeb02e11882c55cd298cac654e7057e
Author: Seth Miller <miller.seth@gmail.com>
Date:   Mon Jan 4 22:58:12 2021 -0600

    HID: Ignore battery for Elan touchscreen on ASUS UX550
    
    [ Upstream commit 7c38e769d5c508939ce5dc26df72602f3c902342 ]
    
    Battery status is being reported for the Elan touchscreen on ASUS
    UX550 laptops despite not having a batter. It always shows either 0 or
    1%.
    
    Signed-off-by: Seth Miller <miller.seth@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e6fc9768ed2c3917e1fd7af26cb194dfe14f7da
Author: Filipe Laíns <lains@archlinux.org>
Date:   Mon Jan 4 20:47:17 2021 +0000

    HID: logitech-dj: add the G602 receiver
    
    [ Upstream commit e400071a805d6229223a98899e9da8c6233704a1 ]
    
    Tested. The device gets correctly exported to userspace and I can see
    mouse and keyboard events.
    
    Signed-off-by: Filipe Laíns <lains@archlinux.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bc83cce3e7fdd3e39121e8ffff3cfe893cf7fac
Author: Damien Le Moal <damien.lemoal@wdc.com>
Date:   Sun Dec 13 22:50:36 2020 +0900

    riscv: Enable interrupts during syscalls with M-Mode
    
    [ Upstream commit 643437b996bac9267785e0bd528332e2d5811067 ]
    
    When running is M-Mode (no MMU config), MPIE does not get set. This
    results in all syscalls being executed with interrupts disabled as
    handle_exception never sets SR_IE as it always sees SR_PIE being
    cleared. Fix this by always force enabling interrupts in
    handle_syscall when CONFIG_RISCV_M_MODE is enabled.
    
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 094a4af043bc4fa73b3f480dbbe8d5270b66a539
Author: Damien Le Moal <damien.lemoal@wdc.com>
Date:   Sun Dec 13 22:50:35 2020 +0900

    riscv: Fix sifive serial driver
    
    [ Upstream commit 1f1496a923b6ba16679074fe77100e1b53cdb880 ]
    
    Setup the port uartclk in sifive_serial_probe() so that the base baud
    rate is correctly printed during device probe instead of always showing
    "0".  I.e. the probe message is changed from
    
    38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1,
    base_baud = 0) is a SiFive UART v0
    
    to the correct:
    
    38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1,
    base_baud = 115200) is a SiFive UART v0
    
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c47d249af1bd17a28f8f871f9be51918e5ad9741
Author: Damien Le Moal <damien.lemoal@wdc.com>
Date:   Sun Dec 13 22:50:34 2020 +0900

    riscv: Fix kernel time_init()
    
    [ Upstream commit 11f4c2e940e2f317c9d8fb5a79702f2a4a02ff98 ]
    
    If of_clk_init() is not called in time_init(), clock providers defined
    in the system device tree are not initialized, resulting in failures for
    other devices to initialize due to missing clocks.
    Similarly to other architectures and to the default kernel time_init()
    implementation, call of_clk_init() before executing timer_probe() in
    time_init().
    
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de88bcba6611b13a8a4f61cdacd074eb0b3e0723
Author: Ewan D. Milne <emilne@redhat.com>
Date:   Mon Dec 7 17:10:21 2020 -0500

    scsi: sd: Suppress spurious errors when WRITE SAME is being disabled
    
    [ Upstream commit e5cc9002caafacbaa8dab878d17a313192c3b03b ]
    
    The block layer code will split a large zeroout request into multiple bios
    and if WRITE SAME is disabled because the storage device reports that it
    does not support it (or support the length used), we can get an error
    message from the block layer despite the setting of RQF_QUIET on the first
    request.  This is because more than one request may have already been
    submitted.
    
    Fix this by setting RQF_QUIET when BLK_STS_TARGET is returned to fail the
    request early, we don't need to log a message because we did not actually
    submit the command to the device, and the block layer code will handle the
    error by submitting individual write bios.
    
    Link: https://lore.kernel.org/r/20201207221021.28243-1-emilne@redhat.com
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb84da3a68826d68994f245bae231800e95e4b6a
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Sat Dec 26 14:15:03 2020 +0800

    scsi: scsi_debug: Fix memleak in scsi_debug_init()
    
    [ Upstream commit 3b01d7ea4dae907d34fa0eeb3f17bacd714c6d0c ]
    
    When sdeb_zbc_model does not match BLK_ZONED_NONE, BLK_ZONED_HA or
    BLK_ZONED_HM, we should free sdebug_q_arr to prevent memleak. Also there is
    no need to execute sdebug_erase_store() on failure of sdeb_zbc_model_str().
    
    Link: https://lore.kernel.org/r/20201226061503.20050-1-dinghao.liu@zju.edu.cn
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c419b747ee5a612390cdab11fe6b119ff4f6b879
Author: Nilesh Javali <njavali@marvell.com>
Date:   Thu Dec 17 02:51:44 2020 -0800

    scsi: qedi: Correct max length of CHAP secret
    
    [ Upstream commit d50c7986fbf0e2167279e110a2ed5bd8e811c660 ]
    
    The CHAP secret displayed garbage characters causing iSCSI login
    authentication failure. Correct the CHAP password max length.
    
    Link: https://lore.kernel.org/r/20201217105144.8055-1-njavali@marvell.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2536194bb3b099cc9a9037009b86e7ccfb81461c
Author: Can Guo <cang@codeaurora.org>
Date:   Mon Dec 28 04:04:36 2020 -0800

    scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback
    
    [ Upstream commit 35fc4cd34426c242ab015ef280853b7bff101f48 ]
    
    Users can initiate resets to specific SCSI device/target/host through
    IOCTL. When this happens, the SCSI cmd passed to eh_device/target/host
    _reset_handler() callbacks is initialized with a request whose tag is -1.
    In this case it is not right for eh_device_reset_handler() callback to
    count on the LUN get from hba->lrb[-1]. Fix it by getting LUN from the SCSI
    device associated with the SCSI cmd.
    
    Link: https://lore.kernel.org/r/1609157080-26283-1-git-send-email-cang@codeaurora.org
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
    Signed-off-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62985a33c6a245561f92ffbd7c5943cd8b552c5e
Author: Stanley Chu <stanley.chu@mediatek.com>
Date:   Tue Dec 22 15:29:05 2020 +0800

    scsi: ufs: Relax the condition of UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL
    
    [ Upstream commit 21acf4601cc63cf564c6fc1a74d81b191313c929 ]
    
    UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL is intended to skip enabling
    fWriteBoosterBufferFlushEn while WriteBooster is initializing.  Therefore
    it is better to apply the checking during WriteBooster initialization only.
    
    Link: https://lore.kernel.org/r/20201222072905.32221-3-stanley.chu@mediatek.com
    Reviewed-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55807e7cb0bc6fa2e57edd946fe4b30a1b7d45d7
Author: Dexuan Cui <decui@microsoft.com>
Date:   Mon Dec 21 22:55:41 2020 -0800

    x86/hyperv: Fix kexec panic/hang issues
    
    [ Upstream commit dfe94d4086e40e92b1926bddcefa629b791e9b28 ]
    
    Currently the kexec kernel can panic or hang due to 2 causes:
    
    1) hv_cpu_die() is not called upon kexec, so the hypervisor corrupts the
    old VP Assist Pages when the kexec kernel runs. The same issue is fixed
    for hibernation in commit 421f090c819d ("x86/hyperv: Suspend/resume the
    VP assist page for hibernation"). Now fix it for kexec.
    
    2) hyperv_cleanup() is called too early. In the kexec path, the other CPUs
    are stopped in hv_machine_shutdown() -> native_machine_shutdown(), so
    between hv_kexec_handler() and native_machine_shutdown(), the other CPUs
    can still try to access the hypercall page and cause panic. The workaround
    "hv_hypercall_pg = NULL;" in hyperv_cleanup() is unreliabe. Move
    hyperv_cleanup() to a better place.
    
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20201222065541.24312-1-decui@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 246ab9b9ed638cd1f633936d5995e4902d3d9829
Author: Anthony Iliopoulos <ailiop@suse.com>
Date:   Mon Dec 14 18:18:11 2020 +0100

    dm integrity: select CRYPTO_SKCIPHER
    
    [ Upstream commit f7b347acb5f6c29d9229bb64893d8b6a2c7949fb ]
    
    The integrity target relies on skcipher for encryption/decryption, but
    certain kernel configurations may not enable CRYPTO_SKCIPHER, leading to
    compilation errors due to unresolved symbols. Explicitly select
    CRYPTO_SKCIPHER for DM_INTEGRITY, since it is unconditionally dependent
    on it.
    
    Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e03bbc55b14905b6f1a11bd9ee5032e23963a692
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:41:44 2021 +0100

    HID: sony: select CONFIG_CRC32
    
    [ Upstream commit 273435a1d4e5826f039625c23ba4fe9a09f24d75 ]
    
    Without crc32 support, this driver fails to link:
    
    arm-linux-gnueabi-ld: drivers/hid/hid-sony.o: in function `sony_raw_event':
    hid-sony.c:(.text+0x8f4): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: hid-sony.c:(.text+0x900): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/hid/hid-sony.o:hid-sony.c:(.text+0x4408): more undefined references to `crc32_le' follow
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eacac9a9218338988c6f806e80fb81b3ca237f12
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Dec 30 20:44:07 2020 +0800

    HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device
    
    [ Upstream commit c3d6eb6e54373f297313b65c1f2319d36914d579 ]
    
    Pointstick and its left/right buttons on HP EliteBook 850 G7 need
    multi-input quirk to work correctly.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00ee972739fb2526d3936f1e7ccfc8c91d250c60
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Dec 18 12:28:41 2020 -0500

    SUNRPC: Handle TCP socket sends with kernel_sendpage() again
    
    [ Upstream commit 4a85a6a3320b4a622315d2e0ea91a1d2b013bce4 ]
    
    Daire Byrne reports a ~50% aggregrate throughput regression on his
    Linux NFS server after commit da1661b93bf4 ("SUNRPC: Teach server to
    use xprt_sock_sendmsg for socket sends"), which replaced
    kernel_send_page() calls in NFSD's socket send path with calls to
    sock_sendmsg() using iov_iter.
    
    Investigation showed that tcp_sendmsg() was not using zero-copy to
    send the xdr_buf's bvec pages, but instead was relying on memcpy.
    This means copying every byte of a large NFS READ payload.
    
    It looks like TLS sockets do indeed support a ->sendpage method,
    so it's really not necessary to use xprt_sock_sendmsg() to support
    TLS fully on the server. A mechanical reversion of da1661b93bf4 is
    not possible at this point, but we can re-implement the server's
    TCP socket sendmsg path using kernel_sendpage().
    
    Reported-by: Daire Byrne <daire@dneg.com>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=209439
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae3e2f34b30d6ec01e246aef06f1574ba002ec97
Author: Shuming Fan <shumingf@realtek.com>
Date:   Thu Dec 17 16:56:51 2020 +0800

    ASoC: rt711: mutex between calibration and power state changes
    
    [ Upstream commit 6108f990c0887d3e8f1db2d13c7012e40a061f28 ]
    
    To avoid calibration time-out, this patch adds the mutex between calibration and power state changes
    
    Signed-off-by: Shuming Fan <shumingf@realtek.com>
    Link: https://lore.kernel.org/r/20201217085651.24580-1-shumingf@realtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14fe083fd052efed08a565bf79e177d6cd156135
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Thu Dec 17 11:54:01 2020 +0100

    ASoC: Intel: haswell: Add missing pm_ops
    
    [ Upstream commit bb224c3e3e41d940612d4cc9573289cdbd5cb8f5 ]
    
    haswell machine board is missing pm_ops what prevents it from undergoing
    suspend-resume procedure successfully. Assign default snd_soc_pm_ops so
    this is no longer the case.
    
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://lore.kernel.org/r/20201217105401.27865-1-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 142c6a6040de027bd907acbe1aff274ebb98d4d2
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jan 18 10:17:55 2021 +0000

    drm/i915: Check for rq->hwsp validity after acquiring RCU lock
    
    commit 45db630e5f7ec83817c57c8ae387fe219bd42adf upstream.
    
    Since we allow removing the timeline map at runtime, there is a risk
    that rq->hwsp points into a stale page. To control that risk, we hold
    the RCU read lock while reading *rq->hwsp, but we missed a couple of
    important barriers. First, the unpinning / removal of the timeline map
    must be after all RCU readers into that map are complete, i.e. after an
    rcu barrier (in this case courtesy of call_rcu()). Secondly, we must
    make sure that the rq->hwsp we are about to dereference under the RCU
    lock is valid. In this case, we make the rq->hwsp pointer safe during
    i915_request_retire() and so we know that rq->hwsp may become invalid
    only after the request has been signaled. Therefore is the request is
    not yet signaled when we acquire rq->hwsp under the RCU, we know that
    rq->hwsp will remain valid for the duration of the RCU read lock.
    
    This is a very small window that may lead to either considering the
    request not completed (causing a delay until the request is checked
    again, any wait for the request is not affected) or dereferencing an
    invalid pointer.
    
    Fixes: 3adac4689f58 ("drm/i915: Introduce concept of per-timeline (context) HWSP")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: <stable@vger.kernel.org> # v5.1+
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201218122421.18344-1-chris@chris-wilson.co.uk
    (cherry picked from commit 9bb36cf66091ddf2d8840e5aa705ad3c93a6279b)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210118101755.476744-1-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdab6bdaa0e69d390e5f3d09d09170d2ad0308de
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jan 18 09:53:32 2021 +0000

    drm/i915/gt: Prevent use of engine->wa_ctx after error
    
    commit 488751a0ef9b5ce572c47301ce62d54fc6b5a74d upstream.
    
    On error we unpin and free the wa_ctx.vma, but do not clear any of the
    derived flags. During lrc_init, we look at the flags and attempt to
    dereference the wa_ctx.vma if they are set. To protect the error path
    where we try to limp along without the wa_ctx, make sure we clear those
    flags!
    
    Reported-by: Matt Roper <matthew.d.roper@intel.com>
    Fixes: 604a8f6f1e33 ("drm/i915/lrc: Only enable per-context and per-bb buffers if set")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v4.15+
    Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210108204026.20682-1-chris@chris-wilson.co.uk
    (cherry-picked from 5b4dc95cf7f573e927fbbd406ebe54225d41b9b2)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210118095332.458813-1-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f8049df7c5094f9913cd49a8b56999321ea3683
Author: Sung Lee <sung.lee@amd.com>
Date:   Tue Jan 5 14:32:29 2021 -0500

    drm/amd/display: DCN2X Find Secondary Pipe properly in MPO + ODM Case
    
    commit 348fe1ca5ccdca0f8c285e2ab99004fdcd531430 upstream.
    
    [WHY]
    Previously as MPO + ODM Combine was not supported, finding secondary pipes
    for each case was mutually exclusive. Now that both are supported at the same
    time, both cases should be taken into account when finding a secondary pipe.
    
    [HOW]
    If a secondary pipe cannot be found based on previous bottom pipe,
    search for a second pipe using next_odm_pipe instead.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Sung Lee <sung.lee@amd.com>
    Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
    Acked-by: Anson Jacob <anson.jacob@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org # 5.10.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09846950a1b63a91235d2b4b260afa04280d5388
Author: Huang Rui <ray.huang@amd.com>
Date:   Tue Jan 19 13:35:21 2021 +0800

    drm/amdgpu: remove gpu info firmware of green sardine
    
    commit acc214bfafbafcd29d5d25d1ede5f11c14ffc147 upstream.
    
    The ip discovery is supported on green sardine, it doesn't need gpu info
    firmware anymore.
    
    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Prike Liang <Prike.Liang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org # 5.10.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eab4b3e27413f3cc80d301697f04e09dd4552fd6
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Tue Jan 19 14:03:18 2021 +0100

    drm/syncobj: Fix use-after-free
    
    commit a37eef63bc9e16e06361b539e528058146af80ab upstream.
    
    While reviewing Christian's annotation patch I noticed that we have a
    user-after-free for the WAIT_FOR_SUBMIT case: We drop the syncobj
    reference before we've completed the waiting.
    
    Of course usually there's nothing bad happening here since userspace
    keeps the reference, but we can't rely on userspace to play nice here!
    
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Fixes: bc9c80fe01a2 ("drm/syncobj: use the timeline point in drm_syncobj_find_fence v4")
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: dri-devel@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v5.2+
    Link: https://patchwork.freedesktop.org/patch/msgid/20210119130318.615145-1-daniel.vetter@ffwll.ch
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 931bc41c59e327617d414d05c44c5dea3baa14d0
Author: Pan Bian <bianpan2016@163.com>
Date:   Tue Jan 19 04:11:27 2021 -0800

    drm/atomic: put state on error path
    
    commit 43b67309b6b2a3c08396cc9b3f83f21aa529d273 upstream.
    
    Put the state before returning error code.
    
    Fixes: 44596b8c4750 ("drm/atomic: Unify conflicting encoder handling.")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210119121127.84127-1-bianpan2016@163.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cb683c3c471f99018891f7551390217de4b0a8f
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jan 20 13:59:11 2021 -0500

    dm integrity: conditionally disable "recalculate" feature
    
    commit 5c02406428d5219c367c5f53457698c58bc5f917 upstream.
    
    Otherwise a malicious user could (ab)use the "recalculate" feature
    that makes dm-integrity calculate the checksums in the background
    while the device is already usable. When the system restarts before all
    checksums have been calculated, the calculation continues where it was
    interrupted even if the recalculate feature is not requested the next
    time the dm device is set up.
    
    Disable recalculating if we use internal_hash or journal_hash with a
    key (e.g. HMAC) and we don't have the "legacy_recalculate" flag.
    
    This may break activation of a volume, created by an older kernel,
    that is not yet fully recalculated -- if this happens, the user should
    add the "legacy_recalculate" flag to constructor parameters.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reported-by: Daniel Glockner <dg@emlix.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de4fabc02a58daf85b85cc3e770835e4d77bbc54
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jan 20 06:02:31 2021 -0500

    dm integrity: fix a crash if "recalculate" used without "internal_hash"
    
    commit 2d06dfecb132a1cc2e374a44eae83b5c4356b8b4 upstream.
    
    Recalculate can only be specified with internal_hash.
    
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a5095ac9e0b716ece6b13a6a760cef2396a4af7
Author: Hannes Reinecke <hare@suse.de>
Date:   Thu Jan 21 18:50:56 2021 +0100

    dm: avoid filesystem lookup in dm_get_dev_t()
    
    commit 809b1e4945774c9ec5619a8f4e2189b7b3833c0c upstream.
    
    This reverts commit
    644bda6f3460 ("dm table: fall back to getting device using name_to_dev_t()")
    
    dm_get_dev_t() is just used to convert an arbitrary 'path' string
    into a dev_t. It doesn't presume that the device is present; that
    check will be done later, as the only caller is dm_get_device(),
    which does a dm_get_table_device() later on, which will properly
    open the device.
    
    So if the path string already _is_ in major:minor representation
    we can convert it directly, avoiding a recursion into the filesystem
    to lookup the block device.
    
    This avoids a hang in multipath_message() when the filesystem is
    inaccessible.
    
    Fixes: 644bda6f3460 ("dm table: fall back to getting device using name_to_dev_t()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4749ffd9c432cc7a7abdb3064fb213cc3e2e5015
Author: Al Cooper <alcooperx@gmail.com>
Date:   Thu Jan 7 17:15:09 2021 -0500

    mmc: sdhci-brcmstb: Fix mmc timeout errors on S5 suspend
    
    commit 5b191dcba719319148eeecf6ed409949fac55b39 upstream.
    
    Commit e7b5d63a82fe ("mmc: sdhci-brcmstb: Add shutdown callback")
    that added a shutdown callback to the diver, is causing "mmc timeout"
    errors on S5 suspend. The problem was that the "remove" was queuing
    additional MMC commands after the "shutdown" and these caused
    timeouts as the MMC queues were cleaned up for "remove". The
    shutdown callback will be changed to calling sdhci-pltfm_suspend
    which should get better power savings because the clocks will be
    shutdown.
    
    Fixes: e7b5d63a82fe ("mmc: sdhci-brcmstb: Add shutdown callback")
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20210107221509.6597-1-alcooperx@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b97c26cfe1e62b097f54d3fb280a4ef63b40a180
Author: Alex Leibovich <alexl@marvell.com>
Date:   Fri Dec 11 15:16:56 2020 +0100

    mmc: sdhci-xenon: fix 1.8v regulator stabilization
    
    commit 1a3ed0dc3594d99ff341ec63865a40519ea24b8d upstream.
    
    Automatic Clock Gating is a feature used for the power consumption
    optimisation. It turned out that during early init phase it may prevent the
    stable voltage switch to 1.8V - due to that on some platforms an endless
    printout in dmesg can be observed: "mmc1: 1.8V regulator output did not
    became stable" Fix the problem by disabling the ACG at very beginning of
    the sdhci_init and let that be enabled later.
    
    Fixes: 3a3748dba881 ("mmc: sdhci-xenon: Add Marvell Xenon SDHC core functionality")
    Signed-off-by: Alex Leibovich <alexl@marvell.com>
    Signed-off-by: Marcin Wojtas <mw@semihalf.com>
    Cc: stable@vger.kernel.org
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Link: https://lore.kernel.org/r/20201211141656.24915-1-mw@semihalf.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 728d8ab4d6acfaf77e470221ad63adb5a4a63c43
Author: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date:   Tue Dec 29 16:16:25 2020 +0800

    mmc: sdhci-of-dwcmshc: fix rpmb access
    
    commit ca1219c0a7432272324660fc9f61a9940f90c50b upstream.
    
    Commit a44f7cb93732 ("mmc: core: use mrq->sbc when sending CMD23 for
    RPMB") began to use ACMD23 for RPMB if the host supports ACMD23. In
    RPMB ACM23 case, we need to set bit 31 to CMD23 argument, otherwise
    RPMB write operation will return general fail.
    
    However, no matter V4 is enabled or not, the dwcmshc's ARGUMENT2
    register is 32-bit block count register which doesn't support stuff
    bits of CMD23 argument. So let's handle this specific ACMD23 case.
    
    From another side, this patch also prepare for future v4 enabling
    for dwcmshc, because from the 4.10 spec, the ARGUMENT2 register is
    redefined as 32bit block count which doesn't support stuff bits of
    CMD23 argument.
    
    Fixes: a44f7cb93732 ("mmc: core: use mrq->sbc when sending CMD23 for RPMB")
    Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Link: https://lore.kernel.org/r/20201229161625.38255233@xhacker.debian
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec302409d0a88998b2244fc5d9db979b63a88816
Author: Peter Collingbourne <pcc@google.com>
Date:   Thu Jan 14 12:14:05 2021 -0800

    mmc: core: don't initialize block size from ext_csd if not present
    
    commit b503087445ce7e45fabdee87ca9e460d5b5b5168 upstream.
    
    If extended CSD was not available, the eMMC driver would incorrectly
    set the block size to 0, as the data_sector_size field of ext_csd
    was never initialized. This issue was exposed by commit 817046ecddbc
    ("block: Align max_hw_sectors to logical blocksize") which caused
    max_sectors and max_hw_sectors to be set to 0 after setting the block
    size to 0, resulting in a kernel panic in bio_split when attempting
    to read from the device. Fix it by only reading the block size from
    ext_csd if it is available.
    
    Fixes: a5075eb94837 ("mmc: block: Allow disabling 512B sector size emulation")
    Signed-off-by: Peter Collingbourne <pcc@google.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
    Link: https://linux-review.googlesource.com/id/If244d178da4d86b52034459438fec295b02d6e60
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20210114201405.2934886-1-pcc@google.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b873acfb82a575fcf3758108624641140d3105c
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Fri Dec 11 23:28:09 2020 +0000

    pinctrl: ingenic: Fix JZ4760 support
    
    commit 9a85c09a3f507b925d75cb0c7c8f364467038052 upstream.
    
    - JZ4760 and JZ4760B have a similar register layout as the JZ4740, and
      don't use the new register layout, which was introduced with the
      JZ4770 SoC and not the JZ4760 or JZ4760B SoCs.
    
    - The JZ4740 code path only expected two function modes to be
      configurable for each pin, and wouldn't work with more than two. Fix
      it for the JZ4760, which has four configurable function modes.
    
    Fixes: 0257595a5cf4 ("pinctrl: Ingenic: Add pinctrl driver for JZ4760 and JZ4760B.")
    Cc: <stable@vger.kernel.org> # 5.3
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Link: https://lore.kernel.org/r/20201211232810.261565-1-paul@crapouillou.net
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13ef6bccab397c02d5a48d236316fd5f626f8b01
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Jan 12 11:02:43 2021 -0800

    fs: fix lazytime expiration handling in __writeback_single_inode()
    
    commit 1e249cb5b7fc09ff216aa5a12f6c302e434e88f9 upstream.
    
    When lazytime is enabled and an inode is being written due to its
    in-memory updated timestamps having expired, either due to a sync() or
    syncfs() system call or due to dirtytime_expire_interval having elapsed,
    the VFS needs to inform the filesystem so that the filesystem can copy
    the inode's timestamps out to the on-disk data structures.
    
    This is done by __writeback_single_inode() calling
    mark_inode_dirty_sync(), which then calls ->dirty_inode(I_DIRTY_SYNC).
    
    However, this occurs after __writeback_single_inode() has already
    cleared the dirty flags from ->i_state.  This causes two bugs:
    
    - mark_inode_dirty_sync() redirties the inode, causing it to remain
      dirty.  This wastefully causes the inode to be written twice.  But
      more importantly, it breaks cases where sync_filesystem() is expected
      to clean dirty inodes.  This includes the FS_IOC_REMOVE_ENCRYPTION_KEY
      ioctl (as reported at
      https://lore.kernel.org/r/20200306004555.GB225345@gmail.com), as well
      as possibly filesystem freezing (freeze_super()).
    
    - Since ->i_state doesn't contain I_DIRTY_TIME when ->dirty_inode() is
      called from __writeback_single_inode() for lazytime expiration,
      xfs_fs_dirty_inode() ignores the notification.  (XFS only cares about
      lazytime expirations, and it assumes that i_state will contain
      I_DIRTY_TIME during those.)  Therefore, lazy timestamps aren't
      persisted by sync(), syncfs(), or dirtytime_expire_interval on XFS.
    
    Fix this by moving the call to mark_inode_dirty_sync() to earlier in
    __writeback_single_inode(), before the dirty flags are cleared from
    i_state.  This makes filesystems be properly notified of the timestamp
    expiration, and it avoids incorrectly redirtying the inode.
    
    This fixes xfstest generic/580 (which tests
    FS_IOC_REMOVE_ENCRYPTION_KEY) when run on ext4 or f2fs with lazytime
    enabled.  It also fixes the new lazytime xfstest I've proposed, which
    reproduces the above-mentioned XFS bug
    (https://lore.kernel.org/r/20210105005818.92978-1-ebiggers@kernel.org).
    
    Alternatively, we could call ->dirty_inode(I_DIRTY_SYNC) directly.  But
    due to the introduction of I_SYNC_QUEUED, mark_inode_dirty_sync() is the
    right thing to do because mark_inode_dirty_sync() now knows not to move
    the inode to a writeback list if it is currently queued for sync.
    
    Fixes: 0ae45f63d4ef ("vfs: add support for a lazytime mount option")
    Cc: stable@vger.kernel.org
    Depends-on: 5afced3bf281 ("writeback: Avoid skipping inode writeback")
    Link: https://lore.kernel.org/r/20210112190253.64307-2-ebiggers@kernel.org
    Suggested-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adc11110d1e58b575b669f7d76982dac4220ea10
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jan 11 11:41:42 2021 +0000

    btrfs: send: fix invalid clone operations when cloning from the same file and root
    
    commit 518837e65068c385dddc0a87b3e577c8be7c13b1 upstream.
    
    When an incremental send finds an extent that is shared, it checks which
    file extent items in the range refer to that extent, and for those it
    emits clone operations, while for others it emits regular write operations
    to avoid corruption at the destination (as described and fixed by commit
    d906d49fc5f4 ("Btrfs: send, fix file corruption due to incorrect cloning
    operations")).
    
    However when the root we are cloning from is the send root, we are cloning
    from the inode currently being processed and the source file range has
    several extent items that partially point to the desired extent, with an
    offset smaller than the offset in the file extent item for the range we
    want to clone into, it can cause the algorithm to issue a clone operation
    that starts at the current eof of the file being processed in the receiver
    side, in which case the receiver will fail, with EINVAL, when attempting
    to execute the clone operation.
    
    Example reproducer:
    
      $ cat test-send-clone.sh
      #!/bin/bash
    
      DEV=/dev/sdi
      MNT=/mnt/sdi
    
      mkfs.btrfs -f $DEV >/dev/null
      mount $DEV $MNT
    
      # Create our test file with a single and large extent (1M) and with
      # different content for different file ranges that will be reflinked
      # later.
      xfs_io -f \
             -c "pwrite -S 0xab 0 128K" \
             -c "pwrite -S 0xcd 128K 128K" \
             -c "pwrite -S 0xef 256K 256K" \
             -c "pwrite -S 0x1a 512K 512K" \
             $MNT/foobar
    
      btrfs subvolume snapshot -r $MNT $MNT/snap1
      btrfs send -f /tmp/snap1.send $MNT/snap1
    
      # Now do a series of changes to our file such that we end up with
      # different parts of the extent reflinked into different file offsets
      # and we overwrite a large part of the extent too, so no file extent
      # items refer to that part that was overwritten. This used to confuse
      # the algorithm used by the kernel to figure out which file ranges to
      # clone, making it attempt to clone from a source range starting at
      # the current eof of the file, resulting in the receiver to fail since
      # it is an invalid clone operation.
      #
      xfs_io -c "reflink $MNT/foobar 64K 1M 960K" \
             -c "reflink $MNT/foobar 0K 512K 256K" \
             -c "reflink $MNT/foobar 512K 128K 256K" \
             -c "pwrite -S 0x73 384K 640K" \
             $MNT/foobar
    
      btrfs subvolume snapshot -r $MNT $MNT/snap2
      btrfs send -f /tmp/snap2.send -p $MNT/snap1 $MNT/snap2
    
      echo -e "\nFile digest in the original filesystem:"
      md5sum $MNT/snap2/foobar
    
      # Now unmount the filesystem, create a new one, mount it and try to
      # apply both send streams to recreate both snapshots.
      umount $DEV
    
      mkfs.btrfs -f $DEV >/dev/null
      mount $DEV $MNT
    
      btrfs receive -f /tmp/snap1.send $MNT
      btrfs receive -f /tmp/snap2.send $MNT
    
      # Must match what we got in the original filesystem of course.
      echo -e "\nFile digest in the new filesystem:"
      md5sum $MNT/snap2/foobar
    
      umount $MNT
    
    When running the reproducer, the incremental send operation fails due to
    an invalid clone operation:
    
      $ ./test-send-clone.sh
      wrote 131072/131072 bytes at offset 0
      128 KiB, 32 ops; 0.0015 sec (80.906 MiB/sec and 20711.9741 ops/sec)
      wrote 131072/131072 bytes at offset 131072
      128 KiB, 32 ops; 0.0013 sec (90.514 MiB/sec and 23171.6148 ops/sec)
      wrote 262144/262144 bytes at offset 262144
      256 KiB, 64 ops; 0.0025 sec (98.270 MiB/sec and 25157.2327 ops/sec)
      wrote 524288/524288 bytes at offset 524288
      512 KiB, 128 ops; 0.0052 sec (95.730 MiB/sec and 24506.9883 ops/sec)
      Create a readonly snapshot of '/mnt/sdi' in '/mnt/sdi/snap1'
      At subvol /mnt/sdi/snap1
      linked 983040/983040 bytes at offset 1048576
      960 KiB, 1 ops; 0.0006 sec (1.419 GiB/sec and 1550.3876 ops/sec)
      linked 262144/262144 bytes at offset 524288
      256 KiB, 1 ops; 0.0020 sec (120.192 MiB/sec and 480.7692 ops/sec)
      linked 262144/262144 bytes at offset 131072
      256 KiB, 1 ops; 0.0018 sec (133.833 MiB/sec and 535.3319 ops/sec)
      wrote 655360/655360 bytes at offset 393216
      640 KiB, 160 ops; 0.0093 sec (66.781 MiB/sec and 17095.8436 ops/sec)
      Create a readonly snapshot of '/mnt/sdi' in '/mnt/sdi/snap2'
      At subvol /mnt/sdi/snap2
    
      File digest in the original filesystem:
      9c13c61cb0b9f5abf45344375cb04dfa  /mnt/sdi/snap2/foobar
      At subvol snap1
      At snapshot snap2
      ERROR: failed to clone extents to foobar: Invalid argument
    
      File digest in the new filesystem:
      132f0396da8f48d2e667196bff882cfc  /mnt/sdi/snap2/foobar
    
    The clone operation is invalid because its source range starts at the
    current eof of the file in the receiver, causing the receiver to get
    an EINVAL error from the clone operation when attempting it.
    
    For the example above, what happens is the following:
    
    1) When processing the extent at file offset 1M, the algorithm checks that
       the extent is shared and can be (fully or partially) found at file
       offset 0.
    
       At this point the file has a size (and eof) of 1M at the receiver;
    
    2) It finds that our extent item at file offset 1M has a data offset of
       64K and, since the file extent item at file offset 0 has a data offset
       of 0, it issues a clone operation, from the same file and root, that
       has a source range offset of 64K, destination offset of 1M and a length
       of 64K, since the extent item at file offset 0 refers only to the first
       128K of the shared extent.
    
       After this clone operation, the file size (and eof) at the receiver is
       increased from 1M to 1088K (1M + 64K);
    
    3) Now there's still 896K (960K - 64K) of data left to clone or write, so
       it checks for the next file extent item, which starts at file offset
       128K. This file extent item has a data offset of 0 and a length of
       256K, so a clone operation with a source range offset of 256K, a
       destination offset of 1088K (1M + 64K) and length of 128K is issued.
    
       After this operation the file size (and eof) at the receiver increases
       from 1088K to 1216K (1088K + 128K);
    
    4) Now there's still 768K (896K - 128K) of data left to clone or write, so
       it checks for the next file extent item, located at file offset 384K.
       This file extent item points to a different extent, not the one we want
       to clone, with a length of 640K. So we issue a write operation into the
       file range 1216K (1088K + 128K, end of the last clone operation), with
       a length of 640K and with a data matching the one we can find for that
       range in send root.
    
       After this operation, the file size (and eof) at the receiver increases
       from 1216K to 1856K (1216K + 640K);
    
    5) Now there's still 128K (768K - 640K) of data left to clone or write, so
       we look into the file extent item, which is for file offset 1M and it
       points to the extent we want to clone, with a data offset of 64K and a
       length of 960K.
    
       However this matches the file offset we started with, the start of the
       range to clone into. So we can't for sure find any file extent item
       from here onwards with the rest of the data we want to clone, yet we
       proceed and since the file extent item points to the shared extent,
       with a data offset of 64K, we issue a clone operation with a source
       range starting at file offset 1856K, which matches the file extent
       item's offset, 1M, plus the amount of data cloned and written so far,
       which is 64K (step 2) + 128K (step 3) + 640K (step 4). This clone
       operation is invalid since the source range offset matches the current
       eof of the file in the receiver. We should have stopped looking for
       extents to clone at this point and instead fallback to write, which
       would simply the contain the data in the file range from 1856K to
       1856K + 128K.
    
    So fix this by stopping the loop that looks for file ranges to clone at
    clone_range() when we reach the current eof of the file being processed,
    if we are cloning from the same file and using the send root as the clone
    root. This ensures any data not yet cloned will be sent to the receiver
    through a write operation.
    
    A test case for fstests will follow soon.
    
    Reported-by: Massimo B. <massimo.b@gmx.net>
    Link: https://lore.kernel.org/linux-btrfs/6ae34776e85912960a253a8327068a892998e685.camel@gmx.net/
    Fixes: 11f2069c113e ("Btrfs: send, allow clone operations within the same file")
    CC: stable@vger.kernel.org # 5.5+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 018abb50891e4faf051de2ac01cb041f3904e1d1
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Dec 16 11:22:17 2020 -0500

    btrfs: don't clear ret in btrfs_start_dirty_block_groups
    
    commit 34d1eb0e599875064955a74712f08ff14c8e3d5f upstream.
    
    If we fail to update a block group item in the loop we'll break, however
    we'll do btrfs_run_delayed_refs and lose our error value in ret, and
    thus not clean up properly.  Fix this by only running the delayed refs
    if there was no failure.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14e17e90bfaaf0392d8a48744f91d81ea121fd10
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Dec 16 11:22:14 2020 -0500

    btrfs: fix lockdep splat in btrfs_recover_relocation
    
    commit fb286100974e7239af243bc2255a52f29442f9c8 upstream.
    
    While testing the error paths of relocation I hit the following lockdep
    splat:
    
      ======================================================
      WARNING: possible circular locking dependency detected
      5.10.0-rc6+ #217 Not tainted
      ------------------------------------------------------
      mount/779 is trying to acquire lock:
      ffffa0e676945418 (&fs_info->balance_mutex){+.+.}-{3:3}, at: btrfs_recover_balance+0x2f0/0x340
    
      but task is already holding lock:
      ffffa0e60ee31da8 (btrfs-root-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x27/0x100
    
      which lock already depends on the new lock.
    
      the existing dependency chain (in reverse order) is:
    
      -> #2 (btrfs-root-00){++++}-{3:3}:
             down_read_nested+0x43/0x130
             __btrfs_tree_read_lock+0x27/0x100
             btrfs_read_lock_root_node+0x31/0x40
             btrfs_search_slot+0x462/0x8f0
             btrfs_update_root+0x55/0x2b0
             btrfs_drop_snapshot+0x398/0x750
             clean_dirty_subvols+0xdf/0x120
             btrfs_recover_relocation+0x534/0x5a0
             btrfs_start_pre_rw_mount+0xcb/0x170
             open_ctree+0x151f/0x1726
             btrfs_mount_root.cold+0x12/0xea
             legacy_get_tree+0x30/0x50
             vfs_get_tree+0x28/0xc0
             vfs_kern_mount.part.0+0x71/0xb0
             btrfs_mount+0x10d/0x380
             legacy_get_tree+0x30/0x50
             vfs_get_tree+0x28/0xc0
             path_mount+0x433/0xc10
             __x64_sys_mount+0xe3/0x120
             do_syscall_64+0x33/0x40
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #1 (sb_internal#2){.+.+}-{0:0}:
             start_transaction+0x444/0x700
             insert_balance_item.isra.0+0x37/0x320
             btrfs_balance+0x354/0xf40
             btrfs_ioctl_balance+0x2cf/0x380
             __x64_sys_ioctl+0x83/0xb0
             do_syscall_64+0x33/0x40
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #0 (&fs_info->balance_mutex){+.+.}-{3:3}:
             __lock_acquire+0x1120/0x1e10
             lock_acquire+0x116/0x370
             __mutex_lock+0x7e/0x7b0
             btrfs_recover_balance+0x2f0/0x340
             open_ctree+0x1095/0x1726
             btrfs_mount_root.cold+0x12/0xea
             legacy_get_tree+0x30/0x50
             vfs_get_tree+0x28/0xc0
             vfs_kern_mount.part.0+0x71/0xb0
             btrfs_mount+0x10d/0x380
             legacy_get_tree+0x30/0x50
             vfs_get_tree+0x28/0xc0
             path_mount+0x433/0xc10
             __x64_sys_mount+0xe3/0x120
             do_syscall_64+0x33/0x40
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      other info that might help us debug this:
    
      Chain exists of:
        &fs_info->balance_mutex --> sb_internal#2 --> btrfs-root-00
    
       Possible unsafe locking scenario:
    
             CPU0                    CPU1
             ----                    ----
        lock(btrfs-root-00);
                                     lock(sb_internal#2);
                                     lock(btrfs-root-00);
        lock(&fs_info->balance_mutex);
    
       *** DEADLOCK ***
    
      2 locks held by mount/779:
       #0: ffffa0e60dc040e0 (&type->s_umount_key#47/1){+.+.}-{3:3}, at: alloc_super+0xb5/0x380
       #1: ffffa0e60ee31da8 (btrfs-root-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x27/0x100
    
      stack backtrace:
      CPU: 0 PID: 779 Comm: mount Not tainted 5.10.0-rc6+ #217
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      Call Trace:
       dump_stack+0x8b/0xb0
       check_noncircular+0xcf/0xf0
       ? trace_call_bpf+0x139/0x260
       __lock_acquire+0x1120/0x1e10
       lock_acquire+0x116/0x370
       ? btrfs_recover_balance+0x2f0/0x340
       __mutex_lock+0x7e/0x7b0
       ? btrfs_recover_balance+0x2f0/0x340
       ? btrfs_recover_balance+0x2f0/0x340
       ? rcu_read_lock_sched_held+0x3f/0x80
       ? kmem_cache_alloc_trace+0x2c4/0x2f0
       ? btrfs_get_64+0x5e/0x100
       btrfs_recover_balance+0x2f0/0x340
       open_ctree+0x1095/0x1726
       btrfs_mount_root.cold+0x12/0xea
       ? rcu_read_lock_sched_held+0x3f/0x80
       legacy_get_tree+0x30/0x50
       vfs_get_tree+0x28/0xc0
       vfs_kern_mount.part.0+0x71/0xb0
       btrfs_mount+0x10d/0x380
       ? __kmalloc_track_caller+0x2f2/0x320
       legacy_get_tree+0x30/0x50
       vfs_get_tree+0x28/0xc0
       ? capable+0x3a/0x60
       path_mount+0x433/0xc10
       __x64_sys_mount+0xe3/0x120
       do_syscall_64+0x33/0x40
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    This is straightforward to fix, simply release the path before we setup
    the balance_ctl.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5169a289fc8c860c1f29883053116cbef2123eaf
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Dec 16 11:22:11 2020 -0500

    btrfs: do not double free backref nodes on error
    
    commit 49ecc679ab48b40ca799bf94b327d5284eac9e46 upstream.
    
    Zygo reported the following KASAN splat:
    
      BUG: KASAN: use-after-free in btrfs_backref_cleanup_node+0x18a/0x420
      Read of size 8 at addr ffff888112402950 by task btrfs/28836
    
      CPU: 0 PID: 28836 Comm: btrfs Tainted: G        W         5.10.0-e35f27394290-for-next+ #23
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
      Call Trace:
       dump_stack+0xbc/0xf9
       ? btrfs_backref_cleanup_node+0x18a/0x420
       print_address_description.constprop.8+0x21/0x210
       ? record_print_text.cold.34+0x11/0x11
       ? btrfs_backref_cleanup_node+0x18a/0x420
       ? btrfs_backref_cleanup_node+0x18a/0x420
       kasan_report.cold.10+0x20/0x37
       ? btrfs_backref_cleanup_node+0x18a/0x420
       __asan_load8+0x69/0x90
       btrfs_backref_cleanup_node+0x18a/0x420
       btrfs_backref_release_cache+0x83/0x1b0
       relocate_block_group+0x394/0x780
       ? merge_reloc_roots+0x4a0/0x4a0
       btrfs_relocate_block_group+0x26e/0x4c0
       btrfs_relocate_chunk+0x52/0x120
       btrfs_balance+0xe2e/0x1900
       ? check_flags.part.50+0x6c/0x1e0
       ? btrfs_relocate_chunk+0x120/0x120
       ? kmem_cache_alloc_trace+0xa06/0xcb0
       ? _copy_from_user+0x83/0xc0
       btrfs_ioctl_balance+0x3a7/0x460
       btrfs_ioctl+0x24c8/0x4360
       ? __kasan_check_read+0x11/0x20
       ? check_chain_key+0x1f4/0x2f0
       ? __asan_loadN+0xf/0x20
       ? btrfs_ioctl_get_supported_features+0x30/0x30
       ? kvm_sched_clock_read+0x18/0x30
       ? check_chain_key+0x1f4/0x2f0
       ? lock_downgrade+0x3f0/0x3f0
       ? handle_mm_fault+0xad6/0x2150
       ? do_vfs_ioctl+0xfc/0x9d0
       ? ioctl_file_clone+0xe0/0xe0
       ? check_flags.part.50+0x6c/0x1e0
       ? check_flags.part.50+0x6c/0x1e0
       ? check_flags+0x26/0x30
       ? lock_is_held_type+0xc3/0xf0
       ? syscall_enter_from_user_mode+0x1b/0x60
       ? do_syscall_64+0x13/0x80
       ? rcu_read_lock_sched_held+0xa1/0xd0
       ? __kasan_check_read+0x11/0x20
       ? __fget_light+0xae/0x110
       __x64_sys_ioctl+0xc3/0x100
       do_syscall_64+0x37/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f4c4bdfe427
    
      Allocated by task 28836:
       kasan_save_stack+0x21/0x50
       __kasan_kmalloc.constprop.18+0xbe/0xd0
       kasan_kmalloc+0x9/0x10
       kmem_cache_alloc_trace+0x410/0xcb0
       btrfs_backref_alloc_node+0x46/0xf0
       btrfs_backref_add_tree_node+0x60d/0x11d0
       build_backref_tree+0xc5/0x700
       relocate_tree_blocks+0x2be/0xb90
       relocate_block_group+0x2eb/0x780
       btrfs_relocate_block_group+0x26e/0x4c0
       btrfs_relocate_chunk+0x52/0x120
       btrfs_balance+0xe2e/0x1900
       btrfs_ioctl_balance+0x3a7/0x460
       btrfs_ioctl+0x24c8/0x4360
       __x64_sys_ioctl+0xc3/0x100
       do_syscall_64+0x37/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      Freed by task 28836:
       kasan_save_stack+0x21/0x50
       kasan_set_track+0x20/0x30
       kasan_set_free_info+0x1f/0x30
       __kasan_slab_free+0xf3/0x140
       kasan_slab_free+0xe/0x10
       kfree+0xde/0x200
       btrfs_backref_error_cleanup+0x452/0x530
       build_backref_tree+0x1a5/0x700
       relocate_tree_blocks+0x2be/0xb90
       relocate_block_group+0x2eb/0x780
       btrfs_relocate_block_group+0x26e/0x4c0
       btrfs_relocate_chunk+0x52/0x120
       btrfs_balance+0xe2e/0x1900
       btrfs_ioctl_balance+0x3a7/0x460
       btrfs_ioctl+0x24c8/0x4360
       __x64_sys_ioctl+0xc3/0x100
       do_syscall_64+0x37/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    This occurred because we freed our backref node in
    btrfs_backref_error_cleanup(), but then tried to free it again in
    btrfs_backref_release_cache().  This is because
    btrfs_backref_release_cache() will cycle through all of the
    cache->leaves nodes and free them up.  However
    btrfs_backref_error_cleanup() freed the backref node with
    btrfs_backref_free_node(), which simply kfree()d the backref node
    without unlinking it from the cache.  Change this to a
    btrfs_backref_drop_node(), which does the appropriate cleanup and
    removes the node from the cache->leaves list, so when we go to free the
    remaining cache we don't trip over items we've already dropped.
    
    Fixes: 75bfb9aff45e ("Btrfs: cleanup error handling in build_backref_tree")
    CC: stable@vger.kernel.org # 4.4+
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e2fc8f10c9175e7f5d4bd636036ef427bb3eae9
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Dec 16 11:22:05 2020 -0500

    btrfs: don't get an EINTR during drop_snapshot for reloc
    
    commit 18d3bff411c8d46d40537483bdc0b61b33ce0371 upstream.
    
    This was partially fixed by f3e3d9cc3525 ("btrfs: avoid possible signal
    interruption of btrfs_drop_snapshot() on relocation tree"), however it
    missed a spot when we restart a trans handle because we need to end the
    transaction.  The fix is the same, simply use btrfs_join_transaction()
    instead of btrfs_start_transaction() when deleting reloc roots.
    
    Fixes: f3e3d9cc3525 ("btrfs: avoid possible signal interruption of btrfs_drop_snapshot() on relocation tree")
    CC: stable@vger.kernel.org # 5.4+
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9deb4ccd026cb6b4a8424a316b829b567bde3d7
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 15 22:57:52 2021 +0100

    ACPI: scan: Make acpi_bus_get_device() clear return pointer on error
    
    commit 78a18fec5258c8df9435399a1ea022d73d3eceb9 upstream.
    
    Set the acpi_device pointer which acpi_bus_get_device() returns-by-
    reference to NULL on errors.
    
    We've recently had 2 cases where callers of acpi_bus_get_device()
    did not properly error check the return value, so set the returned-
    by-reference acpi_device pointer to NULL, because at least some
    callers of acpi_bus_get_device() expect that to be done on errors.
    
    [ rjw: This issue was exposed by commit 71da201f38df ("ACPI: scan:
      Defer enumeration of devices with _DEP lists") which caused it to
      be much more likely to occur on some systems, but the real defect
      had been introduced by an earlier commit. ]
    
    Fixes: 40e7fcb19293 ("ACPI: Add _DEP support to fix battery issue on Asus T100TA")
    Fixes: bcfcd409d4db ("usb: split code locating ACPI companion into port and device")
    Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Diagnosed-by: Rafael J. Wysocki <rafael@kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Cc: All applicable <stable@vger.kernel.org>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5f23645ab51025d196966198cf318209fe2b290
Author: Ignat Korchagin <ignat@cloudflare.com>
Date:   Tue Jan 19 20:40:15 2021 +0000

    dm crypt: fix copy and paste bug in crypt_alloc_req_aead
    
    commit 004b8ae9e2de55ca7857ba8471209dd3179e088c upstream.
    
    In commit d68b29584c25 ("dm crypt: use GFP_ATOMIC when allocating
    crypto requests from softirq") code was incorrectly copy and pasted
    from crypt_alloc_req_skcipher()'s crypto request allocation code to
    crypt_alloc_req_aead(). It is OK from runtime perspective as both
    simple encryption request pointer and AEAD request pointer are part of
    a union, but may confuse code reviewers.
    
    Fixes: d68b29584c25 ("dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq")
    Cc: stable@vger.kernel.org # v5.9+
    Reported-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 367733db7a10c5575d0bd3bb8f6fa7d26c6ed904
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Thu Dec 31 00:33:18 2020 +0300

    crypto: xor - Fix divide error in do_xor_speed()
    
    commit 3c02e04fd4f57130e4fa75fab6f528f7a52db9b5 upstream.
    
    crypto: Fix divide error in do_xor_speed()
    
    From: Kirill Tkhai <ktkhai@virtuozzo.com>
    
    Latest (but not only latest) linux-next panics with divide
    error on my QEMU setup.
    
    The patch at the bottom of this message fixes the problem.
    
    xor: measuring software checksum speed
    divide error: 0000 [#1] PREEMPT SMP KASAN
    PREEMPT SMP KASAN
    CPU: 3 PID: 1 Comm: swapper/0 Not tainted 5.10.0-next-20201223+ #2177
    RIP: 0010:do_xor_speed+0xbb/0xf3
    Code: 41 ff cc 75 b5 bf 01 00 00 00 e8 3d 23 8b fe 65 8b 05 f6 49 83 7d 85 c0 75 05 e8
     84 70 81 fe b8 00 00 50 c3 31 d2 48 8d 7b 10 <f7> f5 41 89 c4 e8 58 07 a2 fe 44 89 63 10 48 8d 7b 08
     e8 cb 07 a2
    RSP: 0000:ffff888100137dc8 EFLAGS: 00010246
    RAX: 00000000c3500000 RBX: ffffffff823f0160 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000808 RDI: ffffffff823f0170
    RBP: 0000000000000000 R08: ffffffff8109c50f R09: ffffffff824bb6f7
    R10: fffffbfff04976de R11: 0000000000000001 R12: 0000000000000000
    R13: ffff888101997000 R14: ffff888101994000 R15: ffffffff823f0178
    FS:  0000000000000000(0000) GS:ffff8881f7780000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000000 CR3: 000000000220e000 CR4: 00000000000006a0
    Call Trace:
     calibrate_xor_blocks+0x13c/0x1c4
     ? do_xor_speed+0xf3/0xf3
     do_one_initcall+0xc1/0x1b7
     ? start_kernel+0x373/0x373
     ? unpoison_range+0x3a/0x60
     kernel_init_freeable+0x1dd/0x238
     ? rest_init+0xc6/0xc6
     kernel_init+0x8/0x10a
     ret_from_fork+0x1f/0x30
    ---[ end trace 5bd3c1d0b77772da ]---
    
    Fixes: c055e3eae0f1 ("crypto: xor - use ktime for template benchmarking")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fba2b0d2e171fec60472c23d9428da6b404810ef
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 14 08:24:53 2021 +0100

    ALSA: hda/via: Add minimum mute flag
    
    commit 67ea698c3950d10925be33c21ca49ffb64e21842 upstream.
    
    It turned out that VIA codecs also mute the sound in the lowest mixer
    level.  Turn on the dac_min_mute flag to indicate the mute-as-minimum
    in TLV like already done in Conexant and IDT codecs.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=210559
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210114072453.11379-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9984b976c65602d188d224f19c3999395617ed2
Author: Chris Chiu <chiu@endlessos.org>
Date:   Thu Jan 14 16:27:28 2021 +0800

    ALSA: hda/realtek - Limit int mic boost on Acer Aspire E5-575T
    
    commit 495dc7637cb5ca8e39c46db818328410bb6e73a1 upstream.
    
    The Acer Apire E5-575T laptop with codec ALC255 has a terrible
    background noise comes from internal mic capture. And the jack
    sensing dose not work for headset like some other Acer laptops.
    
    This patch limits the internal mic boost on top of the existing
    ALC255_FIXUP_ACER_MIC_NO_PRESENCE quirk for Acer Aspire E5-575T.
    
    Signed-off-by: Chris Chiu <chiu@endlessos.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210114082728.74729-1-chiu@endlessos.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a03241a22a07068bec77ef70ab2ceefece27d0db
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jan 15 10:34:28 2021 +0100

    ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info()
    
    commit 217bfbb8b0bfa24619b11ab75c135fec99b99b20 upstream.
    
    snd_seq_oss_synth_make_info() didn't check the error code from
    snd_seq_oss_midi_make_info(), and this leads to the call of strlcpy()
    with the uninitialized string as the source, which may lead to the
    access over the limit.
    
    Add the proper error check for avoiding the failure.
    
    Reported-by: syzbot+e42504ff21cff05a595f@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210115093428.15882-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de45a93792eaf17f047e10203e601b1cccf6364f
Author: Jiaxun Yang <jiaxun.yang@flygoat.com>
Date:   Thu Jan 7 22:44:38 2021 +0800

    platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634
    
    commit f419e5940f1d9892ea6f45acdaca572b9e73ff39 upstream.
    
    Newer ideapads (e.g.: Yoga 14s, 720S 14) come with ELAN0634 touchpad do not
    use EC to switch touchpad.
    
    Reading VPCCMD_R_TOUCHPAD will return zero thus touchpad may be blocked
    unexpectedly.
    Writing VPCCMD_W_TOUCHPAD may cause a spurious key press.
    
    Add has_touchpad_switch to workaround these machines.
    
    Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Cc: stable@vger.kernel.org # 5.4+
    --
    v2: Specify touchpad to ELAN0634
    v3: Stupid missing ! in v2
    v4: Correct acpi_dev_present usage (Hans)
    Link: https://lore.kernel.org/r/20210107144438.12605-1-jiaxun.yang@flygoat.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d33a2e557da23984ef4ea7514ee2942df4ed7f2
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date:   Wed Dec 23 17:36:44 2020 +0300

    platform/x86: i2c-multi-instantiate: Don't create platform device for INT3515 ACPI nodes
    
    commit 9bba96275576da0cf78ede62aeb2fc975ed8a32d upstream.
    
    There are several reports about the tps6598x causing
    interrupt flood on boards with the INT3515 ACPI node, which
    then causes instability. There appears to be several
    problems with the interrupt. One problem is that the
    I2CSerialBus resources do not always map to the Interrupt
    resource with the same index, but that is not the only
    problem. We have not been able to come up with a solution
    for all the issues, and because of that disabling the device
    for now.
    
    The PD controller on these platforms is autonomous, and the
    purpose for the driver is primarily to supply status to the
    userspace, so this will not affect any functionality.
    
    Reported-by: Moody Salem <moody@uniswap.org>
    Fixes: a3dd034a1707 ("ACPI / scan: Create platform device for INT3515 ACPI nodes")
    Cc: stable@vger.kernel.org
    BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1883511
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20201223143644.33341-1-heikki.krogerus@linux.intel.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c47951346c3c62bfad92ce45652b5fda0a785297
Author: Mikko Perttunen <mperttunen@nvidia.com>
Date:   Tue Jan 12 12:22:25 2021 +0200

    i2c: bpmp-tegra: Ignore unknown I2C_M flags
    
    commit bc1c2048abbe3c3074b4de91d213595c57741a6b upstream.
    
    In order to not to start returning errors when new I2C_M flags are
    added, change behavior to just ignore all flags that we don't know
    about. This includes the I2C_M_DMA_SAFE flag that already exists but
    causes -EINVAL to be returned for valid transactions.
    
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e633c0879be39a63bb8bd79879b9991329515254
Author: Mikko Perttunen <mperttunen@nvidia.com>
Date:   Mon Jan 11 18:08:32 2021 +0200

    i2c: tegra: Wait for config load atomically while in ISR
    
    commit 27b7c6e096264cc7b91bb80a4f65f8c0a66f079f upstream.
    
    Upon a communication error, the interrupt handler can call
    tegra_i2c_disable_packet_mode. This causes a sleeping poll to happen
    unless the current transaction was marked atomic. Fix this by
    making the poll happen atomically if we are in an IRQ.
    
    This matches the behavior prior to the patch mentioned
    in the Fixes tag.
    
    Fixes: ede2299f7101 ("i2c: tegra: Support atomic transfers")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48481056537e8bd5e23bd286a6d1a77f34dae88d
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Mon Jan 4 10:30:57 2021 +0100

    mtd: rawnand: nandsim: Fix the logic when selecting Hamming soft ECC engine
    
    commit 3c97be6982e689d7b2430187a11f8c78e573abdb upstream.
    
    I have been fooled by the logic picking the right ECC engine which is
    spread across two functions: *init_module() and *_attach(). I thought
    this driver was not impacted by the recent changes around the ECC
    engines DT parsing logic but in fact it is.
    
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Fixes: d7157ff49a5b ("mtd: rawnand: Use the ECC framework user input parsing bits")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20210104093057.31178-1-miquel.raynal@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deffd59b81014971a2c9ea1c407659b59c4419d2
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Mon Dec 21 11:00:13 2020 +0100

    mtd: rawnand: gpmi: fix dst bit offset when extracting raw payload
    
    commit 4883a60c17eda6bf52d1c817ee7ead65b4a02da2 upstream.
    
    Re-add the multiply by 8 to "step * eccsize" to correct the destination bit offset
    when extracting the data payload in gpmi_ecc_read_page_raw().
    
    Fixes: e5e5631cc889 ("mtd: rawnand: gpmi: Use nand_extract_bits()")
    Cc: stable@vger.kernel.org
    Reported-by: Martin Hundebøll <martin@geanix.com>
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20201221100013.2715675-1-sean@geanix.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e65d6887fc169318d2368a3ec6c55ad542ad9b13
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Wed Jan 13 11:45:08 2021 +0900

    scsi: target: tcmu: Fix use-after-free of se_cmd->priv
    
    commit 780e1384687d6ecdee9ca789a1027610484ac8a2 upstream.
    
    Commit a35129024e88 ("scsi: target: tcmu: Use priv pointer in se_cmd")
    modified tcmu_free_cmd() to set NULL to priv pointer in se_cmd. However,
    se_cmd can be already freed by work queue triggered in
    target_complete_cmd(). This caused BUG KASAN use-after-free [1].
    
    To fix the bug, do not touch priv pointer in tcmu_free_cmd(). Instead, set
    NULL to priv pointer before target_complete_cmd() calls. Also, to avoid
    unnecessary priv pointer change in tcmu_queue_cmd(), modify priv pointer in
    the function only when tcmu_free_cmd() is not called.
    
    [1]
    BUG: KASAN: use-after-free in tcmu_handle_completions+0x1172/0x1770 [target_core_user]
    Write of size 8 at addr ffff88814cf79a40 by task cmdproc-uio0/14842
    
    CPU: 2 PID: 14842 Comm: cmdproc-uio0 Not tainted 5.11.0-rc2 #1
    Hardware name: Supermicro Super Server/X10SRL-F, BIOS 3.2 11/22/2019
    Call Trace:
     dump_stack+0x9a/0xcc
     ? tcmu_handle_completions+0x1172/0x1770 [target_core_user]
     print_address_description.constprop.0+0x18/0x130
     ? tcmu_handle_completions+0x1172/0x1770 [target_core_user]
     ? tcmu_handle_completions+0x1172/0x1770 [target_core_user]
     kasan_report.cold+0x7f/0x10e
     ? tcmu_handle_completions+0x1172/0x1770 [target_core_user]
     tcmu_handle_completions+0x1172/0x1770 [target_core_user]
     ? queue_tmr_ring+0x5d0/0x5d0 [target_core_user]
     tcmu_irqcontrol+0x28/0x60 [target_core_user]
     uio_write+0x155/0x230
     ? uio_vma_fault+0x460/0x460
     ? security_file_permission+0x4f/0x440
     vfs_write+0x1ce/0x860
     ksys_write+0xe9/0x1b0
     ? __ia32_sys_read+0xb0/0xb0
     ? syscall_enter_from_user_mode+0x27/0x70
     ? trace_hardirqs_on+0x1c/0x110
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x7fcf8b61905f
    Code: 89 54 24 18 48 89 74 24 10 89 7c 24 08 e8 b9 fc ff ff 48 8b 54 24 18 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 31 44 89 c7 48 89 44 24 08 e8 0c fd ff ff 48
    RSP: 002b:00007fcf7b3e6c30 EFLAGS: 00000293 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fcf8b61905f
    RDX: 0000000000000004 RSI: 00007fcf7b3e6c78 RDI: 000000000000000c
    RBP: 00007fcf7b3e6c80 R08: 0000000000000000 R09: 00007fcf7b3e6aa8
    R10: 000000000b01c000 R11: 0000000000000293 R12: 00007ffe0c32a52e
    R13: 00007ffe0c32a52f R14: 0000000000000000 R15: 00007fcf7b3e7640
    
    Allocated by task 383:
     kasan_save_stack+0x1b/0x40
     ____kasan_kmalloc.constprop.0+0x84/0xa0
     kmem_cache_alloc+0x142/0x330
     tcm_loop_queuecommand+0x2a/0x4e0 [tcm_loop]
     scsi_queue_rq+0x12ec/0x2d20
     blk_mq_dispatch_rq_list+0x30a/0x1db0
     __blk_mq_do_dispatch_sched+0x326/0x830
     __blk_mq_sched_dispatch_requests+0x2c8/0x3f0
     blk_mq_sched_dispatch_requests+0xca/0x120
     __blk_mq_run_hw_queue+0x93/0xe0
     process_one_work+0x7b6/0x1290
     worker_thread+0x590/0xf80
     kthread+0x362/0x430
     ret_from_fork+0x22/0x30
    
    Freed by task 11655:
     kasan_save_stack+0x1b/0x40
     kasan_set_track+0x1c/0x30
     kasan_set_free_info+0x20/0x30
     ____kasan_slab_free+0xec/0x120
     slab_free_freelist_hook+0x53/0x160
     kmem_cache_free+0xf4/0x5c0
     target_release_cmd_kref+0x3ea/0x9e0 [target_core_mod]
     transport_generic_free_cmd+0x28b/0x2f0 [target_core_mod]
     target_complete_ok_work+0x250/0xac0 [target_core_mod]
     process_one_work+0x7b6/0x1290
     worker_thread+0x590/0xf80
     kthread+0x362/0x430
     ret_from_fork+0x22/0x30
    
    Last potentially related work creation:
     kasan_save_stack+0x1b/0x40
     kasan_record_aux_stack+0xa3/0xb0
     insert_work+0x48/0x2e0
     __queue_work+0x4e8/0xdf0
     queue_work_on+0x78/0x80
     tcmu_handle_completions+0xad0/0x1770 [target_core_user]
     tcmu_irqcontrol+0x28/0x60 [target_core_user]
     uio_write+0x155/0x230
     vfs_write+0x1ce/0x860
     ksys_write+0xe9/0x1b0
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Second to last potentially related work creation:
     kasan_save_stack+0x1b/0x40
     kasan_record_aux_stack+0xa3/0xb0
     insert_work+0x48/0x2e0
     __queue_work+0x4e8/0xdf0
     queue_work_on+0x78/0x80
     tcm_loop_queuecommand+0x1c3/0x4e0 [tcm_loop]
     scsi_queue_rq+0x12ec/0x2d20
     blk_mq_dispatch_rq_list+0x30a/0x1db0
     __blk_mq_do_dispatch_sched+0x326/0x830
     __blk_mq_sched_dispatch_requests+0x2c8/0x3f0
     blk_mq_sched_dispatch_requests+0xca/0x120
     __blk_mq_run_hw_queue+0x93/0xe0
     process_one_work+0x7b6/0x1290
     worker_thread+0x590/0xf80
     kthread+0x362/0x430
     ret_from_fork+0x22/0x30
    
    The buggy address belongs to the object at ffff88814cf79800 which belongs
    to the cache tcm_loop_cmd_cache of size 896.
    
    Link: https://lore.kernel.org/r/20210113024508.1264992-1-shinichiro.kawasaki@wdc.com
    Fixes: a35129024e88 ("scsi: target: tcmu: Use priv pointer in se_cmd")
    Cc: stable@vger.kernel.org # v5.9+
    Acked-by: Bodo Stroesser <bostroesser@gmail.com>
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>