commit 9c5931b65a7b58ddeaf1530f1c4b515ba8640f8d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jan 16 22:04:38 2019 +0100

    Linux 4.19.16

commit 7a1b9b76bac76498657b9322164957c2a50c573b
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Dec 10 17:53:35 2018 +0000

    Btrfs: use nofs context when initializing security xattrs to avoid deadlock
    
    commit 827aa18e7b903c5ff3b3cd8fec328a99b1dbd411 upstream.
    
    When initializing the security xattrs, we are holding a transaction handle
    therefore we need to use a GFP_NOFS context in order to avoid a deadlock
    with reclaim in case it's triggered.
    
    Fixes: 39a27ec1004e8 ("btrfs: use GFP_KERNEL for xattr and acl allocations")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.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 79aa5c0daa5c7a2c4de945f4964702f3fcb6f8a3
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Nov 19 14:15:36 2018 +0000

    Btrfs: fix deadlock when enabling quotas due to concurrent snapshot creation
    
    commit 9a6f209e36500efac51528132a3e3083586eda5f upstream.
    
    If the quota enable and snapshot creation ioctls are called concurrently
    we can get into a deadlock where the task enabling quotas will deadlock
    on the fs_info->qgroup_ioctl_lock mutex because it attempts to lock it
    twice, or the task creating a snapshot tries to commit the transaction
    while the task enabling quota waits for the former task to commit the
    transaction while holding the mutex. The following time diagrams show how
    both cases happen.
    
    First scenario:
    
               CPU 0                                    CPU 1
    
     btrfs_ioctl()
      btrfs_ioctl_quota_ctl()
       btrfs_quota_enable()
        mutex_lock(fs_info->qgroup_ioctl_lock)
        btrfs_start_transaction()
    
                                                 btrfs_ioctl()
                                                  btrfs_ioctl_snap_create_v2
                                                   create_snapshot()
                                                    --> adds snapshot to the
                                                        list pending_snapshots
                                                        of the current
                                                        transaction
    
        btrfs_commit_transaction()
         create_pending_snapshots()
           create_pending_snapshot()
            qgroup_account_snapshot()
             btrfs_qgroup_inherit()
               mutex_lock(fs_info->qgroup_ioctl_lock)
                --> deadlock, mutex already locked
                    by this task at
                    btrfs_quota_enable()
    
    Second scenario:
    
               CPU 0                                    CPU 1
    
     btrfs_ioctl()
      btrfs_ioctl_quota_ctl()
       btrfs_quota_enable()
        mutex_lock(fs_info->qgroup_ioctl_lock)
        btrfs_start_transaction()
    
                                                 btrfs_ioctl()
                                                  btrfs_ioctl_snap_create_v2
                                                   create_snapshot()
                                                    --> adds snapshot to the
                                                        list pending_snapshots
                                                        of the current
                                                        transaction
    
                                                    btrfs_commit_transaction()
                                                     --> waits for task at
                                                         CPU 0 to release
                                                         its transaction
                                                         handle
    
        btrfs_commit_transaction()
         --> sees another task started
             the transaction commit first
         --> releases its transaction
             handle
         --> waits for the transaction
             commit to be completed by
             the task at CPU 1
    
                                                     create_pending_snapshot()
                                                      qgroup_account_snapshot()
                                                       btrfs_qgroup_inherit()
                                                        mutex_lock(fs_info->qgroup_ioctl_lock)
                                                         --> deadlock, task at CPU 0
                                                             has the mutex locked but
                                                             it is waiting for us to
                                                             finish the transaction
                                                             commit
    
    So fix this by setting the quota enabled flag in fs_info after committing
    the transaction at btrfs_quota_enable(). This ends up serializing quota
    enable and snapshot creation as if the snapshot creation happened just
    before the quota enable request. The quota rescan task, scheduled after
    committing the transaction in btrfs_quote_enable(), will do the accounting.
    
    Fixes: 6426c7ad697d ("btrfs: qgroup: Fix qgroup accounting when creating snapshot")
    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 829431a2a5a8495ee3a144de1be12e34dec45f91
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Nov 19 09:48:12 2018 +0000

    Btrfs: fix access to available allocation bits when starting balance
    
    commit 5a8067c0d17feb7579db0476191417b441a8996e upstream.
    
    The available allocation bits members from struct btrfs_fs_info are
    protected by a sequence lock, and when starting balance we access them
    incorrectly in two different ways:
    
    1) In the read sequence lock loop at btrfs_balance() we use the values we
       read from fs_info->avail_*_alloc_bits and we can immediately do actions
       that have side effects and can not be undone (printing a message and
       jumping to a label). This is wrong because a retry might be needed, so
       our actions must not have side effects and must be repeatable as long
       as read_seqretry() returns a non-zero value. In other words, we were
       essentially ignoring the sequence lock;
    
    2) Right below the read sequence lock loop, we were reading the values
       from avail_metadata_alloc_bits and avail_data_alloc_bits without any
       protection from concurrent writers, that is, reading them outside of
       the read sequence lock critical section.
    
    So fix this by making sure we only read the available allocation bits
    while in a read sequence lock critical section and that what we do in the
    critical section is repeatable (has nothing that can not be undone) so
    that any eventual retry that is needed is handled properly.
    
    Fixes: de98ced9e743 ("Btrfs: use seqlock to protect fs_info->avail_{data, metadata, system}_alloc_bits")
    Fixes: 14506127979a ("btrfs: fix a bogus warning when converting only data or metadata")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.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 6c9a2046297f7210498d47de9e348fe93270b099
Author: Will Deacon <will.deacon@arm.com>
Date:   Thu Jan 3 18:00:39 2019 +0000

    arm64: compat: Don't pull syscall number from regs in arm_compat_syscall
    
    commit 53290432145a8eb143fe29e06e9c1465d43dc723 upstream.
    
    The syscall number may have been changed by a tracer, so we should pass
    the actual number in from the caller instead of pulling it from the
    saved r7 value directly.
    
    Cc: <stable@vger.kernel.org>
    Cc: Pi-Hsun Shih <pihsun@chromium.org>
    Reviewed-by: Dave Martin <Dave.Martin@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f14f446d115f022492f574bb02cff287b91915d
Author: Christoffer Dall <christoffer.dall@arm.com>
Date:   Tue Dec 11 13:23:57 2018 +0100

    KVM: arm/arm64: Fix VMID alloc race by reverting to lock-less
    
    commit fb544d1ca65a89f7a3895f7531221ceeed74ada7 upstream.
    
    We recently addressed a VMID generation race by introducing a read/write
    lock around accesses and updates to the vmid generation values.
    
    However, kvm_arch_vcpu_ioctl_run() also calls need_new_vmid_gen() but
    does so without taking the read lock.
    
    As far as I can tell, this can lead to the same kind of race:
    
      VM 0, VCPU 0                  VM 0, VCPU 1
      ------------                  ------------
      update_vttbr (vmid 254)
                                    update_vttbr (vmid 1) // roll over
                                    read_lock(kvm_vmid_lock);
                                    force_vm_exit()
      local_irq_disable
      need_new_vmid_gen == false //because vmid gen matches
    
      enter_guest (vmid 254)
                                    kvm_arch.vttbr = <PGD>:<VMID 1>
                                    read_unlock(kvm_vmid_lock);
    
                                    enter_guest (vmid 1)
    
    Which results in running two VCPUs in the same VM with different VMIDs
    and (even worse) other VCPUs from other VMs could now allocate clashing
    VMID 254 from the new generation as long as VCPU 0 is not exiting.
    
    Attempt to solve this by making sure vttbr is updated before another CPU
    can observe the updated VMID generation.
    
    Cc: stable@vger.kernel.org
    Fixes: f0cf47d939d0 "KVM: arm/arm64: Close VMID generation race"
    Reviewed-by: Julien Thierry <julien.thierry@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44e7bab39f877c9c095bfaaee943b0807574a7f7
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Mon Dec 24 14:44:52 2018 +0300

    sunrpc: use-after-free in svc_process_common()
    
    commit d4b09acf924b84bae77cad090a9d108e70b43643 upstream.
    
    if node have NFSv41+ mounts inside several net namespaces
    it can lead to use-after-free in svc_process_common()
    
    svc_process_common()
            /* Setup reply header */
            rqstp->rq_xprt->xpt_ops->xpo_prep_reply_hdr(rqstp); <<< HERE
    
    svc_process_common() can use incorrect rqstp->rq_xprt,
    its caller function bc_svc_process() takes it from serv->sv_bc_xprt.
    The problem is that serv is global structure but sv_bc_xprt
    is assigned per-netnamespace.
    
    According to Trond, the whole "let's set up rqstp->rq_xprt
    for the back channel" is nothing but a giant hack in order
    to work around the fact that svc_process_common() uses it
    to find the xpt_ops, and perform a couple of (meaningless
    for the back channel) tests of xpt_flags.
    
    All we really need in svc_process_common() is to be able to run
    rqstp->rq_xprt->xpt_ops->xpo_prep_reply_hdr()
    
    Bruce J Fields points that this xpo_prep_reply_hdr() call
    is an awfully roundabout way just to do "svc_putnl(resv, 0);"
    in the tcp case.
    
    This patch does not initialiuze rqstp->rq_xprt in bc_svc_process(),
    now it calls svc_process_common() with rqstp->rq_xprt = NULL.
    
    To adjust reply header svc_process_common() just check
    rqstp->rq_prot and calls svc_tcp_prep_reply_hdr() for tcp case.
    
    To handle rqstp->rq_xprt = NULL case in functions called from
    svc_process_common() patch intruduces net namespace pointer
    svc_rqst->rq_bc_net and adjust SVC_NET() definition.
    Some other function was also adopted to properly handle described case.
    
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Cc: stable@vger.kernel.org
    Fixes: 23c20ecd4475 ("NFS: callback up - users counting cleanup")
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    v2: added lost extern svc_tcp_prep_reply_hdr()
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 160f79c0a03996db3a3334ddd0ee21ce94973a79
Author: Jan Stancek <jstancek@redhat.com>
Date:   Tue Jan 8 15:23:28 2019 -0800

    mm: page_mapped: don't assume compound page is huge or THP
    
    commit 8ab88c7169b7fba98812ead6524b9d05bc76cf00 upstream.
    
    LTP proc01 testcase has been observed to rarely trigger crashes
    on arm64:
        page_mapped+0x78/0xb4
        stable_page_flags+0x27c/0x338
        kpageflags_read+0xfc/0x164
        proc_reg_read+0x7c/0xb8
        __vfs_read+0x58/0x178
        vfs_read+0x90/0x14c
        SyS_read+0x60/0xc0
    
    The issue is that page_mapped() assumes that if compound page is not
    huge, then it must be THP.  But if this is 'normal' compound page
    (COMPOUND_PAGE_DTOR), then following loop can keep running (for
    HPAGE_PMD_NR iterations) until it tries to read from memory that isn't
    mapped and triggers a panic:
    
            for (i = 0; i < hpage_nr_pages(page); i++) {
                    if (atomic_read(&page[i]._mapcount) >= 0)
                            return true;
            }
    
    I could replicate this on x86 (v4.20-rc4-98-g60b548237fed) only
    with a custom kernel module [1] which:
     - allocates compound page (PAGEC) of order 1
     - allocates 2 normal pages (COPY), which are initialized to 0xff (to
       satisfy _mapcount >= 0)
     - 2 PAGEC page structs are copied to address of first COPY page
     - second page of COPY is marked as not present
     - call to page_mapped(COPY) now triggers fault on access to 2nd COPY
       page at offset 0x30 (_mapcount)
    
    [1] https://github.com/jstancek/reproducers/blob/master/kernel/page_mapped_crash/repro.c
    
    Fix the loop to iterate for "1 << compound_order" pages.
    
    Kirrill said "IIRC, sound subsystem can producuce custom mapped compound
    pages".
    
    Link: http://lkml.kernel.org/r/c440d69879e34209feba21e12d236d06bc0a25db.1543577156.git.jstancek@redhat.com
    Fixes: e1534ae95004 ("mm: differentiate page_mapped() from page_mapcount() for compound pages")
    Signed-off-by: Jan Stancek <jstancek@redhat.com>
    Debugged-by: Laszlo Ersek <lersek@redhat.com>
    Suggested-by: "Kirill A. Shutemov" <kirill@shutemov.name>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.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 5dc41af3d19e94253c95f62e8ac01158dd8df078
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Dec 31 22:34:31 2018 -0500

    ext4: fix special inode number checks in __ext4_iget()
    
    commit 191ce17876c9367819c4b0a25b503c0f6d9054d8 upstream.
    
    The check for special (reserved) inode number checks in __ext4_iget()
    was broken by commit 8a363970d1dc: ("ext4: avoid declaring fs
    inconsistent due to invalid file handles").  This was caused by a
    botched reversal of the sense of the flag now known as
    EXT4_IGET_SPECIAL (when it was previously named EXT4_IGET_NORMAL).
    Fix the logic appropriately.
    
    Fixes: 8a363970d1dc ("ext4: avoid declaring fs inconsistent...")
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb80ad0dc3924f193eaa752e9da2e9384f58e627
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Dec 31 00:11:07 2018 -0500

    ext4: track writeback errors using the generic tracking infrastructure
    
    commit 95cb67138746451cc84cf8e516e14989746e93b0 upstream.
    
    We already using mapping_set_error() in fs/ext4/page_io.c, so all we
    need to do is to use file_check_and_advance_wb_err() when handling
    fsync() requests in ext4_sync_file().
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da38a1b47b02b01f96976bbf75466bc1ae519d76
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Dec 31 00:10:48 2018 -0500

    ext4: use ext4_write_inode() when fsyncing w/o a journal
    
    commit ad211f3e94b314a910d4af03178a0b52a7d1ee0a upstream.
    
    In no-journal mode, we previously used __generic_file_fsync() in
    no-journal mode.  This triggers a lockdep warning, and in addition,
    it's not safe to depend on the inode writeback mechanism in the case
    ext4.  We can solve both problems by calling ext4_write_inode()
    directly.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01db6e5cf81f905028de903f2290c10172226043
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sun Dec 30 23:20:39 2018 -0500

    ext4: avoid kernel warning when writing the superblock to a dead device
    
    commit e86807862e6880809f191c4cea7f88a489f0ed34 upstream.
    
    The xfstests generic/475 test switches the underlying device with
    dm-error while running a stress test.  This results in a large number
    of file system errors, and since we can't lock the buffer head when
    marking the superblock dirty in the ext4_grp_locked_error() case, it's
    possible the superblock to be !buffer_uptodate() without
    buffer_write_io_error() being true.
    
    We need to set buffer_uptodate() before we call mark_buffer_dirty() or
    this will trigger a WARN_ON.  It's safe to do this since the
    superblock must have been properly read into memory or the mount would
    have been successful.  So if buffer_uptodate() is not set, we can
    safely assume that this happened due to a failed attempt to write the
    superblock.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 926cdac10439eda9ab7a11fd5f28eda203ccbb26
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue Dec 25 00:56:33 2018 -0500

    ext4: fix a potential fiemap/page fault deadlock w/ inline_data
    
    commit 2b08b1f12cd664dc7d5c84ead9ff25ae97ad5491 upstream.
    
    The ext4_inline_data_fiemap() function calls fiemap_fill_next_extent()
    while still holding the xattr semaphore.  This is not necessary and it
    triggers a circular lockdep warning.  This is because
    fiemap_fill_next_extent() could trigger a page fault when it writes
    into page which triggers a page fault.  If that page is mmaped from
    the inline file in question, this could very well result in a
    deadlock.
    
    This problem can be reproduced using generic/519 with a file system
    configuration which has the inline_data feature enabled.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c2ea25e1364d9cdcbc7c44a92dccaf86e799f3a
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Dec 24 20:27:08 2018 -0500

    ext4: make sure enough credits are reserved for dioread_nolock writes
    
    commit 812c0cab2c0dfad977605dbadf9148490ca5d93f upstream.
    
    There are enough credits reserved for most dioread_nolock writes;
    however, if the extent tree is sufficiently deep, and/or quota is
    enabled, the code was not allowing for all eventualities when
    reserving journal credits for the unwritten extent conversion.
    
    This problem can be seen using xfstests ext4/034:
    
       WARNING: CPU: 1 PID: 257 at fs/ext4/ext4_jbd2.c:271 __ext4_handle_dirty_metadata+0x10c/0x180
       Workqueue: ext4-rsv-conversion ext4_end_io_rsv_work
       RIP: 0010:__ext4_handle_dirty_metadata+0x10c/0x180
            ...
       EXT4-fs: ext4_free_blocks:4938: aborting transaction: error 28 in __ext4_handle_dirty_metadata
       EXT4: jbd2_journal_dirty_metadata failed: handle type 11 started at line 4921, credits 4/0, errcode -28
       EXT4-fs error (device dm-1) in ext4_free_blocks:4950: error 28
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 997255351a29c1a5c8ad0456877c587301f0dc51
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Tue Jan 8 19:47:38 2019 +0100

    rbd: don't return 0 on unmap if RBD_DEV_FLAG_REMOVING is set
    
    commit 85f5a4d666fd9be73856ed16bb36c5af5b406b29 upstream.
    
    There is a window between when RBD_DEV_FLAG_REMOVING is set and when
    the device is removed from rbd_dev_list.  During this window, we set
    "already" and return 0.
    
    Returning 0 from write(2) can confuse userspace tools because
    0 indicates that nothing was written.  In particular, "rbd unmap"
    will retry the write multiple times a second:
    
      10:28:05.463299 write(4, "0", 1)        = 0
      10:28:05.463509 write(4, "0", 1)        = 0
      10:28:05.463720 write(4, "0", 1)        = 0
      10:28:05.463942 write(4, "0", 1)        = 0
      10:28:05.464155 write(4, "0", 1)        = 0
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Tested-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7ca8e94dbb5cf81de178d8658d7861b1cf15444
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Jan 8 16:11:28 2019 -0500

    drm/amdgpu: Don't fail resume process if resuming atomic state fails
    
    commit 2d1af6a11cb9d88e0e3dd10258904c437fe1b315 upstream.
    
    This is an ugly one unfortunately. Currently, all DRM drivers supporting
    atomic modesetting will save the state that userspace had set before
    suspending, then attempt to restore that state on resume. This probably
    worked very well at one point, like many other things, until DP MST came
    into the picture. While it's easy to restore state on normal display
    connectors that were disconnected during suspend regardless of their
    state post-resume, this can't really be done with MST because of the
    fact that setting up a downstream sink requires performing sideband
    transactions between the source and the MST hub, sending out the ACT
    packets, etc.
    
    Because of this, there isn't really a guarantee that we can restore the
    atomic state we had before suspend once we've resumed. This sucks pretty
    bad, but so far I haven't run into any compositors that this actually
    causes serious issues with. Most compositors will notice the hotplug we
    send afterwards, and then reprobe state.
    
    Since nouveau and i915 also don't fail the suspend/resume process due to
    failing to restore the atomic state, let's make amdgpu match this
    behavior. Better to resume the GPU properly, then to stop the process
    half way because of a potentially unavoidable atomic commit failure.
    
    Eventually, we'll have a real fix for this problem on the DRM level. But
    we've got some more important low-hanging fruit to deal with first.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Cc: Jerry Zuo <Jerry.Zuo@amd.com>
    Cc: <stable@vger.kernel.org> # v4.15+
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108211133.32564-3-lyude@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f05d02b3b4c8f50393373efa05ab31878fb7635b
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Jan 8 16:11:27 2019 -0500

    drm/amdgpu: Don't ignore rc from drm_dp_mst_topology_mgr_resume()
    
    commit fe7553bef8d676d1d8b40666868b33ec39b9df5d upstream.
    
    drm_dp_mst_topology_mgr_resume() returns whether or not it managed to
    find the topology in question after a suspend resume cycle, and the
    driver is supposed to check this value and disable MST accordingly if
    it's gone-in addition to sending a hotplug in order to notify userspace
    that something changed during suspend.
    
    Currently, amdgpu just makes the mistake of ignoring the return code
    from drm_dp_mst_topology_mgr_resume() which means that if a topology was
    removed in suspend, amdgpu never notices and assumes it's still
    connected which leads to all sorts of problems.
    
    So, fix this by actually checking the rc from
    drm_dp_mst_topology_mgr_resume(). Also, reformat the rest of the
    function while we're at it to fix the over-indenting.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Cc: Jerry Zuo <Jerry.Zuo@amd.com>
    Cc: <stable@vger.kernel.org> # v4.15+
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108211133.32564-2-lyude@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1a5113cf41b1314b741b0385d69713a2c270824
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat Dec 22 03:06:23 2018 +0000

    drm/i915: Unwind failure on pinning the gen7 ppgtt
    
    commit 280d479b310298dfeb1d6f9a1617eca37beb6ce4 upstream.
    
    If we fail to pin the ggtt vma slot for the ppgtt page tables, we need
    to unwind the locals before reporting the error. Or else on subsequent
    attempts to bind the page tables into the ggtt, we will already believe
    that the vma has been pinned and continue on blithely. If something else
    should happen to be at that location, choas ensues.
    
    Fixes: a2bbf7148342 ("drm/i915/gtt: Only keep gen6 page directories pinned while active")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Matthew Auld <matthew.william.auld@gmail.com>
    Cc: <stable@vger.kernel.org> # v4.19+
    Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181222030623.21710-1-chris@chris-wilson.co.uk
    (cherry picked from commit d4de753526f4d99f541f1b6ed1d963005c09700c)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f57bef95d6f83830af86f8b0e73ff9197f77c3a7
Author: Ivan Mironov <mironov.ivan@gmail.com>
Date:   Tue Jan 8 12:23:52 2019 +0500

    drm/fb-helper: Partially bring back workaround for bugs of SDL 1.2
    
    commit 62d85b3bf9d978ed4b6b2aeef5cf0ccf1423906e upstream.
    
    SDL 1.2 sets all fields related to the pixel format to zero in some
    cases[1]. Prior to commit db05c48197759 ("drm: fb-helper: Reject all
    pixel format changing requests"), there was an unintentional workaround
    for this that existed for more than a decade. First in device-specific DRM
    drivers, then here in drm_fb_helper.c.
    
    Previous code containing this workaround just ignores pixel format fields
    from userspace code. Not a good thing either, as this way, driver may
    silently use pixel format different from what client actually requested,
    and this in turn will lead to displaying garbage on the screen. I think
    that returning EINVAL to userspace in this particular case is the right
    option, so I decided to left code from problematic commit untouched
    instead of just reverting it entirely.
    
    Here is the steps required to reproduce this problem exactly:
            1) Compile fceux[2] with SDL 1.2.15 and without GTK or OpenGL
               support. SDL should be compiled with fbdev support (which is
               on by default).
            2) Create /etc/fb.modes with following contents (values seems
               not used, and just required to trigger problematic code in
               SDL):
    
                    mode "test"
                        geometry 1 1 1 1 1
                        timings 1 1 1 1 1 1 1
                    endmode
    
            3) Create ~/.fceux/fceux.cfg with following contents:
    
                    SDL.Hotkeys.Quit = 27
                    SDL.DoubleBuffering = 1
    
            4) Ensure that screen resolution is at least 1280x960 (e.g.
               append "video=Virtual-1:1280x960-32" to the kernel cmdline
               for qemu/QXL).
    
            5) Try to run fceux on VT with some ROM file[3]:
    
                    # ./fceux color_test.nes
    
    [1] SDL 1.2.15 source code, src/video/fbcon/SDL_fbvideo.c,
        FB_SetVideoMode()
    [2] http://www.fceux.com
    [3] Example ROM: https://github.com/bokuweb/rustynes/blob/master/roms/color_test.nes
    
    Reported-by: saahriktu <mail@saahriktu.org>
    Suggested-by: saahriktu <mail@saahriktu.org>
    Cc: stable@vger.kernel.org
    Fixes: db05c48197759 ("drm: fb-helper: Reject all pixel format changing requests")
    Signed-off-by: Ivan Mironov <mironov.ivan@gmail.com>
    [danvet: Delete misleading comment.]
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108072353.28078-2-mironov.ivan@gmail.com
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108072353.28078-2-mironov.ivan@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7398668b31108214179f74311e263b4eab275d2e
Author: Neil Armstrong <narmstrong@baylibre.com>
Date:   Fri Sep 28 14:05:55 2018 +0200

    drm/fb_helper: Allow leaking fbdev smem_start
    
    commit 4be9bd10e22dfc7fc101c5cf5969ef2d3a042d8a upstream.
    
    Since "drm/fb: Stop leaking physical address", the default behaviour of
    the DRM fbdev emulation is to set the smem_base to 0 and pass the new
    FBINFO_HIDE_SMEM_START flag.
    
    The main reason is to avoid leaking physical addresse to user-space, and
    it follows a general move over the kernel code to avoid user-space to
    manipulate physical addresses and then use some other mechanisms like
    dma-buf to transfer physical buffer handles over multiple subsystems.
    
    But, a lot of devices depends on closed sources binaries to enable
    OpenGL hardware acceleration that uses this smem_start value to
    pass physical addresses to out-of-tree modules in order to render
    into these physical adresses. These should use dma-buf buffers allocated
    from the DRM display device instead and stop relying on fbdev overallocation
    to gather DMA memory (some HW vendors delivers GBM and Wayland capable
    binaries, but older unsupported devices won't have these new binaries
    and are doomed until an Open Source solution like Lima finalizes).
    
    Since these devices heavily depends on this kind of software and because
    the smem_start population was available for years, it's a breakage to
    stop leaking smem_start without any alternative solutions.
    
    This patch adds a Kconfig depending on the EXPERT config and an unsafe
    kernel module parameter tainting the kernel when enabled.
    
    A clear comment and Kconfig help text was added to clarify why and when
    this patch should be reverted, but in the meantime it's a necessary
    feature to keep.
    
    Cc: Dave Airlie <airlied@gmail.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Cc: Maxime Ripard <maxime.ripard@bootlin.com>
    Cc: Eric Anholt <eric@anholt.net>
    Cc: Lucas Stach <l.stach@pengutronix.de>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: Ben Skeggs <skeggsb@gmail.com>
    Cc: Christian König <christian.koenig@amd.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Acked-by: Dave Airlie <airlied@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1538136355-15383-1-git-send-email-narmstrong@baylibre.com
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7c3696f68ad0e5365e42b1b9a1200b363c1f45b
Author: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
Date:   Mon Dec 17 10:32:22 2018 -0500

    drm/amd/display: Fix MST dp_blank REG_WAIT timeout
    
    commit 8c9d90eebd23b6d40ddf4ce5df5ca2b932336a06 upstream.
    
    Need to blank stream before deallocate MST payload.
    
    [drm:generic_reg_wait [amdgpu]] *ERROR* REG_WAIT timeout 10us * 3000 tries - dce110_stream_encoder_dp_blank line:944
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 2201 at /var/lib/dkms/amdgpu/18.50-690240/build/amd/amdgpu/../display/dc/dc_helper.c:249 generic_reg_wait+0xe7/0x160 [amdgpu]
    Call Trace:
     dce110_stream_encoder_dp_blank+0x11c/0x180 [amdgpu]
     core_link_disable_stream+0x40/0x230 [amdgpu]
     ? generic_reg_update_ex+0xdb/0x130 [amdgpu]
     dce110_reset_hw_ctx_wrap+0xb7/0x1f0 [amdgpu]
     dce110_apply_ctx_to_hw+0x30/0x430 [amdgpu]
     ? dce110_apply_ctx_for_surface+0x206/0x260 [amdgpu]
     dc_commit_state+0x2ba/0x4d0 [amdgpu]
     amdgpu_dm_atomic_commit_tail+0x297/0xd70 [amdgpu]
     ? amdgpu_bo_pin_restricted+0x58/0x260 [amdgpu]
     ? wait_for_completion_timeout+0x1f/0x120
     ? wait_for_completion_interruptible+0x1c/0x160
     commit_tail+0x3d/0x60 [drm_kms_helper]
     drm_atomic_helper_commit+0xf6/0x100 [drm_kms_helper]
     drm_atomic_connector_commit_dpms+0xe5/0xf0 [drm]
     drm_mode_obj_set_property_ioctl+0x14f/0x250 [drm]
     drm_mode_connector_property_set_ioctl+0x2e/0x40 [drm]
     drm_ioctl+0x1e0/0x430 [drm]
     ? drm_mode_connector_set_obj_prop+0x70/0x70 [drm]
     ? ep_read_events_proc+0xb0/0xb0
     ? ep_scan_ready_list.constprop.18+0x1e6/0x1f0
     ? timerqueue_add+0x52/0x80
     amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
     do_vfs_ioctl+0x90/0x5f0
     SyS_ioctl+0x74/0x80
     do_syscall_64+0x74/0x140
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    ---[ end trace 3ed7b77a97d60f72 ]---
    
    Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
    Reviewed-by: Hersen Wu <hersenxs.wu@amd.com>
    Acked-by: Harry Wentland <harry.wentland@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Tested-by: Lyude Paul <lyude@redhat.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 857af87dcdce1191219e41ba1fcf5e7c19ff5e2a
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Nov 13 22:57:34 2018 +0000

    PCI: dwc: Move interrupt acking into the proper callback
    
    commit 3f7bb2ec20ce07c02b2002349d256c91a463fcc5 upstream.
    
    The write to the status register is really an ACK for the HW,
    and should be treated as such by the driver. Let's move it to the
    irq_ack() callback, which will prevent people from moving it around
    in order to paper over other bugs.
    
    Fixes: 8c934095fa2f ("PCI: dwc: Clear MSI interrupt status after it is handled,
    not before")
    Fixes: 7c5925afbc58 ("PCI: dwc: Move MSI IRQs allocation to IRQ domains
    hierarchical API")
    Link: https://lore.kernel.org/linux-pci/20181113225734.8026-1-marc.zyngier@arm.com/
    Reported-by: Trent Piepho <tpiepho@impinj.com>
    Tested-by: Niklas Cassel <niklas.cassel@linaro.org>
    Tested-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
    Tested-by: Stanimir Varbanov <svarbanov@mm-sol.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    [lorenzo.pieralisi@arm.com: updated commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c408aac37787ab8e873ed6f04632fef2494fe0f7
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Nov 13 22:57:33 2018 +0000

    PCI: dwc: Take lock when ACKing an interrupt
    
    commit fce5423e4f431c71933d6c1f850b540a314aa6ee upstream.
    
    Bizarrely, there is no lock taken in the irq_ack() helper. This
    puts the ACK callback provided by a specific platform in a awkward
    situation where there is no synchronization that would be expected
    on other callback.
    
    Introduce the required lock, giving some level of uniformity among
    callbacks.
    
    Fixes: 7c5925afbc58 ("PCI: dwc: Move MSI IRQs allocation to IRQ domains
    hierarchical API")
    Link: https://lore.kernel.org/linux-pci/20181113225734.8026-1-marc.zyngier@arm.com/
    Tested-by: Niklas Cassel <niklas.cassel@linaro.org>
    Tested-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
    Tested-by: Stanimir Varbanov <svarbanov@mm-sol.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    [lorenzo.pieralisi@arm.com: updated commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11637a3a383b858424807c218e1721b190afc153
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Nov 13 22:57:32 2018 +0000

    PCI: dwc: Use interrupt masking instead of disabling
    
    commit 830920e065e90db318a0da98bf13a02b641eae7f upstream.
    
    The dwc driver is showing an interesting level of brokeness, as it
    insists on using the enable/disable set of registers to mask/unmask
    MSIs, meaning that an MSIs being generated while the interrupt is in
    that "disabled" state will simply be lost.
    
    Let's move to the mask/unmask set of registers, which offers the
    expected semantics.
    
    Fixes: 7c5925afbc58 ("PCI: dwc: Move MSI IRQs allocation to IRQ domains
    hierarchical API")
    Link: https://lore.kernel.org/linux-pci/20181113225734.8026-1-marc.zyngier@arm.com/
    Tested-by: Niklas Cassel <niklas.cassel@linaro.org>
    Tested-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
    Tested-by: Stanimir Varbanov <svarbanov@mm-sol.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    [lorenzo.pieralisi@arm.com: updated commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c051be2b26212780e0a9acddb4ebfe9bc34ba74f
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Dec 20 10:08:46 2018 -0500

    drm/amdgpu: Add new VegaM pci id
    
    commit f6653a0e0877572c87f6dab5351e7bd6b6b7100c upstream.
    
    Add a new pci id.
    
    Reviewed-by: Leo Liu <leo.liu@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 719aee2c5ba17c0c87977dad59904b5af06821f0
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Mon Jan 7 22:13:22 2019 -0700

    vfio/type1: Fix unmap overflow off-by-one
    
    commit 58fec830fc19208354895d9832785505046d6c01 upstream.
    
    The below referenced commit adds a test for integer overflow, but in
    doing so prevents the unmap ioctl from ever including the last page of
    the address space.  Subtract one to compare to the last address of the
    unmap to avoid the overflow and wrap-around.
    
    Fixes: 71a7d3d78e3c ("vfio/type1: silence integer overflow warning")
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1662291
    Cc: stable@vger.kernel.org # v4.15+
    Reported-by: Pei Zhang <pezhang@redhat.com>
    Debugged-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Tested-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e235ec00be05a98bc6a0802f2314000f419f708
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sun Dec 23 01:31:26 2018 +0100

    mtd: rawnand: qcom: fix memory corruption that causes panic
    
    commit 81d9bdf59092e4755fc4307c93c4589ef0fe2e0f upstream.
    
    This patch fixes a memory corruption that occurred in the
    qcom-nandc driver since it was converted to nand_scan().
    
    On boot, an affected device will panic from a NPE at a weird place:
    | Unable to handle kernel NULL pointer dereference at virtual address 0
    | pgd = (ptrval)
    | [00000000] *pgd=00000000
    | Internal error: Oops: 80000005 [#1] SMP ARM
    | CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.9 #0
    | Hardware name: Generic DT based system
    | PC is at   (null)
    | LR is at nand_block_isbad+0x90/0xa4
    | pc : [<00000000>]    lr : [<c0592240>]    psr: 80000013
    | sp : cf839d40  ip : 00000000  fp : cfae9e20
    | r10: cf815810  r9 : 00000000  r8 : 00000000
    | r7 : 00000000  r6 : 00000000  r5 : 00000001  r4 : cf815810
    | r3 : 00000000  r2 : cfae9810  r1 : ffffffff  r0 : cf815810
    | Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    | Control: 10c5387d  Table: 8020406a  DAC: 00000051
    | Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
    | [<c0592240>] (nand_block_isbad) from [<c0580a94>]
    | [<c0580a94>] (allocate_partition) from [<c05811e4>]
    | [<c05811e4>] (add_mtd_partitions) from [<c0581164>]
    | [<c0581164>] (parse_mtd_partitions) from [<c057def4>]
    | [<c057def4>] (mtd_device_parse_register) from [<c059d274>]
    | [<c059d274>] (qcom_nandc_probe) from [<c0567f00>]
    
    The problem is that the nand_scan()'s qcom_nand_attach_chip callback
    is updating the nandc->max_cwperpage from 1 to 4. This causes the
    sg_init_table of clear_bam_transaction() in the driver's
    qcom_nandc_block_bad() to memset much more than what was initially
    allocated by alloc_bam_transaction().
    
    This patch restores the old behavior by reallocating the shared bam
    transaction alloc_bam_transaction() after the chip was identified,
    but before mtd_device_parse_register() (which is an alias for
    mtd_device_register() - see panic) gets called. This fixes the
    corruption and the driver is working again.
    
    Cc: stable@vger.kernel.org
    Fixes: 6a3cec64f18c ("mtd: rawnand: qcom: convert driver to nand_scan()")
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fca4eb31e09688989f1a6d023131931a14387183
Author: Yi Zeng <yizeng@asrmicro.com>
Date:   Wed Jan 9 15:33:07 2019 +0800

    i2c: dev: prevent adapter retries and timeout being set as minus value
    
    commit 6ebec961d59bccf65d08b13fc1ad4e6272a89338 upstream.
    
    If adapter->retries is set to a minus value from user space via ioctl,
    it will make __i2c_transfer and __i2c_smbus_xfer skip the calling to
    adapter->algo->master_xfer and adapter->algo->smbus_xfer that is
    registered by the underlying bus drivers, and return value 0 to all the
    callers. The bus driver will never be accessed anymore by all users,
    besides, the users may still get successful return value without any
    error or information log print out.
    
    If adapter->timeout is set to minus value from user space via ioctl,
    it will make the retrying loop in __i2c_transfer and __i2c_smbus_xfer
    always break after the the first try, due to the time_after always
    returns true.
    
    Signed-off-by: Yi Zeng <yizeng@asrmicro.com>
    [wsa: minor grammar updates to commit message]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fdb8121e90a07c7eb5223e35b34dd5f4280f319
Author: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Date:   Thu Jan 10 18:41:51 2019 +0000

    ACPI/IORT: Fix rc_dma_get_range()
    
    commit c7777236dd8f587f6a8d6800c03df318fd4d2627 upstream.
    
    When executed for a PCI_ROOT_COMPLEX type, iort_match_node_callback()
    expects the opaque pointer argument to be a PCI bus device. At the
    moment rc_dma_get_range() passes the PCI endpoint instead of the bus,
    and we've been lucky to have pci_domain_nr(ptr) return 0 instead of
    crashing. Pass the bus device to iort_scan_node().
    
    Fixes: 5ac65e8c8941 ("ACPI/IORT: Support address size limit for root complexes")
    Reported-by: Eric Auger <eric.auger@redhat.com>
    Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Acked-by: Robin Murphy <robin.murphy@arm.com>
    Cc: stable@vger.kernel.org
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Hanjun Guo <hanjun.guo@linaro.org>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fd3d197510564c84c31e060fef2b8ce74c2b95d
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 4 23:10:54 2019 +0100

    ACPI / PMIC: xpower: Fix TS-pin current-source handling
    
    commit 2b531d71595d2b5b12782a49b23c335869e2621e upstream.
    
    The current-source used for the battery temp-sensor (TS) is shared with the
    GPADC. For proper fuel-gauge and charger operation the TS current-source
    needs to be permanently on. But to read the GPADC we need to temporary
    switch the TS current-source to ondemand, so that the GPADC can use it,
    otherwise we will always read an all 0 value.
    
    The switching from on to on-ondemand is not necessary when the TS
    current-source is off (this happens on devices which do not have a TS).
    
    Prior to this commit there were 2 issues with our handling of the TS
    current-source switching:
    
     1) We were writing hardcoded values to the ADC TS pin-ctrl register,
     overwriting various other unrelated bits. Specifically we were overwriting
     the current-source setting for the TS and GPIO0 pins, forcing it to 80ųA
     independent of its original setting. On a Chuwi Vi10 tablet this was
     causing us to get a too high adc value (due to a too high current-source)
     resulting in acpi_lpat_raw_to_temp() returning -ENOENT, resulting in:
    
    ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
    ACPI Error: Method parse/execution failed \_SB.SXP1._TMP, AE_ERROR
    
    This commit fixes this by using regmap_update_bits to change only the
    relevant bits.
    
     2) At the end of intel_xpower_pmic_get_raw_temp() we were unconditionally
     enabling the TS current-source even on devices where the TS-pin is not used
     and the current-source thus was off on entry of the function.
    
    This commit fixes this by checking if the TS current-source is off when
    entering intel_xpower_pmic_get_raw_temp() and if so it is left as is.
    
    Fixes: 58eefe2f3f53 (ACPI / PMIC: xpower: Do pinswitch ... reading GPADC)
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: 4.14+ <stable@vger.kernel.org> # 4.14+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fec7361193b4b14e5ff6b7a824cae703658f5534
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Dec 30 18:25:00 2018 +0100

    ACPI: power: Skip duplicate power resource references in _PRx
    
    commit 7d7b467cb95bf29597b417d4990160d4ea6d69b9 upstream.
    
    Some ACPI tables contain duplicate power resource references like this:
    
            Name (_PR0, Package (0x04)  // _PR0: Power Resources for D0
            {
                P28P,
                P18P,
                P18P,
                CLK4
            })
    
    This causes a WARN_ON in sysfs_add_link_to_group() because we end up
    adding a link to the same acpi_device twice:
    
    sysfs: cannot create duplicate filename '/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:00/OVTI2680:00/power_resources_D0/LNXPOWER:0a'
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.12-301.fc29.x86_64 #1
    Hardware name: Insyde CherryTrail/Type2 - Board Product Name, BIOS jumperx.T87.KFBNEEA02 04/13/2016
    Call Trace:
     dump_stack+0x5c/0x80
     sysfs_warn_dup.cold.3+0x17/0x2a
     sysfs_do_create_link_sd.isra.2+0xa9/0xb0
     sysfs_add_link_to_group+0x30/0x50
     acpi_power_expose_list+0x74/0xa0
     acpi_power_add_remove_device+0x50/0xa0
     acpi_add_single_object+0x26b/0x5f0
     acpi_bus_check_add+0xc4/0x250
     ...
    
    To address this issue, make acpi_extract_power_resources() check for
    duplicates and simply skip them when found.
    
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    [ rjw: Subject & changelog, comments ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97b02b6324666dcf00467efec75b8928151f8654
Author: Michal Hocko <mhocko@suse.com>
Date:   Tue Jan 8 15:23:07 2019 -0800

    mm, memcg: fix reclaim deadlock with writeback
    
    commit 63f3655f950186752236bb88a22f8252c11ce394 upstream.
    
    Liu Bo has experienced a deadlock between memcg (legacy) reclaim and the
    ext4 writeback
    
      task1:
        wait_on_page_bit+0x82/0xa0
        shrink_page_list+0x907/0x960
        shrink_inactive_list+0x2c7/0x680
        shrink_node_memcg+0x404/0x830
        shrink_node+0xd8/0x300
        do_try_to_free_pages+0x10d/0x330
        try_to_free_mem_cgroup_pages+0xd5/0x1b0
        try_charge+0x14d/0x720
        memcg_kmem_charge_memcg+0x3c/0xa0
        memcg_kmem_charge+0x7e/0xd0
        __alloc_pages_nodemask+0x178/0x260
        alloc_pages_current+0x95/0x140
        pte_alloc_one+0x17/0x40
        __pte_alloc+0x1e/0x110
        alloc_set_pte+0x5fe/0xc20
        do_fault+0x103/0x970
        handle_mm_fault+0x61e/0xd10
        __do_page_fault+0x252/0x4d0
        do_page_fault+0x30/0x80
        page_fault+0x28/0x30
    
      task2:
        __lock_page+0x86/0xa0
        mpage_prepare_extent_to_map+0x2e7/0x310 [ext4]
        ext4_writepages+0x479/0xd60
        do_writepages+0x1e/0x30
        __writeback_single_inode+0x45/0x320
        writeback_sb_inodes+0x272/0x600
        __writeback_inodes_wb+0x92/0xc0
        wb_writeback+0x268/0x300
        wb_workfn+0xb4/0x390
        process_one_work+0x189/0x420
        worker_thread+0x4e/0x4b0
        kthread+0xe6/0x100
        ret_from_fork+0x41/0x50
    
    He adds
     "task1 is waiting for the PageWriteback bit of the page that task2 has
      collected in mpd->io_submit->io_bio, and tasks2 is waiting for the
      LOCKED bit the page which tasks1 has locked"
    
    More precisely task1 is handling a page fault and it has a page locked
    while it charges a new page table to a memcg.  That in turn hits a
    memory limit reclaim and the memcg reclaim for legacy controller is
    waiting on the writeback but that is never going to finish because the
    writeback itself is waiting for the page locked in the #PF path.  So
    this is essentially ABBA deadlock:
    
                                            lock_page(A)
                                            SetPageWriteback(A)
                                            unlock_page(A)
      lock_page(B)
                                            lock_page(B)
      pte_alloc_pne
        shrink_page_list
          wait_on_page_writeback(A)
                                            SetPageWriteback(B)
                                            unlock_page(B)
    
                                            # flush A, B to clear the writeback
    
    This accumulating of more pages to flush is used by several filesystems
    to generate a more optimal IO patterns.
    
    Waiting for the writeback in legacy memcg controller is a workaround for
    pre-mature OOM killer invocations because there is no dirty IO
    throttling available for the controller.  There is no easy way around
    that unfortunately.  Therefore fix this specific issue by pre-allocating
    the page table outside of the page lock.  We have that handy
    infrastructure for that already so simply reuse the fault-around pattern
    which already does this.
    
    There are probably other hidden __GFP_ACCOUNT | GFP_KERNEL allocations
    from under a fs page locked but they should be really rare.  I am not
    aware of a better solution unfortunately.
    
    [akpm@linux-foundation.org: fix mm/memory.c:__do_fault()]
    [akpm@linux-foundation.org: coding-style fixes]
    [mhocko@kernel.org: enhance comment, per Johannes]
      Link: http://lkml.kernel.org/r/20181214084948.GA5624@dhcp22.suse.cz
    Link: http://lkml.kernel.org/r/20181213092221.27270-1-mhocko@kernel.org
    Fixes: c3b94f44fcb0 ("memcg: further prevent OOM with too many dirty pages")
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reported-by: Liu Bo <bo.liu@linux.alibaba.com>
    Debugged-by: Liu Bo <bo.liu@linux.alibaba.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Reviewed-by: Liu Bo <bo.liu@linux.alibaba.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Theodore Ts'o <tytso@mit.edu>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Shakeel Butt <shakeelb@google.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 8a4b6e8cb796cc6e90f4ae4f4985ae64c17c41d4
Author: Qian Cai <cai@lca.pw>
Date:   Tue Jan 8 15:23:04 2019 -0800

    mm/usercopy.c: no check page span for stack objects
    
    commit 7bff3c06997374fb9b9991536a547b840549a813 upstream.
    
    It is easy to trigger this with CONFIG_HARDENED_USERCOPY_PAGESPAN=y,
    
      usercopy: Kernel memory overwrite attempt detected to spans multiple pages (offset 0, size 23)!
      kernel BUG at mm/usercopy.c:102!
    
    For example,
    
    print_worker_info
    char name[WQ_NAME_LEN] = { };
    char desc[WORKER_DESC_LEN] = { };
      probe_kernel_read(name, wq->name, sizeof(name) - 1);
      probe_kernel_read(desc, worker->desc, sizeof(desc) - 1);
        __copy_from_user_inatomic
          check_object_size
            check_heap_object
              check_page_span
    
    This is because on-stack variables could cross PAGE_SIZE boundary, and
    failed this check,
    
    if (likely(((unsigned long)ptr & (unsigned long)PAGE_MASK) ==
               ((unsigned long)end & (unsigned long)PAGE_MASK)))
    
    ptr = FFFF889007D7EFF8
    end = FFFF889007D7F00E
    
    Hence, fix it by checking if it is a stack object first.
    
    [keescook@chromium.org: improve comments after reorder]
      Link: http://lkml.kernel.org/r/20190103165151.GA32845@beast
    Link: http://lkml.kernel.org/r/20181231030254.99441-1-cai@lca.pw
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f928ca3917478d5f01e49c96f172dbe4c843d4c1
Author: Christoph Lameter <cl@linux.com>
Date:   Tue Jan 8 15:23:00 2019 -0800

    slab: alien caches must not be initialized if the allocation of the alien cache failed
    
    commit 09c2e76ed734a1d36470d257a778aaba28e86531 upstream.
    
    Callers of __alloc_alien() check for NULL.  We must do the same check in
    __alloc_alien_cache to avoid NULL pointer dereferences on allocation
    failures.
    
    Link: http://lkml.kernel.org/r/010001680f42f192-82b4e12e-1565-4ee0-ae1f-1e98974906aa-000000@email.amazonses.com
    Fixes: 49dfc304ba241 ("slab: use the lock on alien_cache, instead of the lock on array_cache")
    Fixes: c8522a3a5832b ("Slab: introduce alloc_alien")
    Signed-off-by: Christoph Lameter <cl@linux.com>
    Reported-by: syzbot+d6ed4ec679652b4fd4e4@syzkaller.appspotmail.com
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.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 33c96bc68ff377064b18cd4bc821095b96a41e05
Author: Jack Stocker <jackstocker.93@gmail.com>
Date:   Thu Jan 3 21:56:53 2019 +0000

    USB: Add USB_QUIRK_DELAY_CTRL_MSG quirk for Corsair K70 RGB
    
    commit 3483254b89438e60f719937376c5e0ce2bc46761 upstream.
    
    To match the Corsair Strafe RGB, the Corsair K70 RGB also requires
    USB_QUIRK_DELAY_CTRL_MSG to completely resolve boot connection issues
    discussed here: https://github.com/ckb-next/ckb-next/issues/42.
    Otherwise roughly 1 in 10 boots the keyboard will fail to be detected.
    
    Patch that applied delay control quirk for Corsair Strafe RGB:
    cb88a0588717 ("usb: quirks: add control message delay for 1b1c:1b20")
    
    Previous K70 RGB patch to add delay-init quirk:
    7a1646d92257 ("Add delay-init quirk for Corsair K70 RGB keyboards")
    
    Signed-off-by: Jack Stocker <jackstocker.93@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12388881ce0d5ae7113b2730e424df9d077fe9d8
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Thu Jan 3 11:26:18 2019 +0800

    USB: storage: add quirk for SMI SM3350
    
    commit 0a99cc4b8ee83885ab9f097a3737d1ab28455ac0 upstream.
    
    The SMI SM3350 USB-UFS bridge controller cannot handle long sense request
    correctly and will make the chip refuse to do read/write when requested
    long sense.
    
    Add a bad sense quirk for it.
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 621ecb93578a8eedef7f1bb94dfa6729e99ed14a
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Thu Jan 3 11:26:17 2019 +0800

    USB: storage: don't insert sane sense for SPC3+ when bad sense specified
    
    commit c5603d2fdb424849360fe7e3f8c1befc97571b8c upstream.
    
    Currently the code will set US_FL_SANE_SENSE flag unconditionally if
    device claims SPC3+, however we should allow US_FL_BAD_SENSE flag to
    prevent this behavior, because SMI SM3350 UFS-USB bridge controller,
    which claims SPC4, will show strange behavior with 96-byte sense
    (put the chip into a wrong state that cannot read/write anything).
    
    Check the presence of US_FL_BAD_SENSE when assuming US_FL_SANE_SENSE on
    SPC4+ devices.
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51b2a8e263cb219538b2ee48dc37be2af7c65559
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Fri Dec 28 16:15:41 2018 +0100

    usb: cdc-acm: send ZLP for Telit 3G Intel based modems
    
    commit 34aabf918717dd14e05051896aaecd3b16b53d95 upstream.
    
    Telit 3G Intel based modems require zero packet to be sent if
    out data size is equal to the endpoint max packet size.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a71a47e03ffa7aa68893406f8134977cb164b59
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Tue Jan 8 18:30:57 2019 +0000

    cifs: Fix potential OOB access of lock element array
    
    commit b9a74cde94957d82003fb9f7ab4777938ca851cd upstream.
    
    If maxBuf is small but non-zero, it could result in a zero sized lock
    element array which we would then try and access OOB.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dcc5b36ea7f5f5d15907e439befa14cecffc9f1
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Sat Dec 22 12:40:05 2018 -0800

    CIFS: Fix credit computation for compounded requests
    
    commit 8544f4aa9dd19a04d1244dae10feecc813ccf175 upstream.
    
    In SMB3 protocol every part of the compound chain consumes credits
    individually, so we need to call wait_for_free_credits() for each
    of the PDUs in the chain. If an operation is interrupted, we must
    ensure we return all credits taken from the server structure back.
    
    Without this patch server can sometimes disconnect the session
    due to credit mismatches, especially when first operation(s)
    are large writes.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2f76f6f9fa963d337e72616f6e06b8bbac5eb7f
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 10 11:27:28 2019 -0800

    CIFS: Do not hide EINTR after sending network packets
    
    commit ee13919c2e8d1f904e035ad4b4239029a8994131 upstream.
    
    Currently we hide EINTR code returned from sock_sendmsg()
    and return 0 instead. This makes a caller think that we
    successfully completed the network operation which is not
    true. Fix this by properly returning EINTR to callers.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3606c64678369dc108f397109569cfa0ce0c101
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 3 16:45:13 2019 -0800

    CIFS: Do not set credits to 1 if the server didn't grant anything
    
    commit 33fa5c8b8a7dbe6353a56eaa654b790348890d42 upstream.
    
    Currently we reset the number of total credits granted by the server
    to 1 if the server didn't grant us anything int the response. This
    violates the SMB3 protocol - we need to trust the server and use
    the credit values from the response. Fix this by removing the
    corresponding code.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1130682d1270495f49282535854221bbdf20638
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Wed Dec 19 22:49:09 2018 +0000

    CIFS: Fix adjustment of credits for MTU requests
    
    commit b983f7e92348d7e7d091db1b78b7915e9dd3d63a upstream.
    
    Currently for MTU requests we allocate maximum possible credits
    in advance and then adjust them according to the request size.
    While we were adjusting the number of credits belonging to the
    server, we were skipping adjustment of credits belonging to the
    request. This patch fixes it by setting request credits to
    CreditCharge field value of SMB2 packet header.
    
    Also ask 1 credit more for async read and write operations to
    increase parallelism and match the behavior of other operations.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 045e3d2f1216a930e64134369f9b7d3c9f10b4a9
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Jan 9 17:05:24 2019 +0800

    ALSA: hda/realtek - Disable headset Mic VREF for headset mode of ALC225
    
    commit d1dd42110d2727e81b9265841a62bc84c454c3a2 upstream.
    
    Disable Headset Mic VREF for headset mode of ALC225.
    This will be controlled by coef bits of headset mode functions.
    
    [ Fixed a compile warning and code simplification -- tiwai ]
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fd36f024a707003a30b7c90cfebfe4aa1141773
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Jan 9 16:23:37 2019 +0800

    ALSA: hda/realtek - Add unplug function into unplug state of Headset Mode for ALC225
    
    commit 4d4b0c52bde470c379f5d168d5c139ad866cb808 upstream.
    
    Forgot to add unplug function to unplug state of headset mode
    for ALC225.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50a67b1a85b9b2b6b1475a0277e9109fe20b9625
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu Jan 3 15:53:39 2019 +0800

    ALSA: hda/realtek - Support Dell headset mode for New AIO platform
    
    commit c2a7c55a04065c3b0c32d23b099db7ea1dbf6250 upstream.
    
    Dell has new platform for ALC274.
    This will support to enable headset mode.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bef2bacb1c51ca70ebcbfc10359171785b7eddb
Author: WANG Chao <chao.wang@ucloud.cn>
Date:   Tue Dec 11 00:37:25 2018 +0800

    x86, modpost: Replace last remnants of RETPOLINE with CONFIG_RETPOLINE
    
    commit e4f358916d528d479c3c12bd2fd03f2d5a576380 upstream.
    
    Commit
    
      4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
    
    replaced the RETPOLINE define with CONFIG_RETPOLINE checks. Remove the
    remaining pieces.
    
     [ bp: Massage commit message. ]
    
    Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
    Signed-off-by: WANG Chao <chao.wang@ucloud.cn>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
    Cc: Michal Marek <michal.lkml@markovi.net>
    Cc: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: linux-kbuild@vger.kernel.org
    Cc: srinivas.eeda@oracle.com
    Cc: stable <stable@vger.kernel.org>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20181210163725.95977-1-chao.wang@ucloud.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ecbd88bf9949cc705e49fde3db450ad2f81fae3
Author: Quentin Perret <quentin.perret@arm.com>
Date:   Wed Jan 9 10:42:36 2019 +0000

    cpufreq: scmi: Fix frequency invariance in slow path
    
    commit 0e141d1c65c1dd31c914eb2e11651adcc1a15912 upstream.
    
    The scmi-cpufreq driver calls the arch_set_freq_scale() callback on
    frequency changes to provide scale-invariant load-tracking signals to
    the scheduler. However, in the slow path, it does so while specifying
    the current and max frequencies in different units, hence resulting in a
    broken freq_scale factor.
    
    Fix this by passing all frequencies in KHz, as stored in the CPUFreq
    frequency table.
    
    Fixes: 99d6bdf33877 (cpufreq: add support for CPU DVFS based on SCMI message protocol)
    Signed-off-by: Quentin Perret <quentin.perret@arm.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Acked-by: Sudeep Holla <sudeep.holla@arm.com>
    Cc: 4.17+ <stable@vger.kernel.org> # v4.17+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f64231cb4f133c3638f210b81bae9fbffc0841fa
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Wed Jan 2 20:12:47 2019 -0600

    staging: rtl8188eu: Fix module loading from tasklet for WEP encryption
    
    commit 7775665aadc48a562051834a73519129bf717d73 upstream.
    
    Commit 2b2ea09e74a5 ("staging:r8188eu: Use lib80211 to decrypt WEP-frames")
    causes scheduling while atomic bugs followed by a hard freeze whenever
    the driver tries to connect to a WEP-encrypted network. Experimentation
    showed that the freezes were eliminated when module lib80211 was
    preloaded, which can be forced by calling lib80211_get_crypto_ops()
    directly rather than indirectly through try_then_request_module().
    With this change, no BUG messages are logged.
    
    Fixes: 2b2ea09e74a5 ("staging:r8188eu: Use lib80211 to decrypt WEP-frames")
    Cc: Stable <stable@vger.kernel.org> # v4.17+
    Cc: Michael Straube <straube.linux@gmail.com>
    Cc: Ivan Safonov <insafonov@gmail.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce588054801d03ccb956e088e679baed1cf34105
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Wed Jan 2 20:12:46 2019 -0600

    staging: rtl8188eu: Fix module loading from tasklet for CCMP encryption
    
    commit 84cad97a717f5749a0236abd5ce68da582ea074f upstream.
    
    Commit 6bd082af7e36 ("staging:r8188eu: use lib80211 CCMP decrypt")
    causes scheduling while atomic bugs followed by a hard freeze whenever
    the driver tries to connect to a CCMP-encrypted network. Experimentation
    showed that the freezes were eliminated when module lib80211 was
    preloaded, which can be forced by calling lib80211_get_crypto_ops()
    directly rather than indirectly through try_then_request_module().
    With this change, no BUG messages are logged.
    
    Fixes: 6bd082af7e36 ("staging:r8188eu: use lib80211 CCMP decrypt")
    Cc: Stable <stable@vger.kernel.org> # v4.17+
    Reported-and-tested-by: Michael Straube <straube.linux@gmail.com>
    Cc: Ivan Safonov <insafonov@gmail.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7068618ae1fbb80fc16bd7c58798e208a696483
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Jan 8 11:44:41 2019 +0000

    Btrfs: fix deadlock when using free space tree due to block group creation
    
    commit a6d8654d885d7d79a3fb82da64eaa489ca332a82 upstream.
    
    When modifying the free space tree we can end up COWing one of its extent
    buffers which in turn might result in allocating a new chunk, which in
    turn can result in flushing (finish creation) of pending block groups. If
    that happens we can deadlock because creating a pending block group needs
    to update the free space tree, and if any of the updates tries to modify
    the same extent buffer that we are COWing, we end up in a deadlock since
    we try to write lock twice the same extent buffer.
    
    So fix this by skipping pending block group creation if we are COWing an
    extent buffer from the free space tree. This is a case missed by commit
    5ce555578e091 ("Btrfs: fix deadlock when writing out free space caches").
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202173
    Fixes: 5ce555578e091 ("Btrfs: fix deadlock when writing out free space caches")
    CC: stable@vger.kernel.org # 4.18+
    Signed-off-by: Filipe Manana <fdmanana@suse.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>