commit a083db76118d20d070794ecf79af17843406c3f6
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Feb 28 16:39:01 2020 +0100

    Linux 4.19.107

commit cfc30449bbc50ba0532d4714fb0dada1758d612a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Feb 28 12:40:03 2020 +0100

    Revert "char/random: silence a lockdep splat with printk()"
    
    This reverts commit 15341b1dd409749fa5625e4b632013b6ba81609b which is
    commit 1b710b1b10eff9d46666064ea25f079f70bc67a8 upstream.
    
    Lech writes:
            After upgrading kernel on our boards from v4.19.105 to v4.19.106
            we found out that syslog fails to read the messages after ones
            read initially after opening /proc/kmsg just after booting.
    
            I also found out, that output of 'dmesg --follow' also doesn't
            react on new printks appearing for whatever reason - to read new
            messages, reopening /proc/kmsg or /dev/kmsg was needed.
    
            I bisected this down to commit
            15341b1dd409749fa5625e4b632013b6ba81609b ("char/random: silence
            a lockdep splat with printk()"), and reverting it on top of
            v4.19.106 restored correct behaviour.
    
    While people dig to find out how such an odd change causes a lockup,
    let's just revert this for now as it's not all that big of a deal for
    4.19.y.
    
    Reported-by: Lech Perczak <l.perczak@camlintechnologies.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Theodore Ts'o <tytso@mit.edu>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: John Ogness <john.ogness@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8541452acba5d39c34f81fa7ab1aaca5bc3e4f74
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Thu Feb 13 23:42:07 2020 -0700

    s390/mm: Explicitly compare PAGE_DEFAULT_KEY against zero in storage_key_init_range
    
    commit 380324734956c64cd060e1db4304f3117ac15809 upstream.
    
    Clang warns:
    
     In file included from ../arch/s390/purgatory/purgatory.c:10:
     In file included from ../include/linux/kexec.h:18:
     In file included from ../include/linux/crash_core.h:6:
     In file included from ../include/linux/elfcore.h:5:
     In file included from ../include/linux/user.h:1:
     In file included from ../arch/s390/include/asm/user.h:11:
     ../arch/s390/include/asm/page.h:45:6: warning: converting the result of
     '<<' to a boolean always evaluates to false
     [-Wtautological-constant-compare]
             if (PAGE_DEFAULT_KEY)
                ^
     ../arch/s390/include/asm/page.h:23:44: note: expanded from macro
     'PAGE_DEFAULT_KEY'
     #define PAGE_DEFAULT_KEY        (PAGE_DEFAULT_ACC << 4)
                                                      ^
     1 warning generated.
    
    Explicitly compare this against zero to silence the warning as it is
    intended to be used in a boolean context.
    
    Fixes: de3fa841e429 ("s390/mm: fix compile for PAGE_DEFAULT_KEY != 0")
    Link: https://github.com/ClangBuiltLinux/linux/issues/860
    Link: https://lkml.kernel.org/r/20200214064207.10381-1-natechancellor@gmail.com
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fee87e931cc58435463975730a892d83af21d98c
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Feb 19 18:30:26 2020 +0100

    xen: Enable interrupts when calling _cond_resched()
    
    commit 8645e56a4ad6dcbf504872db7f14a2f67db88ef2 upstream.
    
    xen_maybe_preempt_hcall() is called from the exception entry point
    xen_do_hypervisor_callback with interrupts disabled.
    
    _cond_resched() evades the might_sleep() check in cond_resched() which
    would have caught that and schedule_debug() unfortunately lacks a check
    for irqs_disabled().
    
    Enable interrupts around the call and use cond_resched() to catch future
    issues.
    
    Fixes: fdfd811ddde3 ("x86/xen: allow privcmd hypercalls to be preempted")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/878skypjrh.fsf@nanos.tec.linutronix.de
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28a73a946a46397b3f2946dbd718ba4c0d6decab
Author: Prabhakar Kushwaha <pkushwaha@marvell.com>
Date:   Sat Jan 25 03:37:29 2020 +0000

    ata: ahci: Add shutdown to freeze hardware resources of ahci
    
    commit 10a663a1b15134a5a714aa515e11425a44d4fdf7 upstream.
    
    device_shutdown() called from reboot or power_shutdown expect
    all devices to be shutdown. Same is true for even ahci pci driver.
    As no ahci shutdown function is implemented, the ata subsystem
    always remains alive with DMA & interrupt support. File system
    related calls should not be honored after device_shutdown().
    
    So defining ahci pci driver shutdown to freeze hardware (mask
    interrupt, stop DMA engine and free DMA resources).
    
    Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43cac315bec132e962e04c31fe888caac257ec0a
Author: David Howells <dhowells@redhat.com>
Date:   Thu Feb 6 13:57:40 2020 +0000

    rxrpc: Fix call RCU cleanup using non-bh-safe locks
    
    commit 963485d436ccc2810177a7b08af22336ec2af67b upstream.
    
    rxrpc_rcu_destroy_call(), which is called as an RCU callback to clean up a
    put call, calls rxrpc_put_connection() which, deep in its bowels, takes a
    number of spinlocks in a non-BH-safe way, including rxrpc_conn_id_lock and
    local->client_conns_lock.  RCU callbacks, however, are normally called from
    softirq context, which can cause lockdep to notice the locking
    inconsistency.
    
    To get lockdep to detect this, it's necessary to have the connection
    cleaned up on the put at the end of the last of its calls, though normally
    the clean up is deferred.  This can be induced, however, by starting a call
    on an AF_RXRPC socket and then closing the socket without reading the
    reply.
    
    Fix this by having rxrpc_rcu_destroy_call() punt the destruction to a
    workqueue if in softirq-mode and defer the destruction to process context.
    
    Note that another way to fix this could be to add a bunch of bh-disable
    annotations to the spinlocks concerned - and there might be more than just
    those two - but that means spending more time with BHs disabled.
    
    Note also that some of these places were covered by bh-disable spinlocks
    belonging to the rxrpc_transport object, but these got removed without the
    _bh annotation being retained on the next lock in.
    
    Fixes: 999b69f89241 ("rxrpc: Kill the client connection bundle concept")
    Reported-by: syzbot+d82f3ac8d87e7ccbb2c9@syzkaller.appspotmail.com
    Reported-by: syzbot+3f1fd6b8cbf8702d134e@syzkaller.appspotmail.com
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Hillf Danton <hdanton@sina.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acbc5071f073bc368d7d4f63902adf536cf37772
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sun Feb 2 20:30:53 2020 -0800

    netfilter: xt_hashlimit: limit the max size of hashtable
    
    commit 8d0015a7ab76b8b1e89a3e5f5710a6e5103f2dd5 upstream.
    
    The user-specified hashtable size is unbound, this could
    easily lead to an OOM or a hung task as we hold the global
    mutex while allocating and initializing the new hashtable.
    
    Add a max value to cap both cfg->size and cfg->max, as
    suggested by Florian.
    
    Reported-and-tested-by: syzbot+adf6c6c2be1c3a718121@syzkaller.appspotmail.com
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a2972600a2f845d860f2a4c51b979c608cb1e9b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Feb 14 12:13:15 2020 +0100

    ALSA: seq: Fix concurrent access to queue current tick/time
    
    commit dc7497795e014d84699c3b8809ed6df35352dd74 upstream.
    
    snd_seq_check_queue() passes the current tick and time of the given
    queue as a pointer to snd_seq_prioq_cell_out(), but those might be
    updated concurrently by the seq timer update.
    
    Fix it by retrieving the current tick and time via the proper helper
    functions at first, and pass those values to snd_seq_prioq_cell_out()
    later in the loops.
    
    snd_seq_timer_get_cur_time() takes a new argument and adjusts with the
    current system time only when it's requested so; this update isn't
    needed for snd_seq_check_queue(), as it's called either from the
    interrupt handler or right after queuing.
    
    Also, snd_seq_timer_get_cur_tick() is changed to read the value in the
    spinlock for the concurrency, too.
    
    Reported-by: syzbot+fd5e0eaa1a32999173b2@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20200214111316.26939-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b105447809b10b61108962724c2ab4c9734e3a41
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Feb 14 12:13:14 2020 +0100

    ALSA: seq: Avoid concurrent access to queue flags
    
    commit bb51e669fa49feb5904f452b2991b240ef31bc97 upstream.
    
    The queue flags are represented in bit fields and the concurrent
    access may result in unexpected results.  Although the current code
    should be mostly OK as it's only reading a field while writing other
    fields as KCSAN reported, it's safer to cover both with a proper
    spinlock protection.
    
    This patch fixes the possible concurrent read by protecting with
    q->owner_lock.  Also the queue owner field is protected as well since
    it's the field to be protected by the lock itself.
    
    Reported-by: syzbot+65c6c92d04304d0a8efc@syzkaller.appspotmail.com
    Reported-by: syzbot+e60ddfa48717579799dd@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20200214111316.26939-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63495d1e1c7c4c6333359ce831ab865859c2d87d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Feb 14 12:13:16 2020 +0100

    ALSA: rawmidi: Avoid bit fields for state flags
    
    commit dfa9a5efe8b932a84b3b319250aa3ac60c20f876 upstream.
    
    The rawmidi state flags (opened, append, active_sensing) are stored in
    bit fields that can be potentially racy when concurrently accessed
    without any locks.  Although the current code should be fine, there is
    also no any real benefit by keeping the bitfields for this kind of
    short number of members.
    
    This patch changes those bit fields flags to the simple bool fields.
    There should be no size increase of the snd_rawmidi_substream by this
    change.
    
    Reported-by: syzbot+576cc007eb9f2c968200@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20200214111316.26939-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf3043d27755a8cb53cb99e4f04139a5279761e0
Author: Johannes Krude <johannes@krude.de>
Date:   Wed Feb 12 20:32:27 2020 +0100

    bpf, offload: Replace bitwise AND by logical AND in bpf_prog_offload_info_fill
    
    commit e20d3a055a457a10a4c748ce5b7c2ed3173a1324 upstream.
    
    This if guards whether user-space wants a copy of the offload-jited
    bytecode and whether this bytecode exists. By erroneously doing a bitwise
    AND instead of a logical AND on user- and kernel-space buffer-size can lead
    to no data being copied to user-space especially when user-space size is a
    power of two and bigger then the kernel-space buffer.
    
    Fixes: fcfb126defda ("bpf: add new jited info fields in bpf_dev_offload and bpf_prog_info")
    Signed-off-by: Johannes Krude <johannes@krude.de>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Jakub Kicinski <kuba@kernel.org>
    Link: https://lore.kernel.org/bpf/20200212193227.GA3769@phlox.h.transitiv.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3132696dd748f44b60f940e78c8d10203e33117a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Feb 12 12:19:41 2020 +0100

    genirq/proc: Reject invalid affinity masks (again)
    
    commit cba6437a1854fde5934098ec3bd0ee83af3129f5 upstream.
    
    Qian Cai reported that the WARN_ON() in the x86/msi affinity setting code,
    which catches cases where the affinity setting is not done on the CPU which
    is the current target of the interrupt, triggers during CPU hotplug stress
    testing.
    
    It turns out that the warning which was added with the commit addressing
    the MSI affinity race unearthed yet another long standing bug.
    
    If user space writes a bogus affinity mask, i.e. it contains no online CPUs,
    then it calls irq_select_affinity_usr(). This was introduced for ALPHA in
    
      eee45269b0f5 ("[PATCH] Alpha: convert to generic irq framework (generic part)")
    
    and subsequently made available for all architectures in
    
      18404756765c ("genirq: Expose default irq affinity mask (take 3)")
    
    which introduced the circumvention of the affinity setting restrictions for
    interrupt which cannot be moved in process context.
    
    The whole exercise is bogus in various aspects:
    
      1) If the interrupt is already started up then there is absolutely
         no point to honour a bogus interrupt affinity setting from user
         space. The interrupt is already assigned to an online CPU and it
         does not make any sense to reassign it to some other randomly
         chosen online CPU.
    
      2) If the interupt is not yet started up then there is no point
         either. A subsequent startup of the interrupt will invoke
         irq_setup_affinity() anyway which will chose a valid target CPU.
    
    So the only correct solution is to just return -EINVAL in case user space
    wrote an affinity mask which does not contain any online CPUs, except for
    ALPHA which has it's own magic sauce for this.
    
    Fixes: 18404756765c ("genirq: Expose default irq affinity mask (take 3)")
    Reported-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Qian Cai <cai@lca.pw>
    Link: https://lkml.kernel.org/r/878sl8xdbm.fsf@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba2c07dfa0d87c226e28bfa4b9b5b9e570fe13b3
Author: Joerg Roedel <jroedel@suse.de>
Date:   Mon Feb 10 10:36:56 2020 +0100

    iommu/vt-d: Fix compile warning from intel-svm.h
    
    commit e7598fac323aad0e502415edeffd567315994dd6 upstream.
    
    The intel_svm_is_pasid_valid() needs to be marked inline, otherwise it
    causes the compile warning below:
    
      CC [M]  drivers/dma/idxd/cdev.o
    In file included from drivers/dma/idxd/cdev.c:9:0:
    ./include/linux/intel-svm.h:125:12: warning: ‘intel_svm_is_pasid_valid’ defined but not used [-Wunused-function]
     static int intel_svm_is_pasid_valid(struct device *dev, int pasid)
                ^~~~~~~~~~~~~~~~~~~~~~~~
    
    Reported-by: Borislav Petkov <bp@alien8.de>
    Fixes: 15060aba71711 ('iommu/vt-d: Helper function to query if a pasid has any active users')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0965be4b28b8078202bd174d2cf2beb1b91fe46
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Fri Feb 14 12:21:01 2020 -0600

    ecryptfs: replace BUG_ON with error handling code
    
    commit 2c2a7552dd6465e8fde6bc9cccf8d66ed1c1eb72 upstream.
    
    In crypt_scatterlist, if the crypt_stat argument is not set up
    correctly, the kernel crashes. Instead, by returning an error code
    upstream, the error is handled safely.
    
    The issue is detected via a static analysis tool written by us.
    
    Fixes: 237fead619984 (ecryptfs: fs/Makefile and fs/Kconfig)
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: Tyler Hicks <code@tyhicks.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bae8f424c84a9cfa3651afe2a9d2efdc8c1cc4b
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Feb 5 15:32:17 2020 +0300

    staging: greybus: use after free in gb_audio_manager_remove_all()
    
    commit b7db58105b80fa9232719c8329b995b3addfab55 upstream.
    
    When we call kobject_put() and it's the last reference to the kobject
    then it calls gb_audio_module_release() and frees module.  We dereference
    "module" on the next line which is a use after free.
    
    Fixes: c77f85bbc91a ("greybus: audio: Fix incorrect counting of 'ida'")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Reviewed-by: Vaibhav Agarwal <vaibhav.sr@gmail.com>
    Link: https://lore.kernel.org/r/20200205123217.jreendkyxulqsool@kili.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 568991c9184951a91ddcd7b1fd624e065ca583a3
Author: Colin Ian King <colin.king@canonical.com>
Date:   Sun Jan 26 22:05:49 2020 +0000

    staging: rtl8723bs: fix copy of overlapping memory
    
    commit 8ae9a588ca35eb9c32dc03299c5e1f4a1e9a9617 upstream.
    
    Currently the rtw_sprintf prints the contents of thread_name
    onto thread_name and this can lead to a potential copy of a
    string over itself. Avoid this by printing the literal string RTWHALXT
    instread of the contents of thread_name.
    
    Addresses-Coverity: ("copy of overlapping memory")
    Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20200126220549.9849-1-colin.king@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8e6a3412dc690765fcec4e0441892f3aeb88b9e
Author: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Date:   Tue Jan 21 14:24:04 2020 +0400

    usb: dwc2: Fix in ISOC request length checking
    
    commit 860ef6cd3f90b84a1832f8a6485c90c34d3b588b upstream.
    
    Moved ISOC request length checking from dwc2_hsotg_start_req() function to
    dwc2_hsotg_ep_queue().
    
    Fixes: 4fca54aa58293 ("usb: gadget: s3c-hsotg: add multi count support")
    Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de8dbb7b02faf959196232b0d28dec2d3c8dfccf
Author: Jack Pham <jackp@codeaurora.org>
Date:   Thu Jan 30 19:10:35 2020 -0800

    usb: gadget: composite: Fix bMaxPower for SuperSpeedPlus
    
    commit c724417baf162bd3e035659e22cdf990cfb0d917 upstream.
    
    SuperSpeedPlus peripherals must report their bMaxPower of the
    configuration descriptor in units of 8mA as per the USB 3.2
    specification. The current switch statement in encode_bMaxPower()
    only checks for USB_SPEED_SUPER but not USB_SPEED_SUPER_PLUS so
    the latter falls back to USB 2.0 encoding which uses 2mA units.
    Replace the switch with a simple if/else.
    
    Fixes: eae5820b852f ("usb: gadget: composite: Write SuperSpeedPlus config descriptors")
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cad1a6497ecb07c87c6199a41e9316183eb4898
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Wed Feb 12 21:09:00 2020 -0800

    scsi: Revert "target: iscsi: Wait for all commands to finish before freeing a session"
    
    commit 807b9515b7d044cf77df31f1af9d842a76ecd5cb upstream.
    
    Since commit e9d3009cb936 introduced a regression and since the fix for
    that regression was not perfect, revert this commit.
    
    Link: https://marc.info/?l=target-devel&m=158157054906195
    Cc: Rahul Kundu <rahul.kundu@chelsio.com>
    Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Reported-by: Dakshaja Uppalapati <dakshaja@chelsio.com>
    Fixes: e9d3009cb936 ("scsi: target: iscsi: Wait for all commands to finish before freeing a session")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c66b2b57121184cfdd870f635d5a23111de4cce3
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Wed Feb 12 21:08:59 2020 -0800

    scsi: Revert "RDMA/isert: Fix a recently introduced regression related to logout"
    
    commit 76261ada16dcc3be610396a46d35acc3efbda682 upstream.
    
    Since commit 04060db41178 introduces soft lockups when toggling network
    interfaces, revert it.
    
    Link: https://marc.info/?l=target-devel&m=158157054906196
    Cc: Rahul Kundu <rahul.kundu@chelsio.com>
    Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Reported-by: Dakshaja Uppalapati <dakshaja@chelsio.com>
    Fixes: 04060db41178 ("scsi: RDMA/isert: Fix a recently introduced regression related to logout")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b046c6fec04e88c33e65500678fcaf700ccc5a40
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Feb 27 10:45:54 2020 +0100

    Revert "dmaengine: imx-sdma: Fix memory leak"
    
    This reverts commit af8eca600b408a0e59d2848dfcfad60413f626a9 which is
    commit 02939cd167095f16328a1bd5cab5a90b550606df upstream.
    
    Andreas writes:
            This patch breaks our imx6 board with the attached trace.
            Reverting the patch makes it boot again.
    
    Reported-by: Andreas Tobler <andreas.tobler@onway.ch>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Robin Gong <yibin.gong@nxp.com>
    Cc: Vinod Koul <vkoul@kernel.org>
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd26d53a27d604bc25636abf90e6fef52604c9fc
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Feb 13 12:29:50 2020 +0000

    Btrfs: fix btrfs_wait_ordered_range() so that it waits for all ordered extents
    
    commit e75fd33b3f744f644061a4f9662bd63f5434f806 upstream.
    
    In btrfs_wait_ordered_range() once we find an ordered extent that has
    finished with an error we exit the loop and don't wait for any other
    ordered extents that might be still in progress.
    
    All the users of btrfs_wait_ordered_range() expect that there are no more
    ordered extents in progress after that function returns. So past fixes
    such like the ones from the two following commits:
    
      ff612ba7849964 ("btrfs: fix panic during relocation after ENOSPC before
                       writeback happens")
    
      28aeeac1dd3080 ("Btrfs: fix panic when starting bg cache writeout after
                       IO error")
    
    don't work when there are multiple ordered extents in the range.
    
    Fix that by making btrfs_wait_ordered_range() wait for all ordered extents
    even after it finds one that had an error.
    
    Link: https://github.com/kdave/btrfs-progs/issues/228#issuecomment-569777554
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    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 4d886f91ca13f4f3aa8b73773b7acc5247755b65
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Thu Feb 13 10:47:29 2020 -0500

    btrfs: do not check delayed items are empty for single transaction cleanup
    
    commit 1e90315149f3fe148e114a5de86f0196d1c21fa5 upstream.
    
    btrfs_assert_delayed_root_empty() will check if the delayed root is
    completely empty, but this is a filesystem-wide check.  On cleanup we
    may have allowed other transactions to begin, for whatever reason, and
    thus the delayed root is not empty.
    
    So remove this check from cleanup_one_transation().  This however can
    stay in btrfs_cleanup_transaction(), because it checks only after all of
    the transactions have been properly cleaned up, and thus is valid.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Qu Wenruo <wqu@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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68b7db197bf8bbe33f377f034236b0149909f7eb
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Thu Feb 13 10:47:28 2020 -0500

    btrfs: reset fs_root to NULL on error in open_ctree
    
    commit 315bf8ef914f31d51d084af950703aa1e09a728c upstream.
    
    While running my error injection script I hit a panic when we tried to
    clean up the fs_root when freeing the fs_root.  This is because
    fs_info->fs_root == PTR_ERR(-EIO), which isn't great.  Fix this by
    setting fs_info->fs_root = NULL; if we fail to read the root.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Qu Wenruo <wqu@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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ba8e5f347b275d2eb1e4b041b00ca1d2d79ae17
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Thu Feb 13 10:47:31 2020 -0500

    btrfs: fix bytes_may_use underflow in prealloc error condtition
    
    commit b778cf962d71a0e737923d55d0432f3bd287258e upstream.
    
    I hit the following warning while running my error injection stress
    testing:
    
      WARNING: CPU: 3 PID: 1453 at fs/btrfs/space-info.h:108 btrfs_free_reserved_data_space_noquota+0xfd/0x160 [btrfs]
      RIP: 0010:btrfs_free_reserved_data_space_noquota+0xfd/0x160 [btrfs]
      Call Trace:
      btrfs_free_reserved_data_space+0x4f/0x70 [btrfs]
      __btrfs_prealloc_file_range+0x378/0x470 [btrfs]
      elfcorehdr_read+0x40/0x40
      ? elfcorehdr_read+0x40/0x40
      ? btrfs_commit_transaction+0xca/0xa50 [btrfs]
      ? dput+0xb4/0x2a0
      ? btrfs_log_dentry_safe+0x55/0x70 [btrfs]
      ? btrfs_sync_file+0x30e/0x420 [btrfs]
      ? do_fsync+0x38/0x70
      ? __x64_sys_fdatasync+0x13/0x20
      ? do_syscall_64+0x5b/0x1b0
      ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    This happens if we fail to insert our reserved file extent.  At this
    point we've already converted our reservation from ->bytes_may_use to
    ->bytes_reserved.  However once we break we will attempt to free
    everything from [cur_offset, end] from ->bytes_may_use, but our extent
    reservation will overlap part of this.
    
    Fix this problem by adding ins.offset (our extent allocation size) to
    cur_offset so we remove the actual remaining part from ->bytes_may_use.
    
    I validated this fix using my inject-error.py script
    
    python inject-error.py -o should_fail_bio -t cache_save_setup -t \
            __btrfs_prealloc_file_range \
            -t insert_reserved_file_extent.constprop.0 \
            -r "-5" ./run-fsstress.sh
    
    where run-fsstress.sh simply mounts and runs fsstress on a disk.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Qu Wenruo <wqu@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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e541982a6e5f5933ec2108f6a41feeb711e8ec82
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Fri Feb 21 22:04:46 2020 +0800

    KVM: apic: avoid calculating pending eoi from an uninitialized val
    
    commit 23520b2def95205f132e167cf5b25c609975e959 upstream.
    
    When pv_eoi_get_user() fails, 'val' may remain uninitialized and the return
    value of pv_eoi_get_pending() becomes random. Fix the issue by initializing
    the variable.
    
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 267eec2d216d5eb646538d51455cfa90fec100d2
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Thu Feb 20 18:22:05 2020 +0100

    KVM: nVMX: handle nested posted interrupts when apicv is disabled for L1
    
    commit 91a5f413af596ad01097e59bf487eb07cb3f1331 upstream.
    
    Even when APICv is disabled for L1 it can (and, actually, is) still
    available for L2, this means we need to always call
    vmx_deliver_nested_posted_interrupt() when attempting an interrupt
    delivery.
    
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85dd0eb771e8cef7839dbd4cb61acde0b86ecd9e
Author: Oliver Upton <oupton@google.com>
Date:   Tue Feb 4 15:26:31 2020 -0800

    KVM: nVMX: Check IO instruction VM-exit conditions
    
    commit 35a571346a94fb93b5b3b6a599675ef3384bc75c upstream.
    
    Consult the 'unconditional IO exiting' and 'use IO bitmaps' VM-execution
    controls when checking instruction interception. If the 'use IO bitmaps'
    VM-execution control is 1, check the instruction access against the IO
    bitmaps to determine if the instruction causes a VM-exit.
    
    Signed-off-by: Oliver Upton <oupton@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5c0857bd5ccf34d93b5b1ea858ab3d81a685b08
Author: Oliver Upton <oupton@google.com>
Date:   Tue Feb 4 15:26:30 2020 -0800

    KVM: nVMX: Refactor IO bitmap checks into helper function
    
    commit e71237d3ff1abf9f3388337cfebf53b96df2020d upstream.
    
    Checks against the IO bitmap are useful for both instruction emulation
    and VM-exit reflection. Refactor the IO bitmap checks into a helper
    function.
    
    Signed-off-by: Oliver Upton <oupton@google.com>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cf20fb73e73a4c4df0328b5297842c5ef34fdd9
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Feb 19 10:30:47 2020 -0800

    ext4: fix race between writepages and enabling EXT4_EXTENTS_FL
    
    commit cb85f4d23f794e24127f3e562cb3b54b0803f456 upstream.
    
    If EXT4_EXTENTS_FL is set on an inode while ext4_writepages() is running
    on it, the following warning in ext4_add_complete_io() can be hit:
    
    WARNING: CPU: 1 PID: 0 at fs/ext4/page-io.c:234 ext4_put_io_end_defer+0xf0/0x120
    
    Here's a minimal reproducer (not 100% reliable) (root isn't required):
    
            while true; do
                    sync
            done &
            while true; do
                    rm -f file
                    touch file
                    chattr -e file
                    echo X >> file
                    chattr +e file
            done
    
    The problem is that in ext4_writepages(), ext4_should_dioread_nolock()
    (which only returns true on extent-based files) is checked once to set
    the number of reserved journal credits, and also again later to select
    the flags for ext4_map_blocks() and copy the reserved journal handle to
    ext4_io_end::handle.  But if EXT4_EXTENTS_FL is being concurrently set,
    the first check can see dioread_nolock disabled while the later one can
    see it enabled, causing the reserved handle to unexpectedly be NULL.
    
    Since changing EXT4_EXTENTS_FL is uncommon, and there may be other races
    related to doing so as well, fix this by synchronizing changing
    EXT4_EXTENTS_FL with ext4_writepages() via the existing
    s_writepages_rwsem (previously called s_journal_flag_rwsem).
    
    This was originally reported by syzbot without a reproducer at
    https://syzkaller.appspot.com/bug?extid=2202a584a00fffd19fbf,
    but now that dioread_nolock is the default I also started seeing this
    when running syzkaller locally.
    
    Link: https://lore.kernel.org/r/20200219183047.47417-3-ebiggers@kernel.org
    Reported-by: syzbot+2202a584a00fffd19fbf@syzkaller.appspotmail.com
    Fixes: 6b523df4fb5a ("ext4: use transaction reservation for extent conversion in ext4_end_io")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48fdbe2a818d52ac3468f0f54e4af2190e97b1c8
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Feb 19 10:30:46 2020 -0800

    ext4: rename s_journal_flag_rwsem to s_writepages_rwsem
    
    commit bbd55937de8f2754adc5792b0f8e5ff7d9c0420e upstream.
    
    In preparation for making s_journal_flag_rwsem synchronize
    ext4_writepages() with changes to both the EXTENTS and JOURNAL_DATA
    flags (rather than just JOURNAL_DATA as it does currently), rename it to
    s_writepages_rwsem.
    
    Link: https://lore.kernel.org/r/20200219183047.47417-2-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7dc081c24db59f21623964aa784fb7b03388f2e
Author: Jan Kara <jack@suse.cz>
Date:   Fri Feb 21 11:08:35 2020 +0100

    ext4: fix mount failure with quota configured as module
    
    commit 9db176bceb5c5df4990486709da386edadc6bd1d upstream.
    
    When CONFIG_QFMT_V2 is configured as a module, the test in
    ext4_feature_set_ok() fails and so mount of filesystems with quota or
    project features fails. Fix the test to use IS_ENABLED macro which
    works properly even for modules.
    
    Link: https://lore.kernel.org/r/20200221100835.9332-1-jack@suse.cz
    Fixes: d65d87a07476 ("ext4: improve explanation of a mount failure caused by a misconfigured kernel")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50017cec3dbbdfe85bb7bd5a2e3dbcdbc49e6e1a
Author: Suraj Jitindar Singh <surajjs@amazon.com>
Date:   Tue Feb 18 19:08:51 2020 -0800

    ext4: fix potential race between s_flex_groups online resizing and access
    
    commit 7c990728b99ed6fbe9c75fc202fce1172d9916da upstream.
    
    During an online resize an array of s_flex_groups structures gets replaced
    so it can get enlarged. If there is a concurrent access to the array and
    this memory has been reused then this can lead to an invalid memory access.
    
    The s_flex_group array has been converted into an array of pointers rather
    than an array of structures. This is to ensure that the information
    contained in the structures cannot get out of sync during a resize due to
    an accessor updating the value in the old structure after it has been
    copied but before the array pointer is updated. Since the structures them-
    selves are no longer copied but only the pointers to them this case is
    mitigated.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206443
    Link: https://lore.kernel.org/r/20200221053458.730016-4-tytso@mit.edu
    Signed-off-by: Suraj Jitindar Singh <surajjs@amazon.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7720966a68c8ddbedb99e17be75fbda1431034f8
Author: Suraj Jitindar Singh <surajjs@amazon.com>
Date:   Tue Feb 18 19:08:50 2020 -0800

    ext4: fix potential race between s_group_info online resizing and access
    
    commit df3da4ea5a0fc5d115c90d5aa6caa4dd433750a7 upstream.
    
    During an online resize an array of pointers to s_group_info gets replaced
    so it can get enlarged. If there is a concurrent access to the array in
    ext4_get_group_info() and this memory has been reused then this can lead to
    an invalid memory access.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206443
    Link: https://lore.kernel.org/r/20200221053458.730016-3-tytso@mit.edu
    Signed-off-by: Suraj Jitindar Singh <surajjs@amazon.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Balbir Singh <sblbir@amazon.com>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc9948abe47b01cd32db81829b26007a4414be9f
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sat Feb 15 16:40:37 2020 -0500

    ext4: fix potential race between online resizing and write operations
    
    commit 1d0c3924a92e69bfa91163bda83c12a994b4d106 upstream.
    
    During an online resize an array of pointers to buffer heads gets
    replaced so it can get enlarged.  If there is a racing block
    allocation or deallocation which uses the old array, and the old array
    has gotten reused this can lead to a GPF or some other random kernel
    memory getting modified.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206443
    Link: https://lore.kernel.org/r/20200221053458.730016-2-tytso@mit.edu
    Reported-by: Suraj Jitindar Singh <surajjs@amazon.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38884609b8b5282397f5f354ad2b098a13f57145
Author: Shijie Luo <luoshijie1@huawei.com>
Date:   Sat Feb 15 03:02:06 2020 -0500

    ext4: add cond_resched() to __ext4_find_entry()
    
    commit 9424ef56e13a1f14c57ea161eed3ecfdc7b2770e upstream.
    
    We tested a soft lockup problem in linux 4.19 which could also
    be found in linux 5.x.
    
    When dir inode takes up a large number of blocks, and if the
    directory is growing when we are searching, it's possible the
    restart branch could be called many times, and the do while loop
    could hold cpu a long time.
    
    Here is the call trace in linux 4.19.
    
    [  473.756186] Call trace:
    [  473.756196]  dump_backtrace+0x0/0x198
    [  473.756199]  show_stack+0x24/0x30
    [  473.756205]  dump_stack+0xa4/0xcc
    [  473.756210]  watchdog_timer_fn+0x300/0x3e8
    [  473.756215]  __hrtimer_run_queues+0x114/0x358
    [  473.756217]  hrtimer_interrupt+0x104/0x2d8
    [  473.756222]  arch_timer_handler_virt+0x38/0x58
    [  473.756226]  handle_percpu_devid_irq+0x90/0x248
    [  473.756231]  generic_handle_irq+0x34/0x50
    [  473.756234]  __handle_domain_irq+0x68/0xc0
    [  473.756236]  gic_handle_irq+0x6c/0x150
    [  473.756238]  el1_irq+0xb8/0x140
    [  473.756286]  ext4_es_lookup_extent+0xdc/0x258 [ext4]
    [  473.756310]  ext4_map_blocks+0x64/0x5c0 [ext4]
    [  473.756333]  ext4_getblk+0x6c/0x1d0 [ext4]
    [  473.756356]  ext4_bread_batch+0x7c/0x1f8 [ext4]
    [  473.756379]  ext4_find_entry+0x124/0x3f8 [ext4]
    [  473.756402]  ext4_lookup+0x8c/0x258 [ext4]
    [  473.756407]  __lookup_hash+0x8c/0xe8
    [  473.756411]  filename_create+0xa0/0x170
    [  473.756413]  do_mkdirat+0x6c/0x140
    [  473.756415]  __arm64_sys_mkdirat+0x28/0x38
    [  473.756419]  el0_svc_common+0x78/0x130
    [  473.756421]  el0_svc_handler+0x38/0x78
    [  473.756423]  el0_svc+0x8/0xc
    [  485.755156] watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [tmp:5149]
    
    Add cond_resched() to avoid soft lockup and to provide a better
    system responding.
    
    Link: https://lore.kernel.org/r/20200215080206.13293-1-luoshijie1@huawei.com
    Signed-off-by: Shijie Luo <luoshijie1@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b6e90918bc005a258c7f4b4803059de6ca7fba2
Author: Qian Cai <cai@lca.pw>
Date:   Fri Feb 7 09:29:11 2020 -0500

    ext4: fix a data race in EXT4_I(inode)->i_disksize
    
    commit 35df4299a6487f323b0aca120ea3f485dfee2ae3 upstream.
    
    EXT4_I(inode)->i_disksize could be accessed concurrently as noticed by
    KCSAN,
    
     BUG: KCSAN: data-race in ext4_write_end [ext4] / ext4_writepages [ext4]
    
     write to 0xffff91c6713b00f8 of 8 bytes by task 49268 on cpu 127:
      ext4_write_end+0x4e3/0x750 [ext4]
      ext4_update_i_disksize at fs/ext4/ext4.h:3032
      (inlined by) ext4_update_inode_size at fs/ext4/ext4.h:3046
      (inlined by) ext4_write_end at fs/ext4/inode.c:1287
      generic_perform_write+0x208/0x2a0
      ext4_buffered_write_iter+0x11f/0x210 [ext4]
      ext4_file_write_iter+0xce/0x9e0 [ext4]
      new_sync_write+0x29c/0x3b0
      __vfs_write+0x92/0xa0
      vfs_write+0x103/0x260
      ksys_write+0x9d/0x130
      __x64_sys_write+0x4c/0x60
      do_syscall_64+0x91/0xb47
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     read to 0xffff91c6713b00f8 of 8 bytes by task 24872 on cpu 37:
      ext4_writepages+0x10ac/0x1d00 [ext4]
      mpage_map_and_submit_extent at fs/ext4/inode.c:2468
      (inlined by) ext4_writepages at fs/ext4/inode.c:2772
      do_writepages+0x5e/0x130
      __writeback_single_inode+0xeb/0xb20
      writeback_sb_inodes+0x429/0x900
      __writeback_inodes_wb+0xc4/0x150
      wb_writeback+0x4bd/0x870
      wb_workfn+0x6b4/0x960
      process_one_work+0x54c/0xbe0
      worker_thread+0x80/0x650
      kthread+0x1e0/0x200
      ret_from_fork+0x27/0x50
    
     Reported by Kernel Concurrency Sanitizer on:
     CPU: 37 PID: 24872 Comm: kworker/u261:2 Tainted: G        W  O L 5.5.0-next-20200204+ #5
     Hardware name: HPE ProLiant DL385 Gen10/ProLiant DL385 Gen10, BIOS A40 07/10/2019
     Workqueue: writeback wb_workfn (flush-7:0)
    
    Since only the read is operating as lockless (outside of the
    "i_data_sem"), load tearing could introduce a logic bug. Fix it by
    adding READ_ONCE() for the read and WRITE_ONCE() for the write.
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Link: https://lore.kernel.org/r/1581085751-31793-1-git-send-email-cai@lca.pw
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e3a6e86d43bd24d8ab02e2343d73f85ec093839
Author: Lyude Paul <lyude@redhat.com>
Date:   Wed Feb 12 18:11:49 2020 -0500

    drm/nouveau/kms/gv100-: Re-set LUT after clearing for modesets
    
    [ Upstream commit f287d3d19769b1d22cba4e51fa0487f2697713c9 ]
    
    While certain modeset operations on gv100+ need us to temporarily
    disable the LUT, we make the mistake of sometimes neglecting to
    reprogram the LUT after such modesets. In particular, moving a head from
    one encoder to another seems to trigger this quite often. GV100+ is very
    picky about having a LUT in most scenarios, so this causes the display
    engine to hang with the following error code:
    
    disp: chid 1 stat 00005080 reason 5 [INVALID_STATE] mthd 0200 data
    00000001 code 0000002d)
    
    So, fix this by always re-programming the LUT if we're clearing it in a
    state where the wndw is still visible, and has a XLUT handle programmed.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Fixes: facaed62b4cb ("drm/nouveau/kms/gv100: initial support")
    Cc: <stable@vger.kernel.org> # v4.18+
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da3418ad747fa035a1a88c6883dd2c7d7142ffc4
Author: Alexander Potapenko <glider@google.com>
Date:   Thu Feb 20 20:04:30 2020 -0800

    lib/stackdepot.c: fix global out-of-bounds in stack_slabs
    
    [ Upstream commit 305e519ce48e935702c32241f07d393c3c8fed3e ]
    
    Walter Wu has reported a potential case in which init_stack_slab() is
    called after stack_slabs[STACK_ALLOC_MAX_SLABS - 1] has already been
    initialized.  In that case init_stack_slab() will overwrite
    stack_slabs[STACK_ALLOC_MAX_SLABS], which may result in a memory
    corruption.
    
    Link: http://lkml.kernel.org/r/20200218102950.260263-1-glider@google.com
    Fixes: cd11016e5f521 ("mm, kasan: stackdepot implementation. Enable stackdepot for SLAB")
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reported-by: Walter Wu <walter-zh.wu@mediatek.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Kate Stewart <kstewart@linuxfoundation.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.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: Sasha Levin <sashal@kernel.org>

commit 56ad5b4b7405ec08ef3f2b33cd59f5b3bca6577c
Author: satya priya <skakit@codeaurora.org>
Date:   Tue Feb 11 15:43:02 2020 +0530

    tty: serial: qcom_geni_serial: Fix RX cancel command failure
    
    [ Upstream commit 679aac5ead2f18d223554a52b543e1195e181811 ]
    
    RX cancel command fails when BT is switched on and off multiple times.
    
    To handle this, poll for the cancel bit in SE_GENI_S_IRQ_STATUS register
    instead of SE_GENI_S_CMD_CTRL_REG.
    
    As per the HPG update, handle the RX last bit after cancel command
    and flush out the RX FIFO buffer.
    
    Signed-off-by: satya priya <skakit@codeaurora.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1581415982-8793-1-git-send-email-skakit@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e6ebad85883d99b15ef20f522d46de5f88e64848
Author: Ryan Case <ryandcase@chromium.org>
Date:   Mon Jan 7 17:58:37 2019 -0800

    tty: serial: qcom_geni_serial: Remove xfer_mode variable
    
    [ Upstream commit bdc05a8a3f822ca0662464055f902faf760da6be ]
    
    The driver only supports FIFO mode so setting and checking this variable
    is unnecessary. If DMA support is ever added then such checks can be
    introduced.
    
    Signed-off-by: Ryan Case <ryandcase@chromium.org>
    Reviewed-by: Evan Green <evgreen@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e438733f7275fe73f825097f36fc724c8e43d05
Author: Ryan Case <ryandcase@chromium.org>
Date:   Mon Jan 7 17:58:36 2019 -0800

    tty: serial: qcom_geni_serial: Remove set_rfr_wm() and related variables
    
    [ Upstream commit a85fb9ce1fab34a3216fd4d769fede643dbc68d4 ]
    
    The variables of tx_wm and rx_wm were set to the same define value in
    all cases, never updated, and the define was sometimes used
    interchangably. Remove the variables/function and use the fixed value.
    
    Signed-off-by: Ryan Case <ryandcase@chromium.org>
    Reviewed-by: Evan Green <evgreen@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1cc8834773b2ea03e2cba24a980130a2a0975cf9
Author: Ryan Case <ryandcase@chromium.org>
Date:   Mon Jan 7 17:58:35 2019 -0800

    tty: serial: qcom_geni_serial: Remove use of *_relaxed() and mb()
    
    [ Upstream commit 9e06d55f7b856bfaf82036b50072600b21e52d20 ]
    
    A frequent side comment has been to remove the use of writel_relaxed,
    readl_relaxed, and mb. This reduces driver complexity and the _relaxed
    variants were not known to provide any noticeable performance benefit.
    
    Signed-off-by: Ryan Case <ryandcase@chromium.org>
    Reviewed-by: Evan Green <evgreen@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d1a94fa6d14fac758fae0040c19802b7ea7fb1e
Author: Ryan Case <ryandcase@chromium.org>
Date:   Thu Dec 13 11:43:20 2018 -0800

    tty: serial: qcom_geni_serial: Remove interrupt storm
    
    [ Upstream commit 64a428077758383518c258641e81d57fcd454792 ]
    
    Disable M_TX_FIFO_WATERMARK_EN after we've sent all data for a given
    transaction so we don't continue to receive a flurry of free space
    interrupts while waiting for the M_CMD_DONE notification. Re-enable the
    watermark when establishing the next transaction.
    
    Also clear the watermark interrupt after filling the FIFO so we do not
    receive notification again prior to actually having free space.
    
    Signed-off-by: Ryan Case <ryandcase@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Tested-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a38fd9326fde16597dc7eef274be46bdc8cdcee
Author: Ryan Case <ryandcase@chromium.org>
Date:   Wed Dec 19 12:33:53 2018 -0800

    tty: serial: qcom_geni_serial: Fix UART hang
    
    [ Upstream commit 663abb1a7a7ff8fea9ab0145463de7fcff823755 ]
    
    If a serial console write occured while a UART transmit command was
    waiting for a done signal then no further data would be sent until
    something new kicked the system into gear. If there is already data
    waiting in the circular buffer we must re-enable the tx watermark so we
    receive the expected interrupts.
    
    Signed-off-by: Ryan Case <ryandcase@chromium.org>
    Reviewed-by: Evan Green <evgreen@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe1cfc645845b854c1b47118517fd440f15fac1c
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Fri Feb 14 10:32:38 2020 +0800

    KVM: x86: don't notify userspace IOAPIC on edge-triggered interrupt EOI
    
    commit 7455a8327674e1a7c9a1f5dd1b0743ab6713f6d1 upstream.
    
    Commit 13db77347db1 ("KVM: x86: don't notify userspace IOAPIC on edge
    EOI") said, edge-triggered interrupts don't set a bit in TMR, which means
    that IOAPIC isn't notified on EOI. And var level indicates level-triggered
    interrupt.
    But commit 3159d36ad799 ("KVM: x86: use generic function for MSI parsing")
    replace var level with irq.level by mistake. Fix it by changing irq.level
    to irq.trig_mode.
    
    Cc: stable@vger.kernel.org
    Fixes: 3159d36ad799 ("KVM: x86: use generic function for MSI parsing")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed9e97c35b454ceb1da4f65c318015a7ab298dae
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Feb 4 15:26:29 2020 -0800

    KVM: nVMX: Don't emulate instructions in guest mode
    
    commit 07721feee46b4b248402133228235318199b05ec upstream.
    
    vmx_check_intercept is not yet fully implemented. To avoid emulating
    instructions disallowed by the L1 hypervisor, refuse to emulate
    instructions by default.
    
    Cc: stable@vger.kernel.org
    [Made commit, added commit msg - Oliver]
    Signed-off-by: Oliver Upton <oupton@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ca274be314bb288a35b51ca08b36bf3c83745ea
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Feb 10 15:45:53 2020 +0200

    xhci: apply XHCI_PME_STUCK_QUIRK to Intel Comet Lake platforms
    
    commit a3ae87dce3a5abe0b57c811bab02b2564b574106 upstream.
    
    Intel Comet Lake based platform require the XHCI_PME_STUCK_QUIRK
    quirk as well. Without this xHC can not enter D3 in runtime suspend.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200210134553.9144-5-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8300ed5a21752ae1ef245119201536916e3fa086
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Feb 12 01:46:16 2020 -0500

    drm/amdgpu/soc15: fix xclk for raven
    
    commit c657b936ea98630ef5ba4f130ab1ad5c534d0165 upstream.
    
    It's 25 Mhz (refclk / 4).  This fixes the interpretation
    of the rlc clock counter.
    
    Acked-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 837ba4829b9f6e6d0258da8e7fa2797cf735da94
Author: Gavin Shan <gshan@redhat.com>
Date:   Thu Feb 20 20:04:24 2020 -0800

    mm/vmscan.c: don't round up scan size for online memory cgroup
    
    commit 76073c646f5f4999d763f471df9e38a5a912d70d upstream.
    
    Commit 68600f623d69 ("mm: don't miss the last page because of round-off
    error") makes the scan size round up to @denominator regardless of the
    memory cgroup's state, online or offline.  This affects the overall
    reclaiming behavior: the corresponding LRU list is eligible for
    reclaiming only when its size logically right shifted by @sc->priority
    is bigger than zero in the former formula.
    
    For example, the inactive anonymous LRU list should have at least 0x4000
    pages to be eligible for reclaiming when we have 60/12 for
    swappiness/priority and without taking scan/rotation ratio into account.
    
    After the roundup is applied, the inactive anonymous LRU list becomes
    eligible for reclaiming when its size is bigger than or equal to 0x1000
    in the same condition.
    
        (0x4000 >> 12) * 60 / (60 + 140 + 1) = 1
        ((0x1000 >> 12) * 60) + 200) / (60 + 140 + 1) = 1
    
    aarch64 has 512MB huge page size when the base page size is 64KB.  The
    memory cgroup that has a huge page is always eligible for reclaiming in
    that case.
    
    The reclaiming is likely to stop after the huge page is reclaimed,
    meaing the further iteration on @sc->priority and the silbing and child
    memory cgroups will be skipped.  The overall behaviour has been changed.
    This fixes the issue by applying the roundup to offlined memory cgroups
    only, to give more preference to reclaim memory from offlined memory
    cgroup.  It sounds reasonable as those memory is unlikedly to be used by
    anyone.
    
    The issue was found by starting up 8 VMs on a Ampere Mustang machine,
    which has 8 CPUs and 16 GB memory.  Each VM is given with 2 vCPUs and
    2GB memory.  It took 264 seconds for all VMs to be completely up and
    784MB swap is consumed after that.  With this patch applied, it took 236
    seconds and 60MB swap to do same thing.  So there is 10% performance
    improvement for my case.  Note that KSM is disable while THP is enabled
    in the testing.
    
             total     used    free   shared  buff/cache   available
       Mem:  16196    10065    2049       16        4081        3749
       Swap:  8175      784    7391
             total     used    free   shared  buff/cache   available
       Mem:  16196    11324    3656       24        1215        2936
       Swap:  8175       60    8115
    
    Link: http://lkml.kernel.org/r/20200211024514.8730-1-gshan@redhat.com
    Fixes: 68600f623d69 ("mm: don't miss the last page because of round-off error")
    Signed-off-by: Gavin Shan <gshan@redhat.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Cc: <stable@vger.kernel.org>    [4.20+]
    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 ea2a11561d01b6588fc76e2d187769bba2e34a50
Author: Zenghui Yu <yuzenghui@huawei.com>
Date:   Fri Feb 21 10:07:25 2020 +0800

    genirq/irqdomain: Make sure all irq domain flags are distinct
    
    commit 2546287c5fb363a0165933ae2181c92f03e701d0 upstream.
    
    This was noticed when printing debugfs for MSIs on my ARM64 server.  The
    new dstate IRQD_MSI_NOMASK_QUIRK came out surprisingly while it should only
    be the x86 stuff for the time being...
    
    The new MSI quirk flag uses the same bit as IRQ_DOMAIN_NAME_ALLOCATED which
    is oddly defined as bit 6 for no good reason.
    
    Switch it to the non used bit 1.
    
    Fixes: 6f1a4891a592 ("x86/apic/msi: Plug non-maskable MSI affinity race")
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200221020725.2038-1-yuzenghui@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 576c04cbbef2630b1373bdc1736c3081102f9386
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Thu Feb 20 13:29:53 2020 -0700

    nvme-multipath: Fix memory leak with ana_log_buf
    
    commit 3b7830904e17202524bad1974505a9bfc718d31f upstream.
    
    kmemleak reports a memory leak with the ana_log_buf allocated by
    nvme_mpath_init():
    
    unreferenced object 0xffff888120e94000 (size 8208):
      comm "nvme", pid 6884, jiffies 4295020435 (age 78786.312s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
          01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<00000000e2360188>] kmalloc_order+0x97/0xc0
          [<0000000079b18dd4>] kmalloc_order_trace+0x24/0x100
          [<00000000f50c0406>] __kmalloc+0x24c/0x2d0
          [<00000000f31a10b9>] nvme_mpath_init+0x23c/0x2b0
          [<000000005802589e>] nvme_init_identify+0x75f/0x1600
          [<0000000058ef911b>] nvme_loop_configure_admin_queue+0x26d/0x280
          [<00000000673774b9>] nvme_loop_create_ctrl+0x2a7/0x710
          [<00000000f1c7a233>] nvmf_dev_write+0xc66/0x10b9
          [<000000004199f8d0>] __vfs_write+0x50/0xa0
          [<0000000065466fef>] vfs_write+0xf3/0x280
          [<00000000b0db9a8b>] ksys_write+0xc6/0x160
          [<0000000082156b91>] __x64_sys_write+0x43/0x50
          [<00000000c34fbb6d>] do_syscall_64+0x77/0x2f0
          [<00000000bbc574c9>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    nvme_mpath_init() is called by nvme_init_identify() which is called in
    multiple places (nvme_reset_work(), nvme_passthru_end(), etc). This
    means nvme_mpath_init() may be called multiple times before
    nvme_mpath_uninit() (which is only called on nvme_free_ctrl()).
    
    When nvme_mpath_init() is called multiple times, it overwrites the
    ana_log_buf pointer with a new allocation, thus leaking the previous
    allocation.
    
    To fix this, free ana_log_buf before allocating a new one.
    
    Fixes: 0d0b660f214dc490 ("nvme: add ANA support")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e75d2de90b86cb6a5564c14a38141c0e2919abe5
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Feb 20 20:04:18 2020 -0800

    mm/memcontrol.c: lost css_put in memcg_expand_shrinker_maps()
    
    commit 75866af62b439859d5146b7093ceb6b482852683 upstream.
    
    for_each_mem_cgroup() increases css reference counter for memory cgroup
    and requires to use mem_cgroup_iter_break() if the walk is cancelled.
    
    Link: http://lkml.kernel.org/r/c98414fb-7e1f-da0f-867a-9340ec4bd30b@virtuozzo.com
    Fixes: 0a4465d34028 ("mm, memcg: assign memcg-aware shrinkers bitmap to memcg")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Roman Gushchin <guro@fb.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.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 cf85f00f87dbf4f6e493d667bba2dae3839b0d87
Author: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
Date:   Thu Feb 20 20:04:00 2020 -0800

    Revert "ipc,sem: remove uneeded sem_undo_list lock usage in exit_sem()"
    
    commit edf28f4061afe4c2d9eb1c3323d90e882c1d6800 upstream.
    
    This reverts commit a97955844807e327df11aa33869009d14d6b7de0.
    
    Commit a97955844807 ("ipc,sem: remove uneeded sem_undo_list lock usage
    in exit_sem()") removes a lock that is needed.  This leads to a process
    looping infinitely in exit_sem() and can also lead to a crash.  There is
    a reproducer available in [1] and with the commit reverted the issue
    does not reproduce anymore.
    
    Using the reproducer found in [1] is fairly easy to reach a point where
    one of the child processes is looping infinitely in exit_sem between
    for(;;) and if (semid == -1) block, while it's trying to free its last
    sem_undo structure which has already been freed by freeary().
    
    Each sem_undo struct is on two lists: one per semaphore set (list_id)
    and one per process (list_proc).  The list_id list tracks undos by
    semaphore set, and the list_proc by process.
    
    Undo structures are removed either by freeary() or by exit_sem().  The
    freeary function is invoked when the user invokes a syscall to remove a
    semaphore set.  During this operation freeary() traverses the list_id
    associated with the semaphore set and removes the undo structures from
    both the list_id and list_proc lists.
    
    For this case, exit_sem() is called at process exit.  Each process
    contains a struct sem_undo_list (referred to as "ulp") which contains
    the head for the list_proc list.  When the process exits, exit_sem()
    traverses this list to remove each sem_undo struct.  As in freeary(),
    whenever a sem_undo struct is removed from list_proc, it is also removed
    from the list_id list.
    
    Removing elements from list_id is safe for both exit_sem() and freeary()
    due to sem_lock().  Removing elements from list_proc is not safe;
    freeary() locks &un->ulp->lock when it performs
    list_del_rcu(&un->list_proc) but exit_sem() does not (locking was
    removed by commit a97955844807 ("ipc,sem: remove uneeded sem_undo_list
    lock usage in exit_sem()").
    
    This can result in the following situation while executing the
    reproducer [1] : Consider a child process in exit_sem() and the parent
    in freeary() (because of semctl(sid[i], NSEM, IPC_RMID)).
    
     - The list_proc for the child contains the last two undo structs A and
       B (the rest have been removed either by exit_sem() or freeary()).
    
     - The semid for A is 1 and semid for B is 2.
    
     - exit_sem() removes A and at the same time freeary() removes B.
    
     - Since A and B have different semid sem_lock() will acquire different
       locks for each process and both can proceed.
    
    The bug is that they remove A and B from the same list_proc at the same
    time because only freeary() acquires the ulp lock. When exit_sem()
    removes A it makes ulp->list_proc.next to point at B and at the same
    time freeary() removes B setting B->semid=-1.
    
    At the next iteration of for(;;) loop exit_sem() will try to remove B.
    
    The only way to break from for(;;) is for (&un->list_proc ==
    &ulp->list_proc) to be true which is not. Then exit_sem() will check if
    B->semid=-1 which is and will continue looping in for(;;) until the
    memory for B is reallocated and the value at B->semid is changed.
    
    At that point, exit_sem() will crash attempting to unlink B from the
    lists (this can be easily triggered by running the reproducer [1] a
    second time).
    
    To prove this scenario instrumentation was added to keep information
    about each sem_undo (un) struct that is removed per process and per
    semaphore set (sma).
    
              CPU0                                CPU1
      [caller holds sem_lock(sma for A)]      ...
      freeary()                               exit_sem()
      ...                                     ...
      ...                                     sem_lock(sma for B)
      spin_lock(A->ulp->lock)                 ...
      list_del_rcu(un_A->list_proc)           list_del_rcu(un_B->list_proc)
    
    Undo structures A and B have different semid and sem_lock() operations
    proceed.  However they belong to the same list_proc list and they are
    removed at the same time.  This results into ulp->list_proc.next
    pointing to the address of B which is already removed.
    
    After reverting commit a97955844807 ("ipc,sem: remove uneeded
    sem_undo_list lock usage in exit_sem()") the issue was no longer
    reproducible.
    
    [1] https://bugzilla.redhat.com/show_bug.cgi?id=1694779
    
    Link: http://lkml.kernel.org/r/20191211191318.11860-1-ioanna-maria.alifieraki@canonical.com
    Fixes: a97955844807 ("ipc,sem: remove uneeded sem_undo_list lock usage in exit_sem()")
    Signed-off-by: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
    Acked-by: Manfred Spraul <manfred@colorfullife.com>
    Acked-by: Herton R. Krzesinski <herton@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: <malat@debian.org>
    Cc: Joel Fernandes (Google) <joel@joelfernandes.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Jay Vosburgh <jay.vosburgh@canonical.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 af4693daff1b3c5f66eb4e7b8e13c4eae32c53da
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Wed Feb 12 18:04:33 2020 +0200

    MAINTAINERS: Update drm/i915 bug filing URL
    
    commit 96228b7df33f8eb9006f8ae96949400aed9bd303 upstream.
    
    We've moved from bugzilla to gitlab.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200212160434.6437-1-jani.nikula@intel.com
    (cherry picked from commit 3a6a4f0810c8ade6f1ff63c34aa9834176b9d88b)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9ca2010202b3dd9a7a4e27c2192ee8df3e87a2e
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Feb 10 15:57:30 2020 +0100

    serdev: ttyport: restore client ops on deregistration
    
    commit 0c5aae59270fb1f827acce182786094c9ccf598e upstream.
    
    The serdev tty-port controller driver should reset the tty-port client
    operations also on deregistration to avoid a NULL-pointer dereference in
    case the port is later re-registered as a normal tty device.
    
    Note that this can only happen with tty drivers such as 8250 which have
    statically allocated port structures that can end up being reused and
    where a later registration would not register a serdev controller (e.g.
    due to registration errors or if the devicetree has been changed in
    between).
    
    Specifically, this can be an issue for any statically defined ports that
    would be registered by 8250 core when an 8250 driver is being unbound.
    
    Fixes: bed35c6dfa6a ("serdev: add a tty port controller driver")
    Cc: stable <stable@vger.kernel.org>     # 4.11
    Reported-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20200210145730.22762-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 463a3db812d9069b91d088f13b961239169a7a81
Author: Fugang Duan <fugang.duan@nxp.com>
Date:   Tue Feb 11 14:16:01 2020 +0800

    tty: serial: imx: setup the correct sg entry for tx dma
    
    commit f76707831829530ffdd3888bebc108aecefccaa0 upstream.
    
    There has oops as below happen on i.MX8MP EVK platform that has
    6G bytes DDR memory.
    
    when (xmit->tail < xmit->head) && (xmit->head == 0),
    it setups one sg entry with sg->length is zero:
            sg_set_buf(sgl + 1, xmit->buf, xmit->head);
    
    if xmit->buf is allocated from >4G address space, and SDMA only
    support <4G address space, then dma_map_sg() will call swiotlb_map()
    to do bounce buffer copying and mapping.
    
    But swiotlb_map() don't allow sg entry's length is zero, otherwise
    report BUG_ON().
    
    So the patch is to correct the tx DMA scatter list.
    
    Oops:
    [  287.675715] kernel BUG at kernel/dma/swiotlb.c:497!
    [  287.680592] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    [  287.686075] Modules linked in:
    [  287.689133] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.3-00016-g3fdc4e0-dirty #10
    [  287.696872] Hardware name: FSL i.MX8MP EVK (DT)
    [  287.701402] pstate: 80000085 (Nzcv daIf -PAN -UAO)
    [  287.706199] pc : swiotlb_tbl_map_single+0x1fc/0x310
    [  287.711076] lr : swiotlb_map+0x60/0x148
    [  287.714909] sp : ffff800010003c00
    [  287.718221] x29: ffff800010003c00 x28: 0000000000000000
    [  287.723533] x27: 0000000000000040 x26: ffff800011ae0000
    [  287.728844] x25: ffff800011ae09f8 x24: 0000000000000000
    [  287.734155] x23: 00000001b7af9000 x22: 0000000000000000
    [  287.739465] x21: ffff000176409c10 x20: 00000000001f7ffe
    [  287.744776] x19: ffff000176409c10 x18: 000000000000002e
    [  287.750087] x17: 0000000000000000 x16: 0000000000000000
    [  287.755397] x15: 0000000000000000 x14: 0000000000000000
    [  287.760707] x13: ffff00017f334000 x12: 0000000000000001
    [  287.766018] x11: 00000000001fffff x10: 0000000000000000
    [  287.771328] x9 : 0000000000000003 x8 : 0000000000000000
    [  287.776638] x7 : 0000000000000000 x6 : 0000000000000000
    [  287.781949] x5 : 0000000000200000 x4 : 0000000000000000
    [  287.787259] x3 : 0000000000000001 x2 : 00000001b7af9000
    [  287.792570] x1 : 00000000fbfff000 x0 : 0000000000000000
    [  287.797881] Call trace:
    [  287.800328]  swiotlb_tbl_map_single+0x1fc/0x310
    [  287.804859]  swiotlb_map+0x60/0x148
    [  287.808347]  dma_direct_map_page+0xf0/0x130
    [  287.812530]  dma_direct_map_sg+0x78/0xe0
    [  287.816453]  imx_uart_dma_tx+0x134/0x2f8
    [  287.820374]  imx_uart_dma_tx_callback+0xd8/0x168
    [  287.824992]  vchan_complete+0x194/0x200
    [  287.828828]  tasklet_action_common.isra.0+0x154/0x1a0
    [  287.833879]  tasklet_action+0x24/0x30
    [  287.837540]  __do_softirq+0x120/0x23c
    [  287.841202]  irq_exit+0xb8/0xd8
    [  287.844343]  __handle_domain_irq+0x64/0xb8
    [  287.848438]  gic_handle_irq+0x5c/0x148
    [  287.852185]  el1_irq+0xb8/0x180
    [  287.855327]  cpuidle_enter_state+0x84/0x360
    [  287.859508]  cpuidle_enter+0x34/0x48
    [  287.863083]  call_cpuidle+0x18/0x38
    [  287.866571]  do_idle+0x1e0/0x280
    [  287.869798]  cpu_startup_entry+0x20/0x40
    [  287.873721]  rest_init+0xd4/0xe0
    [  287.876949]  arch_call_rest_init+0xc/0x14
    [  287.880958]  start_kernel+0x420/0x44c
    [  287.884622] Code: 9124c021 9417aff8 a94363f7 17ffffd5 (d4210000)
    [  287.890718] ---[ end trace 5bc44c4ab6b009ce ]---
    [  287.895334] Kernel panic - not syncing: Fatal exception in interrupt
    [  287.901686] SMP: stopping secondary CPUs
    [  288.905607] SMP: failed to stop secondary CPUs 0-1
    [  288.910395] Kernel Offset: disabled
    [  288.913882] CPU features: 0x0002,2000200c
    [  288.917888] Memory Limit: none
    [  288.920944] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Reported-by: Eagle Zhou <eagle.zhou@nxp.com>
    Tested-by: Eagle Zhou <eagle.zhou@nxp.com>
    Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
    Cc: stable <stable@vger.kernel.org>
    Fixes: 7942f8577f2a ("serial: imx: TX DMA: clean up sg initialization")
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/1581401761-6378-1-git-send-email-fugang.duan@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6807593e8edc51e481cbf598a8113245be262e25
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Mon Feb 10 16:20:53 2020 +0100

    tty/serial: atmel: manage shutdown in case of RS485 or ISO7816 mode
    
    commit 04b5bfe3dc94e64d0590c54045815cb5183fb095 upstream.
    
    In atmel_shutdown() we call atmel_stop_rx() and atmel_stop_tx() functions.
    Prevent the rx restart that is implemented in RS485 or ISO7816 modes when
    calling atmel_stop_tx() by using the atomic information tasklet_shutdown
    that is already in place for this purpose.
    
    Fixes: 98f2082c3ac4 ("tty/serial: atmel: enforce tasklet init and termination sequences")
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200210152053.8289-1-nicolas.ferre@microchip.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4e6d51f3f40c6d7da963c77a4bfb831c81fde51
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Feb 11 15:55:59 2020 +0200

    serial: 8250: Check UPF_IRQ_SHARED in advance
    
    commit 7febbcbc48fc92e3f33863b32ed715ba4aff18c4 upstream.
    
    The commit 54e53b2e8081
      ("tty: serial: 8250: pass IRQ shared flag to UART ports")
    nicely explained the problem:
    
    ---8<---8<---
    
    On some systems IRQ lines between multiple UARTs might be shared. If so, the
    irqflags have to be configured accordingly. The reason is: The 8250 port startup
    code performs IRQ tests *before* the IRQ handler for that particular port is
    registered. This is performed in serial8250_do_startup(). This function checks
    whether IRQF_SHARED is configured and only then disables the IRQ line while
    testing.
    
    This test is performed upon each open() of the UART device. Imagine two UARTs
    share the same IRQ line: On is already opened and the IRQ is active. When the
    second UART is opened, the IRQ line has to be disabled while performing IRQ
    tests. Otherwise an IRQ might handler might be invoked, but the IRQ itself
    cannot be handled, because the corresponding handler isn't registered,
    yet. That's because the 8250 code uses a chain-handler and invokes the
    corresponding port's IRQ handling routines himself.
    
    Unfortunately this IRQF_SHARED flag isn't configured for UARTs probed via device
    tree even if the IRQs are shared. This way, the actual and shared IRQ line isn't
    disabled while performing tests and the kernel correctly detects a spurious
    IRQ. So, adding this flag to the DT probe solves the issue.
    
    Note: The UPF_SHARE_IRQ flag is configured unconditionally. Therefore, the
    IRQF_SHARED flag can be set unconditionally as well.
    
    Example stack trace by performing `echo 1 > /dev/ttyS2` on a non-patched system:
    
    |irq 85: nobody cared (try booting with the "irqpoll" option)
    | [...]
    |handlers:
    |[<ffff0000080fc628>] irq_default_primary_handler threaded [<ffff00000855fbb8>] serial8250_interrupt
    |Disabling IRQ #85
    
    ---8<---8<---
    
    But unfortunately didn't fix the root cause. Let's try again here by moving
    IRQ flag assignment from serial_link_irq_chain() to serial8250_do_startup().
    
    This should fix the similar issue reported for 8250_pnp case.
    
    Since this change we don't need to have custom solutions in 8250_aspeed_vuart
    and 8250_of drivers, thus, drop them.
    
    Fixes: 1c2f04937b3e ("serial: 8250: add IRQ trigger support")
    Reported-by: Li RongQing <lirongqing@baidu.com>
    Cc: Kurt Kanzenbach <kurt@linutronix.de>
    Cc: Vikram Pandita <vikram.pandita@ti.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Kurt Kanzenbach <kurt@linutronix.de>
    Link: https://lore.kernel.org/r/20200211135559.85960-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f28ec250579cb3094684908d67f2384627799676
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Wed Feb 19 18:52:43 2020 +0100

    x86/cpu/amd: Enable the fixed Instructions Retired counter IRPERF
    
    commit 21b5ee59ef18e27d85810584caf1f7ddc705ea83 upstream.
    
    Commit
    
      aaf248848db50 ("perf/x86/msr: Add AMD IRPERF (Instructions Retired)
                      performance counter")
    
    added support for access to the free-running counter via 'perf -e
    msr/irperf/', but when exercised, it always returns a 0 count:
    
    BEFORE:
    
      $ perf stat -e instructions,msr/irperf/ true
    
       Performance counter stats for 'true':
    
                 624,833      instructions
                       0      msr/irperf/
    
    Simply set its enable bit - HWCR bit 30 - to make it start counting.
    
    Enablement is restricted to all machines advertising IRPERF capability,
    except those susceptible to an erratum that makes the IRPERF return
    bad values.
    
    That erratum occurs in Family 17h models 00-1fh [1], but not in F17h
    models 20h and above [2].
    
    AFTER (on a family 17h model 31h machine):
    
      $ perf stat -e instructions,msr/irperf/ true
    
       Performance counter stats for 'true':
    
                 621,690      instructions
                 622,490      msr/irperf/
    
    [1] Revision Guide for AMD Family 17h Models 00h-0Fh Processors
    [2] Revision Guide for AMD Family 17h Models 30h-3Fh Processors
    
    The revision guides are available from the bugzilla Link below.
    
     [ bp: Massage commit message. ]
    
    Fixes: aaf248848db50 ("perf/x86/msr: Add AMD IRPERF (Instructions Retired) performance counter")
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537
    Link: http://lkml.kernel.org/r/20200214201805.13830-1-kim.phillips@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e5b443ae6cc0b3ec4744435af475e5fe60311f8
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Feb 13 19:01:34 2020 +0100

    x86/mce/amd: Fix kobject lifetime
    
    commit 51dede9c05df2b78acd6dcf6a17d21f0877d2d7b upstream.
    
    Accessing the MCA thresholding controls in sysfs concurrently with CPU
    hotplug can lead to a couple of KASAN-reported issues:
    
      BUG: KASAN: use-after-free in sysfs_file_ops+0x155/0x180
      Read of size 8 at addr ffff888367578940 by task grep/4019
    
    and
    
      BUG: KASAN: use-after-free in show_error_count+0x15c/0x180
      Read of size 2 at addr ffff888368a05514 by task grep/4454
    
    for example. Both result from the fact that the threshold block
    creation/teardown code frees the descriptor memory itself instead of
    defining proper ->release function and leaving it to the driver core to
    take care of that, after all sysfs accesses have completed.
    
    Do that and get rid of the custom freeing code, fixing the above UAFs in
    the process.
    
      [ bp: write commit message. ]
    
    Fixes: 95268664390b ("[PATCH] x86_64: mce_amd support for family 0x10 processors")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200214082801.13836-1-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a3aca3a0f415a9855ae113b3ec72da9828744c4
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Feb 4 13:28:41 2020 +0100

    x86/mce/amd: Publish the bank pointer only after setup has succeeded
    
    commit 6e5cf31fbe651bed7ba1df768f2e123531132417 upstream.
    
    threshold_create_bank() creates a bank descriptor per MCA error
    thresholding counter which can be controlled over sysfs. It publishes
    the pointer to that bank in a per-CPU variable and then goes on to
    create additional thresholding blocks if the bank has such.
    
    However, that creation of additional blocks in
    allocate_threshold_blocks() can fail, leading to a use-after-free
    through the per-CPU pointer.
    
    Therefore, publish that pointer only after all blocks have been setup
    successfully.
    
    Fixes: 019f34fccfd5 ("x86, MCE, AMD: Move shared bank to node descriptor")
    Reported-by: Saar Amar <Saar.Amar@microsoft.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200128140846.phctkvx5btiexvbx@kili.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4512119ac90a9d438837f4b528a9e7d7d26e8bef
Author: wangyan <wangyan122@huawei.com>
Date:   Thu Feb 20 21:46:14 2020 +0800

    jbd2: fix ocfs2 corrupt when clearing block group bits
    
    commit 8eedabfd66b68a4623beec0789eac54b8c9d0fb6 upstream.
    
    I found a NULL pointer dereference in ocfs2_block_group_clear_bits().
    The running environment:
            kernel version: 4.19
            A cluster with two nodes, 5 luns mounted on two nodes, and do some
            file operations like dd/fallocate/truncate/rm on every lun with storage
            network disconnection.
    
    The fallocate operation on dm-23-45 caused an null pointer dereference.
    
    The information of NULL pointer dereference as follows:
            [577992.878282] JBD2: Error -5 detected when updating journal superblock for dm-23-45.
            [577992.878290] Aborting journal on device dm-23-45.
            ...
            [577992.890778] JBD2: Error -5 detected when updating journal superblock for dm-24-46.
            [577992.890908] __journal_remove_journal_head: freeing b_committed_data
            [577992.890916] (fallocate,88392,52):ocfs2_extend_trans:474 ERROR: status = -30
            [577992.890918] __journal_remove_journal_head: freeing b_committed_data
            [577992.890920] (fallocate,88392,52):ocfs2_rotate_tree_right:2500 ERROR: status = -30
            [577992.890922] __journal_remove_journal_head: freeing b_committed_data
            [577992.890924] (fallocate,88392,52):ocfs2_do_insert_extent:4382 ERROR: status = -30
            [577992.890928] (fallocate,88392,52):ocfs2_insert_extent:4842 ERROR: status = -30
            [577992.890928] __journal_remove_journal_head: freeing b_committed_data
            [577992.890930] (fallocate,88392,52):ocfs2_add_clusters_in_btree:4947 ERROR: status = -30
            [577992.890933] __journal_remove_journal_head: freeing b_committed_data
            [577992.890939] __journal_remove_journal_head: freeing b_committed_data
            [577992.890949] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
            [577992.890950] Mem abort info:
            [577992.890951]   ESR = 0x96000004
            [577992.890952]   Exception class = DABT (current EL), IL = 32 bits
            [577992.890952]   SET = 0, FnV = 0
            [577992.890953]   EA = 0, S1PTW = 0
            [577992.890954] Data abort info:
            [577992.890955]   ISV = 0, ISS = 0x00000004
            [577992.890956]   CM = 0, WnR = 0
            [577992.890958] user pgtable: 4k pages, 48-bit VAs, pgdp = 00000000f8da07a9
            [577992.890960] [0000000000000020] pgd=0000000000000000
            [577992.890964] Internal error: Oops: 96000004 [#1] SMP
            [577992.890965] Process fallocate (pid: 88392, stack limit = 0x00000000013db2fd)
            [577992.890968] CPU: 52 PID: 88392 Comm: fallocate Kdump: loaded Tainted: G        W  OE     4.19.36 #1
            [577992.890969] Hardware name: Huawei TaiShan 2280 V2/BC82AMDD, BIOS 0.98 08/25/2019
            [577992.890971] pstate: 60400009 (nZCv daif +PAN -UAO)
            [577992.891054] pc : _ocfs2_free_suballoc_bits+0x63c/0x968 [ocfs2]
            [577992.891082] lr : _ocfs2_free_suballoc_bits+0x618/0x968 [ocfs2]
            [577992.891084] sp : ffff0000c8e2b810
            [577992.891085] x29: ffff0000c8e2b820 x28: 0000000000000000
            [577992.891087] x27: 00000000000006f3 x26: ffffa07957b02e70
            [577992.891089] x25: ffff807c59d50000 x24: 00000000000006f2
            [577992.891091] x23: 0000000000000001 x22: ffff807bd39abc30
            [577992.891093] x21: ffff0000811d9000 x20: ffffa07535d6a000
            [577992.891097] x19: ffff000001681638 x18: ffffffffffffffff
            [577992.891098] x17: 0000000000000000 x16: ffff000080a03df0
            [577992.891100] x15: ffff0000811d9708 x14: 203d207375746174
            [577992.891101] x13: 73203a524f525245 x12: 20373439343a6565
            [577992.891103] x11: 0000000000000038 x10: 0101010101010101
            [577992.891106] x9 : ffffa07c68a85d70 x8 : 7f7f7f7f7f7f7f7f
            [577992.891109] x7 : 0000000000000000 x6 : 0000000000000080
            [577992.891110] x5 : 0000000000000000 x4 : 0000000000000002
            [577992.891112] x3 : ffff000001713390 x2 : 2ff90f88b1c22f00
            [577992.891114] x1 : ffff807bd39abc30 x0 : 0000000000000000
            [577992.891116] Call trace:
            [577992.891139]  _ocfs2_free_suballoc_bits+0x63c/0x968 [ocfs2]
            [577992.891162]  _ocfs2_free_clusters+0x100/0x290 [ocfs2]
            [577992.891185]  ocfs2_free_clusters+0x50/0x68 [ocfs2]
            [577992.891206]  ocfs2_add_clusters_in_btree+0x198/0x5e0 [ocfs2]
            [577992.891227]  ocfs2_add_inode_data+0x94/0xc8 [ocfs2]
            [577992.891248]  ocfs2_extend_allocation+0x1bc/0x7a8 [ocfs2]
            [577992.891269]  ocfs2_allocate_extents+0x14c/0x338 [ocfs2]
            [577992.891290]  __ocfs2_change_file_space+0x3f8/0x610 [ocfs2]
            [577992.891309]  ocfs2_fallocate+0xe4/0x128 [ocfs2]
            [577992.891316]  vfs_fallocate+0x11c/0x250
            [577992.891317]  ksys_fallocate+0x54/0x88
            [577992.891319]  __arm64_sys_fallocate+0x28/0x38
            [577992.891323]  el0_svc_common+0x78/0x130
            [577992.891325]  el0_svc_handler+0x38/0x78
            [577992.891327]  el0_svc+0x8/0xc
    
    My analysis process as follows:
    ocfs2_fallocate
      __ocfs2_change_file_space
        ocfs2_allocate_extents
          ocfs2_extend_allocation
            ocfs2_add_inode_data
              ocfs2_add_clusters_in_btree
                ocfs2_insert_extent
                  ocfs2_do_insert_extent
                    ocfs2_rotate_tree_right
                      ocfs2_extend_rotate_transaction
                        ocfs2_extend_trans
                          jbd2_journal_restart
                            jbd2__journal_restart
                              /* handle->h_transaction is NULL,
                               * is_handle_aborted(handle) is true
                               */
                              handle->h_transaction = NULL;
                              start_this_handle
                                return -EROFS;
                ocfs2_free_clusters
                  _ocfs2_free_clusters
                    _ocfs2_free_suballoc_bits
                      ocfs2_block_group_clear_bits
                        ocfs2_journal_access_gd
                          __ocfs2_journal_access
                            jbd2_journal_get_undo_access
                              /* I think jbd2_write_access_granted() will
                               * return true, because do_get_write_access()
                               * will return -EROFS.
                               */
                              if (jbd2_write_access_granted(...)) return 0;
                              do_get_write_access
                                /* handle->h_transaction is NULL, it will
                                 * return -EROFS here, so do_get_write_access()
                                 * was not called.
                                 */
                                if (is_handle_aborted(handle)) return -EROFS;
                        /* bh2jh(group_bh) is NULL, caused NULL
                           pointer dereference */
                        undo_bg = (struct ocfs2_group_desc *)
                                    bh2jh(group_bh)->b_committed_data;
    
    If handle->h_transaction == NULL, then jbd2_write_access_granted()
    does not really guarantee that journal_head will stay around,
    not even speaking of its b_committed_data. The bh2jh(group_bh)
    can be removed after ocfs2_journal_access_gd() and before call
    "bh2jh(group_bh)->b_committed_data". So, we should move
    is_handle_aborted() check from do_get_write_access() into
    jbd2_journal_get_undo_access() and jbd2_journal_get_write_access()
    before the call to jbd2_write_access_granted().
    
    Link: https://lore.kernel.org/r/f72a623f-b3f1-381a-d91d-d22a1c83a336@huawei.com
    Signed-off-by: Yan Wang <wangyan122@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72e2df70fb52bf7a789914b2de44bc56dc21ca1d
Author: Gustavo Luiz Duarte <gustavold@linux.ibm.com>
Date:   Tue Feb 11 00:38:29 2020 -0300

    powerpc/tm: Fix clearing MSR[TS] in current when reclaiming on signal delivery
    
    commit 2464cc4c345699adea52c7aef75707207cb8a2f6 upstream.
    
    After a treclaim, we expect to be in non-transactional state. If we
    don't clear the current thread's MSR[TS] before we get preempted, then
    tm_recheckpoint_new_task() will recheckpoint and we get rescheduled in
    suspended transaction state.
    
    When handling a signal caught in transactional state,
    handle_rt_signal64() calls get_tm_stackpointer() that treclaims the
    transaction using tm_reclaim_current() but without clearing the
    thread's MSR[TS]. This can cause the TM Bad Thing exception below if
    later we pagefault and get preempted trying to access the user's
    sigframe, using __put_user(). Afterwards, when we are rescheduled back
    into do_page_fault() (but now in suspended state since the thread's
    MSR[TS] was not cleared), upon executing 'rfid' after completion of
    the page fault handling, the exception is raised because a transition
    from suspended to non-transactional state is invalid.
    
      Unexpected TM Bad Thing exception at c00000000000de44 (msr 0x8000000302a03031) tm_scratch=800000010280b033
      Oops: Unrecoverable exception, sig: 6 [#1]
      LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
      CPU: 25 PID: 15547 Comm: a.out Not tainted 5.4.0-rc2 #32
      NIP:  c00000000000de44 LR: c000000000034728 CTR: 0000000000000000
      REGS: c00000003fe7bd70 TRAP: 0700   Not tainted  (5.4.0-rc2)
      MSR:  8000000302a03031 <SF,VEC,VSX,FP,ME,IR,DR,LE,TM[SE]>  CR: 44000884  XER: 00000000
      CFAR: c00000000000dda4 IRQMASK: 0
      PACATMSCRATCH: 800000010280b033
      GPR00: c000000000034728 c000000f65a17c80 c000000001662800 00007fffacf3fd78
      GPR04: 0000000000001000 0000000000001000 0000000000000000 c000000f611f8af0
      GPR08: 0000000000000000 0000000078006001 0000000000000000 000c000000000000
      GPR12: c000000f611f84b0 c00000003ffcb200 0000000000000000 0000000000000000
      GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      GPR20: 0000000000000000 0000000000000000 0000000000000000 c000000f611f8140
      GPR24: 0000000000000000 00007fffacf3fd68 c000000f65a17d90 c000000f611f7800
      GPR28: c000000f65a17e90 c000000f65a17e90 c000000001685e18 00007fffacf3f000
      NIP [c00000000000de44] fast_exception_return+0xf4/0x1b0
      LR [c000000000034728] handle_rt_signal64+0x78/0xc50
      Call Trace:
      [c000000f65a17c80] [c000000000034710] handle_rt_signal64+0x60/0xc50 (unreliable)
      [c000000f65a17d30] [c000000000023640] do_notify_resume+0x330/0x460
      [c000000f65a17e20] [c00000000000dcc4] ret_from_except_lite+0x70/0x74
      Instruction dump:
      7c4ff120 e8410170 7c5a03a6 38400000 f8410060 e8010070 e8410080 e8610088
      60000000 60000000 e8810090 e8210078 <4c000024> 48000000 e8610178 88ed0989
      ---[ end trace 93094aa44b442f87 ]---
    
    The simplified sequence of events that triggers the above exception is:
    
      ...                           # userspace in NON-TRANSACTIONAL state
      tbegin                        # userspace in TRANSACTIONAL state
      signal delivery               # kernelspace in SUSPENDED state
      handle_rt_signal64()
        get_tm_stackpointer()
          treclaim                  # kernelspace in NON-TRANSACTIONAL state
        __put_user()
          page fault happens. We will never get back here because of the TM Bad Thing exception.
    
      page fault handling kicks in and we voluntarily preempt ourselves
      do_page_fault()
        __schedule()
          __switch_to(other_task)
    
      our task is rescheduled and we recheckpoint because the thread's MSR[TS] was not cleared
      __switch_to(our_task)
        switch_to_tm()
          tm_recheckpoint_new_task()
            trechkpt                        # kernelspace in SUSPENDED state
    
      The page fault handling resumes, but now we are in suspended transaction state
      do_page_fault()    completes
      rfid     <----- trying to get back where the page fault happened (we were non-transactional back then)
      TM Bad Thing                  # illegal transition from suspended to non-transactional
    
    This patch fixes that issue by clearing the current thread's MSR[TS]
    just after treclaim in get_tm_stackpointer() so that we stay in
    non-transactional state in case we are preempted. In order to make
    treclaim and clearing the thread's MSR[TS] atomic from a preemption
    perspective when CONFIG_PREEMPT is set, preempt_disable/enable() is
    used. It's also necessary to save the previous value of the thread's
    MSR before get_tm_stackpointer() is called so that it can be exposed
    to the signal handler later in setup_tm_sigcontexts() to inform the
    userspace MSR at the moment of the signal delivery.
    
    Found with tm-signal-context-force-tm kernel selftest.
    
    Fixes: 2b0a576d15e0 ("powerpc: Add new transactional memory state to the signal context")
    Cc: stable@vger.kernel.org # v3.9
    Signed-off-by: Gustavo Luiz Duarte <gustavold@linux.ibm.com>
    Acked-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200211033831.11165-1-gustavold@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e34182fb8a2f4f4c574c5eaa02d688b6e848a67e
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Mon Feb 10 12:02:33 2020 -0600

    staging: rtl8723bs: Fix potential overuse of kernel memory
    
    commit 23954cb078febfc63a755301fe77e06bccdb4d2a upstream.
    
    In routine wpa_supplicant_ioctl(), the user-controlled p->length is
    checked to be at least the size of struct ieee_param size, but the code
    does not detect the case where p->length is greater than the size
    of the struct, thus a malicious user could be wasting kernel memory.
    Fixes commit 554c0a3abf216 ("staging: Add rtl8723bs sdio wifi driver").
    
    Reported by: Pietro Oliva <pietroliva@gmail.com>
    Cc: Pietro Oliva <pietroliva@gmail.com>
    Cc: Stable <stable@vger.kernel.org>
    Fixes: 554c0a3abf216 ("staging: Add rtl8723bs sdio wifi driver").
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Link: https://lore.kernel.org/r/20200210180235.21691-5-Larry.Finger@lwfinger.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4770de3ae41816338bd791da09cd8fc01b7e49a
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Mon Feb 10 12:02:31 2020 -0600

    staging: rtl8723bs: Fix potential security hole
    
    commit ac33597c0c0d1d819dccfe001bcd0acef7107e7c upstream.
    
    In routine rtw_hostapd_ioctl(), the user-controlled p->length is assumed
    to be at least the size of struct ieee_param size, but this assumption is
    never checked. This could result in out-of-bounds read/write on kernel
    heap in case a p->length less than the size of struct ieee_param is
    specified by the user. If p->length is allowed to be greater than the size
    of the struct, then a malicious user could be wasting kernel memory.
    Fixes commit 554c0a3abf216 ("0taging: Add rtl8723bs sdio wifi driver").
    
    Reported by: Pietro Oliva <pietroliva@gmail.com>
    Cc: Pietro Oliva <pietroliva@gmail.com>
    Cc: Stable <stable@vger.kernel.org>
    Fixes 554c0a3abf216 ("0taging: Add rtl8723bs sdio wifi driver").
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Link: https://lore.kernel.org/r/20200210180235.21691-3-Larry.Finger@lwfinger.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4eab56d96f1deb32437f439df55652998f86c12
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Mon Feb 10 12:02:32 2020 -0600

    staging: rtl8188eu: Fix potential overuse of kernel memory
    
    commit 4ddf8ab8d15ddbc52eefb44eb64e38466ce1f70f upstream.
    
    In routine wpa_supplicant_ioctl(), the user-controlled p->length is
    checked to be at least the size of struct ieee_param size, but the code
    does not detect the case where p->length is greater than the size
    of the struct, thus a malicious user could be wasting kernel memory.
    Fixes commit a2c60d42d97c ("Add files for new driver - part 16").
    
    Reported by: Pietro Oliva <pietroliva@gmail.com>
    Cc: Pietro Oliva <pietroliva@gmail.com>
    Cc: Stable <stable@vger.kernel.org>
    Fixes commit a2c60d42d97c ("Add files for new driver - part 16").
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Link: https://lore.kernel.org/r/20200210180235.21691-4-Larry.Finger@lwfinger.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a50bd9e2a6920bb06964d6385aad8e7a7a26db0
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Mon Feb 10 12:02:30 2020 -0600

    staging: rtl8188eu: Fix potential security hole
    
    commit 499c405b2b80bb3a04425ba3541d20305e014d3e upstream.
    
    In routine rtw_hostapd_ioctl(), the user-controlled p->length is assumed
    to be at least the size of struct ieee_param size, but this assumption is
    never checked. This could result in out-of-bounds read/write on kernel
    heap in case a p->length less than the size of struct ieee_param is
    specified by the user. If p->length is allowed to be greater than the size
    of the struct, then a malicious user could be wasting kernel memory.
    Fixes commit a2c60d42d97c ("Add files for new driver - part 16").
    
    Reported by: Pietro Oliva <pietroliva@gmail.com>
    Cc: Pietro Oliva <pietroliva@gmail.com>
    Cc: Stable <stable@vger.kernel.org>
    Fixes: a2c60d42d97c ("staging: r8188eu: Add files for new driver - part 16")
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Link: https://lore.kernel.org/r/20200210180235.21691-2-Larry.Finger@lwfinger.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d59f6a6e35b7749a31dbf37a198e9dee2a62a709
Author: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
Date:   Mon Jan 27 19:30:46 2020 +0000

    usb: dwc3: gadget: Check for IOC/LST bit in TRB->ctrl fields
    
    commit 5ee858975b13a9b40db00f456989a689fdbb296c upstream.
    
    The current code in dwc3_gadget_ep_reclaim_completed_trb() will
    check for IOC/LST bit in the event->status and returns if
    IOC/LST bit is set. This logic doesn't work if multiple TRBs
    are queued per request and the IOC/LST bit is set on the last
    TRB of that request.
    
    Consider an example where a queued request has multiple queued
    TRBs and IOC/LST bit is set only for the last TRB. In this case,
    the core generates XferComplete/XferInProgress events only for
    the last TRB (since IOC/LST are set only for the last TRB). As
    per the logic in dwc3_gadget_ep_reclaim_completed_trb()
    event->status is checked for IOC/LST bit and returns on the
    first TRB. This leaves the remaining TRBs left unhandled.
    
    Similarly, if the gadget function enqueues an unaligned request
    with sglist already in it, it should fail the same way, since we
    will append another TRB to something that already uses more than
    one TRB.
    
    To aviod this, this patch changes the code to check for IOC/LST
    bits in TRB->ctrl instead.
    
    At a practical level, this patch resolves USB transfer stalls seen
    with adb on dwc3 based HiKey960 after functionfs gadget added
    scatter-gather support around v4.20.
    
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Yang Fei <fei.yang@intel.com>
    Cc: Thinh Nguyen <thinhn@synopsys.com>
    Cc: Tejas Joglekar <tejas.joglekar@synopsys.com>
    Cc: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
    Cc: Jack Pham <jackp@codeaurora.org>
    Cc: Todd Kjos <tkjos@google.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Linux USB List <linux-usb@vger.kernel.org>
    Cc: stable <stable@vger.kernel.org>
    Tested-by: Tejas Joglekar <tejas.joglekar@synopsys.com>
    Reviewed-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
    [jstultz: forward ported to mainline, reworded commit log, reworked
     to only check trb->ctrl as suggested by Felipe]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c787444891a43008d310580eafc0fcd0bd103c01
Author: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Date:   Tue Jan 21 14:17:07 2020 +0400

    usb: dwc2: Fix SET/CLEAR_FEATURE and GET_STATUS flows
    
    commit 9a0d6f7c0a83844baae1d6d85482863d2bf3b7a7 upstream.
    
    SET/CLEAR_FEATURE for Remote Wakeup allowance not handled correctly.
    GET_STATUS handling provided not correct data on DATA Stage.
    Issue seen when gadget's dr_mode set to "otg" mode and connected
    to MacOS.
    Both are fixed and tested using USBCV Ch.9 tests.
    
    Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
    Fixes: fa389a6d7726 ("usb: dwc2: gadget: Add remote_wakeup_allowed flag")
    Tested-by: Jack Mitchell <ml@embed.me.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cfda0c9c9661415dbbb73f1b0942fa4a44b797f
Author: Hardik Gajjar <hgajjar@de.adit-jv.com>
Date:   Thu Feb 6 12:49:23 2020 +0100

    USB: hub: Fix the broken detection of USB3 device in SMSC hub
    
    commit 1208f9e1d758c991b0a46a1bd60c616b906bbe27 upstream.
    
    Renesas R-Car H3ULCB + Kingfisher Infotainment Board is either not able
    to detect the USB3.0 mass storage devices or is detecting those as
    USB2.0 high speed devices.
    
    The explanation given by Renesas is that, due to a HW issue, the XHCI
    driver does not wake up after going to sleep on connecting a USB3.0
    device.
    
    In order to mitigate that, disable the auto-suspend feature
    specifically for SMSC hubs from hub_probe() function, as a quirk.
    
    Renesas Kingfisher Infotainment Board has two USB3.0 ports (CN2) which
    are connected via USB5534B 4-port SuperSpeed/Hi-Speed, low-power,
    configurable hub controller.
    
    [1] SanDisk USB 3.0 device detected as USB-2.0 before the patch
     [   74.036390] usb 5-1.1: new high-speed USB device number 4 using xhci-hcd
     [   74.061598] usb 5-1.1: New USB device found, idVendor=0781, idProduct=5581, bcdDevice= 1.00
     [   74.069976] usb 5-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
     [   74.077303] usb 5-1.1: Product: Ultra
     [   74.080980] usb 5-1.1: Manufacturer: SanDisk
     [   74.085263] usb 5-1.1: SerialNumber: 4C530001110208116550
    
    [2] SanDisk USB 3.0 device detected as USB-3.0 after the patch
     [   34.565078] usb 6-1.1: new SuperSpeed Gen 1 USB device number 3 using xhci-hcd
     [   34.588719] usb 6-1.1: New USB device found, idVendor=0781, idProduct=5581, bcdDevice= 1.00
     [   34.597098] usb 6-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
     [   34.604430] usb 6-1.1: Product: Ultra
     [   34.608110] usb 6-1.1: Manufacturer: SanDisk
     [   34.612397] usb 6-1.1: SerialNumber: 4C530001110208116550
    
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Hardik Gajjar <hgajjar@de.adit-jv.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1580989763-32291-1-git-send-email-hgajjar@de.adit-jv.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37d2eb43b64c3c24c6815860f9fcf4f7307df95b
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Jan 31 10:39:26 2020 -0500

    USB: hub: Don't record a connect-change event during reset-resume
    
    commit 8099f58f1ecddf4f374f4828a3dff8397c7cbd74 upstream.
    
    Paul Zimmerman reports that his USB Bluetooth adapter sometimes
    crashes following system resume, when it receives a
    Get-Device-Descriptor request while it is busy doing something else.
    
    Such a request was added by commit a4f55d8b8c14 ("usb: hub: Check
    device descriptor before resusciation").  It gets sent when the hub
    driver's work thread checks whether a connect-change event on an
    enabled port really indicates a new device has been connected, as
    opposed to an old device momentarily disconnecting and then
    reconnecting (which can happen with xHCI host controllers, since they
    automatically enable connected ports).
    
    The same kind of thing occurs when a port's power session is lost
    during system suspend.  When the system wakes up it sees a
    connect-change event on the port, and if the child device's
    persist_enabled flag was set then hub_activate() sets the device's
    reset_resume flag as well as the port's bit in hub->change_bits.  The
    reset-resume code then takes responsibility for checking that the same
    device is still attached to the port, and it does this as part of the
    device's resume pathway.  By the time the hub driver's work thread
    starts up again, the device has already been fully reinitialized and
    is busy doing its own thing.  There's no need for the work thread to
    do the same check a second time, and in fact this unnecessary check is
    what caused the problem that Paul observed.
    
    Note that performing the unnecessary check is not actually a bug.
    Devices are supposed to be able to send descriptors back to the host
    even when they are busy doing something else.  The underlying cause of
    Paul's problem lies in his Bluetooth adapter.  Nevertheless, we
    shouldn't perform the same check twice in a row -- and as a nice side
    benefit, removing the extra check allows the Bluetooth adapter to work
    more reliably.
    
    The work thread performs its check when it sees that the port's bit is
    set in hub->change_bits.  In this situation that bit is interpreted as
    though a connect-change event had occurred on the port _after_ the
    reset-resume, which is not what actually happened.
    
    One possible fix would be to make the reset-resume code clear the
    port's bit in hub->change_bits.  But it seems simpler to just avoid
    setting the bit during hub_activate() in the first place.  That's what
    this patch does.
    
    (Proving that the patch is correct when CONFIG_PM is disabled requires
    a little thought.  In that setting hub_activate() will be called only
    for initialization and resets, since there won't be any resumes or
    reset-resumes.  During initialization and hub resets the hub doesn't
    have any child devices, and so this code path never gets executed.)
    
    Reported-and-tested-by: Paul Zimmerman <pauldzim@gmail.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://marc.info/?t=157949360700001&r=1&w=2
    CC: David Heinzelmann <heinzelmann.david@gmail.com>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.2001311037460.1577-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit babaa26b7c1c853ba4ae91bda02b796de3fc4e11
Author: Richard Dodd <richard.o.dodd@gmail.com>
Date:   Wed Feb 12 14:22:18 2020 +0000

    USB: Fix novation SourceControl XL after suspend
    
    commit b692056db8ecc7f452b934f016c17348282b7699 upstream.
    
    Currently, the SourceControl will stay in power-down mode after resuming
    from suspend. This patch resets the device after suspend to power it up.
    
    Signed-off-by: Richard Dodd <richard.o.dodd@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200212142220.36892-1-richard.o.dodd@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2debc1717cf24cac9f5bd73ece4f54c50a7bccf8
Author: EJ Hsu <ejh@nvidia.com>
Date:   Thu Jan 30 01:25:06 2020 -0800

    usb: uas: fix a plug & unplug racing
    
    commit 3e99862c05a9caa5a27969f41566b428696f5a9a upstream.
    
    When a uas disk is plugged into an external hub, uas_probe()
    will be called by the hub thread to do the probe. It will
    first create a SCSI host and then do the scan for this host.
    During the scan, it will probe the LUN using SCSI INQUERY command
    which will be packed in the URB and submitted to uas disk.
    
    There might be a chance that this external hub with uas disk
    attached is unplugged during the scan. In this case, uas driver
    will fail to submit the URB (due to the NOTATTACHED state of uas
    device) and try to put this SCSI command back to request queue
    waiting for next chance to run.
    
    In normal case, this cycle will terminate when hub thread gets
    disconnection event and calls into uas_disconnect() accordingly.
    But in this case, uas_disconnect() will not be called because
    hub thread of external hub gets stuck waiting for the completion
    of this SCSI command. A deadlock happened.
    
    In this fix, uas will call scsi_scan_host() asynchronously to
    avoid the blocking of hub thread.
    
    Signed-off-by: EJ Hsu <ejh@nvidia.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200130092506.102760-1-ejh@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4db4761cfe1555c7ad0403a3e8cf3eb9c29e9327
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Feb 3 16:38:29 2020 +0100

    USB: quirks: blacklist duplicate ep on Sound Devices USBPre2
    
    commit bdd1b147b8026df0e4260b387026b251d888ed01 upstream.
    
    This device has a broken vendor-specific altsetting for interface 1,
    where endpoint 0x85 is declared as an isochronous endpoint despite being
    used by interface 2 for audio capture.
    
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x0926
      idProduct          0x0202
      bcdDevice            1.00
      iManufacturer           1 Sound Devices
      iProduct                2 USBPre2
      iSerial                 3 [...]
      bNumConfigurations      1
    
    [...]
    
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       3
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            5
              Transfer Type            Isochronous
              Synch Type               Asynchronous
              Usage Type               Data
            wMaxPacketSize     0x0126  1x 294 bytes
            bInterval               1
    
    [...]
    
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         1 Audio
          bInterfaceSubClass      2 Streaming
          bInterfaceProtocol      0
          iInterface              0
          AudioStreaming Interface Descriptor:
            bLength                 7
            bDescriptorType        36
            bDescriptorSubtype      1 (AS_GENERAL)
            bTerminalLink           4
            bDelay                  1 frames
            wFormatTag         0x0001 PCM
          AudioStreaming Interface Descriptor:
            bLength                26
            bDescriptorType        36
            bDescriptorSubtype      2 (FORMAT_TYPE)
            bFormatType             1 (FORMAT_TYPE_I)
            bNrChannels             2
            bSubframeSize           2
            bBitResolution         16
            bSamFreqType            6 Discrete
            tSamFreq[ 0]         8000
            tSamFreq[ 1]        16000
            tSamFreq[ 2]        24000
            tSamFreq[ 3]        32000
            tSamFreq[ 4]        44100
            tSamFreq[ 5]        48000
          Endpoint Descriptor:
            bLength                 9
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            5
              Transfer Type            Isochronous
              Synch Type               Asynchronous
              Usage Type               Data
            wMaxPacketSize     0x0126  1x 294 bytes
            bInterval               4
            bRefresh                0
            bSynchAddress           0
            AudioStreaming Endpoint Descriptor:
              bLength                 7
              bDescriptorType        37
              bDescriptorSubtype      1 (EP_GENERAL)
              bmAttributes         0x01
                Sampling Frequency
              bLockDelayUnits         2 Decoded PCM samples
              wLockDelay         0x0000
    
    Since commit 3e4f8e21c4f2 ("USB: core: fix check for duplicate
    endpoints") USB core ignores any duplicate endpoints found during
    descriptor parsing, but in this case we need to ignore the first
    instance in order to avoid breaking the audio capture interface.
    
    Fixes: 3e4f8e21c4f2 ("USB: core: fix check for duplicate endpoints")
    Cc: stable <stable@vger.kernel.org>
    Reported-by: edes <edes@gmx.net>
    Tested-by: edes <edes@gmx.net>
    Link: https://lore.kernel.org/r/20200201105829.5682c887@acme7.acmenet
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20200203153830.26394-3-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63d176ed148aa364b06341e35b4742e87cc2a194
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Feb 3 16:38:28 2020 +0100

    USB: core: add endpoint-blacklist quirk
    
    commit 73f8bda9b5dc1c69df2bc55c0cbb24461a6391a9 upstream.
    
    Add a new device quirk that can be used to blacklist endpoints.
    
    Since commit 3e4f8e21c4f2 ("USB: core: fix check for duplicate
    endpoints") USB core ignores any duplicate endpoints found during
    descriptor parsing.
    
    In order to handle devices where the first interfaces with duplicate
    endpoints are the ones that should have their endpoints ignored, we need
    to add a blacklist.
    
    Tested-by: edes <edes@gmx.net>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20200203153830.26394-2-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d74d5d042d421aa1e5b08af917f2ccba41a4fa6f
Author: Peter Chen <peter.chen@nxp.com>
Date:   Fri Nov 15 18:50:00 2019 +0200

    usb: host: xhci: update event ring dequeue pointer on purpose
    
    commit dc0ffbea5729a3abafa577ebfce87f18b79e294b upstream.
    
    On some situations, the software handles TRB events slower
    than adding TRBs, then xhci_handle_event can't return zero
    long time, the xHC will consider the event ring is full,
    and trigger "Event Ring Full" error, but in fact, the software
    has already finished lots of events, just no chance to
    update ERDP (event ring dequeue pointer).
    
    In this commit, we force update ERDP if half of TRBS_PER_SEGMENT
    events have handled to avoid "Event Ring Full" error.
    
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/1573836603-10871-2-git-send-email-mathias.nyman@linux.intel.com
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a2582dc62e91db7ed6a8a9484bc3513c784712a
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Feb 11 17:01:58 2020 +0200

    xhci: Fix memory leak when caching protocol extended capability PSI tables - take 2
    
    commit cf0ee7c60c89641f6e4d1d3c7867fe32b9e30300 upstream.
    
    xhci driver assumed that xHC controllers have at most one custom
    supported speed table (PSI) for all usb 3.x ports.
    Memory was allocated for one PSI table under the xhci hub structure.
    
    Turns out this is not the case, some controllers have a separate
    "supported protocol capability" entry with a PSI table for each port.
    This means each usb3 roothub port can in theory support different custom
    speeds.
    
    To solve this, cache all supported protocol capabilities with their PSI
    tables in an array, and add pointers to the xhci port structure so that
    every port points to its capability entry in the array.
    
    When creating the SuperSpeedPlus USB Device Capability BOS descriptor
    for the xhci USB 3.1 roothub we for now will use only data from the
    first USB 3.1 capable protocol capability entry in the array.
    This could be improved later, this patch focuses resolving
    the memory leak.
    
    Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Reported-by: Sajja Venkateswara Rao <VenkateswaraRao.Sajja@amd.com>
    Fixes: 47189098f8be ("xhci: parse xhci protocol speed ID list for usb 3.1 usage")
    Cc: stable <stable@vger.kernel.org> # v4.4+
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Link: https://lore.kernel.org/r/20200211150158.14475-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c8cde41a0c3ab6878e61b6bfda448781c178481
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Feb 10 15:45:52 2020 +0200

    xhci: fix runtime pm enabling for quirky Intel hosts
    
    commit 024d411e9c5d49eb96c825af52a3ce2682895676 upstream.
    
    Intel hosts that need the XHCI_PME_STUCK_QUIRK flag should enable
    runtime pm by calling xhci_pme_acpi_rtd3_enable() before
    usb_hcd_pci_probe() calls pci_dev_run_wake().
    Otherwise usage count for the device won't be decreased, and runtime
    suspend is prevented.
    
    usb_hcd_pci_probe() only decreases the usage count if device can
    generate run-time wake-up events, i.e. when pci_dev_run_wake()
    returns true.
    
    This issue was exposed by pci_dev_run_wake() change in
    commit 8feaec33b986 ("PCI / PM: Always check PME wakeup capability for
    runtime wakeup support")
    and should be backported to kernels with that change
    
    Cc: <stable@vger.kernel.org> # 4.13+
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200210134553.9144-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dce60e7efa97469498f835c931700922be5b763e
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Feb 10 15:45:50 2020 +0200

    xhci: Force Maximum Packet size for Full-speed bulk devices to valid range.
    
    commit f148b9f402ef002b57bcff3964d45abc8ffb6c3f upstream.
    
    A Full-speed bulk USB audio device (DJ-Tech CTRL) with a invalid Maximum
    Packet Size of 4 causes a xHC "Parameter Error" at enumeration.
    
    This is because valid Maximum packet sizes for Full-speed bulk endpoints
    are 8, 16, 32 and 64 bytes. Hosts are not required to support other values
    than these. See usb 2 specs section 5.8.3 for details.
    
    The device starts working after forcing the maximum packet size to 8.
    This is most likely the case with other devices as well, so force the
    maximum packet size to a valid range.
    
    Cc: stable@vger.kernel.org
    Reported-by: Rene D Obermueller <cmdrrdo@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200210134553.9144-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a9debf10ecb680e01913f6c42de67f6c1114529
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Tue Feb 4 19:34:02 2020 +0000

    staging: vt6656: fix sign of rx_dbm to bb_pre_ed_rssi.
    
    commit 93134df520f23f4e9998c425b8987edca7016817 upstream.
    
    bb_pre_ed_rssi is an u8 rx_dm always returns negative signed
    values add minus operator to always yield positive.
    
    fixes issue where rx sensitivity is always set to maximum because
    the unsigned numbers were always greater then 100.
    
    Fixes: 63b9907f58f1 ("staging: vt6656: mac80211 conversion: create rx function.")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/aceac98c-6e69-3ce1-dfec-2bf27b980221@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4307700608e43dcf9b8abf1ee74f68227e9c61a
Author: Suren Baghdasaryan <surenb@google.com>
Date:   Mon Jan 27 15:56:16 2020 -0800

    staging: android: ashmem: Disallow ashmem memory from being remapped
    
    commit 6d67b0290b4b84c477e6a2fc6e005e174d3c7786 upstream.
    
    When ashmem file is mmapped, the resulting vma->vm_file points to the
    backing shmem file with the generic fops that do not check ashmem
    permissions like fops of ashmem do. If an mremap is done on the ashmem
    region, then the permission checks will be skipped. Fix that by disallowing
    mapping operation on the backing shmem file.
    
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    Cc: stable <stable@vger.kernel.org> # 4.4,4.9,4.14,4.18,5.4
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Link: https://lore.kernel.org/r/20200127235616.48920-1-tkjos@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec9645f1a77eab98951944273754307e192e69ae
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Feb 10 11:07:21 2020 -0800

    vt: vt_ioctl: fix race in VT_RESIZEX
    
    commit 6cd1ed50efd88261298577cd92a14f2768eddeeb upstream.
    
    We need to make sure vc_cons[i].d is not NULL after grabbing
    console_lock(), or risk a crash.
    
    general protection fault, probably for non-canonical address 0xdffffc0000000068: 0000 [#1] PREEMPT SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000340-0x0000000000000347]
    CPU: 1 PID: 19462 Comm: syz-executor.5 Not tainted 5.5.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:vt_ioctl+0x1f96/0x26d0 drivers/tty/vt/vt_ioctl.c:883
    Code: 74 41 e8 bd a6 84 fd 48 89 d8 48 c1 e8 03 42 80 3c 28 00 0f 85 e4 04 00 00 48 8b 03 48 8d b8 40 03 00 00 48 89 fa 48 c1 ea 03 <42> 0f b6 14 2a 84 d2 74 09 80 fa 03 0f 8e b1 05 00 00 44 89 b8 40
    RSP: 0018:ffffc900086d7bb0 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: ffffffff8c34ee88 RCX: ffffc9001415c000
    RDX: 0000000000000068 RSI: ffffffff83f0e6e3 RDI: 0000000000000340
    RBP: ffffc900086d7cd0 R08: ffff888054ce0100 R09: fffffbfff16a2f6d
    R10: ffff888054ce0998 R11: ffff888054ce0100 R12: 000000000000001d
    R13: dffffc0000000000 R14: 1ffff920010daf79 R15: 000000000000ff7f
    FS:  00007f7d13c12700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ffd477e3c38 CR3: 0000000095d0a000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     tty_ioctl+0xa37/0x14f0 drivers/tty/tty_io.c:2660
     vfs_ioctl fs/ioctl.c:47 [inline]
     ksys_ioctl+0x123/0x180 fs/ioctl.c:763
     __do_sys_ioctl fs/ioctl.c:772 [inline]
     __se_sys_ioctl fs/ioctl.c:770 [inline]
     __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:770
     do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x45b399
    Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 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 b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f7d13c11c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007f7d13c126d4 RCX: 000000000045b399
    RDX: 0000000020000080 RSI: 000000000000560a RDI: 0000000000000003
    RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 0000000000000666 R14: 00000000004c7f04 R15: 000000000075bf2c
    Modules linked in:
    ---[ end trace 80970faf7a67eb77 ]---
    RIP: 0010:vt_ioctl+0x1f96/0x26d0 drivers/tty/vt/vt_ioctl.c:883
    Code: 74 41 e8 bd a6 84 fd 48 89 d8 48 c1 e8 03 42 80 3c 28 00 0f 85 e4 04 00 00 48 8b 03 48 8d b8 40 03 00 00 48 89 fa 48 c1 ea 03 <42> 0f b6 14 2a 84 d2 74 09 80 fa 03 0f 8e b1 05 00 00 44 89 b8 40
    RSP: 0018:ffffc900086d7bb0 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: ffffffff8c34ee88 RCX: ffffc9001415c000
    RDX: 0000000000000068 RSI: ffffffff83f0e6e3 RDI: 0000000000000340
    RBP: ffffc900086d7cd0 R08: ffff888054ce0100 R09: fffffbfff16a2f6d
    R10: ffff888054ce0998 R11: ffff888054ce0100 R12: 000000000000001d
    R13: dffffc0000000000 R14: 1ffff920010daf79 R15: 000000000000ff7f
    FS:  00007f7d13c12700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ffd477e3c38 CR3: 0000000095d0a000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: stable <stable@vger.kernel.org>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20200210190721.200418-1-edumazet@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abbf24fc5a049ff81049f566339516db98b68ab8
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Mon Feb 10 09:11:30 2020 +0100

    vt: selection, handle pending signals in paste_selection
    
    commit 687bff0cd08f790d540cfb7b2349f0d876cdddec upstream.
    
    When pasting a selection to a vt, the task is set as INTERRUPTIBLE while
    waiting for a tty to unthrottle. But signals are not handled at all.
    Normally, this is not a problem as tty_ldisc_receive_buf receives all
    the goods and a user has no reason to interrupt the task.
    
    There are two scenarios where this matters:
    1) when the tty is throttled and a signal is sent to the process, it
       spins on a CPU until the tty is unthrottled. schedule() does not
       really echedule, but returns immediately, of course.
    2) when the sel_buffer becomes invalid, KASAN prevents any reads from it
       and the loop simply does not proceed and spins forever (causing the
       tty to throttle, but the code never sleeps, the same as above). This
       sometimes happens as there is a race in the sel_buffer handling code.
    
    So add signal handling to this ioctl (TIOCL_PASTESEL) and return -EINTR
    in case a signal is pending.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200210081131.23572-1-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4878c57a1af388be997de0ede71d9ec5782f852
Author: Nicolas Pitre <nico@fluxnic.net>
Date:   Tue Jan 28 12:50:33 2020 -0500

    vt: fix scrollback flushing on background consoles
    
    commit 3f4ef485be9d54040b695f32ec76d0f1ea50bbf3 upstream.
    
    Commit a6dbe4427559 ("vt: perform safe console erase in the right
    order") provided fixes to an earlier commit by gathering all console
    scrollback flushing operations in a function of its own. This includes
    the invocation of vc_sw->con_switch() as previously done through a
    update_screen() call. That commit failed to carry over the
    con_is_visible() conditional though, as well as cursor handling, which
    caused problems when "\e[3J" was written to a background console.
    
    One could argue for preserving the call to update_screen(). However
    this does far more than we need, and it is best to remove scrollback
    assumptions from it. Instead let's gather the minimum needed to actually
    perform scrollback flushing properly in that one place.
    
    While at it, let's document the vc_sw->con_switch() side effect being
    relied upon.
    
    Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
    Reported-and-tested-by: Lukas Wunner <lukas@wunner.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/nycvar.YSQ.7.76.2001281205560.1655@knanqh.ubzr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8fd87c53a1509162b910cec91c0c46753c58f9a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Feb 21 12:43:35 2020 -0800

    floppy: check FDC index for errors before assigning it
    
    commit 2e90ca68b0d2f5548804f22f0dd61145516171e3 upstream.
    
    Jordy Zomer reported a KASAN out-of-bounds read in the floppy driver in
    wait_til_ready().
    
    Which on the face of it can't happen, since as Willy Tarreau points out,
    the function does no particular memory access.  Except through the FDCS
    macro, which just indexes a static allocation through teh current fdc,
    which is always checked against N_FDC.
    
    Except the checking happens after we've already assigned the value.
    
    The floppy driver is a disgrace (a lot of it going back to my original
    horrd "design"), and has no real maintainer.  Nobody has the hardware,
    and nobody really cares.  But it still gets used in virtual environment
    because it's one of those things that everybody supports.
    
    The whole thing should be re-written, or at least parts of it should be
    seriously cleaned up.  The 'current fdc' index, which is used by the
    FDCS macro, and which is often shadowed by a local 'fdc' variable, is a
    prime example of how not to write code.
    
    But because nobody has the hardware or the motivation, let's just fix up
    the immediate problem with a nasty band-aid: test the fdc index before
    actually assigning it to the static 'fdc' variable.
    
    Reported-by: Jordy Zomer <jordy@simplyhacker.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acb903aa807c3ed2ab3d94dff487298d514ee01e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Feb 14 08:11:48 2020 -0800

    USB: misc: iowarrior: add support for the 100 device
    
    commit bab5417f5f0118ce914bc5b2f8381e959e891155 upstream.
    
    Add a new device id for the 100 devie.  It has 4 interfaces like the 28
    and 28L devices but a larger endpoint so more I/O pins.
    
    Cc: Christoph Jung <jung@codemercs.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200214161148.GA3963518@kroah.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1513520b60b741fa35154563bbbe1289886f6f93
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Feb 11 20:04:22 2020 -0800

    USB: misc: iowarrior: add support for the 28 and 28L devices
    
    commit 5f6f8da2d7b5a431d3f391d0d73ace8edfb42af7 upstream.
    
    Add new device ids for the 28 and 28L devices.  These have 4 interfaces
    instead of 2, but the driver binds the same, so the driver changes are
    minimal.
    
    Cc: Christoph Jung <jung@codemercs.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200212040422.2991-2-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae38841b006dcc1fe395a9baccf9757a04818e05
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Feb 11 20:04:21 2020 -0800

    USB: misc: iowarrior: add support for 2 OEMed devices
    
    commit 461d8deb26a7d70254bc0391feb4fd8a95e674e8 upstream.
    
    Add support for two OEM devices that are identical to existing
    IO-Warrior devices, except for the USB device id.
    
    Cc: Christoph Jung <jung@codemercs.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200212040422.2991-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 768033cf4729b9da85594c93258ad3b438b4564b
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Thu Feb 13 12:56:04 2020 +0300

    thunderbolt: Prevent crash if non-active NVMem file is read
    
    commit 03cd45d2e219301880cabc357e3cf478a500080f upstream.
    
    The driver does not populate .reg_read callback for the non-active NVMem
    because the file is supposed to be write-only. However, it turns out
    NVMem subsystem does not yet support this and expects that the .reg_read
    callback is provided. If user reads the binary attribute it triggers
    NULL pointer dereference like this one:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000000
      ...
      Call Trace:
       bin_attr_nvmem_read+0x64/0x80
       kernfs_fop_read+0xa7/0x180
       vfs_read+0xbd/0x170
       ksys_read+0x5a/0xd0
       do_syscall_64+0x43/0x150
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fix this in the driver by providing .reg_read callback that always
    returns an error.
    
    Reported-by: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>
    Fixes: e6b245ccd524 ("thunderbolt: Add support for host and device NVM firmware upgrade")
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200213095604.1074-1-mika.westerberg@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7a5408e4b6dc3796c9dbb0677d32fce19e715c9
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Tue Aug 20 00:33:54 2019 -0500

    ecryptfs: fix a memory leak bug in ecryptfs_init_messaging()
    
    commit b4a81b87a4cfe2bb26a4a943b748d96a43ef20e8 upstream.
    
    In ecryptfs_init_messaging(), if the allocation for 'ecryptfs_msg_ctx_arr'
    fails, the previously allocated 'ecryptfs_daemon_hash' is not deallocated,
    leading to a memory leak bug. To fix this issue, free
    'ecryptfs_daemon_hash' before returning the error.
    
    Cc: stable@vger.kernel.org
    Fixes: 88b4a07e6610 ("[PATCH] eCryptfs: Public key transport mechanism")
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70457d99cd347de4fb8c6012757515d43b5bcf20
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Tue Aug 20 00:16:40 2019 -0500

    ecryptfs: fix a memory leak bug in parse_tag_1_packet()
    
    commit fe2e082f5da5b4a0a92ae32978f81507ef37ec66 upstream.
    
    In parse_tag_1_packet(), if tag 1 packet contains a key larger than
    ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES, no cleanup is executed, leading to a
    memory leak on the allocated 'auth_tok_list_item'. To fix this issue, go to
    the label 'out_free' to perform the cleanup work.
    
    Cc: stable@vger.kernel.org
    Fixes: dddfa461fc89 ("[PATCH] eCryptfs: Public key; packet management")
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e95b050a519032f8aedb861f56e57df6452b5287
Author: Samuel Holland <samuel@sholland.org>
Date:   Mon Feb 17 00:42:22 2020 -0600

    ASoC: sun8i-codec: Fix setting DAI data format
    
    commit 96781fd941b39e1f78098009344ebcd7af861c67 upstream.
    
    Use the correct mask for this two-bit field. This fixes setting the DAI
    data format to RIGHT_J or DSP_A.
    
    Fixes: 36c684936fae ("ASoC: Add sun8i digital audio codec")
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Acked-by: Chen-Yu Tsai <wens@csie.org>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20200217064250.15516-7-samuel@sholland.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 276bfd97bd8c4269c2c9722f3a4f5af34777bd31
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 18 09:09:15 2020 +0100

    ALSA: hda/realtek - Apply quirk for yet another MSI laptop
    
    commit cc5049ae4d457194796f854eb2e38b9727ad8c2d upstream.
    
    MSI GP65 laptop with SSID 1462:1293 requires the same quirk as other
    MSI models.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=204159
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200218080915.3433-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8aad237520cefbc8bba1500aacab25f67874a50c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 17 16:19:47 2020 +0100

    ALSA: hda/realtek - Apply quirk for MSI GP63, too
    
    commit a655e2b107d463ce2745188ce050d07daed09a71 upstream.
    
    The same quirk that was applied to MSI GL73 is needed for MSI GP63,
    too.  Adding the entry with the SSID 1462:1228.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206503
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200217151947.17528-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c3265e1b297e58afc03f4b2ef4629907b3c880f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 18 10:14:09 2020 +0100

    ALSA: hda: Use scnprintf() for printing texts for sysfs/procfs
    
    commit 44eeb081b8630bb3ad3cd381d1ae1831463e48bb upstream.
    
    Some code in HD-audio driver calls snprintf() in a loop and still
    expects that the return value were actually written size, while
    snprintf() returns the expected would-be length instead.  When the
    given buffer limit were small, this leads to a buffer overflow.
    
    Use scnprintf() for addressing those issues.  It returns the actually
    written size unlike snprintf().
    
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200218091409.27162-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef2646fcfc40a666a7712fd55bcc488e66ea2486
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Tue Feb 18 18:12:41 2020 +0000

    iommu/qcom: Fix bogus detach logic
    
    commit faf305c51aeabd1ea2d7131e798ef5f55f4a7750 upstream.
    
    Currently, the implementation of qcom_iommu_domain_free() is guaranteed
    to do one of two things: WARN() and leak everything, or dereference NULL
    and crash. That alone is terrible, but in fact the whole idea of trying
    to track the liveness of a domain via the qcom_domain->iommu pointer as
    a sanity check is full of fundamentally flawed assumptions. Make things
    robust and actually functional by not trying to be quite so clever.
    
    Reported-by: Brian Masney <masneyb@onstation.org>
    Tested-by: Brian Masney <masneyb@onstation.org>
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Fixes: 0ae349a0f33f ("iommu/qcom: Add qcom_iommu")
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Tested-by: Stephan Gerhold <stephan@gerhold.net>
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>