commit b09c34517e1ac4018e3bb75ed5c8610a8a1f486b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 1 13:14:54 2020 +0200

    Linux 4.19.149
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Link: https://lore.kernel.org/r/20200929142826.951084251@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fa2c32e375e87834a9a2af93210201039f7e1ee
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Sep 15 11:42:17 2020 +0100

    KVM: arm64: Assume write fault on S1PTW permission fault on instruction fetch
    
    commit c4ad98e4b72cb5be30ea282fce935248f2300e62 upstream.
    
    KVM currently assumes that an instruction abort can never be a write.
    This is in general true, except when the abort is triggered by
    a S1PTW on instruction fetch that tries to update the S1 page tables
    (to set AF, for example).
    
    This can happen if the page tables have been paged out and brought
    back in without seeing a direct write to them (they are thus marked
    read only), and the fault handling code will make the PT executable(!)
    instead of writable. The guest gets stuck forever.
    
    In these conditions, the permission fault must be considered as
    a write so that the Stage-1 update can take place. This is essentially
    the I-side equivalent of the problem fixed by 60e21a0ef54c ("arm64: KVM:
    Take S1 walks into account when determining S2 write faults").
    
    Update kvm_is_write_fault() to return true on IABT+S1PTW, and introduce
    kvm_vcpu_trap_is_exec_fault() that only return true when no faulting
    on a S1 fault. Additionally, kvm_vcpu_dabt_iss1tw() is renamed to
    kvm_vcpu_abt_iss1tw(), as the above makes it plain that it isn't
    specific to data abort.
    
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Reviewed-by: Will Deacon <will@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200915104218.1284701-2-maz@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b69fe0d6d0f760f6faba1e5e11cfacd35df8d75
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Oct 31 10:59:46 2019 +0100

    ata: sata_mv, avoid trigerrable BUG_ON
    
    commit e9f691d899188679746eeb96e6cb520459eda9b4 upstream.
    
    There are several reports that the BUG_ON on unsupported command in
    mv_qc_prep can be triggered under some circumstances:
    https://bugzilla.suse.com/show_bug.cgi?id=1110252
    https://serverfault.com/questions/888897/raid-problems-after-power-outage
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1652185
    https://bugs.centos.org/view.php?id=14998
    
    Let sata_mv handle the failure gracefully: warn about that incl. the
    failed command number and return an AC_ERR_INVALID error. We can do that
    now thanks to the previous patch.
    
    Remove also the long-standing FIXME.
    
    [v2] use %.2x as commands are defined as hexa.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-ide@vger.kernel.org
    Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9a512f8fa91aeee122ded2374d6061b73dd9536
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Oct 31 10:59:45 2019 +0100

    ata: make qc_prep return ata_completion_errors
    
    commit 95364f36701e62dd50eee91e1303187fd1a9f567 upstream.
    
    In case a driver wants to return an error from qc_prep, return enum
    ata_completion_errors. sata_mv is one of those drivers -- see the next
    patch. Other drivers return the newly defined AC_ERR_OK.
    
    [v2] use enum ata_completion_errors and AC_ERR_OK.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-ide@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a34e3ce81dc8061f322454341a91b300fcb463f8
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Oct 31 10:59:44 2019 +0100

    ata: define AC_ERR_OK
    
    commit 25937580a5065d6fbd92d9c8ebd47145ad80052e upstream.
    
    Since we will return enum ata_completion_errors from qc_prep in the next
    patch, let's define AC_ERR_OK to mark the OK status.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-ide@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0c985d6ae87cbf78e7950abcb48f897fcc1fdf0
Author: Muchun Song <songmuchun@bytedance.com>
Date:   Thu Aug 6 01:20:46 2020 +0800

    kprobes: Fix compiler warning for !CONFIG_KPROBES_ON_FTRACE
    
    commit 10de795a5addd1962406796a6e13ba6cc0fc6bee upstream.
    
    Fix compiler warning(as show below) for !CONFIG_KPROBES_ON_FTRACE.
    
    kernel/kprobes.c: In function 'kill_kprobe':
    kernel/kprobes.c:1116:33: warning: statement with no effect
    [-Wunused-value]
     1116 | #define disarm_kprobe_ftrace(p) (-ENODEV)
          |                                 ^
    kernel/kprobes.c:2154:3: note: in expansion of macro
    'disarm_kprobe_ftrace'
     2154 |   disarm_kprobe_ftrace(p);
    
    Link: https://lore.kernel.org/r/20200805142136.0331f7ea@canb.auug.org.au
    Link: https://lkml.kernel.org/r/20200805172046.19066-1-songmuchun@bytedance.com
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Fixes: 0cb2f1372baa ("kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler")
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c10b4b35a9faa1fc5373c00862aea6142cce437
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Mon Sep 21 12:48:36 2020 +0200

    s390/zcrypt: Fix ZCRYPT_PERDEV_REQCNT ioctl
    
    commit f7e80983f0cf470bb82036e73bff4d5a7daf8fc2 upstream.
    
    reqcnt is an u32 pointer but we do copy sizeof(reqcnt) which is the
    size of the pointer. This means we only copy 8 byte. Let us copy
    the full monty.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Harald Freudenberger <freude@linux.ibm.com>
    Cc: stable@vger.kernel.org
    Fixes: af4a72276d49 ("s390/zcrypt: Support up to 256 crypto adapters.")
    Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3e8ed3d33fa963f1b6827977696235852cdd8d9
Author: Gao Xiang <hsiangkao@redhat.com>
Date:   Fri Sep 25 21:19:01 2020 -0700

    mm, THP, swap: fix allocating cluster for swapfile by mistake
    
    commit 41663430588c737dd735bad5a0d1ba325dcabd59 upstream.
    
    SWP_FS is used to make swap_{read,write}page() go through the
    filesystem, and it's only used for swap files over NFS.  So, !SWP_FS
    means non NFS for now, it could be either file backed or device backed.
    Something similar goes with legacy SWP_FILE.
    
    So in order to achieve the goal of the original patch, SWP_BLKDEV should
    be used instead.
    
    FS corruption can be observed with SSD device + XFS + fragmented
    swapfile due to CONFIG_THP_SWAP=y.
    
    I reproduced the issue with the following details:
    
    Environment:
    
      QEMU + upstream kernel + buildroot + NVMe (2 GB)
    
    Kernel config:
    
      CONFIG_BLK_DEV_NVME=y
      CONFIG_THP_SWAP=y
    
    Some reproducible steps:
    
      mkfs.xfs -f /dev/nvme0n1
      mkdir /tmp/mnt
      mount /dev/nvme0n1 /tmp/mnt
      bs="32k"
      sz="1024m"    # doesn't matter too much, I also tried 16m
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -F -S 0 -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fsync" /tmp/mnt/sw
    
      mkswap /tmp/mnt/sw
      swapon /tmp/mnt/sw
    
      stress --vm 2 --vm-bytes 600M   # doesn't matter too much as well
    
    Symptoms:
     - FS corruption (e.g. checksum failure)
     - memory corruption at: 0xd2808010
     - segfault
    
    Fixes: f0eea189e8e9 ("mm, THP, swap: Don't allocate huge cluster for file backed swap device")
    Fixes: 38d8b4e6bdc8 ("mm, THP, swap: delay splitting THP during swap out")
    Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Acked-by: Rafael Aquini <aquini@redhat.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Carlos Maiolino <cmaiolino@redhat.com>
    Cc: Eric Sandeen <esandeen@redhat.com>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200820045323.7809-1-hsiangkao@redhat.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce7ff920092130f249b75f9fe177edb3362fefe8
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Sep 1 00:12:07 2020 +0900

    kprobes: Fix to check probe enabled before disarm_kprobe_ftrace()
    
    commit 3031313eb3d549b7ad6f9fbcc52ba04412e3eb9e upstream.
    
    Commit 0cb2f1372baa ("kprobes: Fix NULL pointer dereference at
    kprobe_ftrace_handler") fixed one bug but not completely fixed yet.
    If we run a kprobe_module.tc of ftracetest, kernel showed a warning
    as below.
    
    # ./ftracetest test.d/kprobe/kprobe_module.tc
    === Ftrace unit tests ===
    [1] Kprobe dynamic event - probing module
    ...
    [   22.400215] ------------[ cut here ]------------
    [   22.400962] Failed to disarm kprobe-ftrace at trace_printk_irq_work+0x0/0x7e [trace_printk] (-2)
    [   22.402139] WARNING: CPU: 7 PID: 200 at kernel/kprobes.c:1091 __disarm_kprobe_ftrace.isra.0+0x7e/0xa0
    [   22.403358] Modules linked in: trace_printk(-)
    [   22.404028] CPU: 7 PID: 200 Comm: rmmod Not tainted 5.9.0-rc2+ #66
    [   22.404870] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
    [   22.406139] RIP: 0010:__disarm_kprobe_ftrace.isra.0+0x7e/0xa0
    [   22.406947] Code: 30 8b 03 eb c9 80 3d e5 09 1f 01 00 75 dc 49 8b 34 24 89 c2 48 c7 c7 a0 c2 05 82 89 45 e4 c6 05 cc 09 1f 01 01 e8 a9 c7 f0 ff <0f> 0b 8b 45 e4 eb b9 89 c6 48 c7 c7 70 c2 05 82 89 45 e4 e8 91 c7
    [   22.409544] RSP: 0018:ffffc90000237df0 EFLAGS: 00010286
    [   22.410385] RAX: 0000000000000000 RBX: ffffffff83066024 RCX: 0000000000000000
    [   22.411434] RDX: 0000000000000001 RSI: ffffffff810de8d3 RDI: ffffffff810de8d3
    [   22.412687] RBP: ffffc90000237e10 R08: 0000000000000001 R09: 0000000000000001
    [   22.413762] R10: 0000000000000000 R11: 0000000000000001 R12: ffff88807c478640
    [   22.414852] R13: ffffffff8235ebc0 R14: ffffffffa00060c0 R15: 0000000000000000
    [   22.415941] FS:  00000000019d48c0(0000) GS:ffff88807d7c0000(0000) knlGS:0000000000000000
    [   22.417264] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   22.418176] CR2: 00000000005bb7e3 CR3: 0000000078f7a000 CR4: 00000000000006a0
    [   22.419309] Call Trace:
    [   22.419990]  kill_kprobe+0x94/0x160
    [   22.420652]  kprobes_module_callback+0x64/0x230
    [   22.421470]  notifier_call_chain+0x4f/0x70
    [   22.422184]  blocking_notifier_call_chain+0x49/0x70
    [   22.422979]  __x64_sys_delete_module+0x1ac/0x240
    [   22.423733]  do_syscall_64+0x38/0x50
    [   22.424366]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [   22.425176] RIP: 0033:0x4bb81d
    [   22.425741] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 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 73 01 c3 48 c7 c1 e0 ff ff ff f7 d8 64 89 01 48
    [   22.428726] RSP: 002b:00007ffc70fef008 EFLAGS: 00000246 ORIG_RAX: 00000000000000b0
    [   22.430169] RAX: ffffffffffffffda RBX: 00000000019d48a0 RCX: 00000000004bb81d
    [   22.431375] RDX: 0000000000000000 RSI: 0000000000000880 RDI: 00007ffc70fef028
    [   22.432543] RBP: 0000000000000880 R08: 00000000ffffffff R09: 00007ffc70fef320
    [   22.433692] R10: 0000000000656300 R11: 0000000000000246 R12: 00007ffc70fef028
    [   22.434635] R13: 0000000000000000 R14: 0000000000000002 R15: 0000000000000000
    [   22.435682] irq event stamp: 1169
    [   22.436240] hardirqs last  enabled at (1179): [<ffffffff810df542>] console_unlock+0x422/0x580
    [   22.437466] hardirqs last disabled at (1188): [<ffffffff810df19b>] console_unlock+0x7b/0x580
    [   22.438608] softirqs last  enabled at (866): [<ffffffff81c0038e>] __do_softirq+0x38e/0x490
    [   22.439637] softirqs last disabled at (859): [<ffffffff81a00f42>] asm_call_on_stack+0x12/0x20
    [   22.440690] ---[ end trace 1e7ce7e1e4567276 ]---
    [   22.472832] trace_kprobe: This probe might be able to register after target module is loaded. Continue.
    
    This is because the kill_kprobe() calls disarm_kprobe_ftrace() even
    if the given probe is not enabled. In that case, ftrace_set_filter_ip()
    fails because the given probe point is not registered to ftrace.
    
    Fix to check the given (going) probe is enabled before invoking
    disarm_kprobe_ftrace().
    
    Link: https://lkml.kernel.org/r/159888672694.1411785.5987998076694782591.stgit@devnote2
    
    Fixes: 0cb2f1372baa ("kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler")
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: "Naveen N . Rao" <naveen.n.rao@linux.ibm.com>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Chengming Zhou <zhouchengming@bytedance.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ab4bc95f4de9419639972aa9709b81945137669
Author: Jan Höppner <hoeppner@linux.ibm.com>
Date:   Mon Sep 14 13:56:47 2020 +0200

    s390/dasd: Fix zero write for FBA devices
    
    commit 709192d531e5b0a91f20aa14abfe2fc27ddd47af upstream.
    
    A discard request that writes zeros using the global kernel internal
    ZERO_PAGE will fail for machines with more than 2GB of memory due to the
    location of the ZERO_PAGE.
    
    Fix this by using a driver owned global zero page allocated with GFP_DMA
    flag set.
    
    Fixes: 28b841b3a7cb ("s390/dasd: Add discard support for FBA devices")
    Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
    Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
    Cc: <stable@vger.kernel.org> # 4.14+
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 240dd5118a9e0454f280ffeae63f22bd14735733
Author: Tom Rix <trix@redhat.com>
Date:   Mon Sep 7 06:58:45 2020 -0700

    tracing: fix double free
    
    commit 46bbe5c671e06f070428b9be142cc4ee5cedebac upstream.
    
    clang static analyzer reports this problem
    
    trace_events_hist.c:3824:3: warning: Attempt to free
      released memory
        kfree(hist_data->attrs->var_defs.name[i]);
    
    In parse_var_defs() if there is a problem allocating
    var_defs.expr, the earlier var_defs.name is freed.
    This free is duplicated by free_var_defs() which frees
    the rest of the list.
    
    Because free_var_defs() has to run anyway, remove the
    second free fom parse_var_defs().
    
    Link: https://lkml.kernel.org/r/20200907135845.15804-1-trix@redhat.com
    
    Cc: stable@vger.kernel.org
    Fixes: 30350d65ac56 ("tracing: Add variable support to hist triggers")
    Reviewed-by: Tom Zanussi <tom.zanussi@linux.intel.com>
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e794df7b5426c031d07e362d14c5785ced2c1ef3
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Thu Sep 24 13:41:57 2020 -0500

    KVM: SVM: Add a dedicated INVD intercept routine
    
    [ Upstream commit 4bb05f30483fd21ea5413eaf1182768f251cf625 ]
    
    The INVD instruction intercept performs emulation. Emulation can't be done
    on an SEV guest because the guest memory is encrypted.
    
    Provide a dedicated intercept routine for the INVD intercept. And since
    the instruction is emulated as a NOP, just skip it instead.
    
    Fixes: 1654efcbc431 ("KVM: SVM: Add KVM_SEV_INIT command")
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Message-Id: <a0b9a19ffa7fef86a3cc700c7ea01cb2731e04e5.1600972918.git.thomas.lendacky@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc868976fbfd60805f8ed9b67fba9ec1ac5226f0
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Wed Sep 23 14:53:52 2020 -0700

    KVM: x86: Reset MMU context if guest toggles CR4.SMAP or CR4.PKE
    
    [ Upstream commit 8d214c481611b29458a57913bd786f0ac06f0605 ]
    
    Reset the MMU context during kvm_set_cr4() if SMAP or PKE is toggled.
    Recent commits to (correctly) not reload PDPTRs when SMAP/PKE are
    toggled inadvertantly skipped the MMU context reset due to the mask
    of bits that triggers PDPTR loads also being used to trigger MMU context
    resets.
    
    Fixes: 427890aff855 ("kvm: x86: Toggling CR4.SMAP does not load PDPTEs in PAE mode")
    Fixes: cb957adb4ea4 ("kvm: x86: Toggling CR4.PKE does not load PDPTEs in PAE mode")
    Cc: Jim Mattson <jmattson@google.com>
    Cc: Peter Shier <pshier@google.com>
    Cc: Oliver Upton <oupton@google.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200923215352.17756-1-sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 81998b8fc6a5d13b5ff4130ff0fde2e91f1fc3a6
Author: Wei Li <liwei391@huawei.com>
Date:   Wed Sep 23 14:53:12 2020 +0800

    MIPS: Add the missing 'CPU_1074K' into __get_cpu_type()
    
    [ Upstream commit e393fbe6fa27af23f78df6e16a8fd2963578a8c4 ]
    
    Commit 442e14a2c55e ("MIPS: Add 1074K CPU support explicitly.") split
    1074K from the 74K as an unique CPU type, while it missed to add the
    'CPU_1074K' in __get_cpu_type(). So let's add it back.
    
    Fixes: 442e14a2c55e ("MIPS: Add 1074K CPU support explicitly.")
    Signed-off-by: Wei Li <liwei391@huawei.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b038e4deb458b977a15ab68923e0483778ebcb8
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Sep 17 18:34:04 2020 +0300

    regmap: fix page selection for noinc reads
    
    [ Upstream commit 4003324856311faebb46cbd56a1616bd3f3b67c2 ]
    
    Non-incrementing reads can fail if register + length crosses page
    border. However for non-incrementing reads we should not check for page
    border crossing. Fix this by passing additional flag to _regmap_raw_read
    and passing length to _regmap_select_page basing on the flag.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Fixes: 74fe7b551f33 ("regmap: Add regmap_noinc_read API")
    Link: https://lore.kernel.org/r/20200917153405.3139200-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f37ace9a29866ead7785f2c75f70f3840e774540
Author: Tom Rix <trix@redhat.com>
Date:   Sun Sep 13 09:52:30 2020 -0700

    ALSA: asihpi: fix iounmap in error handler
    
    [ Upstream commit 472eb39103e885f302fd8fd6eff104fcf5503f1b ]
    
    clang static analysis flags this problem
    hpioctl.c:513:7: warning: Branch condition evaluates to
      a garbage value
                    if (pci.ap_mem_base[idx]) {
                        ^~~~~~~~~~~~~~~~~~~~
    
    If there is a failure in the middle of the memory space loop,
    only some of the memory spaces need to be cleaned up.
    
    At the error handler, idx holds the number of successful
    memory spaces mapped.  So rework the handler loop to use the
    old idx.
    
    There is a second problem, the memory space loop conditionally
    iomaps()/sets the mem_base so it is necessay to initize pci.
    
    Fixes: 719f82d3987a ("ALSA: Add support of AudioScience ASI boards")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Link: https://lore.kernel.org/r/20200913165230.17166-1-trix@redhat.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e1a75e94a3acf78e6afdd548a5d504fc29cbc953
Author: Yonghong Song <yhs@fb.com>
Date:   Tue Sep 15 17:44:01 2020 -0700

    bpf: Fix a rcu warning for bpffs map pretty-print
    
    [ Upstream commit ce880cb825fcc22d4e39046a6c3a3a7f6603883d ]
    
    Running selftest
      ./btf_btf -p
    the kernel had the following warning:
      [   51.528185] WARNING: CPU: 3 PID: 1756 at kernel/bpf/hashtab.c:717 htab_map_get_next_key+0x2eb/0x300
      [   51.529217] Modules linked in:
      [   51.529583] CPU: 3 PID: 1756 Comm: test_btf Not tainted 5.9.0-rc1+ #878
      [   51.530346] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-1.el7.centos 04/01/2014
      [   51.531410] RIP: 0010:htab_map_get_next_key+0x2eb/0x300
      ...
      [   51.542826] Call Trace:
      [   51.543119]  map_seq_next+0x53/0x80
      [   51.543528]  seq_read+0x263/0x400
      [   51.543932]  vfs_read+0xad/0x1c0
      [   51.544311]  ksys_read+0x5f/0xe0
      [   51.544689]  do_syscall_64+0x33/0x40
      [   51.545116]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The related source code in kernel/bpf/hashtab.c:
      709 static int htab_map_get_next_key(struct bpf_map *map, void *key, void *next_key)
      710 {
      711         struct bpf_htab *htab = container_of(map, struct bpf_htab, map);
      712         struct hlist_nulls_head *head;
      713         struct htab_elem *l, *next_l;
      714         u32 hash, key_size;
      715         int i = 0;
      716
      717         WARN_ON_ONCE(!rcu_read_lock_held());
    
    In kernel/bpf/inode.c, bpffs map pretty print calls map->ops->map_get_next_key()
    without holding a rcu_read_lock(), hence causing the above warning.
    To fix the issue, just surrounding map->ops->map_get_next_key() with rcu read lock.
    
    Fixes: a26ca7c982cb ("bpf: btf: Add pretty print support to the basic arraymap")
    Reported-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Link: https://lore.kernel.org/bpf/20200916004401.146277-1-yhs@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41f5e62866f0ceb31a825dc91f0440727dbb9495
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Sep 15 09:54:10 2020 +0200

    batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh
    
    [ Upstream commit 2369e827046920ef0599e6a36b975ac5c0a359c2 ]
    
    Scenario:
    * Multicast frame send from BLA backbone gateways (multiple nodes
      with their bat0 bridged together, with BLA enabled) sharing the same
      LAN to nodes in the mesh
    
    Issue:
    * Nodes receive the frame multiple times on bat0 from the mesh,
      once from each foreign BLA backbone gateway which shares the same LAN
      with another
    
    For multicast frames via batman-adv broadcast packets coming from the
    same BLA backbone but from different backbone gateways duplicates are
    currently detected via a CRC history of previously received packets.
    
    However this CRC so far was not performed for multicast frames received
    via batman-adv unicast packets. Fixing this by appyling the same check
    for such packets, too.
    
    Room for improvements in the future: Ideally we would introduce the
    possibility to not only claim a client, but a complete originator, too.
    This would allow us to only send a multicast-in-unicast packet from a BLA
    backbone gateway claiming the node and by that avoid potential redundant
    transmissions in the first place.
    
    Fixes: 279e89b2281a ("batman-adv: add broadcast duplicate check")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ccdc2780653f87de601770f3b53ec3f37bb7942
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Sep 15 09:54:09 2020 +0200

    batman-adv: mcast: fix duplicate mcast packets in BLA backbone from mesh
    
    [ Upstream commit 74c09b7275126da1b642b90c9cdc3ae8b729ad4b ]
    
    Scenario:
    * Multicast frame send from mesh to a BLA backbone (multiple nodes
      with their bat0 bridged together, with BLA enabled)
    
    Issue:
    * BLA backbone nodes receive the frame multiple times on bat0,
      once from mesh->bat0 and once from each backbone_gw from LAN
    
    For unicast, a node will send only to the best backbone gateway
    according to the TQ. However for multicast we currently cannot determine
    if multiple destination nodes share the same backbone if they don't share
    the same backbone with us. So we need to keep sending the unicasts to
    all backbone gateways and let the backbone gateways decide which one
    will forward the frame. We can use the CLAIM mechanism to make this
    decision.
    
    One catch: The batman-adv gateway feature for DHCP packets potentially
    sends multicast packets in the same batman-adv unicast header as the
    multicast optimizations code. And we are not allowed to drop those even
    if we did not claim the source address of the sender, as for such
    packets there is only this one multicast-in-unicast packet.
    
    How can we distinguish the two cases?
    
    The gateway feature uses a batman-adv unicast 4 address header. While
    the multicast-to-unicasts feature uses a simple, 3 address batman-adv
    unicast header. So let's use this to distinguish.
    
    Fixes: fe2da6ff27c7 ("batman-adv: check incoming packet type for bla")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14d60e8488156da66cbd210219bcae2b3aa6b14f
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Sep 14 13:58:16 2020 +0200

    batman-adv: Add missing include for in_interrupt()
    
    [ Upstream commit 4bba9dab86b6ac15ca560ef1f2b5aa4529cbf784 ]
    
    The fix for receiving (internally generated) bla packets outside the
    interrupt context introduced the usage of in_interrupt(). But this
    functionality is only defined in linux/preempt.h which was not included
    with the same patch.
    
    Fixes: 279e89b2281a ("batman-adv: bla: use netif_rx_ni when not in interrupt context")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ed9a527e6220fac25f8992941569d9f08b98b44
Author: Martin Cerveny <m.cerveny@computer.org>
Date:   Sun Sep 6 18:21:39 2020 +0200

    drm/sun4i: sun8i-csc: Secondary CSC register correction
    
    [ Upstream commit cab4c03b4ba54c8d9378298cacb8bc0fd74ceece ]
    
    "Allwinner V3s" has secondary video layer (VI).
    Decoded video is displayed in wrong colors until
    secondary CSC registers are programmed correctly.
    
    Fixes: 883029390550 ("drm/sun4i: Add DE2 CSC library")
    Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
    Reviewed-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200906162140.5584-2-m.cerveny@computer.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9349fed2312da12209413401d62a78f12950ea2d
Author: Dmitry Bogdanov <dbogdanov@marvell.com>
Date:   Wed Sep 9 20:43:10 2020 +0300

    net: qed: RDMA personality shouldn't fail VF load
    
    [ Upstream commit ce1cf9e5025f4e2d2198728391f1847b3e168bc6 ]
    
    Fix the assert during VF driver installation when the personality is iWARP
    
    Fixes: 1fe614d10f45 ("qed: Relax VF firmware requirements")
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71d4d527a17419d16360f3860fc60c23e34e7e0e
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed Jul 1 09:39:49 2020 +0200

    drm/vc4/vc4_hdmi: fill ASoC card owner
    
    [ Upstream commit ec653df2a0cbc306a4bfcb0e3484d318fa779002 ]
    
    card->owner is a required property and since commit 81033c6b584b ("ALSA:
    core: Warn on empty module") a warning is issued if it is empty. Fix lack
    of it. This fixes following warning observed on RaspberryPi 3B board
    with ARM 32bit kernel and multi_v7_defconfig:
    
    ------------[ cut here ]------------
    WARNING: CPU: 1 PID: 210 at sound/core/init.c:207 snd_card_new+0x378/0x398 [snd]
    Modules linked in: vc4(+) snd_soc_core ac97_bus snd_pcm_dmaengine bluetooth snd_pcm snd_timer crc32_arm_ce raspberrypi_hwmon snd soundcore ecdh_generic ecc bcm2835_thermal phy_generic
    CPU: 1 PID: 210 Comm: systemd-udevd Not tainted 5.8.0-rc1-00027-g81033c6b584b #1087
    Hardware name: BCM2835
    [<c03113c0>] (unwind_backtrace) from [<c030bcb4>] (show_stack+0x10/0x14)
    [<c030bcb4>] (show_stack) from [<c071cef8>] (dump_stack+0xd4/0xe8)
    [<c071cef8>] (dump_stack) from [<c0345bfc>] (__warn+0xdc/0xf4)
    [<c0345bfc>] (__warn) from [<c0345cc4>] (warn_slowpath_fmt+0xb0/0xb8)
    [<c0345cc4>] (warn_slowpath_fmt) from [<bf02ff74>] (snd_card_new+0x378/0x398 [snd])
    [<bf02ff74>] (snd_card_new [snd]) from [<bf11f0b4>] (snd_soc_bind_card+0x280/0x99c [snd_soc_core])
    [<bf11f0b4>] (snd_soc_bind_card [snd_soc_core]) from [<bf12f000>] (devm_snd_soc_register_card+0x34/0x6c [snd_soc_core])
    [<bf12f000>] (devm_snd_soc_register_card [snd_soc_core]) from [<bf165654>] (vc4_hdmi_bind+0x43c/0x5f4 [vc4])
    [<bf165654>] (vc4_hdmi_bind [vc4]) from [<c09d660c>] (component_bind_all+0xec/0x24c)
    [<c09d660c>] (component_bind_all) from [<bf15c44c>] (vc4_drm_bind+0xd4/0x174 [vc4])
    [<bf15c44c>] (vc4_drm_bind [vc4]) from [<c09d6ac0>] (try_to_bring_up_master+0x160/0x1b0)
    [<c09d6ac0>] (try_to_bring_up_master) from [<c09d6f38>] (component_master_add_with_match+0xd0/0x104)
    [<c09d6f38>] (component_master_add_with_match) from [<bf15c588>] (vc4_platform_drm_probe+0x9c/0xbc [vc4])
    [<bf15c588>] (vc4_platform_drm_probe [vc4]) from [<c09df740>] (platform_drv_probe+0x6c/0xa4)
    [<c09df740>] (platform_drv_probe) from [<c09dd6f0>] (really_probe+0x210/0x350)
    [<c09dd6f0>] (really_probe) from [<c09dd940>] (driver_probe_device+0x5c/0xb4)
    [<c09dd940>] (driver_probe_device) from [<c09ddb38>] (device_driver_attach+0x58/0x60)
    [<c09ddb38>] (device_driver_attach) from [<c09ddbc0>] (__driver_attach+0x80/0xbc)
    [<c09ddbc0>] (__driver_attach) from [<c09db820>] (bus_for_each_dev+0x68/0xb4)
    [<c09db820>] (bus_for_each_dev) from [<c09dc9f8>] (bus_add_driver+0x130/0x1e8)
    [<c09dc9f8>] (bus_add_driver) from [<c09de648>] (driver_register+0x78/0x110)
    [<c09de648>] (driver_register) from [<c0302038>] (do_one_initcall+0x50/0x220)
    [<c0302038>] (do_one_initcall) from [<c03db544>] (do_init_module+0x60/0x210)
    [<c03db544>] (do_init_module) from [<c03da4f8>] (load_module+0x1e34/0x2338)
    [<c03da4f8>] (load_module) from [<c03dac00>] (sys_finit_module+0xac/0xbc)
    [<c03dac00>] (sys_finit_module) from [<c03000c0>] (ret_fast_syscall+0x0/0x54)
    Exception stack(0xeded9fa8 to 0xeded9ff0)
    ...
    ---[ end trace 6414689569c2bc08 ]---
    
    Fixes: bb7d78568814 ("drm/vc4: Add HDMI audio support")
    Suggested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200701073949.28941-1-m.szyprowski@samsung.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87f947e2bb5a11dad396a64505f30c647d5ed0ed
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue Sep 8 00:04:10 2020 +0200

    bpf: Fix clobbering of r2 in bpf_gen_ld_abs
    
    [ Upstream commit e6a18d36118bea3bf497c9df4d9988b6df120689 ]
    
    Bryce reported that he saw the following with:
    
      0:  r6 = r1
      1:  r1 = 12
      2:  r0 = *(u16 *)skb[r1]
    
    The xlated sequence was incorrectly clobbering r2 with pointer
    value of r6 ...
    
      0: (bf) r6 = r1
      1: (b7) r1 = 12
      2: (bf) r1 = r6
      3: (bf) r2 = r1
      4: (85) call bpf_skb_load_helper_16_no_cache#7692160
    
    ... and hence call to the load helper never succeeded given the
    offset was too high. Fix it by reordering the load of r6 to r1.
    
    Other than that the insn has similar calling convention than BPF
    helpers, that is, r0 - r5 are scratch regs, so nothing else
    affected after the insn.
    
    Fixes: e0cea7ce988c ("bpf: implement ld_abs/ld_ind in native bpf")
    Reported-by: Bryce Kahle <bryce.kahle@datadoghq.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/cace836e4d07bb63b1a53e49c5dfb238a040c298.1599512096.git.daniel@iogearbox.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 788a00c1f837544bf4622ebb14d15506b4a1151d
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 8 03:40:25 2020 -0700

    mac802154: tx: fix use-after-free
    
    [ Upstream commit 0ff4628f4c6c1ab87eef9f16b25355cadc426d64 ]
    
    syzbot reported a bug in ieee802154_tx() [1]
    
    A similar issue in ieee802154_xmit_worker() is also fixed in this patch.
    
    [1]
    BUG: KASAN: use-after-free in ieee802154_tx+0x3d2/0x480 net/mac802154/tx.c:88
    Read of size 4 at addr ffff8880251a8c70 by task syz-executor.3/928
    
    CPU: 0 PID: 928 Comm: syz-executor.3 Not tainted 5.9.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x198/0x1fd lib/dump_stack.c:118
     print_address_description.constprop.0.cold+0xae/0x497 mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
     ieee802154_tx+0x3d2/0x480 net/mac802154/tx.c:88
     ieee802154_subif_start_xmit+0xbe/0xe4 net/mac802154/tx.c:130
     __netdev_start_xmit include/linux/netdevice.h:4634 [inline]
     netdev_start_xmit include/linux/netdevice.h:4648 [inline]
     dev_direct_xmit+0x4e9/0x6e0 net/core/dev.c:4203
     packet_snd net/packet/af_packet.c:2989 [inline]
     packet_sendmsg+0x2413/0x5290 net/packet/af_packet.c:3014
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:671
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2353
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2407
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2440
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45d5b9
    Code: 5d b4 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 2b b4 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fc98e749c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 000000000002ccc0 RCX: 000000000045d5b9
    RDX: 0000000000000000 RSI: 0000000020007780 RDI: 000000000000000b
    RBP: 000000000118d020 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 000000000118cfec
    R13: 00007fff690c720f R14: 00007fc98e74a9c0 R15: 000000000118cfec
    
    Allocated by task 928:
     kasan_save_stack+0x1b/0x40 mm/kasan/common.c:48
     kasan_set_track mm/kasan/common.c:56 [inline]
     __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:461
     slab_post_alloc_hook mm/slab.h:518 [inline]
     slab_alloc_node mm/slab.c:3254 [inline]
     kmem_cache_alloc_node+0x136/0x3e0 mm/slab.c:3574
     __alloc_skb+0x71/0x550 net/core/skbuff.c:198
     alloc_skb include/linux/skbuff.h:1094 [inline]
     alloc_skb_with_frags+0x92/0x570 net/core/skbuff.c:5771
     sock_alloc_send_pskb+0x72a/0x880 net/core/sock.c:2348
     packet_alloc_skb net/packet/af_packet.c:2837 [inline]
     packet_snd net/packet/af_packet.c:2932 [inline]
     packet_sendmsg+0x19fb/0x5290 net/packet/af_packet.c:3014
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:671
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2353
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2407
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2440
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 928:
     kasan_save_stack+0x1b/0x40 mm/kasan/common.c:48
     kasan_set_track+0x1c/0x30 mm/kasan/common.c:56
     kasan_set_free_info+0x1b/0x30 mm/kasan/generic.c:355
     __kasan_slab_free+0xd8/0x120 mm/kasan/common.c:422
     __cache_free mm/slab.c:3418 [inline]
     kmem_cache_free.part.0+0x74/0x1e0 mm/slab.c:3693
     kfree_skbmem+0xef/0x1b0 net/core/skbuff.c:622
     __kfree_skb net/core/skbuff.c:679 [inline]
     consume_skb net/core/skbuff.c:838 [inline]
     consume_skb+0xcf/0x160 net/core/skbuff.c:832
     __dev_kfree_skb_any+0x9c/0xc0 net/core/dev.c:3107
     fakelb_hw_xmit+0x20e/0x2a0 drivers/net/ieee802154/fakelb.c:81
     drv_xmit_async net/mac802154/driver-ops.h:16 [inline]
     ieee802154_tx+0x282/0x480 net/mac802154/tx.c:81
     ieee802154_subif_start_xmit+0xbe/0xe4 net/mac802154/tx.c:130
     __netdev_start_xmit include/linux/netdevice.h:4634 [inline]
     netdev_start_xmit include/linux/netdevice.h:4648 [inline]
     dev_direct_xmit+0x4e9/0x6e0 net/core/dev.c:4203
     packet_snd net/packet/af_packet.c:2989 [inline]
     packet_sendmsg+0x2413/0x5290 net/packet/af_packet.c:3014
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:671
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2353
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2407
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2440
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The buggy address belongs to the object at ffff8880251a8c00
     which belongs to the cache skbuff_head_cache of size 224
    The buggy address is located 112 bytes inside of
     224-byte region [ffff8880251a8c00, ffff8880251a8ce0)
    The buggy address belongs to the page:
    page:0000000062b6a4f1 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x251a8
    flags: 0xfffe0000000200(slab)
    raw: 00fffe0000000200 ffffea0000435c88 ffffea00028b6c08 ffff8880a9055d00
    raw: 0000000000000000 ffff8880251a80c0 000000010000000c 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8880251a8b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8880251a8b80: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff8880251a8c00: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                 ^
     ffff8880251a8c80: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
     ffff8880251a8d00: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
    
    Fixes: 409c3b0c5f03 ("mac802154: tx: move stats tx increment")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Alexander Aring <alex.aring@gmail.com>
    Cc: Stefan Schmidt <stefan@datenfreihafen.org>
    Cc: linux-wpan@vger.kernel.org
    Link: https://lore.kernel.org/r/20200908104025.4009085-1-edumazet@google.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e63e927da2df208304725fbceb6f585eb47ddfdb
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Fri Sep 4 20:28:00 2020 +0200

    batman-adv: mcast/TT: fix wrongly dropped or rerouted packets
    
    [ Upstream commit 7dda5b3384121181c4e79f6eaeac2b94c0622c8d ]
    
    The unicast packet rerouting code makes several assumptions. For
    instance it assumes that there is always exactly one destination in the
    TT. This breaks for multicast frames in a unicast packets in several ways:
    
    For one thing if there is actually no TT entry and the destination node
    was selected due to the multicast tvlv flags it announced. Then an
    intermediate node will wrongly drop the packet.
    
    For another thing if there is a TT entry but the TTVN of this entry is
    newer than the originally addressed destination node: Then the
    intermediate node will wrongly redirect the packet, leading to
    duplicated multicast packets at a multicast listener and missing
    packets at other multicast listeners or multicast routers.
    
    Fixing this by not applying the unicast packet rerouting to batman-adv
    unicast packets with a multicast payload. We are not able to detect a
    roaming multicast listener at the moment and will just continue to send
    the multicast frame to both the new and old destination for a while in
    case of such a roaming multicast listener.
    
    Fixes: a73105b8d4c7 ("batman-adv: improved client announcement mechanism")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48fb5d1e39bcbeb397c09fe246cb092592678af9
Author: Jing Xiangfeng <jingxiangfeng@huawei.com>
Date:   Fri Sep 4 10:51:03 2020 +0800

    atm: eni: fix the missed pci_disable_device() for eni_init_one()
    
    [ Upstream commit c2b947879ca320ac5505c6c29a731ff17da5e805 ]
    
    eni_init_one() misses to call pci_disable_device() in an error path.
    Jump to err_disable to fix it.
    
    Fixes: ede58ef28e10 ("atm: remove deprecated use of pci api")
    Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d6cd745526a5e15c80211a2ba4114150dad2f27
Author: Linus Lüssing <ll@simonwunderlich.de>
Date:   Thu Aug 27 17:34:48 2020 +0200

    batman-adv: bla: fix type misuse for backbone_gw hash indexing
    
    [ Upstream commit 097930e85f90f252c44dc0d084598265dd44ca48 ]
    
    It seems that due to a copy & paste error the void pointer
    in batadv_choose_backbone_gw() is cast to the wrong type.
    
    Fixing this by using "struct batadv_bla_backbone_gw" instead of "struct
    batadv_bla_claim" which better matches the caller's side.
    
    For now it seems that we were lucky because the two structs both have
    their orig/vid and addr/vid in the beginning. However I stumbled over
    this issue when I was trying to add some debug variables in front of
    "orig" in batadv_backbone_gw, which caused hash lookups to fail.
    
    Fixes: 07568d0369f9 ("batman-adv: don't rely on positions in struct for hashing")
    Signed-off-by: Linus Lüssing <ll@simonwunderlich.de>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f59089ee02d932b486a0b57dc5f53d682dbb575
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Tue Aug 25 17:38:29 2020 +0200

    mwifiex: Increase AES key storage size to 256 bits
    
    [ Upstream commit 4afc850e2e9e781976fb2c7852ce7bac374af938 ]
    
    Following commit e18696786548 ("mwifiex: Prevent memory corruption
    handling keys") the mwifiex driver fails to authenticate with certain
    networks, specifically networks with 256 bit keys, and repeatedly asks
    for the password. The kernel log repeats the following lines (id and
    bssid redacted):
    
        mwifiex_pcie 0000:01:00.0: info: trying to associate to '<id>' bssid <bssid>
        mwifiex_pcie 0000:01:00.0: info: associated to bssid <bssid> successfully
        mwifiex_pcie 0000:01:00.0: crypto keys added
        mwifiex_pcie 0000:01:00.0: info: successfully disconnected from <bssid>: reason code 3
    
    Tracking down this problem lead to the overflow check introduced by the
    aforementioned commit into mwifiex_ret_802_11_key_material_v2(). This
    check fails on networks with 256 bit keys due to the current storage
    size for AES keys in struct mwifiex_aes_param being only 128 bit.
    
    To fix this issue, increase the storage size for AES keys to 256 bit.
    
    Fixes: e18696786548 ("mwifiex: Prevent memory corruption handling keys")
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Reported-by: Kaloyan Nikolov <konik98@gmail.com>
    Tested-by: Kaloyan Nikolov <konik98@gmail.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Tested-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200825153829.38043-1-luzmaximilian@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 907a6ee8b0e5691abefcc599b27ca7edee00600a
Author: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Date:   Sun Aug 2 19:15:41 2020 +0800

    clocksource/drivers/h8300_timer8: Fix wrong return value in h8300_8timer_init()
    
    [ Upstream commit 400d033f5a599120089b5f0c54d14d198499af5a ]
    
    In the init function, if the call to of_iomap() fails, the return
    value is ENXIO instead of -ENXIO.
    
    Change to the right negative errno.
    
    Fixes: 691f8f878290f ("clocksource/drivers/h8300_timer8: Convert init function to return error")
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20200802111541.5429-1-tianjia.zhang@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0ad77d7dc50113065d218c5d951a79fc37cd6a79
Author: Tom Rix <trix@redhat.com>
Date:   Sun Aug 2 07:23:39 2020 -0700

    ieee802154/adf7242: check status of adf7242_read_reg
    
    [ Upstream commit e3914ed6cf44bfe1f169e26241f8314556fd1ac1 ]
    
    Clang static analysis reports this error
    
    adf7242.c:887:6: warning: Assigned value is garbage or undefined
            len = len_u8;
                ^ ~~~~~~
    
    len_u8 is set in
           adf7242_read_reg(lp, 0, &len_u8);
    
    When this call fails, len_u8 is not set.
    
    So check the return code.
    
    Fixes: 7302b9d90117 ("ieee802154/adf7242: Driver for ADF7242 MAC IEEE802154")
    
    Signed-off-by: Tom Rix <trix@redhat.com>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Link: https://lore.kernel.org/r/20200802142339.21091-1-trix@redhat.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a24c2499cdcf12daa243ff0ac945932ad516593f
Author: Liu Jian <liujian56@huawei.com>
Date:   Mon Jul 20 22:33:15 2020 +0800

    ieee802154: fix one possible memleak in ca8210_dev_com_init
    
    [ Upstream commit 88f46b3fe2ac41c381770ebad9f2ee49346b57a2 ]
    
    We should call destroy_workqueue to destroy mlme_workqueue in error branch.
    
    Fixes: ded845a781a5 ("ieee802154: Add CA8210 IEEE 802.15.4 device driver")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Link: https://lore.kernel.org/r/20200720143315.40523-1-liujian56@huawei.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8c821f4829eff2bf7f0beaf2471f49296d464c12
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Thu Sep 10 10:24:57 2020 -0500

    objtool: Fix noreturn detection for ignored functions
    
    [ Upstream commit db6c6a0df840e3f52c84cc302cc1a08ba11a4416 ]
    
    When a function is annotated with STACK_FRAME_NON_STANDARD, objtool
    doesn't validate its code paths.  It also skips sibling call detection
    within the function.
    
    But sibling call detection is actually needed for the case where the
    ignored function doesn't have any return instructions.  Otherwise
    objtool naively marks the function as implicit static noreturn, which
    affects the reachability of its callers, resulting in "unreachable
    instruction" warnings.
    
    Fix it by just enabling sibling call detection for ignored functions.
    The 'insn->ignore' check in add_jump_destinations() is no longer needed
    after
    
      e6da9567959e ("objtool: Don't use ignore flag for fake jumps").
    
    Fixes the following warning:
    
      arch/x86/kvm/vmx/vmx.o: warning: objtool: vmx_handle_exit_irqoff()+0x142: unreachable instruction
    
    which triggers on an allmodconfig with CONFIG_GCOV_KERNEL unset.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lkml.kernel.org/r/5b1e2536cdbaa5246b60d7791b76130a74082c62.1599751464.git.jpoimboe@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8216a3852ae50f52e482c15b3a8fcfc4cb312f1e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Sep 9 12:32:33 2020 +0200

    i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()
    
    [ Upstream commit 21653a4181ff292480599dad996a2b759ccf050f ]
    
    Some ACPI i2c-devices _STA method (which is used to detect if the device
    is present) use autodetection code which probes which device is present
    over i2c. This requires the I2C ACPI OpRegion handler to be registered
    before we enumerate i2c-clients under the i2c-adapter.
    
    This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and
    ThinkBook 15 IIL not getting an i2c-client instantiated and thus not
    working.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce81be26d33f32b5e6edf02abade4259165223c9
Author: Dennis Li <Dennis.Li@amd.com>
Date:   Wed Sep 2 17:11:09 2020 +0800

    drm/amdkfd: fix a memory leak issue
    
    [ Upstream commit 087d764159996ae378b08c0fdd557537adfd6899 ]
    
    In the resume stage of GPU recovery, start_cpsch will call pm_init
    which set pm->allocated as false, cause the next pm_release_ib has
    no chance to release ib memory.
    
    Add pm_release_ib in stop_cpsch which will be called in the suspend
    stage of GPU recovery.
    
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Dennis Li <Dennis.Li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aafa75ff39d05ad8011c1b8fa118c36acec9661a
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Thu Sep 10 12:24:53 2020 +0200

    lockdep: fix order in trace_hardirqs_off_caller()
    
    [ Upstream commit 73ac74c7d489756d2313219a108809921dbfaea1 ]
    
    Switch order so that locking state is consistent even
    if the IRQ tracer calls into lockdep again.
    
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b08005625f251017fd5643927c4fdbee9fdb860c
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Wed Sep 9 14:27:25 2020 +0200

    s390/init: add missing __init annotations
    
    [ Upstream commit fcb2b70cdb194157678fb1a75f9ff499aeba3d2a ]
    
    Add __init to reserve_memory_end, reserve_oldmem and remove_oldmem.
    Sometimes these functions are not inlined, and then the build
    complains about section mismatch.
    
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f959196c828ec7a88f838f6888552dc4dee63c8b
Author: Palmer Dabbelt <palmerdabbelt@google.com>
Date:   Mon Aug 24 17:21:22 2020 -0700

    RISC-V: Take text_mutex in ftrace_init_nop()
    
    [ Upstream commit 66d18dbda8469a944dfec6c49d26d5946efba218 ]
    
    Without this we get lockdep failures.  They're spurious failures as SMP isn't
    up when ftrace_init_nop() is called.  As far as I can tell the easiest fix is
    to just take the lock, which also seems like the safest fix.
    
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Acked-by: Guo Ren <guoren@kernel.org>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66dc19456dc9bd2e4afc118c98c844f02ed3183c
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 1 10:06:23 2020 +0200

    ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN Converter9 2-in-1
    
    [ Upstream commit 6a0137101f47301fff2da6ba4b9048383d569909 ]
    
    The MPMAN Converter9 2-in-1 almost fully works with out default settings.
    The only problem is that it has only 1 speaker so any sounds only playing
    on the right channel get lost.
    
    Add a quirk for this model using the default settings + MONO_SPEAKER.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200901080623.4987-1-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9af818a3b073eb39334318976feb30a492df8a16
Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
Date:   Thu Aug 27 19:33:57 2020 +0200

    ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functions
    
    [ Upstream commit f5a2cda4f1db89776b64c4f0f2c2ac609527ac70 ]
    
    When the wm8958_mic_detect, wm8994_mic_detect functions get called from
    the machine driver, e.g. from the card's late_probe() callback, the CODEC
    device may be PM runtime suspended and any regmap writes have no effect.
    Add PM runtime calls to these functions to ensure the device registers
    are updated as expected.
    This suppresses an error during boot
    "wm8994-codec: ASoC: error at snd_soc_component_update_bits on wm8994-codec"
    caused by the regmap access error due to the cache_only flag being set.
    
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20200827173357.31891-2-s.nawrocki@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9688d3074108ece8d1e82b017216062731e8c8c8
Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
Date:   Thu Aug 27 19:33:56 2020 +0200

    ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811
    
    [ Upstream commit 811c5494436789e7149487c06e0602b507ce274b ]
    
    The WM8994_MICBIAS register is not available in the WM1811 CODEC so skip
    initialization of that register for that device.
    This suppresses an error during boot:
    "wm8994-codec: ASoC: error at snd_soc_component_update_bits on wm8994-codec"
    
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20200827173357.31891-1-s.nawrocki@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 906c9129787bf890f3f1b562ddac45c3ec0965a8
Author: Anthony Iliopoulos <ailiop@suse.com>
Date:   Tue Jul 14 13:11:59 2020 +0200

    nvme: explicitly update mpath disk capacity on revalidation
    
    [ Upstream commit 05b29021fba5e725dd385151ef00b6340229b500 ]
    
    Commit 3b4b19721ec652 ("nvme: fix possible deadlock when I/O is
    blocked") reverted multipath head disk revalidation due to deadlocks
    caused by holding the bd_mutex during revalidate.
    
    Updating the multipath disk blockdev size is still required though for
    userspace to be able to observe any resizing while the device is
    mounted. Directly update the bdev inode size to avoid unnecessarily
    holding the bdev->bd_mutex.
    
    Fixes: 3b4b19721ec652 ("nvme: fix possible deadlock when I/O is
    blocked")
    
    Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e6a4232befee0c3dbd201f8a50b5c333498f259
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Sat Apr 25 11:39:48 2020 +0800

    net: openvswitch: use div_u64() for 64-by-32 divisions
    
    [ Upstream commit 659d4587fe7233bfdff303744b20d6f41ad04362 ]
    
    Compile the kernel for arm 32 platform, the build warning found.
    To fix that, should use div_u64() for divisions.
    | net/openvswitch/meter.c:396: undefined reference to `__udivdi3'
    
    [add more commit msg, change reported tag, and use div_u64 instead
    of do_div by Tonghao]
    
    Fixes: e57358873bb5d6ca ("net: openvswitch: use u64 for meter bucket")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
    Tested-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31c5c44707d8eb6809100a512b0877da51f795c2
Author: Jin Yao <yao.jin@linux.intel.com>
Date:   Thu Apr 30 08:36:18 2020 +0800

    perf parse-events: Use strcmp() to compare the PMU name
    
    [ Upstream commit 8510895bafdbf7c4dd24c22946d925691135c2b2 ]
    
    A big uncore event group is split into multiple small groups which only
    include the uncore events from the same PMU. This has been supported in
    the commit 3cdc5c2cb924a ("perf parse-events: Handle uncore event
    aliases in small groups properly").
    
    If the event's PMU name starts to repeat, it must be a new event.
    That can be used to distinguish the leader from other members.
    But now it only compares the pointer of pmu_name
    (leader->pmu_name == evsel->pmu_name).
    
    If we use "perf stat -M LLC_MISSES.PCIE_WRITE -a" on cascadelakex,
    the event list is:
    
      evsel->name                                   evsel->pmu_name
      ---------------------------------------------------------------
      unc_iio_data_req_of_cpu.mem_write.part0               uncore_iio_4 (as leader)
      unc_iio_data_req_of_cpu.mem_write.part0               uncore_iio_2
      unc_iio_data_req_of_cpu.mem_write.part0               uncore_iio_0
      unc_iio_data_req_of_cpu.mem_write.part0               uncore_iio_5
      unc_iio_data_req_of_cpu.mem_write.part0               uncore_iio_3
      unc_iio_data_req_of_cpu.mem_write.part0               uncore_iio_1
      unc_iio_data_req_of_cpu.mem_write.part1               uncore_iio_4
      ......
    
    For the event "unc_iio_data_req_of_cpu.mem_write.part1" with
    "uncore_iio_4", it should be the event from PMU "uncore_iio_4".
    It's not a new leader for this PMU.
    
    But if we use "(leader->pmu_name == evsel->pmu_name)", the check
    would be failed and the event is stored to leaders[] as a new
    PMU leader.
    
    So this patch uses strcmp to compare the PMU name between events.
    
    Fixes: d4953f7ef1a2 ("perf parse-events: Fix 3 use after frees found with clang ASAN")
    Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20200430003618.17002-1-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d3d6fc18caeeef094d4417cbddf335b82b1c2c5
Author: Hou Tao <houtao1@huawei.com>
Date:   Mon Feb 10 21:26:34 2020 +0800

    ubi: fastmap: Free unused fastmap anchor peb during detach
    
    [ Upstream commit c16f39d14a7e0ec59881fbdb22ae494907534384 ]
    
    When CONFIG_MTD_UBI_FASTMAP is enabled, fm_anchor will be assigned
    a free PEB during ubi_wl_init() or ubi_update_fastmap(). However
    if fastmap is not used or disabled on the MTD device, ubi_wl_entry
    related with the PEB will not be freed during detach.
    
    So Fix it by freeing the unused fastmap anchor during detach.
    
    Fixes: f9c34bb52997 ("ubi: Fix producing anchor PEBs")
    Reported-by: syzbot+f317896aae32eb281a58@syzkaller.appspotmail.com
    Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 803b2f2f9c3a22821b9328f930c09311da1b1ab3
Author: Qu Wenruo <wqu@suse.com>
Date:   Fri Jul 17 15:12:05 2020 +0800

    btrfs: qgroup: fix data leak caused by race between writeback and truncate
    
    [ Upstream commit fa91e4aa1716004ea8096d5185ec0451e206aea0 ]
    
    [BUG]
    When running tests like generic/013 on test device with btrfs quota
    enabled, it can normally lead to data leak, detected at unmount time:
    
      BTRFS warning (device dm-3): qgroup 0/5 has unreleased space, type 0 rsv 4096
      ------------[ cut here ]------------
      WARNING: CPU: 11 PID: 16386 at fs/btrfs/disk-io.c:4142 close_ctree+0x1dc/0x323 [btrfs]
      RIP: 0010:close_ctree+0x1dc/0x323 [btrfs]
      Call Trace:
       btrfs_put_super+0x15/0x17 [btrfs]
       generic_shutdown_super+0x72/0x110
       kill_anon_super+0x18/0x30
       btrfs_kill_super+0x17/0x30 [btrfs]
       deactivate_locked_super+0x3b/0xa0
       deactivate_super+0x40/0x50
       cleanup_mnt+0x135/0x190
       __cleanup_mnt+0x12/0x20
       task_work_run+0x64/0xb0
       __prepare_exit_to_usermode+0x1bc/0x1c0
       __syscall_return_slowpath+0x47/0x230
       do_syscall_64+0x64/0xb0
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      ---[ end trace caf08beafeca2392 ]---
      BTRFS error (device dm-3): qgroup reserved space leaked
    
    [CAUSE]
    In the offending case, the offending operations are:
    2/6: writev f2X[269 1 0 0 0 0] [1006997,67,288] 0
    2/7: truncate f2X[269 1 0 0 48 1026293] 18388 0
    
    The following sequence of events could happen after the writev():
            CPU1 (writeback)                |               CPU2 (truncate)
    -----------------------------------------------------------------
    btrfs_writepages()                      |
    |- extent_write_cache_pages()           |
       |- Got page for 1003520              |
       |  1003520 is Dirty, no writeback    |
       |  So (!clear_page_dirty_for_io())   |
       |  gets called for it                |
       |- Now page 1003520 is Clean.        |
       |                                    | btrfs_setattr()
       |                                    | |- btrfs_setsize()
       |                                    |    |- truncate_setsize()
       |                                    |       New i_size is 18388
       |- __extent_writepage()              |
       |  |- page_offset() > i_size         |
          |- btrfs_invalidatepage()         |
             |- Page is clean, so no qgroup |
                callback executed
    
    This means, the qgroup reserved data space is not properly released in
    btrfs_invalidatepage() as the page is Clean.
    
    [FIX]
    Instead of checking the dirty bit of a page, call
    btrfs_qgroup_free_data() unconditionally in btrfs_invalidatepage().
    
    As qgroup rsv are completely bound to the QGROUP_RESERVED bit of
    io_tree, not bound to page status, thus we won't cause double freeing
    anyway.
    
    Fixes: 0b34c261e235 ("btrfs: qgroup: Prevent qgroup->reserved from going subzero")
    CC: stable@vger.kernel.org # 4.14+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0d1682ca6d1314c27d07afacda4dd51baf5fcd94
Author: Zeng Tao <prime.zeng@hisilicon.com>
Date:   Wed Jul 15 15:34:41 2020 +0800

    vfio/pci: fix racy on error and request eventfd ctx
    
    [ Upstream commit b872d0640840018669032b20b6375a478ed1f923 ]
    
    The vfio_pci_release call will free and clear the error and request
    eventfd ctx while these ctx could be in use at the same time in the
    function like vfio_pci_request, and it's expected to protect them under
    the vdev->igate mutex, which is missing in vfio_pci_release.
    
    This issue is introduced since commit 1518ac272e78 ("vfio/pci: fix memory
    leaks of eventfd ctx"),and since commit 5c5866c593bb ("vfio/pci: Clear
    error and request eventfd ctx after releasing"), it's very easily to
    trigger the kernel panic like this:
    
    [ 9513.904346] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
    [ 9513.913091] Mem abort info:
    [ 9513.915871]   ESR = 0x96000006
    [ 9513.918912]   EC = 0x25: DABT (current EL), IL = 32 bits
    [ 9513.924198]   SET = 0, FnV = 0
    [ 9513.927238]   EA = 0, S1PTW = 0
    [ 9513.930364] Data abort info:
    [ 9513.933231]   ISV = 0, ISS = 0x00000006
    [ 9513.937048]   CM = 0, WnR = 0
    [ 9513.940003] user pgtable: 4k pages, 48-bit VAs, pgdp=0000007ec7d12000
    [ 9513.946414] [0000000000000008] pgd=0000007ec7d13003, p4d=0000007ec7d13003, pud=0000007ec728c003, pmd=0000000000000000
    [ 9513.956975] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [ 9513.962521] Modules linked in: vfio_pci vfio_virqfd vfio_iommu_type1 vfio hclge hns3 hnae3 [last unloaded: vfio_pci]
    [ 9513.972998] CPU: 4 PID: 1327 Comm: bash Tainted: G        W         5.8.0-rc4+ #3
    [ 9513.980443] Hardware name: Huawei TaiShan 2280 V2/BC82AMDC, BIOS 2280-V2 CS V3.B270.01 05/08/2020
    [ 9513.989274] pstate: 80400089 (Nzcv daIf +PAN -UAO BTYPE=--)
    [ 9513.994827] pc : _raw_spin_lock_irqsave+0x48/0x88
    [ 9513.999515] lr : eventfd_signal+0x6c/0x1b0
    [ 9514.003591] sp : ffff800038a0b960
    [ 9514.006889] x29: ffff800038a0b960 x28: ffff007ef7f4da10
    [ 9514.012175] x27: ffff207eefbbfc80 x26: ffffbb7903457000
    [ 9514.017462] x25: ffffbb7912191000 x24: ffff007ef7f4d400
    [ 9514.022747] x23: ffff20be6e0e4c00 x22: 0000000000000008
    [ 9514.028033] x21: 0000000000000000 x20: 0000000000000000
    [ 9514.033321] x19: 0000000000000008 x18: 0000000000000000
    [ 9514.038606] x17: 0000000000000000 x16: ffffbb7910029328
    [ 9514.043893] x15: 0000000000000000 x14: 0000000000000001
    [ 9514.049179] x13: 0000000000000000 x12: 0000000000000002
    [ 9514.054466] x11: 0000000000000000 x10: 0000000000000a00
    [ 9514.059752] x9 : ffff800038a0b840 x8 : ffff007ef7f4de60
    [ 9514.065038] x7 : ffff007fffc96690 x6 : fffffe01faffb748
    [ 9514.070324] x5 : 0000000000000000 x4 : 0000000000000000
    [ 9514.075609] x3 : 0000000000000000 x2 : 0000000000000001
    [ 9514.080895] x1 : ffff007ef7f4d400 x0 : 0000000000000000
    [ 9514.086181] Call trace:
    [ 9514.088618]  _raw_spin_lock_irqsave+0x48/0x88
    [ 9514.092954]  eventfd_signal+0x6c/0x1b0
    [ 9514.096691]  vfio_pci_request+0x84/0xd0 [vfio_pci]
    [ 9514.101464]  vfio_del_group_dev+0x150/0x290 [vfio]
    [ 9514.106234]  vfio_pci_remove+0x30/0x128 [vfio_pci]
    [ 9514.111007]  pci_device_remove+0x48/0x108
    [ 9514.115001]  device_release_driver_internal+0x100/0x1b8
    [ 9514.120200]  device_release_driver+0x28/0x38
    [ 9514.124452]  pci_stop_bus_device+0x68/0xa8
    [ 9514.128528]  pci_stop_and_remove_bus_device+0x20/0x38
    [ 9514.133557]  pci_iov_remove_virtfn+0xb4/0x128
    [ 9514.137893]  sriov_disable+0x3c/0x108
    [ 9514.141538]  pci_disable_sriov+0x28/0x38
    [ 9514.145445]  hns3_pci_sriov_configure+0x48/0xb8 [hns3]
    [ 9514.150558]  sriov_numvfs_store+0x110/0x198
    [ 9514.154724]  dev_attr_store+0x44/0x60
    [ 9514.158373]  sysfs_kf_write+0x5c/0x78
    [ 9514.162018]  kernfs_fop_write+0x104/0x210
    [ 9514.166010]  __vfs_write+0x48/0x90
    [ 9514.169395]  vfs_write+0xbc/0x1c0
    [ 9514.172694]  ksys_write+0x74/0x100
    [ 9514.176079]  __arm64_sys_write+0x24/0x30
    [ 9514.179987]  el0_svc_common.constprop.4+0x110/0x200
    [ 9514.184842]  do_el0_svc+0x34/0x98
    [ 9514.188144]  el0_svc+0x14/0x40
    [ 9514.191185]  el0_sync_handler+0xb0/0x2d0
    [ 9514.195088]  el0_sync+0x140/0x180
    [ 9514.198389] Code: b9001020 d2800000 52800022 f9800271 (885ffe61)
    [ 9514.204455] ---[ end trace 648de00c8406465f ]---
    [ 9514.212308] note: bash[1327] exited with preempt_count 1
    
    Cc: Qian Cai <cai@lca.pw>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Fixes: 1518ac272e78 ("vfio/pci: fix memory leaks of eventfd ctx")
    Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 511a287cb62787fae3d343930078bee77e06cd05
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jun 26 10:21:15 2020 -0700

    selftests/x86/syscall_nt: Clear weird flags after each test
    
    [ Upstream commit a61fa2799ef9bf6c4f54cf7295036577cececc72 ]
    
    Clear the weird flags before logging to improve strace output --
    logging results while, say, TF is set does no one any favors.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/907bfa5a42d4475b8245e18b67a04b13ca51ffdb.1593191971.git.luto@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4575845e9c91a3edb0d4d8cf93855f11ddf4ffce
Author: Javed Hasan <jhasan@marvell.com>
Date:   Fri Jun 26 02:49:59 2020 -0700

    scsi: libfc: Skip additional kref updating work event
    
    [ Upstream commit 823a65409c8990f64c5693af98ce0e7819975cba ]
    
    When an rport event (RPORT_EV_READY) is updated without work being queued,
    avoid taking an additional reference.
    
    This issue was leading to memory leak. Trace from KMEMLEAK tool:
    
      unreferenced object 0xffff8888259e8780 (size 512):
      comm "kworker/2:1", jiffies 4433237386 (age 113021.971s)
        hex dump (first 32 bytes):
            58 0a ec cf 83 88 ff ff 00 00 00 00 00 00 00 00
            01 00 00 00 08 00 00 00 13 7d f0 1e 0e 00 00 10
      backtrace:
      [<000000006b25760f>] fc_rport_recv_req+0x3c6/0x18f0 [libfc]
      [<00000000f208d994>] fc_lport_recv_els_req+0x120/0x8a0 [libfc]
      [<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
      [<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
      [<00000000ad5be37b>] qedf_ll2_process_skb+0x73d/0xad0 [qedf]
      [<00000000e0eb6893>] process_one_work+0x382/0x6c0
      [<000000002dfd9e21>] worker_thread+0x57/0x5c0
      [<00000000b648204f>] kthread+0x1a0/0x1c0
      [<0000000072f5ab20>] ret_from_fork+0x35/0x40
      [<000000001d5c05d8>] 0xffffffffffffffff
    
    Below is the log sequence which leads to memory leak.  Here we get the
    RPORT_EV_READY and RPORT_EV_STOP back to back, which lead to overwrite the
    event RPORT_EV_READY by event RPORT_EV_STOP.  Because of this, kref_count
    gets incremented by 1.
    
      kernel: host0: rport fffce5: Received PLOGI request
      kernel: host0: rport fffce5: Received PLOGI in INIT state
      kernel: host0: rport fffce5: Port is Ready
      kernel: host0: rport fffce5: Received PRLI request while in state Ready
      kernel: host0: rport fffce5: PRLI rspp type 8 active 1 passive 0
      kernel: host0: rport fffce5: Received LOGO request while in state Ready
      kernel: host0: rport fffce5: Delete port
      kernel: host0: rport fffce5: Received PLOGI request
      kernel: host0: rport fffce5: Received PLOGI in state Delete - send busy
      kernel: host0: rport fffce5: work event 3
      kernel: host0: rport fffce5: lld callback ev 3
      kernel: host0: rport fffce5: work delete
    
    Link: https://lore.kernel.org/r/20200626094959.32151-1-jhasan@marvell.com
    Reviewed-by: Girish Basrur <gbasrur@marvell.com>
    Reviewed-by: Saurav Kashyap <skashyap@marvell.com>
    Reviewed-by: Shyam Sundar <ssundar@marvell.com>
    Signed-off-by: Javed Hasan <jhasan@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 694ec54b7826da9043dd07cdfd80f7afcc926aed
Author: Javed Hasan <jhasan@marvell.com>
Date:   Mon Jun 22 03:12:11 2020 -0700

    scsi: libfc: Handling of extra kref
    
    [ Upstream commit 71f2bf85e90d938d4a9ef9dd9bfa8d9b0b6a03f7 ]
    
    Handling of extra kref which is done by lookup table in case rdata is
    already present in list.
    
    This issue was leading to memory leak. Trace from KMEMLEAK tool:
    
      unreferenced object 0xffff8888259e8780 (size 512):
        comm "kworker/2:1", pid 182614, jiffies 4433237386 (age 113021.971s)
        hex dump (first 32 bytes):
        58 0a ec cf 83 88 ff ff 00 00 00 00 00 00 00 00
        01 00 00 00 08 00 00 00 13 7d f0 1e 0e 00 00 10
      backtrace:
            [<000000006b25760f>] fc_rport_recv_req+0x3c6/0x18f0 [libfc]
            [<00000000f208d994>] fc_lport_recv_els_req+0x120/0x8a0 [libfc]
            [<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
            [<00000000ad5be37b>] qedf_ll2_process_skb+0x73d/0xad0 [qedf]
            [<00000000e0eb6893>] process_one_work+0x382/0x6c0
            [<000000002dfd9e21>] worker_thread+0x57/0x5c0
            [<00000000b648204f>] kthread+0x1a0/0x1c0
            [<0000000072f5ab20>] ret_from_fork+0x35/0x40
            [<000000001d5c05d8>] 0xffffffffffffffff
    
    Below is the log sequence which leads to memory leak. Here we get the
    nested "Received PLOGI request" for same port and this request leads to
    call the fc_rport_create() twice for the same rport.
    
            kernel: host1: rport fffce5: Received PLOGI request
            kernel: host1: rport fffce5: Received PLOGI in INIT state
            kernel: host1: rport fffce5: Port is Ready
            kernel: host1: rport fffce5: Received PRLI request while in state Ready
            kernel: host1: rport fffce5: PRLI rspp type 8 active 1 passive 0
            kernel: host1: rport fffce5: Received LOGO request while in state Ready
            kernel: host1: rport fffce5: Delete port
            kernel: host1: rport fffce5: Received PLOGI request
            kernel: host1: rport fffce5: Received PLOGI in state Delete - send busy
    
    Link: https://lore.kernel.org/r/20200622101212.3922-2-jhasan@marvell.com
    Reviewed-by: Girish Basrur <gbasrur@marvell.com>
    Reviewed-by: Saurav Kashyap <skashyap@marvell.com>
    Reviewed-by: Shyam Sundar <ssundar@marvell.com>
    Signed-off-by: Javed Hasan <jhasan@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03dfb191acea76e6f92379abdbb5335139b28ffa
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Wed Jun 24 01:53:08 2020 -0700

    nvme: fix possible deadlock when I/O is blocked
    
    [ Upstream commit 3b4b19721ec652ad2c4fe51dfbe5124212b5f581 ]
    
    Revert fab7772bfbcf ("nvme-multipath: revalidate nvme_ns_head gendisk
    in nvme_validate_ns")
    
    When adding a new namespace to the head disk (via nvme_mpath_set_live)
    we will see partition scan which triggers I/O on the mpath device node.
    This process will usually be triggered from the scan_work which holds
    the scan_lock. If I/O blocks (if we got ana change currently have only
    available paths but none are accessible) this can deadlock on the head
    disk bd_mutex as both partition scan I/O takes it, and head disk revalidation
    takes it to check for resize (also triggered from scan_work on a different
    path). See trace [1].
    
    The mpath disk revalidation was originally added to detect online disk
    size change, but this is no longer needed since commit cb224c3af4df
    ("nvme: Convert to use set_capacity_revalidate_and_notify") which already
    updates resize info without unnecessarily revalidating the disk (the
    mpath disk doesn't even implement .revalidate_disk fop).
    
    [1]:
    --
    kernel: INFO: task kworker/u65:9:494 blocked for more than 241 seconds.
    kernel:       Tainted: G           OE     5.3.5-050305-generic #201910071830
    kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    kernel: kworker/u65:9   D    0   494      2 0x80004000
    kernel: Workqueue: nvme-wq nvme_scan_work [nvme_core]
    kernel: Call Trace:
    kernel:  __schedule+0x2b9/0x6c0
    kernel:  schedule+0x42/0xb0
    kernel:  schedule_preempt_disabled+0xe/0x10
    kernel:  __mutex_lock.isra.0+0x182/0x4f0
    kernel:  __mutex_lock_slowpath+0x13/0x20
    kernel:  mutex_lock+0x2e/0x40
    kernel:  revalidate_disk+0x63/0xa0
    kernel:  __nvme_revalidate_disk+0xfe/0x110 [nvme_core]
    kernel:  nvme_revalidate_disk+0xa4/0x160 [nvme_core]
    kernel:  ? evict+0x14c/0x1b0
    kernel:  revalidate_disk+0x2b/0xa0
    kernel:  nvme_validate_ns+0x49/0x940 [nvme_core]
    kernel:  ? blk_mq_free_request+0xd2/0x100
    kernel:  ? __nvme_submit_sync_cmd+0xbe/0x1e0 [nvme_core]
    kernel:  nvme_scan_work+0x24f/0x380 [nvme_core]
    kernel:  process_one_work+0x1db/0x380
    kernel:  worker_thread+0x249/0x400
    kernel:  kthread+0x104/0x140
    kernel:  ? process_one_work+0x380/0x380
    kernel:  ? kthread_park+0x80/0x80
    kernel:  ret_from_fork+0x1f/0x40
    ...
    kernel: INFO: task kworker/u65:1:2630 blocked for more than 241 seconds.
    kernel:       Tainted: G           OE     5.3.5-050305-generic #201910071830
    kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    kernel: kworker/u65:1   D    0  2630      2 0x80004000
    kernel: Workqueue: nvme-wq nvme_scan_work [nvme_core]
    kernel: Call Trace:
    kernel:  __schedule+0x2b9/0x6c0
    kernel:  schedule+0x42/0xb0
    kernel:  io_schedule+0x16/0x40
    kernel:  do_read_cache_page+0x438/0x830
    kernel:  ? __switch_to_asm+0x34/0x70
    kernel:  ? file_fdatawait_range+0x30/0x30
    kernel:  read_cache_page+0x12/0x20
    kernel:  read_dev_sector+0x27/0xc0
    kernel:  read_lba+0xc1/0x220
    kernel:  ? kmem_cache_alloc_trace+0x19c/0x230
    kernel:  efi_partition+0x1e6/0x708
    kernel:  ? vsnprintf+0x39e/0x4e0
    kernel:  ? snprintf+0x49/0x60
    kernel:  check_partition+0x154/0x244
    kernel:  rescan_partitions+0xae/0x280
    kernel:  __blkdev_get+0x40f/0x560
    kernel:  blkdev_get+0x3d/0x140
    kernel:  __device_add_disk+0x388/0x480
    kernel:  device_add_disk+0x13/0x20
    kernel:  nvme_mpath_set_live+0x119/0x140 [nvme_core]
    kernel:  nvme_update_ns_ana_state+0x5c/0x60 [nvme_core]
    kernel:  nvme_set_ns_ana_state+0x1e/0x30 [nvme_core]
    kernel:  nvme_parse_ana_log+0xa1/0x180 [nvme_core]
    kernel:  ? nvme_update_ns_ana_state+0x60/0x60 [nvme_core]
    kernel:  nvme_mpath_add_disk+0x47/0x90 [nvme_core]
    kernel:  nvme_validate_ns+0x396/0x940 [nvme_core]
    kernel:  ? blk_mq_free_request+0xd2/0x100
    kernel:  nvme_scan_work+0x24f/0x380 [nvme_core]
    kernel:  process_one_work+0x1db/0x380
    kernel:  worker_thread+0x249/0x400
    kernel:  kthread+0x104/0x140
    kernel:  ? process_one_work+0x380/0x380
    kernel:  ? kthread_park+0x80/0x80
    kernel:  ret_from_fork+0x1f/0x40
    --
    
    Fixes: fab7772bfbcf ("nvme-multipath: revalidate nvme_ns_head gendisk
    in nvme_validate_ns")
    Signed-off-by: Anton Eidelman <anton@lightbitslabs.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f7ca306c7db558fc81d9b1a45d59d5e1332a8a0
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Mon Jun 22 05:30:19 2020 -0400

    cifs: Fix double add page to memcg when cifs_readpages
    
    [ Upstream commit 95a3d8f3af9b0d63b43f221b630beaab9739d13a ]
    
    When xfstests generic/451, there is an BUG at mm/memcontrol.c:
      page:ffffea000560f2c0 refcount:2 mapcount:0 mapping:000000008544e0ea
           index:0xf
      mapping->aops:cifs_addr_ops dentry name:"tst-aio-dio-cycle-write.451"
      flags: 0x2fffff80000001(locked)
      raw: 002fffff80000001 ffffc90002023c50 ffffea0005280088 ffff88815cda0210
      raw: 000000000000000f 0000000000000000 00000002ffffffff ffff88817287d000
      page dumped because: VM_BUG_ON_PAGE(page->mem_cgroup)
      page->mem_cgroup:ffff88817287d000
      ------------[ cut here ]------------
      kernel BUG at mm/memcontrol.c:2659!
      invalid opcode: 0000 [#1] SMP
      CPU: 2 PID: 2038 Comm: xfs_io Not tainted 5.8.0-rc1 #44
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_
        073836-buildvm-ppc64le-16.ppc.4
      RIP: 0010:commit_charge+0x35/0x50
      Code: 0d 48 83 05 54 b2 02 05 01 48 89 77 38 c3 48 c7
            c6 78 4a ea ba 48 83 05 38 b2 02 05 01 e8 63 0d9
      RSP: 0018:ffffc90002023a50 EFLAGS: 00010202
      RAX: 0000000000000000 RBX: ffff88817287d000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: ffff88817ac97ea0 RDI: ffff88817ac97ea0
      RBP: ffffea000560f2c0 R08: 0000000000000203 R09: 0000000000000005
      R10: 0000000000000030 R11: ffffc900020237a8 R12: 0000000000000000
      R13: 0000000000000001 R14: 0000000000000001 R15: ffff88815a1272c0
      FS:  00007f5071ab0800(0000) GS:ffff88817ac80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000055efcd5ca000 CR3: 000000015d312000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       mem_cgroup_charge+0x166/0x4f0
       __add_to_page_cache_locked+0x4a9/0x710
       add_to_page_cache_locked+0x15/0x20
       cifs_readpages+0x217/0x1270
       read_pages+0x29a/0x670
       page_cache_readahead_unbounded+0x24f/0x390
       __do_page_cache_readahead+0x3f/0x60
       ondemand_readahead+0x1f1/0x470
       page_cache_async_readahead+0x14c/0x170
       generic_file_buffered_read+0x5df/0x1100
       generic_file_read_iter+0x10c/0x1d0
       cifs_strict_readv+0x139/0x170
       new_sync_read+0x164/0x250
       __vfs_read+0x39/0x60
       vfs_read+0xb5/0x1e0
       ksys_pread64+0x85/0xf0
       __x64_sys_pread64+0x22/0x30
       do_syscall_64+0x69/0x150
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f5071fcb1af
      Code: Bad RIP value.
      RSP: 002b:00007ffde2cdb8e0 EFLAGS: 00000293 ORIG_RAX: 0000000000000011
      RAX: ffffffffffffffda RBX: 00007ffde2cdb990 RCX: 00007f5071fcb1af
      RDX: 0000000000001000 RSI: 000055efcd5ca000 RDI: 0000000000000003
      RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000001000 R11: 0000000000000293 R12: 0000000000000001
      R13: 000000000009f000 R14: 0000000000000000 R15: 0000000000001000
      Modules linked in:
      ---[ end trace 725fa14a3e1af65c ]---
    
    Since commit 3fea5a499d57 ("mm: memcontrol: convert page cache to a new
    mem_cgroup_charge() API") not cancel the page charge, the pages maybe
    double add to pagecache:
    thread1                       | thread2
    cifs_readpages
    readpages_get_pages
     add_to_page_cache_locked(head,index=n)=0
                                  | readpages_get_pages
                                  | add_to_page_cache_locked(head,index=n+1)=0
     add_to_page_cache_locked(head, index=n+1)=-EEXIST
     then, will next loop with list head page's
     index=n+1 and the page->mapping not NULL
    readpages_get_pages
    add_to_page_cache_locked(head, index=n+1)
     commit_charge
      VM_BUG_ON_PAGE
    
    So, we should not do the next loop when any page add to page cache
    failed.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41a77298809e7be112f91972d794aa231fbe27aa
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Tue Jun 16 15:26:36 2020 -0600

    vfio/pci: Clear error and request eventfd ctx after releasing
    
    [ Upstream commit 5c5866c593bbd444d0339ede6a8fb5f14ff66d72 ]
    
    The next use of the device will generate an underflow from the
    stale reference.
    
    Cc: Qian Cai <cai@lca.pw>
    Fixes: 1518ac272e78 ("vfio/pci: fix memory leaks of eventfd ctx")
    Reported-by: Daniel Wagner <dwagner@suse.de>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Tested-by: Daniel Wagner <dwagner@suse.de>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0e13175e6ea1f939f7d9f34a3774873bd711dfe
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Mar 4 12:49:18 2020 +0100

    x86/speculation/mds: Mark mds_user_clear_cpu_buffers() __always_inline
    
    [ Upstream commit a7ef9ba986b5fae9d80f8a7b31db0423687efe4e ]
    
    Prevent the compiler from uninlining and creating traceable/probable
    functions as this is invoked _after_ context tracking switched to
    CONTEXT_USER and rcu idle.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200505134340.902709267@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a59dfddcbdb65824c7b528e1210b7335758fe49
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Wed Apr 29 09:53:47 2020 -0700

    mtd: parser: cmdline: Support MTD names containing one or more colons
    
    [ Upstream commit eb13fa0227417e84aecc3bd9c029d376e33474d3 ]
    
    Looks like some drivers define MTD names with a colon in it, thus
    making mtdpart= parsing impossible. Let's fix the parser to gracefully
    handle that case: the last ':' in a partition definition sequence is
    considered instead of the first one.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Ron Minnich <rminnich@google.com>
    Tested-by: Ron Minnich <rminnich@google.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a44cb3037661fccc5f9f3a88953b35a7f2aad46d
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Thu Jun 4 16:51:21 2020 -0700

    rapidio: avoid data race between file operation callbacks and mport_cdev_add().
    
    [ Upstream commit e1c3cdb26ab881b77486dc50370356a349077c74 ]
    
    Fields of md(mport_dev) are set after cdev_device_add().  However, the
    file operation callbacks can be called after cdev_device_add() and
    therefore accesses to fields of md in the callbacks can race with the rest
    of the mport_cdev_add() function.
    
    One such example is INIT_LIST_HEAD(&md->portwrites) in mport_cdev_add(),
    the list is initialised after cdev_device_add().  This can race with
    list_add_tail(&pw_filter->md_node,&md->portwrites) in
    rio_mport_add_pw_filter() which is called by unlocked_ioctl.
    
    To avoid such data races use cdev_device_add() after initializing md.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Alexandre Bounine <alex.bou9@gmail.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Mike Marshall <hubcap@omnibond.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Allison Randal <allison@lohutok.net>
    Cc: Pavel Andrianov <andrianov@ispras.ru>
    Link: http://lkml.kernel.org/r/20200426112950.1803-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8cc3afd53d8d967a3839b7f59e962e76cda2720b
Author: Qian Cai <cai@lca.pw>
Date:   Mon Jun 1 21:48:40 2020 -0700

    mm/swap_state: fix a data race in swapin_nr_pages
    
    [ Upstream commit d6c1f098f2a7ba62627c9bc17cda28f534ef9e4a ]
    
    "prev_offset" is a static variable in swapin_nr_pages() that can be
    accessed concurrently with only mmap_sem held in read mode as noticed by
    KCSAN,
    
     BUG: KCSAN: data-race in swap_cluster_readahead / swap_cluster_readahead
    
     write to 0xffffffff92763830 of 8 bytes by task 14795 on cpu 17:
      swap_cluster_readahead+0x2a6/0x5e0
      swapin_readahead+0x92/0x8dc
      do_swap_page+0x49b/0xf20
      __handle_mm_fault+0xcfb/0xd70
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x715
      page_fault+0x34/0x40
    
     1 lock held by (dnf)/14795:
      #0: ffff897bd2e98858 (&mm->mmap_sem#2){++++}-{3:3}, at: do_page_fault+0x143/0x715
      do_user_addr_fault at arch/x86/mm/fault.c:1405
      (inlined by) do_page_fault at arch/x86/mm/fault.c:1535
     irq event stamp: 83493
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x365/0x589
     irq_exit+0xa2/0xc0
    
     read to 0xffffffff92763830 of 8 bytes by task 1 on cpu 22:
      swap_cluster_readahead+0xfd/0x5e0
      swapin_readahead+0x92/0x8dc
      do_swap_page+0x49b/0xf20
      __handle_mm_fault+0xcfb/0xd70
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x715
      page_fault+0x34/0x40
    
     1 lock held by systemd/1:
      #0: ffff897c38f14858 (&mm->mmap_sem#2){++++}-{3:3}, at: do_page_fault+0x143/0x715
     irq event stamp: 43530289
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x365/0x589
     irq_exit+0xa2/0xc0
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Marco Elver <elver@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Link: http://lkml.kernel.org/r/20200402213748.2237-1-cai@lca.pw
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c42c61e98251d5de390434181092ce9e7a9c5719
Author: Jeff Layton <jlayton@kernel.org>
Date:   Fri Mar 20 16:45:45 2020 -0400

    ceph: fix potential race in ceph_check_caps
    
    [ Upstream commit dc3da0461cc4b76f2d0c5b12247fcb3b520edbbf ]
    
    Nothing ensures that session will still be valid by the time we
    dereference the pointer. Take and put a reference.
    
    In principle, we should always be able to get a reference here, but
    throw a warning if that's ever not the case.
    
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23c233c606c33251afcafc56ca35b307ed4f2e59
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Thu May 21 10:47:09 2020 +0800

    PCI: tegra: Fix runtime PM imbalance on error
    
    [ Upstream commit fcee90cdf6f3a3a371add04d41528d5ba9c3b411 ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    when it returns an error code. Thus a pairing decrement is needed on
    the error handling path to keep the counter balanced.
    
    Also, call pm_runtime_disable() when pm_runtime_get_sync() returns
    an error code.
    
    Link: https://lore.kernel.org/r/20200521024709.2368-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2138dc84dfef7b0add7ccc034cdc4ad86754c715
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Fri May 22 18:40:06 2020 +0800

    mtd: rawnand: omap_elm: Fix runtime PM imbalance on error
    
    [ Upstream commit 37f7212148cf1d796135cdf8d0c7fee13067674b ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    when it returns an error code. Thus a pairing decrement is needed on
    the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200522104008.28340-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 345d68b47a05e455de5048bd3ed8e9aa5abb430c
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Wed May 20 20:46:47 2020 +0800

    wlcore: fix runtime pm imbalance in wlcore_regdomain_config
    
    [ Upstream commit 282a04bf1d8029eb98585cb5db3fd70fe8bc91f7 ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200520124649.10848-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ad6b023d0eef580c3183af75abfb9c2a2c46993
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Wed May 20 20:42:38 2020 +0800

    wlcore: fix runtime pm imbalance in wl1271_tx_work
    
    [ Upstream commit 9604617e998b49f7695fea1479ed82421ef8c9f0 ]
    
    There are two error handling paths in this functon. When
    wlcore_tx_work_locked() returns an error code, we should
    decrease the runtime PM usage counter the same way as the
    error handling path beginning from pm_runtime_get_sync().
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200520124241.9931-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fce356afe09a4f62ebcd7080c924828aac841b75
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Fri May 29 09:22:28 2020 +0800

    ASoC: img-i2s-out: Fix runtime PM imbalance on error
    
    [ Upstream commit 65bd91dd6957390c42a0491b9622cf31a2cdb140 ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Link: https://lore.kernel.org/r/20200529012230.5863-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a63689c06a6dd5c0cf2a9221927b9b1b2b2bb9c1
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue May 12 15:19:16 2020 +0300

    perf kcore_copy: Fix module map when there are no modules loaded
    
    [ Upstream commit 61f82e3fb697a8e85f22fdec786528af73dc36d1 ]
    
    In the absence of any modules, no "modules" map is created, but there
    are other executable pages to map, due to eBPF JIT, kprobe or ftrace.
    Map them by recognizing that the first "module" symbol is not
    necessarily from a module, and adjust the map accordingly.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: x86@kernel.org
    Link: http://lore.kernel.org/lkml/20200512121922.8997-10-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc6ae85020035734eb13597fd6e8b0074897b837
Author: Ian Rogers <irogers@google.com>
Date:   Thu May 7 22:36:24 2020 -0700

    perf metricgroup: Free metric_events on error
    
    [ Upstream commit a159e2fe89b4d1f9fb54b0ae418b961e239bf617 ]
    
    Avoid a simple memory leak.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andrii Nakryiko <andriin@fb.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Kim Phillips <kim.phillips@amd.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: Yonghong Song <yhs@fb.com>
    Cc: bpf@vger.kernel.org
    Cc: kp singh <kpsingh@chromium.org>
    Cc: netdev@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200508053629.210324-10-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd155a48a0c9b53404b30f6f92ccf9f8160378c1
Author: Xie XiuQi <xiexiuqi@huawei.com>
Date:   Thu May 21 21:32:17 2020 +0800

    perf util: Fix memory leak of prefix_if_not_in
    
    [ Upstream commit 07e9a6f538cbeecaf5c55b6f2991416f873cdcbd ]
    
    Need to free "str" before return when asprintf() failed to avoid memory
    leak.
    
    Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Hongbo Yao <yaohongbo@huawei.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Li Bin <huawei.libin@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lore.kernel.org/lkml/20200521133218.30150-4-liwei391@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d911653688c588c22bdbc83459f87961c9d4399e
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Mon May 18 15:14:45 2020 +0200

    perf stat: Fix duration_time value for higher intervals
    
    [ Upstream commit ea9eb1f456a08c18feb485894185f7a4e31cc8a4 ]
    
    Joakim reported wrong duration_time value for interval bigger
    than 4000 [1].
    
    The problem is in the interval value we pass to update_stats
    function, which is typed as 'unsigned int' and overflows when
    we get over 2^32 (happens between intervals 4000 and 5000).
    
    Retyping the passed value to unsigned long long.
    
    [1] https://www.spinics.net/lists/linux-perf-users/msg11777.html
    
    Fixes: b90f1333ef08 ("perf stat: Update walltime_nsecs_stats in interval mode")
    Reported-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20200518131445.3745083-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa0d162b9fae4cc8cb01a2f0326777dca59f9ec2
Author: Ian Rogers <irogers@google.com>
Date:   Thu Mar 5 23:11:10 2020 -0800

    perf trace: Fix the selection for architectures to generate the errno name tables
    
    [ Upstream commit 7597ce89b3ed239f7a3408b930d2a6c7a4c938a1 ]
    
    Make the architecture test directory agree with the code comment.
    
    Committer notes:
    
    This was split from a larger patch.
    
    The code was assuming the developer always worked from tools/perf/, so make sure we
    do the test -d having $toolsdir/perf/arch/$arch, to match the intent expressed in the comment,
    just above that loop.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexios Zavras <alexios.zavras@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Igor Lubashev <ilubashe@akamai.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Wei Li <liwei391@huawei.com>
    Link: http://lore.kernel.org/lkml/20200306071110.130202-4-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56540590ce7c316947d6740edc0403182a1e1ade
Author: Ian Rogers <irogers@google.com>
Date:   Tue May 12 16:59:18 2020 -0700

    perf evsel: Fix 2 memory leaks
    
    [ Upstream commit 3efc899d9afb3d03604f191a0be9669eabbfc4aa ]
    
    If allocated, perf_pkg_mask and metric_events need freeing.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20200512235918.10732-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b7e24664cc816717ca2a45b773d950a9188fb5c1
Author: Qian Cai <cai@lca.pw>
Date:   Mon May 11 00:34:50 2020 -0400

    vfio/pci: fix memory leaks of eventfd ctx
    
    [ Upstream commit 1518ac272e789cae8c555d69951b032a275b7602 ]
    
    Finished a qemu-kvm (-device vfio-pci,host=0001:01:00.0) triggers a few
    memory leaks after a while because vfio_pci_set_ctx_trigger_single()
    calls eventfd_ctx_fdget() without the matching eventfd_ctx_put() later.
    Fix it by calling eventfd_ctx_put() for those memory in
    vfio_pci_release() before vfio_device_release().
    
    unreferenced object 0xebff008981cc2b00 (size 128):
      comm "qemu-kvm", pid 4043, jiffies 4294994816 (age 9796.310s)
      hex dump (first 32 bytes):
        01 00 00 00 6b 6b 6b 6b 00 00 00 00 ad 4e ad de  ....kkkk.....N..
        ff ff ff ff 6b 6b 6b 6b ff ff ff ff ff ff ff ff  ....kkkk........
      backtrace:
        [<00000000917e8f8d>] slab_post_alloc_hook+0x74/0x9c
        [<00000000df0f2aa2>] kmem_cache_alloc_trace+0x2b4/0x3d4
        [<000000005fcec025>] do_eventfd+0x54/0x1ac
        [<0000000082791a69>] __arm64_sys_eventfd2+0x34/0x44
        [<00000000b819758c>] do_el0_svc+0x128/0x1dc
        [<00000000b244e810>] el0_sync_handler+0xd0/0x268
        [<00000000d495ef94>] el0_sync+0x164/0x180
    unreferenced object 0x29ff008981cc4180 (size 128):
      comm "qemu-kvm", pid 4043, jiffies 4294994818 (age 9796.290s)
      hex dump (first 32 bytes):
        01 00 00 00 6b 6b 6b 6b 00 00 00 00 ad 4e ad de  ....kkkk.....N..
        ff ff ff ff 6b 6b 6b 6b ff ff ff ff ff ff ff ff  ....kkkk........
      backtrace:
        [<00000000917e8f8d>] slab_post_alloc_hook+0x74/0x9c
        [<00000000df0f2aa2>] kmem_cache_alloc_trace+0x2b4/0x3d4
        [<000000005fcec025>] do_eventfd+0x54/0x1ac
        [<0000000082791a69>] __arm64_sys_eventfd2+0x34/0x44
        [<00000000b819758c>] do_el0_svc+0x128/0x1dc
        [<00000000b244e810>] el0_sync_handler+0xd0/0x268
        [<00000000d495ef94>] el0_sync+0x164/0x180
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5915b8ecb176e48f9fbb91e7004053097fc93ec7
Author: David Sterba <dsterba@suse.com>
Date:   Tue Feb 25 15:05:53 2020 +0100

    btrfs: don't force read-only after error in drop snapshot
    
    [ Upstream commit 7c09c03091ac562ddca2b393e5d65c1d37da79f1 ]
    
    Deleting a subvolume on a full filesystem leads to ENOSPC followed by a
    forced read-only. This is not a transaction abort and the filesystem is
    otherwise ok, so the error should be just propagated to the callers.
    
    This is caused by unnecessary call to btrfs_handle_fs_error for all
    errors, except EAGAIN. This does not make sense as the standard
    transaction abort mechanism is in btrfs_drop_snapshot so all relevant
    failures are handled.
    
    Originally in commit cb1b69f4508a ("Btrfs: forced readonly when
    btrfs_drop_snapshot() fails") there was no return value at all, so the
    btrfs_std_error made some sense but once the error handling and
    propagation has been implemented we don't need it anymore.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8201fdac15d67f692c99ac15d867a413a0d6553a
Author: Yu Chen <chenyu56@huawei.com>
Date:   Thu May 21 16:46:43 2020 +0800

    usb: dwc3: Increase timeout for CmdAct cleared by device controller
    
    [ Upstream commit 1c0e69ae1b9f9004fd72978612ae3463791edc56 ]
    
    If the SS PHY is in P3, there is no pipe_clk, HW may use suspend_clk
    for function, as suspend_clk is slow so EP command need more time to
    complete, e.g, imx8M suspend_clk is 32K, set ep configuration will
    take about 380us per below trace time stamp(44.286278 - 44.285897
    = 0.000381):
    
    configfs_acm.sh-822   [000] d..1    44.285896: dwc3_writel: addr
    000000006d59aae1 value 00000401
    configfs_acm.sh-822   [000] d..1    44.285897: dwc3_readl: addr
    000000006d59aae1 value 00000401
    ... ...
    configfs_acm.sh-822   [000] d..1    44.286278: dwc3_readl: addr
    000000006d59aae1 value 00000001
    configfs_acm.sh-822   [000] d..1    44.286279: dwc3_gadget_ep_cmd:
    ep0out: cmd 'Set Endpoint Configuration' [401] params 00001000
    00000500 00000000 --> status: Successful
    
    This was originally found on Hisilicon Kirin Soc that need more time
    for the device controller to clear the CmdAct of DEPCMD.
    
    Signed-off-by: Yu Chen <chenyu56@huawei.com>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Li Jun <jun.li@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c6a9585611a538466c8ad2421035c0ffa7fabc77
Author: Shreyas Joshi <shreyas.joshi@biamp.com>
Date:   Fri May 22 16:53:06 2020 +1000

    printk: handle blank console arguments passed in.
    
    [ Upstream commit 48021f98130880dd74286459a1ef48b5e9bc374f ]
    
    If uboot passes a blank string to console_setup then it results in
    a trashed memory. Ultimately, the kernel crashes during freeing up
    the memory.
    
    This fix checks if there is a blank parameter being
    passed to console_setup from uboot. In case it detects that
    the console parameter is blank then it doesn't setup the serial
    device and it gracefully exits.
    
    Link: https://lore.kernel.org/r/20200522065306.83-1-shreyas.joshi@biamp.com
    Signed-off-by: Shreyas Joshi <shreyas.joshi@biamp.com>
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    [pmladek@suse.com: Better format the commit message and code, remove unnecessary brackets.]
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 39096c0f5c1ec9a3f9840ee315251493a607a57b
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Wed May 20 18:47:48 2020 +0800

    drm/nouveau/dispnv50: fix runtime pm imbalance on error
    
    [ Upstream commit dc455f4c888365595c0a13da445e092422d55b8d ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 12f61a929604a7e4aee4632ea73e81fab564f703
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Wed May 20 18:25:49 2020 +0800

    drm/nouveau: fix runtime pm imbalance on error
    
    [ Upstream commit d7372dfb3f7f1602b87e0663e8b8646da23ebca7 ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e0f8fe0103cc7db7b15eae3a05088570e641ca2
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Wed May 20 18:14:53 2020 +0800

    drm/nouveau/debugfs: fix runtime pm imbalance on error
    
    [ Upstream commit 00583fbe8031f69bba8b0a9a861efb75fb7131af ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc8ecb8017bfcf864c051ba7c022a82f36aa7700
Author: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Date:   Fri Apr 17 09:35:31 2020 -0700

    e1000: Do not perform reset in reset_task if we are already down
    
    [ Upstream commit 49ee3c2ab5234757bfb56a0b3a3cb422f427e3a3 ]
    
    We are seeing a deadlock in e1000 down when NAPI is being disabled. Looking
    over the kernel function trace of the system it appears that the interface
    is being closed and then a reset is hitting which deadlocks the interface
    as the NAPI interface is already disabled.
    
    To prevent this from happening I am disabling the reset task when
    __E1000_DOWN is already set. In addition code has been added so that we set
    the __E1000_DOWN while holding the __E1000_RESET flag in e1000_close in
    order to guarantee that the reset task will not run after we have started
    the close call.
    
    Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Tested-by: Maxim Zhukov <mussitantesmortem@gmail.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e682e0d53c390467100dadd0cebcf8f4f0b9498e
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Tue May 19 15:10:39 2020 +0530

    arm64/cpufeature: Drop TraceFilt feature exposure from ID_DFR0 register
    
    [ Upstream commit 1ed1b90a0594c8c9d31e8bb8be25a2b37717dc9e ]
    
    ID_DFR0 based TraceFilt feature should not be exposed to guests. Hence lets
    drop it.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    
    Suggested-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/1589881254-10082-3-git-send-email-anshuman.khandual@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6909507e9e98b9eed3ce9d6b4d7528aed106d0fb
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Tue Apr 28 14:18:55 2020 +0000

    scsi: cxlflash: Fix error return code in cxlflash_probe()
    
    [ Upstream commit d0b1e4a638d670a09f42017a3e567dc846931ba8 ]
    
    Fix to return negative error code -ENOMEM from create_afu error handling
    case instead of 0, as done elsewhere in this function.
    
    Link: https://lore.kernel.org/r/20200428141855.88704-1-weiyongjun1@huawei.com
    Acked-by: Matthew R. Ochs <mrochs@linux.ibm.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4a74f4399ccff99a69ff62b0b27d04f5c51aef9
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri May 15 17:54:53 2020 +0100

    USB: EHCI: ehci-mv: fix less than zero comparison of an unsigned int
    
    [ Upstream commit a7f40c233a6b0540d28743267560df9cfb571ca9 ]
    
    The comparison of hcd->irq to less than zero for an error check will
    never be true because hcd->irq is an unsigned int.  Fix this by
    assigning the int retval to the return of platform_get_irq and checking
    this for the -ve error condition and assigning hcd->irq to retval.
    
    Addresses-Coverity: ("Unsigned compared against 0")
    Fixes: c856b4b0fdb5 ("USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe()")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Link: https://lore.kernel.org/r/20200515165453.104028-1-colin.king@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59da76a1713f7fd82d9c18ec72be99085b557027
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Tue May 19 14:50:37 2020 +0200

    fuse: don't check refcount after stealing page
    
    [ Upstream commit 32f98877c57bee6bc27f443a96f49678a2cd6a50 ]
    
    page_count() is unstable.  Unless there has been an RCU grace period
    between when the page was removed from the page cache and now, a
    speculative reference may exist from the page cache.
    
    Reported-by: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b15f7b21cac8595216a69044876441fad3179b9
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri May 8 14:34:07 2020 +1000

    powerpc/traps: Make unrecoverable NMIs die instead of panic
    
    [ Upstream commit 265d6e588d87194c2fe2d6c240247f0264e0c19b ]
    
    System Reset and Machine Check interrupts that are not recoverable due
    to being nested or interrupting when RI=0 currently panic. This is not
    necessary, and can often just kill the current context and recover.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Link: https://lore.kernel.org/r/20200508043408.886394-16-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac8196928f6a06c0788e981fab8772123eb3fa05
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat May 16 08:25:56 2020 +0200

    ALSA: hda: Fix potential race in unsol event handler
    
    [ Upstream commit c637fa151259c0f74665fde7cba5b7eac1417ae5 ]
    
    The unsol event handling code has a loop retrieving the read/write
    indices and the arrays without locking while the append to the array
    may happen concurrently.  This may lead to some inconsistency.
    Although there hasn't been any proof of this bad results, it's still
    safer to protect the racy accesses.
    
    This patch adds the spinlock protection around the unsol handling loop
    for addressing it.  Here we take bus->reg_lock as the writer side
    snd_hdac_bus_queue_event() is also protected by that lock.
    
    Link: https://lore.kernel.org/r/20200516062556.30951-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08cfb31399683924d4e09fe39c74308477158f19
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Fri May 8 18:34:33 2020 -0700

    tty: serial: samsung: Correct clock selection logic
    
    [ Upstream commit 7d31676a8d91dd18e08853efd1cb26961a38c6a6 ]
    
    Some variants of the samsung tty driver can pick which clock
    to use for their baud rate generation.  In the DT conversion,
    a default clock was selected to be used if a specific one wasn't
    assigned and then a comparison of which clock rate worked better
    was done.  Unfortunately, the comparison was implemented in such
    a way that only the default clock was ever actually compared.
    Fix this by iterating through all possible clocks, except when a
    specific clock has already been picked via clk_sel (which is
    only possible via board files).
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://lore.kernel.org/r/BN6PR04MB06604E63833EA41837EBF77BA3A30@BN6PR04MB0660.namprd04.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b3ea3aa6c675b65b6b068f5726c93abc8a4b460
Author: Tuong Lien <tuong.t.lien@dektech.com.au>
Date:   Wed May 13 19:33:17 2020 +0700

    tipc: fix memory leak in service subscripting
    
    [ Upstream commit 0771d7df819284d46cf5cfb57698621b503ec17f ]
    
    Upon receipt of a service subscription request from user via a topology
    connection, one 'sub' object will be allocated in kernel, so it will be
    able to send an event of the service if any to the user correspondingly
    then. Also, in case of any failure, the connection will be shutdown and
    all the pertaining 'sub' objects will be freed.
    
    However, there is a race condition as follows resulting in memory leak:
    
           receive-work       connection        send-work
                  |                |                |
            sub-1 |<------//-------|                |
            sub-2 |<------//-------|                |
                  |                |<---------------| evt for sub-x
            sub-3 |<------//-------|                |
                  :                :                :
                  :                :                :
                  |       /--------|                |
                  |       |        * peer closed    |
                  |       |        |                |
                  |       |        |<-------X-------| evt for sub-y
                  |       |        |<===============|
            sub-n |<------/        X    shutdown    |
        -> orphan |                                 |
    
    That is, the 'receive-work' may get the last subscription request while
    the 'send-work' is shutting down the connection due to peer close.
    
    We had a 'lock' on the connection, so the two actions cannot be carried
    out simultaneously. If the last subscription is allocated e.g. 'sub-n',
    before the 'send-work' closes the connection, there will be no issue at
    all, the 'sub' objects will be freed. In contrast the last subscription
    will become orphan since the connection was closed, and we released all
    references.
    
    This commit fixes the issue by simply adding one test if the connection
    remains in 'connected' state right after we obtain the connection lock,
    then a subscription object can be created as usual, otherwise we ignore
    it.
    
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Reported-by: Thang Ngo <thang.h.ngo@dektech.com.au>
    Signed-off-by: Tuong Lien <tuong.t.lien@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1705819f3cce9e2524e0ea03536372cd3ab974f
Author: Tang Bin <tangbin@cmss.chinamobile.com>
Date:   Fri May 8 19:43:05 2020 +0800

    USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe()
    
    [ Upstream commit c856b4b0fdb5044bca4c0acf9a66f3b5cc01a37a ]
    
    If the function platform_get_irq() failed, the negative value
    returned will not be detected here. So fix error handling in
    mv_ehci_probe(). And when get irq failed, the function
    platform_get_irq() logs an error message, so remove redundant
    message here.
    
    Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
    Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20200508114305.15740-1-tangbin@cmss.chinamobile.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3fd4552a9bf7c14c8d9f4255cad5d8c78f24e63
Author: Sonny Sasaka <sonnysasaka@chromium.org>
Date:   Wed May 6 12:55:03 2020 -0700

    Bluetooth: Handle Inquiry Cancel error after Inquiry Complete
    
    [ Upstream commit adf1d6926444029396861413aba8a0f2a805742a ]
    
    After sending Inquiry Cancel command to the controller, it is possible
    that Inquiry Complete event comes before Inquiry Cancel command complete
    event. In this case the Inquiry Cancel command will have status of
    Command Disallowed since there is no Inquiry session to be cancelled.
    This case should not be treated as error, otherwise we can reach an
    inconsistent state.
    
    Example of a btmon trace when this happened:
    
    < HCI Command: Inquiry Cancel (0x01|0x0002) plen 0
    > HCI Event: Inquiry Complete (0x01) plen 1
            Status: Success (0x00)
    > HCI Event: Command Complete (0x0e) plen 4
          Inquiry Cancel (0x01|0x0002) ncmd 1
            Status: Command Disallowed (0x0c)
    
    Signed-off-by: Sonny Sasaka <sonnysasaka@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82d16c23518f9c3c275bf2557cd057b0e3f14ce1
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Sat Apr 25 10:36:33 2020 -0700

    phy: samsung: s5pv210-usb2: Add delay after reset
    
    [ Upstream commit 05942b8c36c7eb5d3fc5e375d4b0d0c49562e85d ]
    
    The USB phy takes some time to reset, so make sure we give it to it. The
    delay length was taken from the 4x12 phy driver.
    
    This manifested in issues with the DWC2 driver since commit fe369e1826b3
    ("usb: dwc2: Make dwc2_readl/writel functions endianness-agnostic.")
    where the endianness check would read the DWC ID as 0 due to the phy still
    resetting, resulting in the wrong endian mode being chosen.
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Link: https://lore.kernel.org/r/BN6PR04MB06605D52502816E500683553A3D10@BN6PR04MB0660.namprd04.prod.outlook.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da95fdc3c756d48dc2a9ae2d32a191646b9c9813
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Mon May 4 15:12:58 2020 -0700

    power: supply: max17040: Correct voltage reading
    
    [ Upstream commit 0383024f811aa469df258039807810fc3793a105 ]
    
    According to the datasheet available at (1), the bottom four
    bits are always zero and the actual voltage is 1.25x this value
    in mV.  Since the kernel API specifies that voltages should be in
    uV, it should report 1250x the shifted value.
    
    1) https://datasheets.maximintegrated.com/en/ds/MAX17040-MAX17041.pdf
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 318af7241223eea9fc16413b04a6915518ab1e9c
Author: Ian Rogers <irogers@google.com>
Date:   Fri Mar 20 11:23:47 2020 -0700

    perf mem2node: Avoid double free related to realloc
    
    [ Upstream commit 266150c94c69429cf6d18e130237224a047f5061 ]
    
    Realloc of size zero is a free not an error, avoid this causing a double
    free. Caught by clang's address sanitizer:
    
    ==2634==ERROR: AddressSanitizer: attempting double-free on 0x6020000015f0 in thread T0:
        #0 0x5649659297fd in free llvm/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:123:3
        #1 0x5649659e9251 in __zfree tools/lib/zalloc.c:13:2
        #2 0x564965c0f92c in mem2node__exit tools/perf/util/mem2node.c:114:2
        #3 0x564965a08b4c in perf_c2c__report tools/perf/builtin-c2c.c:2867:2
        #4 0x564965a0616a in cmd_c2c tools/perf/builtin-c2c.c:2989:10
        #5 0x564965944348 in run_builtin tools/perf/perf.c:312:11
        #6 0x564965943235 in handle_internal_command tools/perf/perf.c:364:8
        #7 0x5649659440c4 in run_argv tools/perf/perf.c:408:2
        #8 0x564965942e41 in main tools/perf/perf.c:538:3
    
    0x6020000015f0 is located 0 bytes inside of 1-byte region [0x6020000015f0,0x6020000015f1)
    freed by thread T0 here:
        #0 0x564965929da3 in realloc third_party/llvm/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:164:3
        #1 0x564965c0f55e in mem2node__init tools/perf/util/mem2node.c:97:16
        #2 0x564965a08956 in perf_c2c__report tools/perf/builtin-c2c.c:2803:8
        #3 0x564965a0616a in cmd_c2c tools/perf/builtin-c2c.c:2989:10
        #4 0x564965944348 in run_builtin tools/perf/perf.c:312:11
        #5 0x564965943235 in handle_internal_command tools/perf/perf.c:364:8
        #6 0x5649659440c4 in run_argv tools/perf/perf.c:408:2
        #7 0x564965942e41 in main tools/perf/perf.c:538:3
    
    previously allocated by thread T0 here:
        #0 0x564965929c42 in calloc third_party/llvm/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:154:3
        #1 0x5649659e9220 in zalloc tools/lib/zalloc.c:8:9
        #2 0x564965c0f32d in mem2node__init tools/perf/util/mem2node.c:61:12
        #3 0x564965a08956 in perf_c2c__report tools/perf/builtin-c2c.c:2803:8
        #4 0x564965a0616a in cmd_c2c tools/perf/builtin-c2c.c:2989:10
        #5 0x564965944348 in run_builtin tools/perf/perf.c:312:11
        #6 0x564965943235 in handle_internal_command tools/perf/perf.c:364:8
        #7 0x5649659440c4 in run_argv tools/perf/perf.c:408:2
        #8 0x564965942e41 in main tools/perf/perf.c:538:3
    
    v2: add a WARN_ON_ONCE when the free condition arises.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: clang-built-linux@googlegroups.com
    Link: http://lore.kernel.org/lkml/20200320182347.87675-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68dc33fcf817eaf62cd8d4eabf28f03fb0432532
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri May 1 11:11:09 2020 -0700

    atm: fix a memory leak of vcc->user_back
    
    [ Upstream commit 8d9f73c0ad2f20e9fed5380de0a3097825859d03 ]
    
    In lec_arp_clear_vccs() only entry->vcc is freed, but vcc
    could be installed on entry->recv_vcc too in lec_vcc_added().
    
    This fixes the following memory leak:
    
    unreferenced object 0xffff8880d9266b90 (size 16):
      comm "atm2", pid 425, jiffies 4294907980 (age 23.488s)
      hex dump (first 16 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 6b 6b 6b a5  ............kkk.
      backtrace:
        [<(____ptrval____)>] kmem_cache_alloc_trace+0x10e/0x151
        [<(____ptrval____)>] lane_ioctl+0x4b3/0x569
        [<(____ptrval____)>] do_vcc_ioctl+0x1ea/0x236
        [<(____ptrval____)>] svc_ioctl+0x17d/0x198
        [<(____ptrval____)>] sock_do_ioctl+0x47/0x12f
        [<(____ptrval____)>] sock_ioctl+0x2f9/0x322
        [<(____ptrval____)>] vfs_ioctl+0x1e/0x2b
        [<(____ptrval____)>] ksys_ioctl+0x61/0x80
        [<(____ptrval____)>] __x64_sys_ioctl+0x16/0x19
        [<(____ptrval____)>] do_syscall_64+0x57/0x65
        [<(____ptrval____)>] entry_SYSCALL_64_after_hwframe+0x49/0xb3
    
    Cc: Gengming Liu <l.dmxcsnsbh@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa73de8793fbbace70281f6e40fdd1831d6e14b6
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Fri May 1 15:35:34 2020 +0200

    dt-bindings: sound: wm8994: Correct required supplies based on actual implementaion
    
    [ Upstream commit 8c149b7d75e53be47648742f40fc90d9fc6fa63a ]
    
    The required supplies in bindings were actually not matching
    implementation making the bindings incorrect and misleading.  The Linux
    kernel driver requires all supplies to be present.  Also for wlf,wm8994
    uses just DBVDD-supply instead of DBVDDn-supply (n: <1,3>).
    
    Reported-by: Jonathan Bakker <xc-racer2@live.ca>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://lore.kernel.org/r/20200501133534.6706-1-krzk@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8658bb981e148a19946d1e6825bad46cc8785eb7
Author: Will Deacon <will@kernel.org>
Date:   Tue Apr 21 15:29:21 2020 +0100

    arm64: cpufeature: Relax checks for AArch32 support at EL[0-2]
    
    [ Upstream commit 98448cdfe7060dd5491bfbd3f7214ffe1395d58e ]
    
    We don't need to be quite as strict about mismatched AArch32 support,
    which is good because the friendly hardware folks have been busy
    mismatching this to their hearts' content.
    
      * We don't care about EL2 or EL3 (there are silly comments concerning
        the latter, so remove those)
    
      * EL1 support is gated by the ARM64_HAS_32BIT_EL1 capability and handled
        gracefully when a mismatch occurs
    
      * EL0 support is gated by the ARM64_HAS_32BIT_EL0 capability and handled
        gracefully when a mismatch occurs
    
    Relax the AArch32 checks to FTR_NONSTRICT.
    
    Tested-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/20200421142922.18950-8-will@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c8c4d83ef7038059c4be11b099e537598040e63
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Apr 27 12:24:15 2020 +0000

    sparc64: vcc: Fix error return code in vcc_probe()
    
    [ Upstream commit ff62255a2a5c1228a28f2bb063646f948115a309 ]
    
    Fix to return negative error code -ENOMEM from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20200427122415.47416-1-weiyongjun1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bbd1347bd4ad6e2fc79bed8f19b088abb42fb4b1
Author: Ivan Safonov <insafonov@gmail.com>
Date:   Thu Apr 23 22:14:04 2020 +0300

    staging:r8188eu: avoid skb_clone for amsdu to msdu conversion
    
    [ Upstream commit 628cbd971a927abe6388d44320e351c337b331e4 ]
    
    skb clones use same data buffer,
    so tail of one skb is corrupted by beginning of next skb.
    
    Signed-off-by: Ivan Safonov <insafonov@gmail.com>
    Link: https://lore.kernel.org/r/20200423191404.12028-1-insafonov@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31662a5a20aeea840be606c95c2953fe2262b1c4
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Apr 12 11:40:39 2020 +0200

    scsi: aacraid: Fix error handling paths in aac_probe_one()
    
    [ Upstream commit f7854c382240c1686900b2f098b36430c6f5047e ]
    
    If 'scsi_host_alloc()' or 'kcalloc()' fail, 'error' is known to be 0. Set
    it explicitly to -ENOMEM before branching to the error handling path.
    
    While at it, remove 2 useless assignments to 'error'. These values are
    overwridden a few lines later.
    
    Link: https://lore.kernel.org/r/20200412094039.8822-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6043d6112f7dece5285eb87edc49b5d4ac248297
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Fri Apr 24 08:08:06 2020 +0800

    net: openvswitch: use u64 for meter bucket
    
    [ Upstream commit e57358873bb5d6caa882b9684f59140912b37dde ]
    
    When setting the meter rate to 4+Gbps, there is an
    overflow, the meters don't work as expected.
    
    Cc: Pravin B Shelar <pshelar@ovn.org>
    Cc: Andy Zhou <azhou@ovn.org>
    Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c451f583f547536854e9647fa9582e698bc111c
Author: Zenghui Yu <yuzenghui@huawei.com>
Date:   Tue Apr 14 11:03:48 2020 +0800

    KVM: arm64: vgic-its: Fix memory leak on the error path of vgic_add_lpi()
    
    [ Upstream commit 57bdb436ce869a45881d8aa4bc5dac8e072dd2b6 ]
    
    If we're going to fail out the vgic_add_lpi(), let's make sure the
    allocated vgic_irq memory is also freed. Though it seems that both
    cases are unlikely to fail.
    
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200414030349.625-3-yuzenghui@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82be3d65f4198d3958bd54de1cba193368a4b1a2
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Fri Apr 17 21:04:51 2020 +0530

    drivers: char: tlclk.c: Avoid data race between init and interrupt handler
    
    [ Upstream commit 44b8fb6eaa7c3fb770bf1e37619cdb3902cca1fc ]
    
    After registering character device the file operation callbacks can be
    called. The open callback registers interrupt handler.
    Therefore interrupt handler can execute in parallel with rest of the init
    function. To avoid such data race initialize telclk_interrupt variable
    and struct alarm_events before registering character device.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Link: https://lore.kernel.org/r/20200417153451.1551-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b6256c2966706c279f54bdd2c6582c7c370e9467
Author: Douglas Anderson <dianders@chromium.org>
Date:   Tue Mar 24 14:48:27 2020 -0700

    bdev: Reduce time holding bd_mutex in sync in blkdev_close()
    
    [ Upstream commit b849dd84b6ccfe32622988b79b7b073861fcf9f7 ]
    
    While trying to "dd" to the block device for a USB stick, I
    encountered a hung task warning (blocked for > 120 seconds).  I
    managed to come up with an easy way to reproduce this on my system
    (where /dev/sdb is the block device for my USB stick) with:
    
      while true; do dd if=/dev/zero of=/dev/sdb bs=4M; done
    
    With my reproduction here are the relevant bits from the hung task
    detector:
    
     INFO: task udevd:294 blocked for more than 122 seconds.
     ...
     udevd           D    0   294      1 0x00400008
     Call trace:
      ...
      mutex_lock_nested+0x40/0x50
      __blkdev_get+0x7c/0x3d4
      blkdev_get+0x118/0x138
      blkdev_open+0x94/0xa8
      do_dentry_open+0x268/0x3a0
      vfs_open+0x34/0x40
      path_openat+0x39c/0xdf4
      do_filp_open+0x90/0x10c
      do_sys_open+0x150/0x3c8
      ...
    
     ...
     Showing all locks held in the system:
     ...
     1 lock held by dd/2798:
      #0: ffffff814ac1a3b8 (&bdev->bd_mutex){+.+.}, at: __blkdev_put+0x50/0x204
     ...
     dd              D    0  2798   2764 0x00400208
     Call trace:
      ...
      schedule+0x8c/0xbc
      io_schedule+0x1c/0x40
      wait_on_page_bit_common+0x238/0x338
      __lock_page+0x5c/0x68
      write_cache_pages+0x194/0x500
      generic_writepages+0x64/0xa4
      blkdev_writepages+0x24/0x30
      do_writepages+0x48/0xa8
      __filemap_fdatawrite_range+0xac/0xd8
      filemap_write_and_wait+0x30/0x84
      __blkdev_put+0x88/0x204
      blkdev_put+0xc4/0xe4
      blkdev_close+0x28/0x38
      __fput+0xe0/0x238
      ____fput+0x1c/0x28
      task_work_run+0xb0/0xe4
      do_notify_resume+0xfc0/0x14bc
      work_pending+0x8/0x14
    
    The problem appears related to the fact that my USB disk is terribly
    slow and that I have a lot of RAM in my system to cache things.
    Specifically my writes seem to be happening at ~15 MB/s and I've got
    ~4 GB of RAM in my system that can be used for buffering.  To write 4
    GB of buffer to disk thus takes ~4000 MB / ~15 MB/s = ~267 seconds.
    
    The 267 second number is a problem because in __blkdev_put() we call
    sync_blockdev() while holding the bd_mutex.  Any other callers who
    want the bd_mutex will be blocked for the whole time.
    
    The problem is made worse because I believe blkdev_put() specifically
    tells other tasks (namely udev) to go try to access the device at right
    around the same time we're going to hold the mutex for a long time.
    
    Putting some traces around this (after disabling the hung task detector),
    I could confirm:
     dd:    437.608600: __blkdev_put() right before sync_blockdev() for sdb
     udevd: 437.623901: blkdev_open() right before blkdev_get() for sdb
     dd:    661.468451: __blkdev_put() right after sync_blockdev() for sdb
     udevd: 663.820426: blkdev_open() right after blkdev_get() for sdb
    
    A simple fix for this is to realize that sync_blockdev() works fine if
    you're not holding the mutex.  Also, it's not the end of the world if
    you sync a little early (though it can have performance impacts).
    Thus we can make a guess that we're going to need to do the sync and
    then do it without holding the mutex.  We still do one last sync with
    the mutex but it should be much, much faster.
    
    With this, my hung task warnings for my test case are gone.
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c0356665fd0f6161a9284a61c06974ac82af7a7
Author: Steve Rutherford <srutherford@google.com>
Date:   Thu Apr 16 12:11:52 2020 -0700

    KVM: Remove CREATE_IRQCHIP/SET_PIT2 race
    
    [ Upstream commit 7289fdb5dcdbc5155b5531529c44105868a762f2 ]
    
    Fixes a NULL pointer dereference, caused by the PIT firing an interrupt
    before the interrupt table has been initialized.
    
    SET_PIT2 can race with the creation of the IRQchip. In particular,
    if SET_PIT2 is called with a low PIT timer period (after the creation of
    the IOAPIC, but before the instantiation of the irq routes), the PIT can
    fire an interrupt at an uninitialized table.
    
    Signed-off-by: Steve Rutherford <srutherford@google.com>
    Signed-off-by: Jon Cargille <jcargill@google.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Message-Id: <20200416191152.259434-1-jcargill@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99e4fecd18d6d26c96cec5b03880d63924b77cfe
Author: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
Date:   Thu Apr 9 11:56:02 2020 +0530

    serial: uartps: Wait for tx_empty in console setup
    
    [ Upstream commit 42e11948ddf68b9f799cad8c0ddeab0a39da33e8 ]
    
    On some platforms, the log is corrupted while console is being
    registered. It is observed that when set_termios is called, there
    are still some bytes in the FIFO to be transmitted.
    
    So, wait for tx_empty inside cdns_uart_console_setup before calling
    set_termios.
    
    Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
    Reviewed-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
    Link: https://lore.kernel.org/r/1586413563-29125-2-git-send-email-raviteja.narayanam@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b860a828153a69e9d0993a163131e283ecc61fb8
Author: Nilesh Javali <njavali@marvell.com>
Date:   Tue Apr 7 23:43:32 2020 -0700

    scsi: qedi: Fix termination timeouts in session logout
    
    [ Upstream commit b9b97e6903032ec56e6dcbe137a9819b74a17fea ]
    
    The destroy connection ramrod timed out during session logout.  Fix the
    wait delay for graceful vs abortive termination as per the FW requirements.
    
    Link: https://lore.kernel.org/r/20200408064332.19377-7-mrangankar@marvell.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bee7991f63e6ae8faba0c704f4d98575bb0312f
Author: Jaewon Kim <jaewon31.kim@samsung.com>
Date:   Fri Apr 10 14:32:48 2020 -0700

    mm/mmap.c: initialize align_offset explicitly for vm_unmapped_area
    
    [ Upstream commit 09ef5283fd96ac424ef0e569626f359bf9ab86c9 ]
    
    On passing requirement to vm_unmapped_area, arch_get_unmapped_area and
    arch_get_unmapped_area_topdown did not set align_offset.  Internally on
    both unmapped_area and unmapped_area_topdown, if info->align_mask is 0,
    then info->align_offset was meaningless.
    
    But commit df529cabb7a2 ("mm: mmap: add trace point of
    vm_unmapped_area") always prints info->align_offset even though it is
    uninitialized.
    
    Fix this uninitialized value issue by setting it to 0 explicitly.
    
    Before:
      vm_unmapped_area: addr=0x755b155000 err=0 total_vm=0x15aaf0 flags=0x1 len=0x109000 lo=0x8000 hi=0x75eed48000 mask=0x0 ofs=0x4022
    
    After:
      vm_unmapped_area: addr=0x74a4ca1000 err=0 total_vm=0x168ab1 flags=0x1 len=0x9000 lo=0x8000 hi=0x753d94b000 mask=0x0 ofs=0x0
    
    Signed-off-by: Jaewon Kim <jaewon31.kim@samsung.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/20200409094035.19457-1-jaewon31.kim@samsung.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5fd750e826609e69f11d2d55113efbd40e9f6b4c
Author: Israel Rukshin <israelr@mellanox.com>
Date:   Tue Apr 7 11:02:28 2020 +0000

    nvmet-rdma: fix double free of rdma queue
    
    [ Upstream commit 21f9024355e58772ec5d7fc3534aa5e29d72a8b6 ]
    
    In case rdma accept fails at nvmet_rdma_queue_connect(), release work is
    scheduled. Later on, a new RDMA CM event may arrive since we didn't
    destroy the cm-id and call nvmet_rdma_queue_connect_fail(), which
    schedule another release work. This will cause calling
    nvmet_rdma_free_queue twice. To fix this we implicitly destroy the cm_id
    with non-zero ret code, which guarantees that new rdma_cm events will
    not arrive afterwards. Also add a qp pointer to nvmet_rdma_queue
    structure, so we can use it when the cm_id pointer is NULL or was
    destroyed.
    
    Signed-off-by: Israel Rukshin <israelr@mellanox.com>
    Suggested-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b73c744019721ea47340b37440a7f6a263beea54
Author: Qian Cai <cai@lca.pw>
Date:   Wed Apr 1 21:10:12 2020 -0700

    mm/vmscan.c: fix data races using kswapd_classzone_idx
    
    [ Upstream commit 5644e1fbbfe15ad06785502bbfe5751223e5841d ]
    
    pgdat->kswapd_classzone_idx could be accessed concurrently in
    wakeup_kswapd().  Plain writes and reads without any lock protection
    result in data races.  Fix them by adding a pair of READ|WRITE_ONCE() as
    well as saving a branch (compilers might well optimize the original code
    in an unintentional way anyway).  While at it, also take care of
    pgdat->kswapd_order and non-kswapd threads in allow_direct_reclaim().  The
    data races were reported by KCSAN,
    
     BUG: KCSAN: data-race in wakeup_kswapd / wakeup_kswapd
    
     write to 0xffff9f427ffff2dc of 4 bytes by task 7454 on cpu 13:
      wakeup_kswapd+0xf1/0x400
      wakeup_kswapd at mm/vmscan.c:3967
      wake_all_kswapds+0x59/0xc0
      wake_all_kswapds at mm/page_alloc.c:4241
      __alloc_pages_slowpath+0xdcc/0x1290
      __alloc_pages_slowpath at mm/page_alloc.c:4512
      __alloc_pages_nodemask+0x3bb/0x450
      alloc_pages_vma+0x8a/0x2c0
      do_anonymous_page+0x16e/0x6f0
      __handle_mm_fault+0xcd5/0xd40
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x6f9
      page_fault+0x34/0x40
    
     1 lock held by mtest01/7454:
      #0: ffff9f425afe8808 (&mm->mmap_sem#2){++++}, at:
     do_page_fault+0x143/0x6f9
     do_user_addr_fault at arch/x86/mm/fault.c:1405
     (inlined by) do_page_fault at arch/x86/mm/fault.c:1539
     irq event stamp: 6944085
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x34c/0x57c
     irq_exit+0xa2/0xc0
    
     read to 0xffff9f427ffff2dc of 4 bytes by task 7472 on cpu 38:
      wakeup_kswapd+0xc8/0x400
      wake_all_kswapds+0x59/0xc0
      __alloc_pages_slowpath+0xdcc/0x1290
      __alloc_pages_nodemask+0x3bb/0x450
      alloc_pages_vma+0x8a/0x2c0
      do_anonymous_page+0x16e/0x6f0
      __handle_mm_fault+0xcd5/0xd40
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x6f9
      page_fault+0x34/0x40
    
     1 lock held by mtest01/7472:
      #0: ffff9f425a9ac148 (&mm->mmap_sem#2){++++}, at:
     do_page_fault+0x143/0x6f9
     irq event stamp: 6793561
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x34c/0x57c
     irq_exit+0xa2/0xc0
    
     BUG: KCSAN: data-race in kswapd / wakeup_kswapd
    
     write to 0xffff90973ffff2dc of 4 bytes by task 820 on cpu 6:
      kswapd+0x27c/0x8d0
      kthread+0x1e0/0x200
      ret_from_fork+0x27/0x50
    
     read to 0xffff90973ffff2dc of 4 bytes by task 6299 on cpu 0:
      wakeup_kswapd+0xf3/0x450
      wake_all_kswapds+0x59/0xc0
      __alloc_pages_slowpath+0xdcc/0x1290
      __alloc_pages_nodemask+0x3bb/0x450
      alloc_pages_vma+0x8a/0x2c0
      do_anonymous_page+0x170/0x700
      __handle_mm_fault+0xc9f/0xd00
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x6f9
      page_fault+0x34/0x40
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Marco Elver <elver@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Link: http://lkml.kernel.org/r/1582749472-5171-1-git-send-email-cai@lca.pw
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cebefe4f6fc0cf5721d443b91e8f43a66766fb06
Author: Xianting Tian <xianting_tian@126.com>
Date:   Wed Apr 1 21:04:47 2020 -0700

    mm/filemap.c: clear page error before actual read
    
    [ Upstream commit faffdfa04fa11ccf048cebdde73db41ede0679e0 ]
    
    Mount failure issue happens under the scenario: Application forked dozens
    of threads to mount the same number of cramfs images separately in docker,
    but several mounts failed with high probability.  Mount failed due to the
    checking result of the page(read from the superblock of loop dev) is not
    uptodate after wait_on_page_locked(page) returned in function cramfs_read:
    
       wait_on_page_locked(page);
       if (!PageUptodate(page)) {
          ...
       }
    
    The reason of the checking result of the page not uptodate: systemd-udevd
    read the loopX dev before mount, because the status of loopX is Lo_unbound
    at this time, so loop_make_request directly trigger the calling of io_end
    handler end_buffer_async_read, which called SetPageError(page).  So It
    caused the page can't be set to uptodate in function
    end_buffer_async_read:
    
       if(page_uptodate && !PageError(page)) {
          SetPageUptodate(page);
       }
    
    Then mount operation is performed, it used the same page which is just
    accessed by systemd-udevd above, Because this page is not uptodate, it
    will launch a actual read via submit_bh, then wait on this page by calling
    wait_on_page_locked(page).  When the I/O of the page done, io_end handler
    end_buffer_async_read is called, because no one cleared the page
    error(during the whole read path of mount), which is caused by
    systemd-udevd reading, so this page is still in "PageError" status, which
    can't be set to uptodate in function end_buffer_async_read, then caused
    mount failure.
    
    But sometimes mount succeed even through systemd-udeved read loopX dev
    just before, The reason is systemd-udevd launched other loopX read just
    between step 3.1 and 3.2, the steps as below:
    
    1, loopX dev default status is Lo_unbound;
    2, systemd-udved read loopX dev (page is set to PageError);
    3, mount operation
       1) set loopX status to Lo_bound;
       ==>systemd-udevd read loopX dev<==
       2) read loopX dev(page has no error)
       3) mount succeed
    
    As the loopX dev status is set to Lo_bound after step 3.1, so the other
    loopX dev read by systemd-udevd will go through the whole I/O stack, part
    of the call trace as below:
    
       SYS_read
          vfs_read
              do_sync_read
                  blkdev_aio_read
                     generic_file_aio_read
                         do_generic_file_read:
                            ClearPageError(page);
                            mapping->a_ops->readpage(filp, page);
    
    here, mapping->a_ops->readpage() is blkdev_readpage.  In latest kernel,
    some function name changed, the call trace as below:
    
       blkdev_read_iter
          generic_file_read_iter
             generic_file_buffered_read:
                /*
                 * A previous I/O error may have been due to temporary
                 * failures, eg. mutipath errors.
                 * Pg_error will be set again if readpage fails.
                 */
                ClearPageError(page);
                /* Start the actual read. The read will unlock the page*/
                error=mapping->a_ops->readpage(flip, page);
    
    We can see ClearPageError(page) is called before the actual read,
    then the read in step 3.2 succeed.
    
    This patch is to add the calling of ClearPageError just before the actual
    read of read path of cramfs mount.  Without the patch, the call trace as
    below when performing cramfs mount:
    
       do_mount
          cramfs_read
             cramfs_blkdev_read
                read_cache_page
                   do_read_cache_page:
                      filler(data, page);
                      or
                      mapping->a_ops->readpage(data, page);
    
    With the patch, the call trace as below when performing mount:
    
       do_mount
          cramfs_read
             cramfs_blkdev_read
                read_cache_page:
                   do_read_cache_page:
                      ClearPageError(page); <== new add
                      filler(data, page);
                      or
                      mapping->a_ops->readpage(data, page);
    
    With the patch, mount operation trigger the calling of
    ClearPageError(page) before the actual read, the page has no error if no
    additional page error happen when I/O done.
    
    Signed-off-by: Xianting Tian <xianting_tian@126.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: <yubin@h3c.com>
    Link: http://lkml.kernel.org/r/1583318844-22971-1-git-send-email-xianting_tian@126.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit afe001488e7e8e1108a2d9fcac3757713ffae503
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Apr 1 21:04:34 2020 -0700

    mm/kmemleak.c: use address-of operator on section symbols
    
    [ Upstream commit b0d14fc43d39203ae025f20ef4d5d25d9ccf4be1 ]
    
    Clang warns:
    
      mm/kmemleak.c:1955:28: warning: array comparison always evaluates to a constant [-Wtautological-compare]
            if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata)
                                      ^
      mm/kmemleak.c:1955:60: warning: array comparison always evaluates to a constant [-Wtautological-compare]
            if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata)
    
    These are not true arrays, they are linker defined symbols, which are just
    addresses.  Using the address of operator silences the warning and does
    not change the resulting assembly with either clang/ld.lld or gcc/ld
    (tested with diff + objdump -Dr).
    
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/895
    Link: http://lkml.kernel.org/r/20200220051551.44000-1-natechancellor@gmail.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f39a7cc5d07a58c53f3054b177bad93c243d3f9
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Apr 1 13:04:49 2020 -0400

    NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests()
    
    [ Upstream commit 08ca8b21f760c0ed5034a5c122092eec22ccf8f4 ]
    
    When a subrequest is being detached from the subgroup, we want to
    ensure that it is not holding the group lock, or in the process
    of waiting for the group lock.
    
    Fixes: 5b2b5187fa85 ("NFS: Fix nfs_page_group_destroy() and nfs_lock_and_join_requests() race cases")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8cc52270f3d8e8f4faf01ffd6c4a95bbfb55ba4
Author: Stuart Hayes <stuart.w.hayes@gmail.com>
Date:   Wed Feb 19 15:31:13 2020 +0100

    PCI: pciehp: Fix MSI interrupt race
    
    [ Upstream commit 8edf5332c39340b9583cf9cba659eb7ec71f75b5 ]
    
    Without this commit, a PCIe hotplug port can stop generating interrupts on
    hotplug events, so device adds and removals will not be seen:
    
    The pciehp interrupt handler pciehp_isr() reads the Slot Status register
    and then writes back to it to clear the bits that caused the interrupt.  If
    a different interrupt event bit gets set between the read and the write,
    pciehp_isr() returns without having cleared all of the interrupt event
    bits.  If this happens when the MSI isn't masked (which by default it isn't
    in handle_edge_irq(), and which it will never be when MSI per-vector
    masking is not supported), we won't get any more hotplug interrupts from
    that device.
    
    That is expected behavior, according to the PCIe Base Spec r5.0, section
    6.7.3.4, "Software Notification of Hot-Plug Events".
    
    Because the Presence Detect Changed and Data Link Layer State Changed event
    bits can both get set at nearly the same time when a device is added or
    removed, this is more likely to happen than it might seem.  The issue was
    found (and can be reproduced rather easily) by connecting and disconnecting
    an NVMe storage device on at least one system model where the NVMe devices
    were being connected to an AMD PCIe port (PCI device 0x1022/0x1483).
    
    Fix the issue by modifying pciehp_isr() to loop back and re-read the Slot
    Status register immediately after writing to it, until it sees that all of
    the event status bits have been cleared.
    
    [lukas: drop loop count limitation, write "events" instead of "status",
    don't loop back in INTx and poll modes, tweak code comment & commit msg]
    Link: https://lore.kernel.org/r/78b4ced5072bfe6e369d20e8b47c279b8c7af12e.1582121613.git.lukas@wunner.de
    Tested-by: Stuart Hayes <stuart.w.hayes@gmail.com>
    Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65d95462001c6ccd9bc9499c1fc9a90eca9de496
Author: Andreas Steinmetz <ast@domdv.de>
Date:   Tue Mar 31 14:25:54 2020 +0200

    ALSA: usb-audio: Fix case when USB MIDI interface has more than one extra endpoint descriptor
    
    [ Upstream commit 5c6cd7021a05a02fcf37f360592d7c18d4d807fb ]
    
    The Miditech MIDIFACE 16x16 (USB ID 1290:1749) has more than one extra
    endpoint descriptor.
    
    The first extra descriptor is: 0x06 0x30 0x00 0x00 0x00 0x00
    
    As the code in snd_usbmidi_get_ms_info() looks only at the
    first extra descriptor to find USB_DT_CS_ENDPOINT the device
    as such is recognized but there is neither input nor output
    configured.
    
    The patch iterates through the extra descriptors to find the
    proper one. With this patch the device is correctly configured.
    
    Signed-off-by: Andreas Steinmetz <ast@domdv.de>
    Link: https://lore.kernel.org/r/1c3b431a86f69e1d60745b6110cdb93c299f120b.camel@domdv.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f0a77ccae8bf303b439fe62ad2830a3c3255848
Author: Liu Song <liu.song11@zte.com.cn>
Date:   Thu Jan 16 23:36:07 2020 +0800

    ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len
    
    [ Upstream commit acc5af3efa303d5f36cc8c0f61716161f6ca1384 ]
    
    In “ubifs_check_node”, when the value of "node_len" is abnormal,
    the code will goto label of "out_len" for execution. Then, in the
    following "ubifs_dump_node", if inode type is "UBIFS_DATA_NODE",
    in "print_hex_dump", an out-of-bounds access may occur due to the
    wrong "ch->len".
    
    Therefore, when the value of "node_len" is abnormal, data length
    should to be adjusted to a reasonable safe range. At this time,
    structured data is not credible, so dump the corrupted data directly
    for analysis.
    
    Signed-off-by: Liu Song <liu.song11@zte.com.cn>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1841a99325123478c46720078802df3f313e2199
Author: Mikel Rychliski <mikel@mikelr.com>
Date:   Wed Mar 18 22:16:23 2020 -0400

    PCI: Use ioremap(), not phys_to_virt() for platform ROM
    
    [ Upstream commit 72e0ef0e5f067fd991f702f0b2635d911d0cf208 ]
    
    On some EFI systems, the video BIOS is provided by the EFI firmware.  The
    boot stub code stores the physical address of the ROM image in pdev->rom.
    Currently we attempt to access this pointer using phys_to_virt(), which
    doesn't work with CONFIG_HIGHMEM.
    
    On these systems, attempting to load the radeon module on a x86_32 kernel
    can result in the following:
    
      BUG: unable to handle page fault for address: 3e8ed03c
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      *pde = 00000000
      Oops: 0000 [#1] PREEMPT SMP
      CPU: 0 PID: 317 Comm: systemd-udevd Not tainted 5.6.0-rc3-next-20200228 #2
      Hardware name: Apple Computer, Inc. MacPro1,1/Mac-F4208DC8, BIOS     MP11.88Z.005C.B08.0707021221 07/02/07
      EIP: radeon_get_bios+0x5ed/0xe50 [radeon]
      Code: 00 00 84 c0 0f 85 12 fd ff ff c7 87 64 01 00 00 00 00 00 00 8b 47 08 8b 55 b0 e8 1e 83 e1 d6 85 c0 74 1a 8b 55 c0 85 d2 74 13 <80> 38 55 75 0e 80 78 01 aa 0f 84 a4 03 00 00 8d 74 26 00 68 dc 06
      EAX: 3e8ed03c EBX: 00000000 ECX: 3e8ed03c EDX: 00010000
      ESI: 00040000 EDI: eec04000 EBP: eef3fc60 ESP: eef3fbe0
      DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 EFLAGS: 00010206
      CR0: 80050033 CR2: 3e8ed03c CR3: 2ec77000 CR4: 000006d0
      Call Trace:
       r520_init+0x26/0x240 [radeon]
       radeon_device_init+0x533/0xa50 [radeon]
       radeon_driver_load_kms+0x80/0x220 [radeon]
       drm_dev_register+0xa7/0x180 [drm]
       radeon_pci_probe+0x10f/0x1a0 [radeon]
       pci_device_probe+0xd4/0x140
    
    Fix the issue by updating all drivers which can access a platform provided
    ROM. Instead of calling the helper function pci_platform_rom() which uses
    phys_to_virt(), call ioremap() directly on the pdev->rom.
    
    radeon_read_platform_bios() previously directly accessed an __iomem
    pointer. Avoid this by calling memcpy_fromio() instead of kmemdup().
    
    pci_platform_rom() now has no remaining callers, so remove it.
    
    Link: https://lore.kernel.org/r/20200319021623.5426-1-mikel@mikelr.com
    Signed-off-by: Mikel Rychliski <mikel@mikelr.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 308aeb3629c8745ef55ec38545cf2dc338108267
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Tue Mar 24 16:53:59 2020 -0400

    svcrdma: Fix leak of transport addresses
    
    [ Upstream commit 1a33d8a284b1e85e03b8c7b1ea8fb985fccd1d71 ]
    
    Kernel memory leak detected:
    
    unreferenced object 0xffff888849cdf480 (size 8):
      comm "kworker/u8:3", pid 2086, jiffies 4297898756 (age 4269.856s)
      hex dump (first 8 bytes):
        30 00 cd 49 88 88 ff ff                          0..I....
      backtrace:
        [<00000000acfc370b>] __kmalloc_track_caller+0x137/0x183
        [<00000000a2724354>] kstrdup+0x2b/0x43
        [<0000000082964f84>] xprt_rdma_format_addresses+0x114/0x17d [rpcrdma]
        [<00000000dfa6ed00>] xprt_setup_rdma_bc+0xc0/0x10c [rpcrdma]
        [<0000000073051a83>] xprt_create_transport+0x3f/0x1a0 [sunrpc]
        [<0000000053531a8e>] rpc_create+0x118/0x1cd [sunrpc]
        [<000000003a51b5f8>] setup_callback_client+0x1a5/0x27d [nfsd]
        [<000000001bd410af>] nfsd4_process_cb_update.isra.7+0x16c/0x1ac [nfsd]
        [<000000007f4bbd56>] nfsd4_run_cb_work+0x4c/0xbd [nfsd]
        [<0000000055c5586b>] process_one_work+0x1b2/0x2fe
        [<00000000b1e3e8ef>] worker_thread+0x1a6/0x25a
        [<000000005205fb78>] kthread+0xf6/0xfb
        [<000000006d2dc057>] ret_from_fork+0x3a/0x50
    
    Introduce a call to xprt_rdma_free_addresses() similar to the way
    that the TCP backchannel releases a transport's peer address
    strings.
    
    Fixes: 5d252f90a800 ("svcrdma: Add class for RDMA backwards direction transport")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38c46471f998067e7eff81b04d7238427ae40975
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Mar 27 17:15:39 2020 +0100

    SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()'
    
    [ Upstream commit b25b60d7bfb02a74bc3c2d998e09aab159df8059 ]
    
    'maxlen' is the total size of the destination buffer. There is only one
    caller and this value is 256.
    
    When we compute the size already used and what we would like to add in
    the buffer, the trailling NULL character is not taken into account.
    However, this trailling character will be added by the 'strcat' once we
    have checked that we have enough place.
    
    So, there is a off-by-one issue and 1 byte of the stack could be
    erroneously overwridden.
    
    Take into account the trailling NULL, when checking if there is enough
    place in the destination buffer.
    
    While at it, also replace a 'sprintf' by a safer 'snprintf', check for
    output truncation and avoid a superfluous 'strlen'.
    
    Fixes: dc9a16e49dbba ("svc: Add /proc/sys/sunrpc/transport files")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    [ cel: very minor fix to documenting comment
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b125a752eb1843a4546ec8ab6bf162baf8ebaae3
Author: Don Brace <don.brace@microsemi.com>
Date:   Fri Mar 20 13:26:18 2020 -0500

    scsi: hpsa: correct race condition in offload enabled
    
    [ Upstream commit 3e16e83a62edac7617bfd8dbb4e55d04ff6adbe1 ]
    
    Correct race condition where ioaccel is re-enabled before the raid_map is
    updated. For RAID_1, RAID_1ADM, and RAID 5/6 there is a BUG_ON called which
    is bad.
    
     - Change event thread to disable ioaccel only. Send all requests down the
       RAID path instead.
    
     - Have rescan thread handle offload_enable.
    
     - Since there is only one rescan allowed at a time, turning
       offload_enabled on/off should not be racy. Each handler queues up a
       rescan if one is already in progress.
    
      - For timing diagram, offload_enabled is initially off due to a change
        (transformation: splitmirror/remirror), ...
    
      otbe = offload_to_be_enabled
      oe   = offload_enabled
    
      Time Event         Rescan              Completion     Request
           Worker        Worker              Thread         Thread
      ---- ------        ------              ----------     -------
       T0   |             |                       + UA      |
       T1   |             + rescan started        | 0x3f    |
       T2   + Event       |                       | 0x0e    |
       T3   + Ack msg     |                       |         |
       T4   |             + if (!dev[i]->oe &&    |         |
       T5   |             |     dev[i]->otbe)     |         |
       T6   |             |      get_raid_map     |         |
       T7   + otbe = 1    |                       |         |
       T8   |             |                       |         |
       T9   |             + oe = otbe             |         |
       T10  |             |                       |         + ioaccel request
       T11                                                  * BUG_ON
    
      T0 - I/O completion with UA 0x3f 0x0e sets rescan flag.
      T1 - rescan worker thread starts a rescan.
      T2 - event comes in
      T3 - event thread starts and issues "Acknowledge" message
      ...
      T6 - rescan thread has bypassed code to reload new raid map.
      ...
      T7 - event thread runs and sets offload_to_be_enabled
      ...
      T9 - rescan thread turns on offload_enabled.
      T10- request comes in and goes down ioaccel path.
      T11- BUG_ON.
    
     - After the patch is applied, ioaccel_enabled can only be re-enabled in
       the re-scan thread.
    
    Link: https://lore.kernel.org/r/158472877894.14200.7077843399036368335.stgit@brunhilda
    Reviewed-by: Scott Teel <scott.teel@microsemi.com>
    Reviewed-by: Matt Perricone <matt.perricone@microsemi.com>
    Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
    Signed-off-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db96986c088b047d12ef907ebec252804b785424
Author: Zhu Yanjun <yanjunz@mellanox.com>
Date:   Mon Mar 23 13:28:00 2020 +0200

    RDMA/rxe: Set sys_image_guid to be aligned with HW IB devices
    
    [ Upstream commit d0ca2c35dd15a3d989955caec02beea02f735ee6 ]
    
    The RXE driver doesn't set sys_image_guid and user space applications see
    zeros. This causes to pyverbs tests to fail with the following traceback,
    because the IBTA spec requires to have valid sys_image_guid.
    
     Traceback (most recent call last):
       File "./tests/test_device.py", line 51, in test_query_device
         self.verify_device_attr(attr)
       File "./tests/test_device.py", line 74, in verify_device_attr
         assert attr.sys_image_guid != 0
    
    In order to fix it, set sys_image_guid to be equal to node_guid.
    
    Before:
     5: rxe0: ... node_guid 5054:00ff:feaa:5363 sys_image_guid
     0000:0000:0000:0000
    
    After:
     5: rxe0: ... node_guid 5054:00ff:feaa:5363 sys_image_guid
     5054:00ff:feaa:5363
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Link: https://lore.kernel.org/r/20200323112800.1444784-1-leon@kernel.org
    Signed-off-by: Zhu Yanjun <yanjunz@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f7baf41b7c8963cbd4b23e2cb8a729894eafad7
Author: Israel Rukshin <israelr@mellanox.com>
Date:   Tue Mar 24 17:29:43 2020 +0200

    nvme: Fix controller creation races with teardown flow
    
    [ Upstream commit ce1518139e6976cf19c133b555083354fdb629b8 ]
    
    Calling nvme_sysfs_delete() when the controller is in the middle of
    creation may cause several bugs. If the controller is in NEW state we
    remove delete_controller file and don't delete the controller. The user
    will not be able to use nvme disconnect command on that controller again,
    although the controller may be active. Other bugs may happen if the
    controller is in the middle of create_ctrl callback and
    nvme_do_delete_ctrl() starts. For example, freeing I/O tagset at
    nvme_do_delete_ctrl() before it was allocated at create_ctrl callback.
    
    To fix all those races don't allow the user to delete the controller
    before it was fully created.
    
    Signed-off-by: Israel Rukshin <israelr@mellanox.com>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3dc81c1987f687dfa9c30b87c78dd0a2e603c56
Author: John Meneghini <johnm@netapp.com>
Date:   Thu Feb 20 10:05:38 2020 +0900

    nvme-multipath: do not reset on unknown status
    
    [ Upstream commit 764e9332098c0e60251386a507fe46ac91276120 ]
    
    The nvme multipath error handling defaults to controller reset if the
    error is unknown. There are, however, no existing nvme status codes that
    indicate a reset should be used, and resetting causes unnecessary
    disruption to the rest of IO.
    
    Change nvme's error handling to first check if failover should happen.
    If not, let the normal error handling take over rather than reset the
    controller.
    
    Based-on-a-patch-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: John Meneghini <johnm@netapp.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d0e482939c49c6fc4979e964c1cd6a7c255edd0
Author: Gabriel Ravier <gabravier@gmail.com>
Date:   Thu Mar 12 15:50:21 2020 +0100

    tools: gpio-hammer: Avoid potential overflow in main
    
    [ Upstream commit d1ee7e1f5c9191afb69ce46cc7752e4257340a31 ]
    
    If '-o' was used more than 64 times in a single invocation of gpio-hammer,
    this could lead to an overflow of the 'lines' array. This commit fixes
    this by avoiding the overflow and giving a proper diagnostic back to the
    user
    
    Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68aaf03936dcbfdf023ac2f7182c03f83c0c6e05
Author: Pratik Rajesh Sampat <psampat@linux.ibm.com>
Date:   Mon Mar 16 19:27:43 2020 +0530

    cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn
    
    [ Upstream commit d95fe371ecd28901f11256c610b988ed44e36ee2 ]
    
    The patch avoids allocating cpufreq_policy on stack hence fixing frame
    size overflow in 'powernv_cpufreq_work_fn'
    
    Fixes: 227942809b52 ("cpufreq: powernv: Restore cpu frequency to policy->cur on unthrottling")
    Signed-off-by: Pratik Rajesh Sampat <psampat@linux.ibm.com>
    Reviewed-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200316135743.57735-1-psampat@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a1d2d2eadeb4886610c2c310c8f39d106608e17
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Mar 24 08:03:19 2020 +0100

    perf cpumap: Fix snprintf overflow check
    
    [ Upstream commit d74b181a028bb5a468f0c609553eff6a8fdf4887 ]
    
    'snprintf' returns the number of characters which would be generated for
    the given input.
    
    If the returned value is *greater than* or equal to the buffer size, it
    means that the output has been truncated.
    
    Fix the overflow test accordingly.
    
    Fixes: 7780c25bae59f ("perf tools: Allow ability to map cpus to nodes easily")
    Fixes: 92a7e1278005b ("perf cpumap: Add cpu__max_present_cpu()")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Suggested-by: David Laight <David.Laight@ACULAB.COM>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Don Zickus <dzickus@redhat.com>
    Cc: He Zhe <zhe.he@windriver.com>
    Cc: Jan Stancek <jstancek@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel-janitors@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200324070319.10901-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 69077bd8f19a34a5a3bb05fd8bc032aa7983ef80
Author: Vignesh Raghavendra <vigneshr@ti.com>
Date:   Thu Mar 19 16:33:39 2020 +0530

    serial: 8250: 8250_omap: Terminate DMA before pushing data on RX timeout
    
    [ Upstream commit 7cf4df30a98175033e9849f7f16c46e96ba47f41 ]
    
    Terminate and flush DMA internal buffers, before pushing RX data to
    higher layer. Otherwise, this will lead to data corruption, as driver
    would end up pushing stale buffer data to higher layer while actual data
    is still stuck inside DMA hardware and has yet not arrived at the
    memory.
    While at that, replace deprecated dmaengine_terminate_all() with
    dmaengine_terminate_async().
    
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Link: https://lore.kernel.org/r/20200319110344.21348-2-vigneshr@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10aa90fed8aafbfe14e32552742d48eb8f806311
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Mar 20 14:52:00 2020 +0200

    serial: 8250_omap: Fix sleeping function called from invalid context during probe
    
    [ Upstream commit 4ce35a3617c0ac758c61122b2218b6c8c9ac9398 ]
    
    When booting j721e the following bug is printed:
    
    [    1.154821] BUG: sleeping function called from invalid context at kernel/sched/completion.c:99
    [    1.154827] in_atomic(): 0, irqs_disabled(): 128, non_block: 0, pid: 12, name: kworker/0:1
    [    1.154832] 3 locks held by kworker/0:1/12:
    [    1.154836]  #0: ffff000840030728 ((wq_completion)events){+.+.}, at: process_one_work+0x1d4/0x6e8
    [    1.154852]  #1: ffff80001214fdd8 (deferred_probe_work){+.+.}, at: process_one_work+0x1d4/0x6e8
    [    1.154860]  #2: ffff00084060b170 (&dev->mutex){....}, at: __device_attach+0x38/0x138
    [    1.154872] irq event stamp: 63096
    [    1.154881] hardirqs last  enabled at (63095): [<ffff800010b74318>] _raw_spin_unlock_irqrestore+0x70/0x78
    [    1.154887] hardirqs last disabled at (63096): [<ffff800010b740d8>] _raw_spin_lock_irqsave+0x28/0x80
    [    1.154893] softirqs last  enabled at (62254): [<ffff800010080c88>] _stext+0x488/0x564
    [    1.154899] softirqs last disabled at (62247): [<ffff8000100fdb3c>] irq_exit+0x114/0x140
    [    1.154906] CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted 5.6.0-rc6-next-20200318-00094-g45e4089b0bd3 #221
    [    1.154911] Hardware name: Texas Instruments K3 J721E SoC (DT)
    [    1.154917] Workqueue: events deferred_probe_work_func
    [    1.154923] Call trace:
    [    1.154928]  dump_backtrace+0x0/0x190
    [    1.154933]  show_stack+0x14/0x20
    [    1.154940]  dump_stack+0xe0/0x148
    [    1.154946]  ___might_sleep+0x150/0x1f0
    [    1.154952]  __might_sleep+0x4c/0x80
    [    1.154957]  wait_for_completion_timeout+0x40/0x140
    [    1.154964]  ti_sci_set_device_state+0xa0/0x158
    [    1.154969]  ti_sci_cmd_get_device_exclusive+0x14/0x20
    [    1.154977]  ti_sci_dev_start+0x34/0x50
    [    1.154984]  genpd_runtime_resume+0x78/0x1f8
    [    1.154991]  __rpm_callback+0x3c/0x140
    [    1.154996]  rpm_callback+0x20/0x80
    [    1.155001]  rpm_resume+0x568/0x758
    [    1.155007]  __pm_runtime_resume+0x44/0xb0
    [    1.155013]  omap8250_probe+0x2b4/0x508
    [    1.155019]  platform_drv_probe+0x50/0xa0
    [    1.155023]  really_probe+0xd4/0x318
    [    1.155028]  driver_probe_device+0x54/0xe8
    [    1.155033]  __device_attach_driver+0x80/0xb8
    [    1.155039]  bus_for_each_drv+0x74/0xc0
    [    1.155044]  __device_attach+0xdc/0x138
    [    1.155049]  device_initial_probe+0x10/0x18
    [    1.155053]  bus_probe_device+0x98/0xa0
    [    1.155058]  deferred_probe_work_func+0x74/0xb0
    [    1.155063]  process_one_work+0x280/0x6e8
    [    1.155068]  worker_thread+0x48/0x430
    [    1.155073]  kthread+0x108/0x138
    [    1.155079]  ret_from_fork+0x10/0x18
    
    To fix the bug we need to first call pm_runtime_enable() prior to any
    pm_runtime calls.
    
    Reported-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Link: https://lore.kernel.org/r/20200320125200.6772-1-peter.ujfalusi@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20191760203e3d0d9d840764891ea83854a63ef8
Author: Vignesh Raghavendra <vigneshr@ti.com>
Date:   Thu Mar 19 16:02:29 2020 +0530

    serial: 8250_port: Don't service RX FIFO if throttled
    
    [ Upstream commit f19c3f6c8109b8bab000afd35580929958e087a9 ]
    
    When port's throttle callback is called, it should stop pushing any more
    data into TTY buffer to avoid buffer overflow. This means driver has to
    stop HW from receiving more data and assert the HW flow control. For
    UARTs with auto HW flow control (such as 8250_omap) manual assertion of
    flow control line is not possible and only way is to allow RX FIFO to
    fill up, thus trigger auto HW flow control logic.
    
    Therefore make sure that 8250 generic IRQ handler does not drain data
    when port is stopped (i.e UART_LSR_DR is unset in read_status_mask). Not
    servicing, RX FIFO would trigger auto HW flow control when FIFO
    occupancy reaches preset threshold, thus halting RX.
    Since, error conditions in UART_LSR register are cleared just by reading
    the register, data has to be drained in case there are FIFO errors, else
    error information will lost.
    
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Link: https://lore.kernel.org/r/20200319103230.16867-2-vigneshr@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a0100a363098c33fc1f89fdd778a2bdf91379ed7
Author: Ian Rogers <irogers@google.com>
Date:   Sat Mar 14 10:03:56 2020 -0700

    perf parse-events: Fix 3 use after frees found with clang ASAN
    
    [ Upstream commit d4953f7ef1a2e87ef732823af35361404d13fea8 ]
    
    Reproducible with a clang asan build and then running perf test in
    particular 'Parse event definition strings'.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: clang-built-linux@googlegroups.com
    Link: http://lore.kernel.org/lkml/20200314170356.62914-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d8b5dbacd6b0ca84922fb12b2a05fd7e32383a2
Author: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Date:   Tue Mar 10 12:47:09 2020 +0100

    thermal: rcar_thermal: Handle probe error gracefully
    
    [ Upstream commit 39056e8a989ef52486e063e34b4822b341e47b0e ]
    
    If the common register memory resource is not available the driver needs
    to fail gracefully to disable PM. Instead of returning the error
    directly store it in ret and use the already existing error path.
    
    Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20200310114709.1483860-1-niklas.soderlund+renesas@ragnatech.se
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b92d156a32b8f40974ba38e0154b327d9605946e
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Feb 19 22:10:12 2020 -0700

    tracing: Use address-of operator on section symbols
    
    [ Upstream commit bf2cbe044da275021b2de5917240411a19e5c50d ]
    
    Clang warns:
    
    ../kernel/trace/trace.c:9335:33: warning: array comparison always
    evaluates to true [-Wtautological-compare]
            if (__stop___trace_bprintk_fmt != __start___trace_bprintk_fmt)
                                           ^
    1 warning generated.
    
    These are not true arrays, they are linker defined symbols, which are
    just addresses. Using the address of operator silences the warning and
    does not change the runtime result of the check (tested with some print
    statements compiled in with clang + ld.lld and gcc + ld.bfd in QEMU).
    
    Link: http://lkml.kernel.org/r/20200220051011.26113-1-natechancellor@gmail.com
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/893
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 102bdec1d1cf196aaafa4e54513490d5de6e05a4
Author: Jordan Crouse <jcrouse@codeaurora.org>
Date:   Fri Feb 14 11:36:44 2020 -0700

    drm/msm/a5xx: Always set an OPP supported hardware value
    
    [ Upstream commit 0478b4fc5f37f4d494245fe7bcce3f531cf380e9 ]
    
    If the opp table specifies opp-supported-hw as a property but the driver
    has not set a supported hardware value the OPP subsystem will reject
    all the table entries.
    
    Set a "default" value that will match the default table entries but not
    conflict with any possible real bin values. Also fix a small memory leak
    and free the buffer allocated by nvmem_cell_read().
    
    Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45e618016a40714ffecb392ecc20dd32a2d295a4
Author: Pavel Machek <pavel@denx.de>
Date:   Mon Mar 9 11:14:10 2020 +0100

    drm/msm: fix leaks if initialization fails
    
    [ Upstream commit 66be340f827554cb1c8a1ed7dea97920b4085af2 ]
    
    We should free resources in unlikely case of allocation failure.
    
    Signed-off-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 228403834931474902e29544faa4b860f59cbe9b
Author: Gustavo Romero <gromero@linux.ibm.com>
Date:   Fri Feb 21 11:29:50 2020 -0500

    KVM: PPC: Book3S HV: Treat TM-related invalid form instructions on P9 like the valid ones
    
    [ Upstream commit 1dff3064c764b5a51c367b949b341d2e38972bec ]
    
    On P9 DD2.2 due to a CPU defect some TM instructions need to be emulated by
    KVM. This is handled at first by the hardware raising a softpatch interrupt
    when certain TM instructions that need KVM assistance are executed in the
    guest. Althought some TM instructions per Power ISA are invalid forms they
    can raise a softpatch interrupt too. For instance, 'tresume.' instruction
    as defined in the ISA must have bit 31 set (1), but an instruction that
    matches 'tresume.' PO and XO opcode fields but has bit 31 not set (0), like
    0x7cfe9ddc, also raises a softpatch interrupt. Similarly for 'treclaim.'
    and 'trechkpt.' instructions with bit 31 = 0, i.e. 0x7c00075c and
    0x7c0007dc, respectively. Hence, if a code like the following is executed
    in the guest it will raise a softpatch interrupt just like a 'tresume.'
    when the TM facility is enabled ('tabort. 0' in the example is used only
    to enable the TM facility):
    
    int main() { asm("tabort. 0; .long 0x7cfe9ddc;"); }
    
    Currently in such a case KVM throws a complete trace like:
    
    [345523.705984] WARNING: CPU: 24 PID: 64413 at arch/powerpc/kvm/book3s_hv_tm.c:211 kvmhv_p9_tm_emulation+0x68/0x620 [kvm_hv]
    [345523.705985] Modules linked in: kvm_hv(E) xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp ip6table_mangle ip6table_nat
    iptable_mangle iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ebtable_filter ebtables ip6table_filter
    ip6_tables iptable_filter bridge stp llc sch_fq_codel ipmi_powernv at24 vmx_crypto ipmi_devintf ipmi_msghandler
    ibmpowernv uio_pdrv_genirq kvm opal_prd uio leds_powernv ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp
    libiscsi scsi_transport_iscsi ip_tables x_tables autofs4 btrfs blake2b_generic zstd_compress raid10 raid456
    async_raid6_recov async_memcpy async_pq async_xor async_tx libcrc32c xor raid6_pq raid1 raid0 multipath linear tg3
    crct10dif_vpmsum crc32c_vpmsum ipr [last unloaded: kvm_hv]
    [345523.706030] CPU: 24 PID: 64413 Comm: CPU 0/KVM Tainted: G        W   E     5.5.0+ #1
    [345523.706031] NIP:  c0080000072cb9c0 LR: c0080000072b5e80 CTR: c0080000085c7850
    [345523.706034] REGS: c000000399467680 TRAP: 0700   Tainted: G        W   E      (5.5.0+)
    [345523.706034] MSR:  900000010282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]>  CR: 24022428  XER: 00000000
    [345523.706042] CFAR: c0080000072b5e7c IRQMASK: 0
                    GPR00: c0080000072b5e80 c000000399467910 c0080000072db500 c000000375ccc720
                    GPR04: c000000375ccc720 00000003fbec0000 0000a10395dda5a6 0000000000000000
                    GPR08: 000000007cfe9ddc 7cfe9ddc000005dc 7cfe9ddc7c0005dc c0080000072cd530
                    GPR12: c0080000085c7850 c0000003fffeb800 0000000000000001 00007dfb737f0000
                    GPR16: c0002001edcca558 0000000000000000 0000000000000000 0000000000000001
                    GPR20: c000000001b21258 c0002001edcca558 0000000000000018 0000000000000000
                    GPR24: 0000000001000000 ffffffffffffffff 0000000000000001 0000000000001500
                    GPR28: c0002001edcc4278 c00000037dd80000 800000050280f033 c000000375ccc720
    [345523.706062] NIP [c0080000072cb9c0] kvmhv_p9_tm_emulation+0x68/0x620 [kvm_hv]
    [345523.706065] LR [c0080000072b5e80] kvmppc_handle_exit_hv.isra.53+0x3e8/0x798 [kvm_hv]
    [345523.706066] Call Trace:
    [345523.706069] [c000000399467910] [c000000399467940] 0xc000000399467940 (unreliable)
    [345523.706071] [c000000399467950] [c000000399467980] 0xc000000399467980
    [345523.706075] [c0000003994679f0] [c0080000072bd1c4] kvmhv_run_single_vcpu+0xa1c/0xb80 [kvm_hv]
    [345523.706079] [c000000399467ac0] [c0080000072bd8e0] kvmppc_vcpu_run_hv+0x5b8/0xb00 [kvm_hv]
    [345523.706087] [c000000399467b90] [c0080000085c93cc] kvmppc_vcpu_run+0x34/0x48 [kvm]
    [345523.706095] [c000000399467bb0] [c0080000085c582c] kvm_arch_vcpu_ioctl_run+0x244/0x420 [kvm]
    [345523.706101] [c000000399467c40] [c0080000085b7498] kvm_vcpu_ioctl+0x3d0/0x7b0 [kvm]
    [345523.706105] [c000000399467db0] [c0000000004adf9c] ksys_ioctl+0x13c/0x170
    [345523.706107] [c000000399467e00] [c0000000004adff8] sys_ioctl+0x28/0x80
    [345523.706111] [c000000399467e20] [c00000000000b278] system_call+0x5c/0x68
    [345523.706112] Instruction dump:
    [345523.706114] 419e0390 7f8a4840 409d0048 6d497c00 2f89075d 419e021c 6d497c00 2f8907dd
    [345523.706119] 419e01c0 6d497c00 2f8905dd 419e00a4 <0fe00000> 38210040 38600000 ebc1fff0
    
    and then treats the executed instruction as a 'nop'.
    
    However the POWER9 User's Manual, in section "4.6.10 Book II Invalid
    Forms", informs that for TM instructions bit 31 is in fact ignored, thus
    for the TM-related invalid forms ignoring bit 31 and handling them like the
    valid forms is an acceptable way to handle them. POWER8 behaves the same
    way too.
    
    This commit changes the handling of the cases here described by treating
    the TM-related invalid forms that can generate a softpatch interrupt
    just like their valid forms (w/ bit 31 = 1) instead of as a 'nop' and by
    gently reporting any other unrecognized case to the host and treating it as
    illegal instruction instead of throwing a trace and treating it as a 'nop'.
    
    Signed-off-by: Gustavo Romero <gromero@linux.ibm.com>
    Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
    Acked-By: Michael Neuling <mikey@neuling.org>
    Reviewed-by: Leonardo Bras <leonardo@linux.ibm.com>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 851eba100212a76f7ec4408f6ab3ae5a5b4bfd70
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Tue Mar 10 11:25:33 2020 +0200

    RDMA/cm: Remove a race freeing timewait_info
    
    [ Upstream commit bede86a39d9dc3387ac00dcb8e1ac221676b2f25 ]
    
    When creating a cm_id during REQ the id immediately becomes visible to the
    other MAD handlers, and shortly after the state is moved to IB_CM_REQ_RCVD
    
    This allows cm_rej_handler() to run concurrently and free the work:
    
            CPU 0                                CPU1
     cm_req_handler()
      ib_create_cm_id()
      cm_match_req()
        id_priv->state = IB_CM_REQ_RCVD
                                           cm_rej_handler()
                                             cm_acquire_id()
                                             spin_lock(&id_priv->lock)
                                             switch (id_priv->state)
                                               case IB_CM_REQ_RCVD:
                                                cm_reset_to_idle()
                                                 kfree(id_priv->timewait_info);
       goto destroy
      destroy:
        kfree(id_priv->timewait_info);
                                                 id_priv->timewait_info = NULL
    
    Causing a double free or worse.
    
    Do not free the timewait_info without also holding the
    id_priv->lock. Simplify this entire flow by making the free unconditional
    during cm_destroy_id() and removing the confusing special case error
    unwind during creation of the timewait_info.
    
    This also fixes a leak of the timewait if cm_destroy_id() is called in
    IB_CM_ESTABLISHED with an XRC TGT QP. The state machine will be left in
    ESTABLISHED while it needed to transition through IB_CM_TIMEWAIT to
    release the timewait pointer.
    
    Also fix a leak of the timewait_info if the caller mis-uses the API and
    does ib_send_cm_reqs().
    
    Fixes: a977049dacde ("[PATCH] IB: Add the kernel CM implementation")
    Link: https://lore.kernel.org/r/20200310092545.251365-4-leon@kernel.org
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ab250aabad1dd0a9f656b976c3b59f2aaa19405
Author: Trond Myklebust <trondmy@gmail.com>
Date:   Sun Mar 1 18:21:38 2020 -0500

    nfsd: Don't add locks to closed or closing open stateids
    
    [ Upstream commit a451b12311aa8c96c6f6e01c783a86995dc3ec6b ]
    
    In NFSv4, the lock stateids are tied to the lockowner, and the open stateid,
    so that the action of closing the file also results in either an automatic
    loss of the locks, or an error of the form NFS4ERR_LOCKS_HELD.
    
    In practice this means we must not add new locks to the open stateid
    after the close process has been invoked. In fact doing so, can result
    in the following panic:
    
     kernel BUG at lib/list_debug.c:51!
     invalid opcode: 0000 [#1] SMP NOPTI
     CPU: 2 PID: 1085 Comm: nfsd Not tainted 5.6.0-rc3+ #2
     Hardware name: VMware, Inc. VMware7,1/440BX Desktop Reference Platform, BIOS VMW71.00V.14410784.B64.1908150010 08/15/2019
     RIP: 0010:__list_del_entry_valid.cold+0x31/0x55
     Code: 1a 3d 9b e8 74 10 c2 ff 0f 0b 48 c7 c7 f0 1a 3d 9b e8 66 10 c2 ff 0f 0b 48 89 f2 48 89 fe 48 c7 c7 b0 1a 3d 9b e8 52 10 c2 ff <0f> 0b 48 89 fe 4c 89 c2 48 c7 c7 78 1a 3d 9b e8 3e 10 c2 ff 0f 0b
     RSP: 0018:ffffb296c1d47d90 EFLAGS: 00010246
     RAX: 0000000000000054 RBX: ffff8ba032456ec8 RCX: 0000000000000000
     RDX: 0000000000000000 RSI: ffff8ba039e99cc8 RDI: ffff8ba039e99cc8
     RBP: ffff8ba032456e60 R08: 0000000000000781 R09: 0000000000000003
     R10: 0000000000000000 R11: 0000000000000001 R12: ffff8ba009a4abe0
     R13: ffff8ba032456e8c R14: 0000000000000000 R15: ffff8ba00adb01d8
     FS:  0000000000000000(0000) GS:ffff8ba039e80000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007fb213f0b008 CR3: 00000001347de006 CR4: 00000000003606e0
     Call Trace:
      release_lock_stateid+0x2b/0x80 [nfsd]
      nfsd4_free_stateid+0x1e9/0x210 [nfsd]
      nfsd4_proc_compound+0x414/0x700 [nfsd]
      ? nfs4svc_decode_compoundargs+0x407/0x4c0 [nfsd]
      nfsd_dispatch+0xc1/0x200 [nfsd]
      svc_process_common+0x476/0x6f0 [sunrpc]
      ? svc_sock_secure_port+0x12/0x30 [sunrpc]
      ? svc_recv+0x313/0x9c0 [sunrpc]
      ? nfsd_svc+0x2d0/0x2d0 [nfsd]
      svc_process+0xd4/0x110 [sunrpc]
      nfsd+0xe3/0x140 [nfsd]
      kthread+0xf9/0x130
      ? nfsd_destroy+0x50/0x50 [nfsd]
      ? kthread_park+0x90/0x90
      ret_from_fork+0x1f/0x40
    
    The fix is to ensure that lock creation tests for whether or not the
    open stateid is unhashed, and to fail if that is the case.
    
    Fixes: 659aefb68eca ("nfsd: Ensure we don't recognise lock stateids after freeing them")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 142513a2e01ad8952bb63034436d7e7f463f9f93
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Fri Mar 6 08:34:01 2020 +0100

    rtc: ds1374: fix possible race condition
    
    [ Upstream commit c11af8131a4e7ba1960faed731ee7e84c2c13c94 ]
    
    The RTC IRQ is requested before the struct rtc_device is allocated,
    this may lead to a NULL pointer dereference in the IRQ handler.
    
    To fix this issue, allocating the rtc_device struct before requesting
    the RTC IRQ using devm_rtc_allocate_device, and use rtc_register_device
    to register the RTC device.
    
    Link: https://lore.kernel.org/r/20200306073404.56921-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e934a66dc2c109b1dcf8d0a120393981c5799d68
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Fri Mar 6 02:01:44 2020 +0100

    rtc: sa1100: fix possible race condition
    
    [ Upstream commit f2997775b111c6d660c32a18d5d44d37cb7361b1 ]
    
    Both RTC IRQs are requested before the struct rtc_device is allocated,
    this may lead to a NULL pointer dereference in the IRQ handler.
    
    To fix this issue, allocating the rtc_device struct before requesting
    the IRQs using devm_rtc_allocate_device, and use rtc_register_device
    to register the RTC device.
    
    Link: https://lore.kernel.org/r/20200306010146.39762-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit abc5b427c59c3b7445cb9b59289908e3555f02ed
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Thu Mar 12 11:53:31 2020 -0400

    tpm: ibmvtpm: Wait for buffer to be set before proceeding
    
    [ Upstream commit d8d74ea3c00214aee1e1826ca18e77944812b9b4 ]
    
    Synchronize with the results from the CRQs before continuing with
    the initialization. This avoids trying to send TPM commands while
    the rtce buffer has not been allocated, yet.
    
    This patch fixes an existing race condition that may occurr if the
    hypervisor does not quickly respond to the VTPM_GET_RTCE_BUFFER_SIZE
    request sent during initialization and therefore the ibmvtpm->rtce_buf
    has not been allocated at the time the first TPM command is sent.
    
    Fixes: 132f76294744 ("drivers/char/tpm: Add new device driver to support IBM vTPM")
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Acked-by: Nayna Jain <nayna@linux.ibm.com>
    Tested-by: Nayna Jain <nayna@linux.ibm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff331054567bc3f53155875131902fb178a31de6
Author: Dmitry Monakhov <dmonakhov@gmail.com>
Date:   Tue Mar 10 15:01:56 2020 +0000

    ext4: mark block bitmap corrupted when found instead of BUGON
    
    [ Upstream commit eb5760863fc28feab28b567ddcda7e667e638da0 ]
    
    We already has similar code in ext4_mb_complex_scan_group(), but
    ext4_mb_simple_scan_group() still affected.
    
    Other reports: https://www.spinics.net/lists/linux-ext4/msg60231.html
    
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Dmitry Monakhov <dmonakhov@gmail.com>
    Link: https://lore.kernel.org/r/20200310150156.641-1-dmonakhov@gmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7fff3f7fe9a8643ebfd40ab8ed4ff67dd8879fbc
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Wed Mar 11 10:37:57 2020 -0700

    xfs: mark dir corrupt when lookup-by-hash fails
    
    [ Upstream commit 2e107cf869eecc770e3f630060bb4e5f547d0fd8 ]
    
    In xchk_dir_actor, we attempt to validate the directory hash structures
    by performing a directory entry lookup by (hashed) name.  If the lookup
    returns ENOENT, that means that the hash information is corrupt.  The
    _process_error functions don't catch this, so we have to add that
    explicitly.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ab959f1299512f9986db48347fff434ce7d33b8
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Wed Mar 11 10:37:55 2020 -0700

    xfs: don't ever return a stale pointer from __xfs_dir3_free_read
    
    [ Upstream commit 1cb5deb5bc095c070c09a4540c45f9c9ba24be43 ]
    
    If we decide that a directory free block is corrupt, we must take care
    not to leak a buffer pointer to the caller.  After xfs_trans_brelse
    returns, the buffer can be freed or reused, which means that we have to
    set *bpp back to NULL.
    
    Callers are supposed to notice the nonzero return value and not use the
    buffer pointer, but we should code more defensively, even if all current
    callers handle this situation correctly.
    
    Fixes: de14c5f541e7 ("xfs: verify free block header fields")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7bf061465fc7c1da22bac37d46c49662dafa27ab
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Feb 10 15:26:46 2020 +0100

    media: tda10071: fix unsigned sign extension overflow
    
    [ Upstream commit a7463e2dc698075132de9905b89f495df888bb79 ]
    
    The shifting of buf[3] by 24 bits to the left will be promoted to
    a 32 bit signed int and then sign-extended to an unsigned long. In
    the unlikely event that the the top bit of buf[3] is set then all
    then all the upper bits end up as also being set because of
    the sign-extension and this affect the ev->post_bit_error sum.
    Fix this by using the temporary u32 variable bit_error to avoid
    the sign-extension promotion. This also removes the need to do the
    computation twice.
    
    Addresses-Coverity: ("Unintended sign extension")
    
    Fixes: 267897a4708f ("[media] tda10071: implement DVBv5 statistics")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8828622fb9b4201eeb0870587052e3d834cfaf61
Author: Howard Chung <howardchung@google.com>
Date:   Thu Mar 12 12:35:27 2020 +0800

    Bluetooth: L2CAP: handle l2cap config request during open state
    
    [ Upstream commit 96298f640104e4cd9a913a6e50b0b981829b94ff ]
    
    According to Core Spec Version 5.2 | Vol 3, Part A 6.1.5,
    the incoming L2CAP_ConfigReq should be handled during
    OPEN state.
    
    The section below shows the btmon trace when running
    L2CAP/COS/CFD/BV-12-C before and after this change.
    
    === Before ===
    ...
    > ACL Data RX: Handle 256 flags 0x02 dlen 12                #22
          L2CAP: Connection Request (0x02) ident 2 len 4
            PSM: 1 (0x0001)
            Source CID: 65
    < ACL Data TX: Handle 256 flags 0x00 dlen 16                #23
          L2CAP: Connection Response (0x03) ident 2 len 8
            Destination CID: 64
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    < ACL Data TX: Handle 256 flags 0x00 dlen 12                #24
          L2CAP: Configure Request (0x04) ident 2 len 4
            Destination CID: 65
            Flags: 0x0000
    > HCI Event: Number of Completed Packets (0x13) plen 5      #25
            Num handles: 1
            Handle: 256
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5      #26
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 16                #27
          L2CAP: Configure Request (0x04) ident 3 len 8
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00                                            ..
    < ACL Data TX: Handle 256 flags 0x00 dlen 18                #28
          L2CAP: Configure Response (0x05) ident 3 len 10
            Source CID: 65
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
    > HCI Event: Number of Completed Packets (0x13) plen 5      #29
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 14                #30
          L2CAP: Configure Response (0x05) ident 2 len 6
            Source CID: 64
            Flags: 0x0000
            Result: Success (0x0000)
    > ACL Data RX: Handle 256 flags 0x02 dlen 20                #31
          L2CAP: Configure Request (0x04) ident 3 len 12
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00 91 02 11 11                                ......
    < ACL Data TX: Handle 256 flags 0x00 dlen 14                #32
          L2CAP: Command Reject (0x01) ident 3 len 6
            Reason: Invalid CID in request (0x0002)
            Destination CID: 64
            Source CID: 65
    > HCI Event: Number of Completed Packets (0x13) plen 5      #33
            Num handles: 1
            Handle: 256
            Count: 1
    ...
    === After ===
    ...
    > ACL Data RX: Handle 256 flags 0x02 dlen 12               #22
          L2CAP: Connection Request (0x02) ident 2 len 4
            PSM: 1 (0x0001)
            Source CID: 65
    < ACL Data TX: Handle 256 flags 0x00 dlen 16               #23
          L2CAP: Connection Response (0x03) ident 2 len 8
            Destination CID: 64
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    < ACL Data TX: Handle 256 flags 0x00 dlen 12               #24
          L2CAP: Configure Request (0x04) ident 2 len 4
            Destination CID: 65
            Flags: 0x0000
    > HCI Event: Number of Completed Packets (0x13) plen 5     #25
            Num handles: 1
            Handle: 256
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5     #26
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 16               #27
          L2CAP: Configure Request (0x04) ident 3 len 8
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00                                            ..
    < ACL Data TX: Handle 256 flags 0x00 dlen 18               #28
          L2CAP: Configure Response (0x05) ident 3 len 10
            Source CID: 65
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
    > HCI Event: Number of Completed Packets (0x13) plen 5     #29
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 14               #30
          L2CAP: Configure Response (0x05) ident 2 len 6
            Source CID: 64
            Flags: 0x0000
            Result: Success (0x0000)
    > ACL Data RX: Handle 256 flags 0x02 dlen 20               #31
          L2CAP: Configure Request (0x04) ident 3 len 12
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00 91 02 11 11                                .....
    < ACL Data TX: Handle 256 flags 0x00 dlen 18               #32
          L2CAP: Configure Response (0x05) ident 3 len 10
            Source CID: 65
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
    < ACL Data TX: Handle 256 flags 0x00 dlen 12               #33
          L2CAP: Configure Request (0x04) ident 3 len 4
            Destination CID: 65
            Flags: 0x0000
    > HCI Event: Number of Completed Packets (0x13) plen 5     #34
            Num handles: 1
            Handle: 256
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5     #35
            Num handles: 1
            Handle: 256
            Count: 1
    ...
    
    Signed-off-by: Howard Chung <howardchung@google.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae5afc392d510a1d7a34a28cba3a447b01e0c4bb
Author: Sagar Biradar <Sagar.Biradar@microchip.com>
Date:   Wed Feb 12 16:29:31 2020 -0800

    scsi: aacraid: Disabling TM path and only processing IOP reset
    
    [ Upstream commit bef18d308a2215eff8c3411a23d7f34604ce56c3 ]
    
    Fixes the occasional adapter panic when sg_reset is issued with -d, -t, -b
    and -H flags.  Removal of command type HBA_IU_TYPE_SCSI_TM_REQ in
    aac_hba_send since iu_type, request_id and fib_flags are not populated.
    Device and target reset handlers are made to send TMF commands only when
    reset_state is 0.
    
    Link: https://lore.kernel.org/r/1581553771-25796-1-git-send-email-Sagar.Biradar@microchip.com
    Reviewed-by: Sagar Biradar <Sagar.Biradar@microchip.com>
    Signed-off-by: Sagar Biradar <Sagar.Biradar@microchip.com>
    Signed-off-by: Balsundar P <balsundar.p@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6854738c9ec19fb3546ae14af6ff96120120d986
Author: Wen Gong <wgong@codeaurora.org>
Date:   Fri Feb 14 11:42:18 2020 +0800

    ath10k: use kzalloc to read for ath10k_sdio_hif_diag_read
    
    [ Upstream commit 402f2992b4d62760cce7c689ff216ea3bf4d6e8a ]
    
    When use command to read values, it crashed.
    
    command:
    dd if=/sys/kernel/debug/ieee80211/phy0/ath10k/mem_value count=1 bs=4 skip=$((0x100233))
    
    It will call to ath10k_sdio_hif_diag_read with address = 0x4008cc and buf_len = 4.
    
    Then system crash:
    [ 1786.013258] Unable to handle kernel paging request at virtual address ffffffc00bd45000
    [ 1786.013273] Mem abort info:
    [ 1786.013281]   ESR = 0x96000045
    [ 1786.013291]   Exception class = DABT (current EL), IL = 32 bits
    [ 1786.013299]   SET = 0, FnV = 0
    [ 1786.013307]   EA = 0, S1PTW = 0
    [ 1786.013314] Data abort info:
    [ 1786.013322]   ISV = 0, ISS = 0x00000045
    [ 1786.013330]   CM = 0, WnR = 1
    [ 1786.013342] swapper pgtable: 4k pages, 39-bit VAs, pgdp = 000000008542a60e
    [ 1786.013350] [ffffffc00bd45000] pgd=0000000000000000, pud=0000000000000000
    [ 1786.013368] Internal error: Oops: 96000045 [#1] PREEMPT SMP
    [ 1786.013609] Process swapper/0 (pid: 0, stack limit = 0x0000000084b153c6)
    [ 1786.013623] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.86 #137
    [ 1786.013631] Hardware name: MediaTek krane sku176 board (DT)
    [ 1786.013643] pstate: 80000085 (Nzcv daIf -PAN -UAO)
    [ 1786.013662] pc : __memcpy+0x94/0x180
    [ 1786.013678] lr : swiotlb_tbl_unmap_single+0x84/0x150
    [ 1786.013686] sp : ffffff8008003c60
    [ 1786.013694] x29: ffffff8008003c90 x28: ffffffae96411f80
    [ 1786.013708] x27: ffffffae960d2018 x26: ffffff8019a4b9a8
    [ 1786.013721] x25: 0000000000000000 x24: 0000000000000001
    [ 1786.013734] x23: ffffffae96567000 x22: 00000000000051d4
    [ 1786.013747] x21: 0000000000000000 x20: 00000000fe6e9000
    [ 1786.013760] x19: 0000000000000004 x18: 0000000000000020
    [ 1786.013773] x17: 0000000000000001 x16: 0000000000000000
    [ 1786.013787] x15: 00000000ffffffff x14: 00000000000044c0
    [ 1786.013800] x13: 0000000000365ba4 x12: 0000000000000000
    [ 1786.013813] x11: 0000000000000001 x10: 00000037be6e9000
    [ 1786.013826] x9 : ffffffc940000000 x8 : 000000000bd45000
    [ 1786.013839] x7 : 0000000000000000 x6 : ffffffc00bd45000
    [ 1786.013852] x5 : 0000000000000000 x4 : 0000000000000000
    [ 1786.013865] x3 : 0000000000000c00 x2 : 0000000000000004
    [ 1786.013878] x1 : fffffff7be6e9004 x0 : ffffffc00bd45000
    [ 1786.013891] Call trace:
    [ 1786.013903]  __memcpy+0x94/0x180
    [ 1786.013914]  unmap_single+0x6c/0x84
    [ 1786.013925]  swiotlb_unmap_sg_attrs+0x54/0x80
    [ 1786.013938]  __swiotlb_unmap_sg_attrs+0x8c/0xa4
    [ 1786.013952]  msdc_unprepare_data+0x6c/0x84
    [ 1786.013963]  msdc_request_done+0x58/0x84
    [ 1786.013974]  msdc_data_xfer_done+0x1a0/0x1c8
    [ 1786.013985]  msdc_irq+0x12c/0x17c
    [ 1786.013996]  __handle_irq_event_percpu+0xe4/0x250
    [ 1786.014006]  handle_irq_event_percpu+0x28/0x68
    [ 1786.014015]  handle_irq_event+0x48/0x78
    [ 1786.014026]  handle_fasteoi_irq+0xd0/0x1a0
    [ 1786.014039]  __handle_domain_irq+0x84/0xc4
    [ 1786.014050]  gic_handle_irq+0x124/0x1a4
    [ 1786.014059]  el1_irq+0xb0/0x128
    [ 1786.014072]  cpuidle_enter_state+0x298/0x328
    [ 1786.014082]  cpuidle_enter+0x30/0x40
    [ 1786.014094]  do_idle+0x190/0x268
    [ 1786.014104]  cpu_startup_entry+0x24/0x28
    [ 1786.014116]  rest_init+0xd4/0xe0
    [ 1786.014126]  start_kernel+0x30c/0x38c
    [ 1786.014139] Code: f8408423 f80084c3 36100062 b8404423 (b80044c3)
    [ 1786.014150] ---[ end trace 3b02ddb698ea69ee ]---
    [ 1786.015415] Kernel panic - not syncing: Fatal exception in interrupt
    [ 1786.015433] SMP: stopping secondary CPUs
    [ 1786.015447] Kernel Offset: 0x2e8d200000 from 0xffffff8008000000
    [ 1786.015458] CPU features: 0x0,2188200c
    [ 1786.015466] Memory Limit: none
    
    For sdio chip, it need the memory which is kmalloc, if it is
    vmalloc from ath10k_mem_value_read, then it have a memory error.
    kzalloc of ath10k_sdio_hif_diag_read32 is the correct type, so
    add kzalloc in ath10k_sdio_hif_diag_read to replace the buffer
    which is vmalloc from ath10k_mem_value_read.
    
    This patch only effect sdio chip.
    
    Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00029.
    
    Signed-off-by: Wen Gong <wgong@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47721e8ff0b034a6cb7c111763694e594d67790f
Author: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Date:   Mon Feb 24 10:13:37 2020 -0500

    drm/amd/display: Stop if retimer is not available
    
    [ Upstream commit a0e40018dcc3f59a10ca21d58f8ea8ceb1b035ac ]
    
    Raven provides retimer feature support that requires i2c interaction in
    order to make it work well, all settings required for this configuration
    are loaded from the Atom bios which include the i2c address. If the
    retimer feature is not available, we should abort the attempt to set
    this feature, otherwise, it makes the following line return
    I2C_CHANNEL_OPERATION_NO_RESPONSE:
    
     i2c_success = i2c_write(pipe_ctx, slave_address, buffer, sizeof(buffer));
     ...
     if (!i2c_success)
       ASSERT(i2c_success);
    
    This ends up causing problems with hotplugging HDMI displays on Raven,
    and causes retimer settings to warn like so:
    
    WARNING: CPU: 1 PID: 429 at
    drivers/gpu/drm/amd/amdgpu/../dal/dc/core/dc_link.c:1998
    write_i2c_retimer_setting+0xc2/0x3c0 [amdgpu] Modules linked in:
    edac_mce_amd ccp kvm irqbypass binfmt_misc crct10dif_pclmul crc32_pclmul
    ghash_clmulni_intel snd_hda_codec_realtek snd_hda_codec_generic
    ledtrig_audio snd_hda_codec_hdmi snd_hda_intel amdgpu(+) snd_hda_codec
    snd_hda_core snd_hwdep snd_pcm snd_seq_midi snd_seq_midi_event
    snd_rawmidi aesni_intel snd_seq amd_iommu_v2 gpu_sched aes_x86_64
    crypto_simd cryptd glue_helper snd_seq_device ttm drm_kms_helper
    snd_timer eeepc_wmi wmi_bmof asus_wmi sparse_keymap drm mxm_wmi snd
    k10temp fb_sys_fops syscopyarea sysfillrect sysimgblt soundcore joydev
    input_leds mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables
    x_tables autofs4 igb i2c_algo_bit hid_generic usbhid i2c_piix4 dca ahci
    hid libahci video wmi gpio_amdpt gpio_generic CPU: 1 PID: 429 Comm:
    systemd-udevd Tainted: G        W         5.2.0-rc1sept162019+ #1
    Hardware name: System manufacturer System Product Name/ROG STRIX B450-F
    GAMING, BIOS 2605 08/06/2019
    RIP: 0010:write_i2c_retimer_setting+0xc2/0x3c0 [amdgpu]
    Code: ff 0f b6 4d ce 44 0f b6 45 cf 44 0f b6 c8 45 89 cf 44 89 e2 48 c7
    c6 f0 34 bc c0 bf 04 00 00 00 e8 63 b0 90 ff 45 84 ff 75 02 <0f> 0b 42
    0f b6 04 73 8d 50 f6 80 fa 02 77 8c 3c 0a 0f 85 c8 00 00 RSP:
    0018:ffffa99d02726fd0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffffa99d02727035 RCX: 0000000000000006
    RDX: 0000000000000000 RSI: 0000000000000002 RDI: ffff976acc857440
    RBP: ffffa99d02727018 R08: 0000000000000002 R09: 000000000002a600
    R10: ffffe90610193680 R11: 00000000000005e3 R12: 000000000000005d
    R13: ffff976ac4b201b8 R14: 0000000000000001 R15: 0000000000000000
    FS:  00007f14f99e1680(0000) GS:ffff976acc840000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fdf212843b8 CR3: 0000000408906000 CR4: 00000000003406e0
    Call Trace:
     core_link_enable_stream+0x626/0x680 [amdgpu]
     dce110_apply_ctx_to_hw+0x414/0x4e0 [amdgpu]
     dc_commit_state+0x331/0x5e0 [amdgpu]
     ? drm_calc_timestamping_constants+0xf9/0x150 [drm]
     amdgpu_dm_atomic_commit_tail+0x395/0x1e00 [amdgpu]
     ? dm_plane_helper_prepare_fb+0x20c/0x280 [amdgpu]
     commit_tail+0x42/0x70 [drm_kms_helper]
     drm_atomic_helper_commit+0x10c/0x120 [drm_kms_helper]
     amdgpu_dm_atomic_commit+0x95/0xa0 [amdgpu]
     drm_atomic_commit+0x4a/0x50 [drm]
     restore_fbdev_mode_atomic+0x1c0/0x1e0 [drm_kms_helper]
     restore_fbdev_mode+0x4c/0x160 [drm_kms_helper]
     ? _cond_resched+0x19/0x40
     drm_fb_helper_restore_fbdev_mode_unlocked+0x4e/0xa0 [drm_kms_helper]
     drm_fb_helper_set_par+0x2d/0x50 [drm_kms_helper]
     fbcon_init+0x471/0x630
     visual_init+0xd5/0x130
     do_bind_con_driver+0x20a/0x430
     do_take_over_console+0x7d/0x1b0
     do_fbcon_takeover+0x5c/0xb0
     fbcon_event_notify+0x6cd/0x8a0
     notifier_call_chain+0x4c/0x70
     blocking_notifier_call_chain+0x43/0x60
     fb_notifier_call_chain+0x1b/0x20
     register_framebuffer+0x254/0x360
     __drm_fb_helper_initial_config_and_unlock+0x2c5/0x510 [drm_kms_helper]
     drm_fb_helper_initial_config+0x35/0x40 [drm_kms_helper]
     amdgpu_fbdev_init+0xcd/0x100 [amdgpu]
     amdgpu_device_init+0x1156/0x1930 [amdgpu]
     amdgpu_driver_load_kms+0x8d/0x2e0 [amdgpu]
     drm_dev_register+0x12b/0x1c0 [drm]
     amdgpu_pci_probe+0xd3/0x160 [amdgpu]
     local_pci_probe+0x47/0xa0
     pci_device_probe+0x142/0x1b0
     really_probe+0xf5/0x3d0
     driver_probe_device+0x11b/0x130
     device_driver_attach+0x58/0x60
     __driver_attach+0xa3/0x140
     ? device_driver_attach+0x60/0x60
     ? device_driver_attach+0x60/0x60
     bus_for_each_dev+0x74/0xb0
     ? kmem_cache_alloc_trace+0x1a3/0x1c0
     driver_attach+0x1e/0x20
     bus_add_driver+0x147/0x220
     ? 0xffffffffc0cb9000
     driver_register+0x60/0x100
     ? 0xffffffffc0cb9000
     __pci_register_driver+0x5a/0x60
     amdgpu_init+0x74/0x83 [amdgpu]
     do_one_initcall+0x4a/0x1fa
     ? _cond_resched+0x19/0x40
     ? kmem_cache_alloc_trace+0x3f/0x1c0
     ? __vunmap+0x1cc/0x200
     do_init_module+0x5f/0x227
     load_module+0x2330/0x2b40
     __do_sys_finit_module+0xfc/0x120
     ? __do_sys_finit_module+0xfc/0x120
     __x64_sys_finit_module+0x1a/0x20
     do_syscall_64+0x5a/0x130
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x7f14f9500839
    Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89
    f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01
    f0 ff ff 73 01 c3 48 8b 0d 1f f6 2c 00 f7 d8 64 89 01 48
    RSP: 002b:00007fff9bc4f5a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000055afb5abce30 RCX: 00007f14f9500839
    RDX: 0000000000000000 RSI: 000055afb5ace0f0 RDI: 0000000000000017
    RBP: 000055afb5ace0f0 R08: 0000000000000000 R09: 000000000000000a
    R10: 0000000000000017 R11: 0000000000000246 R12: 0000000000000000
    R13: 000055afb5aad800 R14: 0000000000020000 R15: 0000000000000000
    ---[ end trace c286e96563966f08 ]---
    
    This commit reworks the way that we handle i2c write for retimer in the
    way that we abort this configuration if the feature is not available in
    the device. For debug sake, we kept a simple log message in case the
    retimer is not available.
    
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Reviewed-by: Hersen Wu <hersenxs.wu@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5bc081aced49b9ea06f12f8ca93ce5db10cc51b
Author: John Clements <john.clements@amd.com>
Date:   Thu Mar 5 17:48:56 2020 +0800

    drm/amdgpu: increase atombios cmd timeout
    
    [ Upstream commit 1b3460a8b19688ad3033b75237d40fa580a5a953 ]
    
    mitigates race condition on BACO reset between GPU bootcode and driver reload
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: John Clements <john.clements@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b294ac325c7ce3f36854b74d0d1d89dc1d1d8b8
Author: Kirill A. Shutemov <kirill@shutemov.name>
Date:   Thu Mar 5 22:28:32 2020 -0800

    mm: avoid data corruption on CoW fault into PFN-mapped VMA
    
    [ Upstream commit c3e5ea6ee574ae5e845a40ac8198de1fb63bb3ab ]
    
    Jeff Moyer has reported that one of xfstests triggers a warning when run
    on DAX-enabled filesystem:
    
            WARNING: CPU: 76 PID: 51024 at mm/memory.c:2317 wp_page_copy+0xc40/0xd50
            ...
            wp_page_copy+0x98c/0xd50 (unreliable)
            do_wp_page+0xd8/0xad0
            __handle_mm_fault+0x748/0x1b90
            handle_mm_fault+0x120/0x1f0
            __do_page_fault+0x240/0xd70
            do_page_fault+0x38/0xd0
            handle_page_fault+0x10/0x30
    
    The warning happens on failed __copy_from_user_inatomic() which tries to
    copy data into a CoW page.
    
    This happens because of race between MADV_DONTNEED and CoW page fault:
    
            CPU0                                    CPU1
     handle_mm_fault()
       do_wp_page()
         wp_page_copy()
           do_wp_page()
                                            madvise(MADV_DONTNEED)
                                              zap_page_range()
                                                zap_pte_range()
                                                  ptep_get_and_clear_full()
                                                  <TLB flush>
             __copy_from_user_inatomic()
             sees empty PTE and fails
             WARN_ON_ONCE(1)
             clear_page()
    
    The solution is to re-try __copy_from_user_inatomic() under PTL after
    checking that PTE is matches the orig_pte.
    
    The second copy attempt can still fail, like due to non-readable PTE, but
    there's nothing reasonable we can do about, except clearing the CoW page.
    
    Reported-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Tested-by: Jeff Moyer <jmoyer@redhat.com>
    Cc: <stable@vger.kernel.org>
    Cc: Justin He <Justin.He@arm.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Link: http://lkml.kernel.org/r/20200218154151.13349-1-kirill.shutemov@linux.intel.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2002c630a95be88a7c4a8fc9a2ef31ac01f900d6
Author: John Garry <john.garry@huawei.com>
Date:   Thu Mar 5 19:08:01 2020 +0800

    perf jevents: Fix leak of mapfile memory
    
    [ Upstream commit 3f5777fbaf04c58d940526a22a2e0c813c837936 ]
    
    The memory for global pointer is never freed during normal program
    execution, so let's do that in the main function exit as a good
    programming practice.
    
    A stray blank line is also removed.
    
    Reported-by: Jiri Olsa <jolsa@redhat.com>
    Signed-off-by: John Garry <john.garry@huawei.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: linuxarm@huawei.com
    Link: http://lore.kernel.org/lkml/1583406486-154841-2-git-send-email-john.garry@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47c5fa5b550bc01bdbae9e80f48db54ef9a034e4
Author: Qiujun Huang <hqjagain@gmail.com>
Date:   Mon Feb 24 23:02:46 2020 +0800

    ext4: fix a data race at inode->i_disksize
    
    [ Upstream commit dce8e237100f60c28cc66effb526ba65a01d8cb3 ]
    
    KCSAN find inode->i_disksize could be accessed concurrently.
    
    BUG: KCSAN: data-race in ext4_mark_iloc_dirty / ext4_write_end
    
    write (marked) to 0xffff8b8932f40090 of 8 bytes by task 66792 on cpu 0:
     ext4_write_end+0x53f/0x5b0
     ext4_da_write_end+0x237/0x510
     generic_perform_write+0x1c4/0x2a0
     ext4_buffered_write_iter+0x13a/0x210
     ext4_file_write_iter+0xe2/0x9b0
     new_sync_write+0x29c/0x3a0
     __vfs_write+0x92/0xa0
     vfs_write+0xfc/0x2a0
     ksys_write+0xe8/0x140
     __x64_sys_write+0x4c/0x60
     do_syscall_64+0x8a/0x2a0
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    read to 0xffff8b8932f40090 of 8 bytes by task 14414 on cpu 1:
     ext4_mark_iloc_dirty+0x716/0x1190
     ext4_mark_inode_dirty+0xc9/0x360
     ext4_convert_unwritten_extents+0x1bc/0x2a0
     ext4_convert_unwritten_io_end_vec+0xc5/0x150
     ext4_put_io_end+0x82/0x130
     ext4_writepages+0xae7/0x16f0
     do_writepages+0x64/0x120
     __writeback_single_inode+0x7d/0x650
     writeback_sb_inodes+0x3a4/0x860
     __writeback_inodes_wb+0xc4/0x150
     wb_writeback+0x43f/0x510
     wb_workfn+0x3b2/0x8a0
     process_one_work+0x39b/0x7e0
     worker_thread+0x88/0x650
     kthread+0x1d4/0x1f0
     ret_from_fork+0x35/0x40
    
    The plain read is outside of inode->i_data_sem critical section
    which results in a data race. Fix it by adding READ_ONCE().
    
    Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
    Link: https://lore.kernel.org/r/1582556566-3909-1-git-send-email-hqjagain@gmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 627b771be7d7a36b1a62049912003736bc79edb4
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Mon Jan 20 18:05:23 2020 +0800

    timekeeping: Prevent 32bit truncation in scale64_check_overflow()
    
    [ Upstream commit 4cbbc3a0eeed675449b1a4d080008927121f3da3 ]
    
    While unlikely the divisor in scale64_check_overflow() could be >= 32bit in
    scale64_check_overflow(). do_div() truncates the divisor to 32bit at least
    on 32bit platforms.
    
    Use div64_u64() instead to avoid the truncation to 32-bit.
    
    [ tglx: Massaged changelog ]
    
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20200120100523.45656-1-wenyang@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ee3da6b960b88bdfaa7a7efaf37ec3b0444c068
Author: Alain Michaud <alainm@chromium.org>
Date:   Tue Mar 3 15:55:34 2020 +0000

    Bluetooth: guard against controllers sending zero'd events
    
    [ Upstream commit 08bb4da90150e2a225f35e0f642cdc463958d696 ]
    
    Some controllers have been observed to send zero'd events under some
    conditions.  This change guards against this condition as well as adding
    a trace to facilitate diagnosability of this condition.
    
    Signed-off-by: Alain Michaud <alainm@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8910d3f0b0ebe79d42e37fe9be49573682c8cc17
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Feb 6 16:45:27 2020 +0100

    media: go7007: Fix URB type for interrupt handling
    
    [ Upstream commit a3ea410cac41b19a5490aad7fe6d9a9a772e646e ]
    
    Josef reported that his old-and-good Plextor ConvertX M402U video
    converter spews lots of WARNINGs on the recent kernels, and it turned
    out that the device uses a bulk endpoint for interrupt handling just
    like 2250 board.
    
    For fixing it, generalize the check with the proper verification of
    the endpoint instead of hard-coded board type check.
    
    Fixes: 7e5219d18e93 ("[media] go7007: Fix 2250 urb type")
    Reported-and-tested-by: Josef Möllers <josef.moellers@suse.com>
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1162583
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206427
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ba1aee12640a5528aee4484ef876eb15f10cb49
Author: John Garry <john.garry@huawei.com>
Date:   Fri Jan 17 02:48:34 2020 +0800

    bus: hisi_lpc: Fixup IO ports addresses to avoid use-after-free in host removal
    
    [ Upstream commit a6dd255bdd7d00bbdbf78ba00bde9fc64f86c3a7 ]
    
    Some released ACPI FW for Huawei boards describes incorrect the port IO
    address range for child devices, in that it tells us the IO port max range
    is 0x3fff for each child device, which is not correct. The address range
    should be [e4:e8) or similar. With this incorrect upper range, the child
    device IO port resources overlap.
    
    As such, the kernel thinks that the LPC host serial device is a child of
    the IPMI device:
    
    root@(none)$ more /proc/ioports
    [...]
    00ffc0e3-00ffffff : hisi-lpc-ipmi.0.auto
      00ffc0e3-00ffc0e3 : ipmi_si
      00ffc0e4-00ffc0e4 : ipmi_si
      00ffc0e5-00ffc0e5 : ipmi_si
      00ffc2f7-00ffffff : serial8250.1.auto
        00ffc2f7-00ffc2fe : serial
    root@(none)$
    
    They should both be siblings. Note that these are logical PIO addresses,
    which have a direct mapping from the FW IO port ranges.
    
    This shows up as a real issue when we enable CONFIG_KASAN and
    CONFIG_DEBUG_TEST_DRIVER_REMOVE - we see use-after-free warnings in the
    host removal path:
    
    ==================================================================
    BUG: KASAN: use-after-free in release_resource+0x38/0xc8
    Read of size 8 at addr ffff0026accdbc38 by task swapper/0/1
    
    CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.5.0-rc6-00001-g68e186e77b5c-dirty #1593
    Hardware name: Huawei Taishan 2180 /D03, BIOS Hisilicon D03 IT20 Nemo 2.0 RC0 03/30/2018
    Call trace:
    dump_backtrace+0x0/0x290
    show_stack+0x14/0x20
    dump_stack+0xf0/0x14c
    print_address_description.isra.9+0x6c/0x3b8
    __kasan_report+0x12c/0x23c
    kasan_report+0xc/0x18
    __asan_load8+0x94/0xb8
    release_resource+0x38/0xc8
    platform_device_del.part.10+0x80/0xe0
    platform_device_unregister+0x20/0x38
    hisi_lpc_acpi_remove_subdev+0x10/0x20
    device_for_each_child+0xc8/0x128
    hisi_lpc_acpi_remove+0x4c/0xa8
    hisi_lpc_remove+0xbc/0xc0
    platform_drv_remove+0x3c/0x68
    really_probe+0x174/0x548
    driver_probe_device+0x7c/0x148
    device_driver_attach+0x94/0xa0
    __driver_attach+0xa4/0x110
    bus_for_each_dev+0xe8/0x158
    driver_attach+0x30/0x40
    bus_add_driver+0x234/0x2f0
    driver_register+0xbc/0x1d0
    __platform_driver_register+0x7c/0x88
    hisi_lpc_driver_init+0x18/0x20
    do_one_initcall+0xb4/0x258
    kernel_init_freeable+0x248/0x2c0
    kernel_init+0x10/0x118
    ret_from_fork+0x10/0x1c
    
    ...
    
    The issue here is that the kernel created an incorrect parent-child
    resource dependency between two devices, and references the false parent
    node when deleting the second child device, when it had been deleted
    already.
    
    Fix up the child device resources from FW to create proper IO port
    resource relationships for broken FW.
    
    With this, the IO port layout looks more healthy:
    
    root@(none)$ more /proc/ioports
    [...]
    00ffc0e3-00ffc0e7 : hisi-lpc-ipmi.0.auto
      00ffc0e3-00ffc0e3 : ipmi_si
      00ffc0e4-00ffc0e4 : ipmi_si
      00ffc0e5-00ffc0e5 : ipmi_si
    00ffc2f7-00ffc2ff : serial8250.1.auto
      00ffc2f7-00ffc2fe : serial
    
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Wei Xu <xuwei5@hisilicon.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dca75ae683c1acc4dde1d1a5b65d3fe00d03013a
Author: Qian Cai <cai@lca.pw>
Date:   Tue Feb 25 11:27:04 2020 -0500

    random: fix data races at timer_rand_state
    
    [ Upstream commit e00d996a4317aff5351c4338dd97d390225412c2 ]
    
    Fields in "struct timer_rand_state" could be accessed concurrently.
    Lockless plain reads and writes result in data races. Fix them by adding
    pairs of READ|WRITE_ONCE(). The data races were reported by KCSAN,
    
     BUG: KCSAN: data-race in add_timer_randomness / add_timer_randomness
    
     write to 0xffff9f320a0a01d0 of 8 bytes by interrupt on cpu 22:
      add_timer_randomness+0x100/0x190
      add_timer_randomness at drivers/char/random.c:1152
      add_disk_randomness+0x85/0x280
      scsi_end_request+0x43a/0x4a0
      scsi_io_completion+0xb7/0x7e0
      scsi_finish_command+0x1ed/0x2a0
      scsi_softirq_done+0x1c9/0x1d0
      blk_done_softirq+0x181/0x1d0
      __do_softirq+0xd9/0x57c
      irq_exit+0xa2/0xc0
      do_IRQ+0x8b/0x190
      ret_from_intr+0x0/0x42
      cpuidle_enter_state+0x15e/0x980
      cpuidle_enter+0x69/0xc0
      call_cpuidle+0x23/0x40
      do_idle+0x248/0x280
      cpu_startup_entry+0x1d/0x1f
      start_secondary+0x1b2/0x230
      secondary_startup_64+0xb6/0xc0
    
     no locks held by swapper/22/0.
     irq event stamp: 32871382
     _raw_spin_unlock_irqrestore+0x53/0x60
     _raw_spin_lock_irqsave+0x21/0x60
     _local_bh_enable+0x21/0x30
     irq_exit+0xa2/0xc0
    
     read to 0xffff9f320a0a01d0 of 8 bytes by interrupt on cpu 2:
      add_timer_randomness+0xe8/0x190
      add_disk_randomness+0x85/0x280
      scsi_end_request+0x43a/0x4a0
      scsi_io_completion+0xb7/0x7e0
      scsi_finish_command+0x1ed/0x2a0
      scsi_softirq_done+0x1c9/0x1d0
      blk_done_softirq+0x181/0x1d0
      __do_softirq+0xd9/0x57c
      irq_exit+0xa2/0xc0
      do_IRQ+0x8b/0x190
      ret_from_intr+0x0/0x42
      cpuidle_enter_state+0x15e/0x980
      cpuidle_enter+0x69/0xc0
      call_cpuidle+0x23/0x40
      do_idle+0x248/0x280
      cpu_startup_entry+0x1d/0x1f
      start_secondary+0x1b2/0x230
      secondary_startup_64+0xb6/0xc0
    
     no locks held by swapper/2/0.
     irq event stamp: 37846304
     _raw_spin_unlock_irqrestore+0x53/0x60
     _raw_spin_lock_irqsave+0x21/0x60
     _local_bh_enable+0x21/0x30
     irq_exit+0xa2/0xc0
    
     Reported by Kernel Concurrency Sanitizer on:
     Hardware name: HP ProLiant BL660c Gen9, BIOS I38 10/17/2018
    
    Link: https://lore.kernel.org/r/1582648024-13111-1-git-send-email-cai@lca.pw
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f674193b8e9a76762aadf0183172cf087c923d62
Author: James Morse <james.morse@arm.com>
Date:   Fri Feb 21 16:35:08 2020 +0000

    firmware: arm_sdei: Use cpus_read_lock() to avoid races with cpuhp
    
    [ Upstream commit 54f529a6806c9710947a4f2cdc15d6ea54121ccd ]
    
    SDEI has private events that need registering and enabling on each CPU.
    CPUs can come and go while we are trying to do this. SDEI tries to avoid
    these problems by setting the reregister flag before the register call,
    so any CPUs that come online register the event too. Sticking plaster
    like this doesn't work, as if the register call fails, a CPU that
    subsequently comes online will register the event before reregister
    is cleared.
    
    Take cpus_read_lock() around the register and enable calls. We don't
    want surprise CPUs to do the wrong thing if they race with these calls
    failing.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5fe40ed2a8262ab7bb6ea38c30527396e65b640b
Author: Aric Cyr <aric.cyr@amd.com>
Date:   Thu Jan 30 14:46:53 2020 -0500

    drm/amd/display: dal_ddc_i2c_payloads_create can fail causing panic
    
    [ Upstream commit 6a6c4a4d459ecacc9013c45dcbf2bc9747fdbdbd ]
    
    [Why]
    Since the i2c payload allocation can fail need to check return codes
    
    [How]
    Clean up i2c payload allocations and check for errors
    
    Signed-off-by: Aric Cyr <aric.cyr@amd.com>
    Reviewed-by: Joshua Aberback <Joshua.Aberback@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Acked-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7fbd24e0ea5c327d83825eabc6869581f8e5315e
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Sun Feb 9 19:33:41 2020 +0300

    dmaengine: tegra-apb: Prevent race conditions on channel's freeing
    
    [ Upstream commit 8e84172e372bdca20c305d92d51d33640d2da431 ]
    
    It's incorrect to check the channel's "busy" state without taking a lock.
    That shouldn't cause any real troubles, nevertheless it's always better
    not to have any race conditions in the code.
    
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20200209163356.6439-5-digetx@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1da6faf4bebe10c7d01c94e2ccdf6a1f976fd02c
Author: Amelie Delaunay <amelie.delaunay@st.com>
Date:   Wed Jan 29 16:36:28 2020 +0100

    dmaengine: stm32-dma: use vchan_terminate_vdesc() in .terminate_all
    
    [ Upstream commit d80cbef35bf89b763f06e03bb4ff8f933bf012c5 ]
    
    To avoid race with vchan_complete, use the race free way to terminate
    running transfer.
    
    Move vdesc->node list_del in stm32_dma_start_transfer instead of in
    stm32_mdma_chan_complete to avoid another race in vchan_dma_desc_free_list.
    
    Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
    Link: https://lore.kernel.org/r/20200129153628.29329-9-amelie.delaunay@st.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1baf236084a366789eaf9515ee6027b515fb059d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Feb 24 15:01:39 2020 +0100

    bpf: Remove recursion prevention from rcu free callback
    
    [ Upstream commit 8a37963c7ac9ecb7f86f8ebda020e3f8d6d7b8a0 ]
    
    If an element is freed via RCU then recursion into BPF instrumentation
    functions is not a concern. The element is already detached from the map
    and the RCU callback does not hold any locks on which a kprobe, perf event
    or tracepoint attached BPF program could deadlock.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20200224145643.259118710@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03dda9566772f5a37c5053c6b6eaa184bb4e387d
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Wed Jan 22 08:53:46 2020 -0800

    x86/pkeys: Add check for pkey "overflow"
    
    [ Upstream commit 16171bffc829272d5e6014bad48f680cb50943d9 ]
    
    Alex Shi reported the pkey macros above arch_set_user_pkey_access()
    to be unused.  They are unused, and even refer to a nonexistent
    CONFIG option.
    
    But, they might have served a good use, which was to ensure that
    the code does not try to set values that would not fit in the
    PKRU register.  As it stands, a too-large 'pkey' value would
    be likely to silently overflow the u32 new_pkru_bits.
    
    Add a check to look for overflows.  Also add a comment to remind
    any future developer to closely examine the types used to store
    pkey values if arch_max_pkey() ever changes.
    
    This boots and passes the x86 pkey selftests.
    
    Reported-by: Alex Shi <alex.shi@linux.alibaba.com>
    Signed-off-by: Dave Hansen <dave.hansen@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20200122165346.AD4DA150@viggo.jf.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eec0eacf6c098492adc560429faa484e0d81829d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Feb 11 08:35:46 2020 +0100

    media: staging/imx: Missing assignment in imx_media_capture_device_register()
    
    [ Upstream commit ef0ed05dcef8a74178a8b480cce23a377b1de2b8 ]
    
    There was supposed to be a "ret = " assignment here, otherwise the
    error handling on the next line won't work.
    
    Fixes: 64b5a49df486 ("[media] media: imx: Add Capture Device Interface")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Steve Longerbeam <slongerbeam@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb198240240a8469d0708e472a397c02880faad9
Author: Amelie Delaunay <amelie.delaunay@st.com>
Date:   Mon Jan 27 09:53:34 2020 +0100

    dmaengine: stm32-mdma: use vchan_terminate_vdesc() in .terminate_all
    
    [ Upstream commit dfc708812a2acfc0ca56f56233b3c3e7b0d4ffe7 ]
    
    To avoid race with vchan_complete, use the race free way to terminate
    running transfer.
    
    Move vdesc->node list_del in stm32_mdma_start_transfer instead of in
    stm32_mdma_xfer_end to avoid another race in vchan_dma_desc_free_list.
    
    Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
    Link: https://lore.kernel.org/r/20200127085334.13163-7-amelie.delaunay@st.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09ace5ea7e3edb0a2fc6424a1142559cc38644fd
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Feb 13 18:24:48 2020 +0100

    KVM: x86: fix incorrect comparison in trace event
    
    [ Upstream commit 147f1a1fe5d7e6b01b8df4d0cbd6f9eaf6b6c73b ]
    
    The "u" field in the event has three states, -1/0/1.  Using u8 however means that
    comparison with -1 will always fail, so change to signed char.
    
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 46a57510ad6a04f8ff9c66cd9fbe650218beea12
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Mon Feb 17 12:57:14 2020 -0800

    RDMA/rxe: Fix configuration of atomic queue pair attributes
    
    [ Upstream commit fb3063d31995cc4cf1d47a406bb61d6fb1b1d58d ]
    
    From the comment above the definition of the roundup_pow_of_two() macro:
    
         The result is undefined when n == 0.
    
    Hence only pass positive values to roundup_pow_of_two(). This patch fixes
    the following UBSAN complaint:
    
      UBSAN: Undefined behaviour in ./include/linux/log2.h:57:13
      shift exponent 64 is too large for 64-bit type 'long unsigned int'
      Call Trace:
       dump_stack+0xa5/0xe6
       ubsan_epilogue+0x9/0x26
       __ubsan_handle_shift_out_of_bounds.cold+0x4c/0xf9
       rxe_qp_from_attr.cold+0x37/0x5d [rdma_rxe]
       rxe_modify_qp+0x59/0x70 [rdma_rxe]
       _ib_modify_qp+0x5aa/0x7c0 [ib_core]
       ib_modify_qp+0x3b/0x50 [ib_core]
       cma_modify_qp_rtr+0x234/0x260 [rdma_cm]
       __rdma_accept+0x1a7/0x650 [rdma_cm]
       nvmet_rdma_cm_handler+0x1286/0x14cd [nvmet_rdma]
       cma_cm_event_handler+0x6b/0x330 [rdma_cm]
       cma_ib_req_handler+0xe60/0x22d0 [rdma_cm]
       cm_process_work+0x30/0x140 [ib_cm]
       cm_req_handler+0x11f4/0x1cd0 [ib_cm]
       cm_work_handler+0xb8/0x344e [ib_cm]
       process_one_work+0x569/0xb60
       worker_thread+0x7a/0x5d0
       kthread+0x1e6/0x210
       ret_from_fork+0x24/0x30
    
    Link: https://lore.kernel.org/r/20200217205714.26937-1-bvanassche@acm.org
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 345dc71a5c7efe99b5990a8c3a15bc29dd053521
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Mon Feb 17 11:21:11 2020 +0100

    perf test: Fix test trace+probe_vfs_getname.sh on s390
    
    [ Upstream commit 2bbc83537614517730e9f2811195004b712de207 ]
    
    This test places a kprobe to function getname_flags() in the kernel
    which has the following prototype:
    
      struct filename *getname_flags(const char __user *filename, int flags, int *empty)
    
    The 'filename' argument points to a filename located in user space memory.
    
    Looking at commit 88903c464321c ("tracing/probe: Add ustring type for
    user-space string") the kprobe should indicate that user space memory is
    accessed.
    
    Output before:
    
       [root@m35lp76 perf]# ./perf test 66 67
       66: Use vfs_getname probe to get syscall args filenames   : FAILED!
       67: Check open filename arg using perf trace + vfs_getname: FAILED!
       [root@m35lp76 perf]#
    
    Output after:
    
       [root@m35lp76 perf]# ./perf test 66 67
       66: Use vfs_getname probe to get syscall args filenames   : Ok
       67: Check open filename arg using perf trace + vfs_getname: Ok
       [root@m35lp76 perf]#
    
    Comments from Masami Hiramatsu:
    
    This bug doesn't happen on x86 or other archs on which user address
    space and kernel address space is the same. On some arches (ppc64 in
    this case?) user address space is partially or completely the same as
    kernel address space.
    
    (Yes, they switch the world when running into the kernel) In this case,
    we need to use different data access functions for each space.
    
    That is why I introduced the "ustring" type for kprobe events.
    
    As far as I can see, Thomas's patch is sane. Thomas, could you show us
    your result on your test environment?
    
    Comments from Thomas Richter:
    
    Test results for s/390 included above.
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: http://lore.kernel.org/lkml/20200217102111.61137-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cafae90a24e0c55ccb2443b398e6a6f7e52ed50
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Feb 14 15:49:28 2020 +0100

    ALSA: usb-audio: Don't create a mixer element with bogus volume range
    
    [ Upstream commit e9a0ef0b5ddcbc0d56c65aefc0f18d16e6f71207 ]
    
    Some USB-audio descriptors provide a bogus volume range (e.g. volume
    min and max are identical), which confuses user-space.
    This patch makes the driver skipping such a control element.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206221
    Link: https://lore.kernel.org/r/20200214144928.23628-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac6724d49f654ecb722f84c33ebb8ece64958182
Author: Felix Fietkau <nbd@nbd.name>
Date:   Sat Dec 14 00:15:26 2019 +0100

    mt76: clear skb pointers from rx aggregation reorder buffer during cleanup
    
    [ Upstream commit 9379df2fd9234e3b67a23101c2370c99f6af6d77 ]
    
    During the cleanup of the aggregation session, a rx handler (or release timer)
    on another CPU might still hold a pointer to the reorder buffer and could
    attempt to release some packets.
    Clearing pointers during cleanup avoids a theoretical use-after-free bug here.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7444a79b60c777fb4c7bc2f4073c1ec95ee0cbf4
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Feb 5 10:48:42 2020 +0530

    crypto: chelsio - This fixes the kernel panic which occurs during a libkcapi test
    
    [ Upstream commit 9195189e00a7db55e7d448cee973cae87c5a3c71 ]
    
    The libkcapi test which causes kernel panic is
    aead asynchronous vmsplice multiple test.
    
    ./bin/kcapi  -v -d 4 -x 10   -c "ccm(aes)"
    -q 4edb58e8d5eb6bc711c43a6f3693daebde2e5524f1b55297abb29f003236e43d
    -t a7877c99 -n 674742abd0f5ba -k 2861fd0253705d7875c95ba8a53171b4
    -a fb7bc304a3909e66e2e0c5ef952712dd884ce3e7324171369f2c5db1adc48c7d
    
    This patch avoids dma_mapping of a zero length sg which causes the panic,
    by using sg_nents_for_len which maps only upto a specific length
    
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f99ca8f0876372788b1b6ef04b37ce650ae9c5ae
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Tue Jan 14 10:07:25 2020 -0600

    clk: stratix10: use do_div() for 64-bit calculation
    
    [ Upstream commit cc26ed7be46c5f5fa45f3df8161ed7ca3c4d318c ]
    
    do_div() macro to perform u64 division and guards against overflow if
    the result is too large for the unsigned long return type.
    
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Link: https://lkml.kernel.org/r/20200114160726.19771-1-dinguyen@kernel.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4c38bfb33c2bb1c9cb6afb633fc210ae63a3337
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Apr 8 10:58:32 2019 +0800

    drm/omap: fix possible object reference leak
    
    [ Upstream commit 47340e46f34a3b1d80e40b43ae3d7a8da34a3541 ]
    
    The call to of_find_matching_node returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c:212:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 209, but without a corresponding object release within this function.
    drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c:237:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 209, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Markus Elfring <Markus.Elfring@web.de>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1554692313-28882-2-git-send-email-wen.yang99@zte.com.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b4ba41c88d2cf52c97e3defd13ea6b909646a310
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Jan 27 16:23:07 2020 -0800

    scsi: lpfc: Fix coverity errors in fmdi attribute handling
    
    [ Upstream commit 4cb9e1ddaa145be9ed67b6a7de98ca705a43f998 ]
    
    Coverity reported a memory corruption error for the fdmi attributes
    routines:
    
      CID 15768 [Memory Corruption] Out-of-bounds access on FDMI
    
    Sloppy coding of the fmdi structures. In both the lpfc_fdmi_attr_def and
    lpfc_fdmi_reg_port_list structures, a field was placed at the start of
    payload that may have variable content. The field was given an arbitrary
    type (uint32_t). The code then uses the field name to derive an address,
    which it used in things such as memset and memcpy. The memset sizes or
    memcpy lengths were larger than the arbitrary type, thus coverity reported
    an error.
    
    Fix by replacing the arbitrary fields with the real field structures
    describing the payload.
    
    Link: https://lore.kernel.org/r/20200128002312.16346-8-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ae009aa225732321223bd96d656e07ecf42bf16
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Jan 27 16:23:01 2020 -0800

    scsi: lpfc: Fix RQ buffer leakage when no IOCBs available
    
    [ Upstream commit 39c4f1a965a9244c3ba60695e8ff8da065ec6ac4 ]
    
    The driver is occasionally seeing the following SLI Port error, requiring
    reset and reinit:
    
     Port Status Event: ... error 1=0x52004a01, error 2=0x218
    
    The failure means an RQ timeout. That is, the adapter had received
    asynchronous receive frames, ran out of buffer slots to place the frames,
    and the driver did not replenish the buffer slots before a timeout
    occurred. The driver should not be so slow in replenishing buffers that a
    timeout can occur.
    
    When the driver received all the frames of a sequence, it allocates an IOCB
    to put the frames in. In a situation where there was no IOCB available for
    the frame of a sequence, the RQ buffer corresponding to the first frame of
    the sequence was not returned to the FW. Eventually, with enough traffic
    encountering the situation, the timeout occurred.
    
    Fix by releasing the buffer back to firmware whenever there is no IOCB for
    the first frame.
    
    [mkp: typo]
    
    Link: https://lore.kernel.org/r/20200128002312.16346-2-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64e0f9e159fe6b592e0fe26cfc1ce03f79d2a9db
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Sat Feb 1 10:47:47 2020 +0300

    selinux: sel_avc_get_stat_idx should increase position index
    
    [ Upstream commit 8d269a8e2a8f0bca89022f4ec98de460acb90365 ]
    
    If seq_file .next function does not change position index,
    read after some lseek can generate unexpected output.
    
    $ dd if=/sys/fs/selinux/avc/cache_stats # usual output
    lookups hits misses allocations reclaims frees
    817223 810034 7189 7189 6992 7037
    1934894 1926896 7998 7998 7632 7683
    1322812 1317176 5636 5636 5456 5507
    1560571 1551548 9023 9023 9056 9115
    0+1 records in
    0+1 records out
    189 bytes copied, 5,1564e-05 s, 3,7 MB/s
    
    $# read after lseek to midle of last line
    $ dd if=/sys/fs/selinux/avc/cache_stats bs=180 skip=1
    dd: /sys/fs/selinux/avc/cache_stats: cannot skip to specified offset
    056 9115   <<<< end of last line
    1560571 1551548 9023 9023 9056 9115  <<< whole last line once again
    0+1 records in
    0+1 records out
    45 bytes copied, 8,7221e-05 s, 516 kB/s
    
    $# read after lseek beyond  end of of file
    $ dd if=/sys/fs/selinux/avc/cache_stats bs=1000 skip=1
    dd: /sys/fs/selinux/avc/cache_stats: cannot skip to specified offset
    1560571 1551548 9023 9023 9056 9115  <<<< generates whole last line
    0+1 records in
    0+1 records out
    36 bytes copied, 9,0934e-05 s, 396 kB/s
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67fd417f961254a409c2e64e026b9f2b41434c40
Author: Steve Grubb <sgrubb@redhat.com>
Date:   Fri Jan 24 17:29:16 2020 -0500

    audit: CONFIG_CHANGE don't log internal bookkeeping as an event
    
    [ Upstream commit 70b3eeed49e8190d97139806f6fbaf8964306cdb ]
    
    Common Criteria calls out for any action that modifies the audit trail to
    be recorded. That usually is interpreted to mean insertion or removal of
    rules. It is not required to log modification of the inode information
    since the watch is still in effect. Additionally, if the rule is a never
    rule and the underlying file is one they do not want events for, they
    get an event for this bookkeeping update against their wishes.
    
    Since no device/inode info is logged at insertion and no device/inode
    information is logged on update, there is nothing meaningful being
    communicated to the admin by the CONFIG_CHANGE updated_rules event. One
    can assume that the rule was not "modified" because it is still watching
    the intended target. If the device or inode cannot be resolved, then
    audit_panic is called which is sufficient.
    
    The correct resolution is to drop logging config_update events since
    the watch is still in effect but just on another unknown inode.
    
    Signed-off-by: Steve Grubb <sgrubb@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1fea0234984c39748386a8b2eebaf8a1561e3075
Author: Qian Cai <cai@lca.pw>
Date:   Tue Feb 4 13:40:29 2020 -0500

    skbuff: fix a data race in skb_queue_len()
    
    [ Upstream commit 86b18aaa2b5b5bb48e609cd591b3d2d0fdbe0442 ]
    
    sk_buff.qlen can be accessed concurrently as noticed by KCSAN,
    
     BUG: KCSAN: data-race in __skb_try_recv_from_queue / unix_dgram_sendmsg
    
     read to 0xffff8a1b1d8a81c0 of 4 bytes by task 5371 on cpu 96:
      unix_dgram_sendmsg+0x9a9/0xb70 include/linux/skbuff.h:1821
                                     net/unix/af_unix.c:1761
      ____sys_sendmsg+0x33e/0x370
      ___sys_sendmsg+0xa6/0xf0
      __sys_sendmsg+0x69/0xf0
      __x64_sys_sendmsg+0x51/0x70
      do_syscall_64+0x91/0xb47
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     write to 0xffff8a1b1d8a81c0 of 4 bytes by task 1 on cpu 99:
      __skb_try_recv_from_queue+0x327/0x410 include/linux/skbuff.h:2029
      __skb_try_recv_datagram+0xbe/0x220
      unix_dgram_recvmsg+0xee/0x850
      ____sys_recvmsg+0x1fb/0x210
      ___sys_recvmsg+0xa2/0xf0
      __sys_recvmsg+0x66/0xf0
      __x64_sys_recvmsg+0x51/0x70
      do_syscall_64+0x91/0xb47
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Since only the read is operating as lockless, it could introduce a logic
    bug in unix_recvq_full() due to the load tearing. Fix it by adding
    a lockless variant of skb_queue_len() and unix_recvq_full() where
    READ_ONCE() is on the read while WRITE_ONCE() is on the write similar to
    the commit d7d16a89350a ("net: add skb_queue_empty_lockless()").
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 63cf8e58c21322bd57357fcb7ff19c3d7ef89b97
Author: Mohan Kumar <mkumard@nvidia.com>
Date:   Thu Feb 6 15:40:53 2020 +0530

    ALSA: hda: Clear RIRB status before reading WP
    
    [ Upstream commit 6d011d5057ff88ee556c000ac6fe0be23bdfcd72 ]
    
    RIRB interrupt status getting cleared after the write pointer is read
    causes a race condition, where last response(s) into RIRB may remain
    unserviced by IRQ, eventually causing azx_rirb_get_response to fall
    back to polling mode. Clearing the RIRB interrupt status ahead of
    write pointer access ensures that this condition is avoided.
    
    Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
    Signed-off-by: Viswanath L <viswanathl@nvidia.com>
    Link: https://lore.kernel.org/r/1580983853-351-1-git-send-email-viswanathl@nvidia.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58f79f42e53ee35c9270c2205f34a62924d9e216
Author: Zhuang Yanying <ann.zhuangyanying@huawei.com>
Date:   Sat Oct 12 11:37:31 2019 +0800

    KVM: fix overflow of zero page refcount with ksm running
    
    [ Upstream commit 7df003c85218b5f5b10a7f6418208f31e813f38f ]
    
    We are testing Virtual Machine with KSM on v5.4-rc2 kernel,
    and found the zero_page refcount overflow.
    The cause of refcount overflow is increased in try_async_pf
    (get_user_page) without being decreased in mmu_set_spte()
    while handling ept violation.
    In kvm_release_pfn_clean(), only unreserved page will call
    put_page. However, zero page is reserved.
    So, as well as creating and destroy vm, the refcount of
    zero page will continue to increase until it overflows.
    
    step1:
    echo 10000 > /sys/kernel/pages_to_scan/pages_to_scan
    echo 1 > /sys/kernel/pages_to_scan/run
    echo 1 > /sys/kernel/pages_to_scan/use_zero_pages
    
    step2:
    just create several normal qemu kvm vms.
    And destroy it after 10s.
    Repeat this action all the time.
    
    After a long period of time, all domains hang because
    of the refcount of zero page overflow.
    
    Qemu print error log as follow:
     …
     error: kvm run failed Bad address
     EAX=00006cdc EBX=00000008 ECX=80202001 EDX=078bfbfd
     ESI=ffffffff EDI=00000000 EBP=00000008 ESP=00006cc4
     EIP=000efd75 EFL=00010002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
     ES =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
     SS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     DS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     FS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     GS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
     TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
     GDT=     000f7070 00000037
     IDT=     000f70ae 00000000
     CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
     DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
     DR6=00000000ffff0ff0 DR7=0000000000000400
     EFER=0000000000000000
     Code=00 01 00 00 00 e9 e8 00 00 00 c7 05 4c 55 0f 00 01 00 00 00 <8b> 35 00 00 01 00 8b 3d 04 00 01 00 b8 d8 d3 00 00 c1 e0 08 0c ea a3 00 00 01 00 c7 05 04
     …
    
    Meanwhile, a kernel warning is departed.
    
     [40914.836375] WARNING: CPU: 3 PID: 82067 at ./include/linux/mm.h:987 try_get_page+0x1f/0x30
     [40914.836412] CPU: 3 PID: 82067 Comm: CPU 0/KVM Kdump: loaded Tainted: G           OE     5.2.0-rc2 #5
     [40914.836415] RIP: 0010:try_get_page+0x1f/0x30
     [40914.836417] Code: 40 00 c3 0f 1f 84 00 00 00 00 00 48 8b 47 08 a8 01 75 11 8b 47 34 85 c0 7e 10 f0 ff 47 34 b8 01 00 00 00 c3 48 8d 78 ff eb e9 <0f> 0b 31 c0 c3 66 90 66 2e 0f 1f 84 00 0
     0 00 00 00 48 8b 47 08 a8
     [40914.836418] RSP: 0018:ffffb4144e523988 EFLAGS: 00010286
     [40914.836419] RAX: 0000000080000000 RBX: 0000000000000326 RCX: 0000000000000000
     [40914.836420] RDX: 0000000000000000 RSI: 00004ffdeba10000 RDI: ffffdf07093f6440
     [40914.836421] RBP: ffffdf07093f6440 R08: 800000424fd91225 R09: 0000000000000000
     [40914.836421] R10: ffff9eb41bfeebb8 R11: 0000000000000000 R12: ffffdf06bbd1e8a8
     [40914.836422] R13: 0000000000000080 R14: 800000424fd91225 R15: ffffdf07093f6440
     [40914.836423] FS:  00007fb60ffff700(0000) GS:ffff9eb4802c0000(0000) knlGS:0000000000000000
     [40914.836425] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [40914.836426] CR2: 0000000000000000 CR3: 0000002f220e6002 CR4: 00000000003626e0
     [40914.836427] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     [40914.836427] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     [40914.836428] Call Trace:
     [40914.836433]  follow_page_pte+0x302/0x47b
     [40914.836437]  __get_user_pages+0xf1/0x7d0
     [40914.836441]  ? irq_work_queue+0x9/0x70
     [40914.836443]  get_user_pages_unlocked+0x13f/0x1e0
     [40914.836469]  __gfn_to_pfn_memslot+0x10e/0x400 [kvm]
     [40914.836486]  try_async_pf+0x87/0x240 [kvm]
     [40914.836503]  tdp_page_fault+0x139/0x270 [kvm]
     [40914.836523]  kvm_mmu_page_fault+0x76/0x5e0 [kvm]
     [40914.836588]  vcpu_enter_guest+0xb45/0x1570 [kvm]
     [40914.836632]  kvm_arch_vcpu_ioctl_run+0x35d/0x580 [kvm]
     [40914.836645]  kvm_vcpu_ioctl+0x26e/0x5d0 [kvm]
     [40914.836650]  do_vfs_ioctl+0xa9/0x620
     [40914.836653]  ksys_ioctl+0x60/0x90
     [40914.836654]  __x64_sys_ioctl+0x16/0x20
     [40914.836658]  do_syscall_64+0x5b/0x180
     [40914.836664]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
     [40914.836666] RIP: 0033:0x7fb61cb6bfc7
    
    Signed-off-by: LinFeng <linfeng23@huawei.com>
    Signed-off-by: Zhuang Yanying <ann.zhuangyanying@huawei.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b0795d5b615de48541eae1a87b5a37543e1c17f
Author: Hillf Danton <hdanton@sina.com>
Date:   Wed Feb 5 10:31:59 2020 +0800

    Bluetooth: prefetch channel before killing sock
    
    [ Upstream commit 2a154903cec20fb64ff4d7d617ca53c16f8fd53a ]
    
    Prefetch channel before killing sock in order to fix UAF like
    
     BUG: KASAN: use-after-free in l2cap_sock_release+0x24c/0x290 net/bluetooth/l2cap_sock.c:1212
     Read of size 8 at addr ffff8880944904a0 by task syz-fuzzer/9751
    
    Reported-by: syzbot+c3c5bdea7863886115dc@syzkaller.appspotmail.com
    Fixes: 6c08fc896b60 ("Bluetooth: Fix refcount use-after-free issue")
    Cc: Manish Mandlik <mmandlik@google.com>
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9cb6b6124ac3e1586251329e51b898f1d0a54e6
Author: Steven Price <steven.price@arm.com>
Date:   Mon Feb 3 17:35:58 2020 -0800

    mm: pagewalk: fix termination condition in walk_pte_range()
    
    [ Upstream commit c02a98753e0a36ba65a05818626fa6adeb4e7c97 ]
    
    If walk_pte_range() is called with a 'end' argument that is beyond the
    last page of memory (e.g.  ~0UL) then the comparison between 'addr' and
    'end' will always fail and the loop will be infinite.  Instead change the
    comparison to >= while accounting for overflow.
    
    Link: http://lkml.kernel.org/r/20191218162402.45610-15-steven.price@arm.com
    Signed-off-by: Steven Price <steven.price@arm.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Alexandre Ghiti <alex@ghiti.fr>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: "Liang, Kan" <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Zong Li <zong.li@sifive.com>
    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 52f5a09ab7583ed497fc4b331311d71b7d8a6e12
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 30 22:13:39 2020 -0800

    mm/swapfile.c: swap_next should increase position index
    
    [ Upstream commit 10c8d69f314d557d94d74ec492575ae6a4f1eb1c ]
    
    If seq_file .next fuction does not change position index, read after
    some lseek can generate unexpected output.
    
    In Aug 2018 NeilBrown noticed commit 1f4aace60b0e ("fs/seq_file.c:
    simplify seq_file iteration code and interface") "Some ->next functions
    do not increment *pos when they return NULL...  Note that such ->next
    functions are buggy and should be fixed.  A simple demonstration is
    
      dd if=/proc/swaps bs=1000 skip=1
    
    Choose any block size larger than the size of /proc/swaps.  This will
    always show the whole last line of /proc/swaps"
    
    Described problem is still actual.  If you make lseek into middle of
    last output line following read will output end of last line and whole
    last line once again.
    
      $ dd if=/proc/swaps bs=1  # usual output
      Filename                              Type            Size    Used    Priority
      /dev/dm-0                               partition     4194812 97536   -2
      104+0 records in
      104+0 records out
      104 bytes copied
    
      $ dd if=/proc/swaps bs=40 skip=1    # last line was generated twice
      dd: /proc/swaps: cannot skip to specified offset
      v/dm-0                               partition        4194812 97536   -2
      /dev/dm-0                               partition     4194812 97536   -2
      3+1 records in
      3+1 records out
      131 bytes copied
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    
    Link: http://lkml.kernel.org/r/bd8cfd7b-ac95-9b91-f9e7-e8438bd5047d@virtuozzo.com
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jann Horn <jannh@google.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Hugh Dickins <hughd@google.com>
    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 3b73af6cb9550fda83ee09b8cf0a5992967eeae5
Author: Manish Mandlik <mmandlik@google.com>
Date:   Tue Jan 28 10:54:14 2020 -0800

    Bluetooth: Fix refcount use-after-free issue
    
    [ Upstream commit 6c08fc896b60893c5d673764b0668015d76df462 ]
    
    There is no lock preventing both l2cap_sock_release() and
    chan->ops->close() from running at the same time.
    
    If we consider Thread A running l2cap_chan_timeout() and Thread B running
    l2cap_sock_release(), expected behavior is:
      A::l2cap_chan_timeout()->l2cap_chan_close()->l2cap_sock_teardown_cb()
      A::l2cap_chan_timeout()->l2cap_sock_close_cb()->l2cap_sock_kill()
      B::l2cap_sock_release()->sock_orphan()
      B::l2cap_sock_release()->l2cap_sock_kill()
    
    where,
    sock_orphan() clears "sk->sk_socket" and l2cap_sock_teardown_cb() marks
    socket as SOCK_ZAPPED.
    
    In l2cap_sock_kill(), there is an "if-statement" that checks if both
    sock_orphan() and sock_teardown() has been run i.e. sk->sk_socket is NULL
    and socket is marked as SOCK_ZAPPED. Socket is killed if the condition is
    satisfied.
    
    In the race condition, following occurs:
      A::l2cap_chan_timeout()->l2cap_chan_close()->l2cap_sock_teardown_cb()
      B::l2cap_sock_release()->sock_orphan()
      B::l2cap_sock_release()->l2cap_sock_kill()
      A::l2cap_chan_timeout()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
    In this scenario, "if-statement" is true in both B::l2cap_sock_kill() and
    A::l2cap_sock_kill() and we hit "refcount: underflow; use-after-free" bug.
    
    Similar condition occurs at other places where teardown/sock_kill is
    happening:
      l2cap_disconnect_rsp()->l2cap_chan_del()->l2cap_sock_teardown_cb()
      l2cap_disconnect_rsp()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
      l2cap_conn_del()->l2cap_chan_del()->l2cap_sock_teardown_cb()
      l2cap_conn_del()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
      l2cap_disconnect_req()->l2cap_chan_del()->l2cap_sock_teardown_cb()
      l2cap_disconnect_req()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
      l2cap_sock_cleanup_listen()->l2cap_chan_close()->l2cap_sock_teardown_cb()
      l2cap_sock_cleanup_listen()->l2cap_sock_kill()
    
    Protect teardown/sock_kill and orphan/sock_kill by adding hold_lock on
    l2cap channel to ensure that the socket is killed only after marked as
    zapped and orphan.
    
    Signed-off-by: Manish Mandlik <mmandlik@google.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd0956234c72ce13a765ea814942ed11654d3b6e
Author: Doug Smythies <doug.smythies@gmail.com>
Date:   Mon Jan 27 19:59:56 2020 -0800

    tools/power/x86/intel_pstate_tracer: changes for python 3 compatibility
    
    [ Upstream commit e749e09db30c38f1a275945814b0109e530a07b0 ]
    
    Some syntax needs to be more rigorous for python 3.
    Backwards compatibility tested with python 2.7
    
    Signed-off-by: Doug Smythies <dsmythies@telus.net>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3c930914ea92761dc2982f0195d20809ce2d518
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Tue Jan 28 09:30:29 2020 +0100

    selftests/ftrace: fix glob selftest
    
    [ Upstream commit af4ddd607dff7aabd466a4a878e01b9f592a75ab ]
    
    test.d/ftrace/func-filter-glob.tc is failing on s390 because it has
    ARCH_INLINE_SPIN_LOCK and friends set to 'y'. So the usual
    __raw_spin_lock symbol isn't in the ftrace function list. Change
    '*aw*lock' to '*spin*lock' which would hopefully match some of the
    locking functions on all platforms.
    
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d9cf934d67f32712e444587022aef17bba85276
Author: Jeff Layton <jlayton@kernel.org>
Date:   Thu Dec 5 08:41:25 2019 -0500

    ceph: ensure we have a new cap before continuing in fill_inode
    
    [ Upstream commit 9a6bed4fe0c8bf57785cbc4db9f86086cb9b193d ]
    
    If the caller passes in a NULL cap_reservation, and we can't allocate
    one then ensure that we fail gracefully.
    
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a567bac12f116deb32f1a5b78346872ce1256e3d
Author: Mert Dirik <mertdirik@gmail.com>
Date:   Thu Jan 16 14:11:25 2020 +0300

    ar5523: Add USB ID of SMCWUSBT-G2 wireless adapter
    
    [ Upstream commit 5b362498a79631f283578b64bf6f4d15ed4cc19a ]
    
    Add the required USB ID for running SMCWUSBT-G2 wireless adapter (SMC
    "EZ Connect g").
    
    This device uses ar5523 chipset and requires firmware to be loaded. Even
    though pid of the device is 4507, this patch adds it as 4506 so that
    AR5523_DEVICE_UG macro can set the AR5523_FLAG_PRE_FIRMWARE flag for pid
    4507.
    
    Signed-off-by: Mert Dirik <mertdirik@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd0c2804720e2ffb0360ca3a2c7b442ed009ea4b
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Mon Dec 16 11:48:28 2019 +0100

    ARM: 8948/1: Prevent OOB access in stacktrace
    
    [ Upstream commit 40ff1ddb5570284e039e0ff14d7a859a73dc3673 ]
    
    The stacktrace code can read beyond the stack size, when it attempts to
    read pt_regs from exception frames.
    
    This can happen on normal, non-corrupt stacks.  Since the unwind
    information in the extable is not correct for function prologues, the
    unwinding code can return data from the stack which is not actually the
    caller function address, and if in_entry_text() happens to succeed on
    this value, we can end up reading data from outside the task's stack
    when attempting to read pt_regs, since there is no bounds check.
    
    Example:
    
     [<8010e729>] (unwind_backtrace) from [<8010a9c9>] (show_stack+0x11/0x14)
     [<8010a9c9>] (show_stack) from [<8057d8d7>] (dump_stack+0x87/0xac)
     [<8057d8d7>] (dump_stack) from [<8012271d>] (tasklet_action_common.constprop.4+0xa5/0xa8)
     [<8012271d>] (tasklet_action_common.constprop.4) from [<80102333>] (__do_softirq+0x11b/0x31c)
     [<80102333>] (__do_softirq) from [<80122485>] (irq_exit+0xad/0xd8)
     [<80122485>] (irq_exit) from [<8015f3d7>] (__handle_domain_irq+0x47/0x84)
     [<8015f3d7>] (__handle_domain_irq) from [<8036a523>] (gic_handle_irq+0x43/0x78)
     [<8036a523>] (gic_handle_irq) from [<80101a49>] (__irq_svc+0x69/0xb4)
     Exception stack(0xeb491f58 to 0xeb491fa0)
     1f40:                                                       7eb14794 00000000
     1f60: ffffffff 008dd32c 008dd324 ffffffff 008dd314 0000002a 801011e4 eb490000
     1f80: 0000002a 7eb1478c 50c5387d eb491fa8 80101001 8023d09c 40080033 ffffffff
     [<80101a49>] (__irq_svc) from [<8023d09c>] (do_pipe2+0x0/0xac)
     [<8023d09c>] (do_pipe2) from [<ffffffff>] (0xffffffff)
     Exception stack(0xeb491fc8 to 0xeb492010)
     1fc0:                   008dd314 0000002a 00511ad8 008de4c8 7eb14790 7eb1478c
     1fe0: 00511e34 7eb14774 004c8557 76f44098 60080030 7eb14794 00000000 00000000
     2000: 00000001 00000000 ea846c00 ea847cc0
    
    In this example, the stack limit is 0xeb492000, but 16 bytes outside the
    stack have been read.
    
    Fix it by adding bounds checks.
    
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72913876dc5fe6ae97963b5674c1797b19f6efcd
Author: Josef Bacik <jbacik@fb.com>
Date:   Wed Sep 24 16:14:12 2014 -0400

    tracing: Set kernel_stack's caller size properly
    
    [ Upstream commit cbc3b92ce037f5e7536f6db157d185cd8b8f615c ]
    
    I noticed when trying to use the trace-cmd python interface that reading the raw
    buffer wasn't working for kernel_stack events.  This is because it uses a
    stubbed version of __dynamic_array that doesn't do the __data_loc trick and
    encode the length of the array into the field.  Instead it just shows up as a
    size of 0.  So change this to __array and set the len to FTRACE_STACK_ENTRIES
    since this is what we actually do in practice and matches how user_stack_trace
    works.
    
    Link: http://lkml.kernel.org/r/1411589652-1318-1-git-send-email-jbacik@fb.com
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    [ Pulled from the archeological digging of my INBOX ]
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d04a4da5977084ff271e5565bf753c59c22f1ee
Author: Maxim Mikityanskiy <maxtram95@gmail.com>
Date:   Fri Jan 24 19:15:35 2020 +0200

    Bluetooth: btrtl: Use kvmalloc for FW allocations
    
    [ Upstream commit 268d3636dfb22254324774de1f8875174b3be064 ]
    
    Currently, kmemdup is applied to the firmware data, and it invokes
    kmalloc under the hood. The firmware size and patch_length are big (more
    than PAGE_SIZE), and on some low-end systems (like ASUS E202SA) kmalloc
    may fail to allocate a contiguous chunk under high memory usage and
    fragmentation:
    
    Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000a lmp_ver=06 lmp_subver=8821
    Bluetooth: hci0: RTL: rom_version status=0 version=1
    Bluetooth: hci0: RTL: loading rtl_bt/rtl8821a_fw.bin
    kworker/u9:2: page allocation failure: order:4, mode:0x40cc0(GFP_KERNEL|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0
    <stack trace follows>
    
    As firmware load happens on each resume, Bluetooth will stop working
    after several iterations, when the kernel fails to allocate an order-4
    page.
    
    This patch replaces kmemdup with kvmalloc+memcpy. It's not required to
    have a contiguous chunk here, because it's not mapped to the device
    directly.
    
    Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da67f7ae534fbb84d1cf9bba074ab7ef027ec26c
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Wed Oct 16 12:25:36 2019 +1100

    powerpc/eeh: Only dump stack once if an MMIO loop is detected
    
    [ Upstream commit 4e0942c0302b5ad76b228b1a7b8c09f658a1d58a ]
    
    Many drivers don't check for errors when they get a 0xFFs response from an
    MMIO load. As a result after an EEH event occurs a driver can get stuck in
    a polling loop unless it some kind of internal timeout logic.
    
    Currently EEH tries to detect and report stuck drivers by dumping a stack
    trace after eeh_dev_check_failure() is called EEH_MAX_FAILS times on an
    already frozen PE. The value of EEH_MAX_FAILS was chosen so that a dump
    would occur every few seconds if the driver was spinning in a loop. This
    results in a lot of spurious stack traces in the kernel log.
    
    Fix this by limiting it to printing one stack trace for each PE freeze. If
    the driver is truely stuck the kernel's hung task detector is better suited
    to reporting the probelm anyway.
    
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    Reviewed-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Tested-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191016012536.22588-1-oohall@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a356441de6d18b1960652b221e014253e439d45d
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Thu Dec 19 14:56:13 2019 +0100

    s390/cpum_sf: Use kzalloc and minor changes
    
    [ Upstream commit 32dab6828c42f087439d3e2617dc7283546bd8f7 ]
    
    Use kzalloc() to allocate auxiliary buffer structure initialized
    with all zeroes to avoid random value in trace output.
    
    Avoid double access to SBD hardware flags.
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2708ed6048bc8439f289e7b6a33c8a5a660e446b
Author: Matthias Fend <matthias.fend@wolfvision.net>
Date:   Wed Jan 15 11:22:49 2020 +0100

    dmaengine: zynqmp_dma: fix burst length configuration
    
    [ Upstream commit cc88525ebffc757e00cc5a5d61da6271646c7f5f ]
    
    Since the dma engine expects the burst length register content as
    power of 2 value, the burst length needs to be converted first.
    Additionally add a burst length range check to avoid corrupting unrelated
    register bits.
    
    Signed-off-by: Matthias Fend <matthias.fend@wolfvision.net>
    Link: https://lore.kernel.org/r/20200115102249.24398-1-matthias.fend@wolfvision.net
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 714ddb5ec8af1bb2c24878bf61ea2a1b7cb23735
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Dec 24 14:02:46 2019 -0800

    scsi: ufs: Fix a race condition in the tracing code
    
    [ Upstream commit eacf36f5bebde5089dddb3d5bfcbeab530b01f8a ]
    
    Starting execution of a command before tracing a command may cause the
    completion handler to free data while it is being traced. Fix this race by
    tracing a command before it is submitted.
    
    Cc: Bean Huo <beanhuo@micron.com>
    Cc: Can Guo <cang@codeaurora.org>
    Cc: Avri Altman <avri.altman@wdc.com>
    Cc: Stanley Chu <stanley.chu@mediatek.com>
    Cc: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20191224220248.30138-5-bvanassche@acm.org
    Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f26915042bd914cf9e7d3fbf68bca6daa99ec6d
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Dec 24 14:02:44 2019 -0800

    scsi: ufs: Make ufshcd_add_command_trace() easier to read
    
    [ Upstream commit e4d2add7fd5bc64ee3e388eabe6b9e081cb42e11 ]
    
    Since the lrbp->cmd expression occurs multiple times, introduce a new local
    variable to hold that pointer. This patch does not change any
    functionality.
    
    Cc: Bean Huo <beanhuo@micron.com>
    Cc: Can Guo <cang@codeaurora.org>
    Cc: Avri Altman <avri.altman@wdc.com>
    Cc: Stanley Chu <stanley.chu@mediatek.com>
    Cc: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20191224220248.30138-3-bvanassche@acm.org
    Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
    Reviewed-by: Can Guo <cang@codeaurora.org>
    Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4913d773d113b1f61620baeadaa9d8ef3a4400c1
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 27 11:04:21 2019 +0100

    ACPI: EC: Reference count query handlers under lock
    
    [ Upstream commit 3df663a147fe077a6ee8444ec626738946e65547 ]
    
    There is a race condition in acpi_ec_get_query_handler()
    theoretically allowing query handlers to go away before refernce
    counting them.
    
    In order to avoid it, call kref_get() on query handlers under
    ec->mutex.
    
    Also simplify the code a bit while at it.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 479468bef2fa4845cd894ad352181b619195fe70
Author: Kevin Kou <qdkevin.kou@gmail.com>
Date:   Thu Dec 26 12:29:17 2019 +0000

    sctp: move trace_sctp_probe_path into sctp_outq_sack
    
    [ Upstream commit f643ee295c1c63bc117fb052d4da681354d6f732 ]
    
    The original patch bringed in the "SCTP ACK tracking trace event"
    feature was committed at Dec.20, 2017, it replaced jprobe usage
    with trace events, and bringed in two trace events, one is
    TRACE_EVENT(sctp_probe), another one is TRACE_EVENT(sctp_probe_path).
    The original patch intended to trigger the trace_sctp_probe_path in
    TRACE_EVENT(sctp_probe) as below code,
    
    +TRACE_EVENT(sctp_probe,
    +
    +       TP_PROTO(const struct sctp_endpoint *ep,
    +                const struct sctp_association *asoc,
    +                struct sctp_chunk *chunk),
    +
    +       TP_ARGS(ep, asoc, chunk),
    +
    +       TP_STRUCT__entry(
    +               __field(__u64, asoc)
    +               __field(__u32, mark)
    +               __field(__u16, bind_port)
    +               __field(__u16, peer_port)
    +               __field(__u32, pathmtu)
    +               __field(__u32, rwnd)
    +               __field(__u16, unack_data)
    +       ),
    +
    +       TP_fast_assign(
    +               struct sk_buff *skb = chunk->skb;
    +
    +               __entry->asoc = (unsigned long)asoc;
    +               __entry->mark = skb->mark;
    +               __entry->bind_port = ep->base.bind_addr.port;
    +               __entry->peer_port = asoc->peer.port;
    +               __entry->pathmtu = asoc->pathmtu;
    +               __entry->rwnd = asoc->peer.rwnd;
    +               __entry->unack_data = asoc->unack_data;
    +
    +               if (trace_sctp_probe_path_enabled()) {
    +                       struct sctp_transport *sp;
    +
    +                       list_for_each_entry(sp, &asoc->peer.transport_addr_list,
    +                                           transports) {
    +                               trace_sctp_probe_path(sp, asoc);
    +                       }
    +               }
    +       ),
    
    But I found it did not work when I did testing, and trace_sctp_probe_path
    had no output, I finally found that there is trace buffer lock
    operation(trace_event_buffer_reserve) in include/trace/trace_events.h:
    
    static notrace void                                                     \
    trace_event_raw_event_##call(void *__data, proto)                       \
    {                                                                       \
            struct trace_event_file *trace_file = __data;                   \
            struct trace_event_data_offsets_##call __maybe_unused __data_offsets;\
            struct trace_event_buffer fbuffer;                              \
            struct trace_event_raw_##call *entry;                           \
            int __data_size;                                                \
                                                                            \
            if (trace_trigger_soft_disabled(trace_file))                    \
                    return;                                                 \
                                                                            \
            __data_size = trace_event_get_offsets_##call(&__data_offsets, args); \
                                                                            \
            entry = trace_event_buffer_reserve(&fbuffer, trace_file,        \
                                     sizeof(*entry) + __data_size);         \
                                                                            \
            if (!entry)                                                     \
                    return;                                                 \
                                                                            \
            tstruct                                                         \
                                                                            \
            { assign; }                                                     \
                                                                            \
            trace_event_buffer_commit(&fbuffer);                            \
    }
    
    The reason caused no output of trace_sctp_probe_path is that
    trace_sctp_probe_path written in TP_fast_assign part of
    TRACE_EVENT(sctp_probe), and it will be placed( { assign; } ) after the
    trace_event_buffer_reserve() when compiler expands Macro,
    
            entry = trace_event_buffer_reserve(&fbuffer, trace_file,        \
                                     sizeof(*entry) + __data_size);         \
                                                                            \
            if (!entry)                                                     \
                    return;                                                 \
                                                                            \
            tstruct                                                         \
                                                                            \
            { assign; }                                                     \
    
    so trace_sctp_probe_path finally can not acquire trace_event_buffer
    and return no output, that is to say the nest of tracepoint entry function
    is not allowed. The function call flow is:
    
    trace_sctp_probe()
    -> trace_event_raw_event_sctp_probe()
     -> lock buffer
     -> trace_sctp_probe_path()
       -> trace_event_raw_event_sctp_probe_path()  --nested
       -> buffer has been locked and return no output.
    
    This patch is to remove trace_sctp_probe_path from the TP_fast_assign
    part of TRACE_EVENT(sctp_probe) to avoid the nest of entry function,
    and trigger sctp_probe_path_trace in sctp_outq_sack.
    
    After this patch, you can enable both events individually,
      # cd /sys/kernel/debug/tracing
      # echo 1 > events/sctp/sctp_probe/enable
      # echo 1 > events/sctp/sctp_probe_path/enable
    
    Or, you can enable all the events under sctp.
    
      # echo 1 > events/sctp/enable
    
    Signed-off-by: Kevin Kou <qdkevin.kou@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f3de4dd102e51461e7e6a03789824b52ff92c8c
Author: Nikhil Devshatwar <nikhil.nd@ti.com>
Date:   Tue Nov 12 15:53:33 2019 +0100

    media: ti-vpe: cal: Restrict DMA to avoid memory corruption
    
    [ Upstream commit 6e72eab2e7b7a157d554b8f9faed7676047be7c1 ]
    
    When setting DMA for video capture from CSI channel, if the DMA size
    is not given, it ends up writing as much data as sent by the camera.
    
    This may lead to overwriting the buffers causing memory corruption.
    Observed green lines on the default framebuffer.
    
    Restrict the DMA to maximum height as specified in the S_FMT ioctl.
    
    Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
    Signed-off-by: Benoit Parrot <bparrot@ti.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b4ba98354cc0e8f5a800bc19a1f576e61f49a2a
Author: Marco Elver <elver@google.com>
Date:   Thu Nov 14 19:03:00 2019 +0100

    seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier
    
    [ Upstream commit bf07132f96d426bcbf2098227fb680915cf44498 ]
    
    This patch proposes to require marked atomic accesses surrounding
    raw_write_seqcount_barrier. We reason that otherwise there is no way to
    guarantee propagation nor atomicity of writes before/after the barrier
    [1]. For example, consider the compiler tears stores either before or
    after the barrier; in this case, readers may observe a partial value,
    and because readers are unaware that writes are going on (writes are not
    in a seq-writer critical section), will complete the seq-reader critical
    section while having observed some partial state.
    [1] https://lwn.net/Articles/793253/
    
    This came up when designing and implementing KCSAN, because KCSAN would
    flag these accesses as data-races. After careful analysis, our reasoning
    as above led us to conclude that the best thing to do is to propose an
    amendment to the raw_seqcount_barrier usage.
    
    Signed-off-by: Marco Elver <elver@google.com>
    Acked-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 24cb471708d57962df50de38547dac45f0879f76
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 23 10:12:06 2020 +0300

    ipv6_route_seq_next should increase position index
    
    [ Upstream commit 4fc427e0515811250647d44de38d87d7b0e0790f ]
    
    if seq_file .next fuction does not change position index,
    read after some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e10f2f29ba39f70d657f563d332405ea8f0cb349
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 23 10:11:35 2020 +0300

    rt_cpu_seq_next should increase position index
    
    [ Upstream commit a3ea86739f1bc7e121d921842f0f4a8ab1af94d9 ]
    
    if seq_file .next fuction does not change position index,
    read after some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2cd82a26fcf477d593c546d8a84fc7881ceaf27
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 23 10:11:28 2020 +0300

    neigh_stat_seq_next() should increase position index
    
    [ Upstream commit 1e3f9f073c47bee7c23e77316b07bc12338c5bba ]
    
    if seq_file .next fuction does not change position index,
    read after some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 576f57da9107056935364824ecd2d78a07d542e6
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Wed Dec 11 13:19:07 2019 -0800

    xfs: fix log reservation overflows when allocating large rt extents
    
    [ Upstream commit b1de6fc7520fe12949c070af0e8c0e4044cd3420 ]
    
    Omar Sandoval reported that a 4G fallocate on the realtime device causes
    filesystem shutdowns due to a log reservation overflow that happens when
    we log the rtbitmap updates.  Factor rtbitmap/rtsummary updates into the
    the tr_write and tr_itruncate log reservation calculation.
    
    "The following reproducer results in a transaction log overrun warning
    for me:
    
        mkfs.xfs -f -r rtdev=/dev/vdc -d rtinherit=1 -m reflink=0 /dev/vdb
        mount -o rtdev=/dev/vdc /dev/vdb /mnt
        fallocate -l 4G /mnt/foo
    
    Reported-by: Omar Sandoval <osandov@osandov.com>
    Tested-by: Omar Sandoval <osandov@osandov.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b3a8c6a73c589006eb5d29748f0b8a6c81f3fd6
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Thu Nov 28 14:38:48 2019 +0800

    KVM: arm/arm64: vgic: Fix potential double free dist->spis in __kvm_vgic_destroy()
    
    [ Upstream commit 0bda9498dd45280e334bfe88b815ebf519602cc3 ]
    
    In kvm_vgic_dist_init() called from kvm_vgic_map_resources(), if
    dist->vgic_model is invalid, dist->spis will be freed without set
    dist->spis = NULL. And in vgicv2 resources clean up path,
    __kvm_vgic_destroy() will be called to free allocated resources.
    And dist->spis will be freed again in clean up chain because we
    forget to set dist->spis = NULL in kvm_vgic_dist_init() failed
    path. So double free would happen.
    
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Link: https://lore.kernel.org/r/1574923128-19956-1-git-send-email-linmiaohe@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 489cee9124d53ce20fb3f989449efa2aa51a4b18
Author: Joe Perches <joe@perches.com>
Date:   Wed Dec 4 16:50:53 2019 -0800

    kernel/sys.c: avoid copying possible padding bytes in copy_to_user
    
    [ Upstream commit 5e1aada08cd19ea652b2d32a250501d09b02ff2e ]
    
    Initialization is not guaranteed to zero padding bytes so use an
    explicit memset instead to avoid leaking any kernel content in any
    possible padding bytes.
    
    Link: http://lkml.kernel.org/r/dfa331c00881d61c8ee51577a082d8bebd61805c.camel@perches.com
    Signed-off-by: Joe Perches <joe@perches.com>
    Cc: Dan Carpenter <error27@gmail.com>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kees Cook <keescook@chromium.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 6ce5dd69dc104b426c76664035b24987b74ae431
Author: Tzung-Bi Shih <tzungbi@google.com>
Date:   Fri Nov 22 15:31:12 2019 +0800

    ASoC: max98090: remove msleep in PLL unlocked workaround
    
    [ Upstream commit acb874a7c049ec49d8fc66c893170fb42c01bdf7 ]
    
    It was observed Baytrail-based chromebooks could cause continuous PLL
    unlocked when using playback stream and capture stream simultaneously.
    Specifically, starting a capture stream after started a playback stream.
    As a result, the audio data could corrupt or turn completely silent.
    
    As the datasheet suggested, the maximum PLL lock time should be 7 msec.
    The workaround resets the codec softly by toggling SHDN off and on if
    PLL failed to lock for 10 msec.  Notably, there is no suggested hold
    time for SHDN off.
    
    On Baytrail-based chromebooks, it would easily happen continuous PLL
    unlocked if there is a 10 msec delay between SHDN off and on.  Removes
    the msleep().
    
    Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
    Link: https://lore.kernel.org/r/20191122073114.219945-2-tzungbi@google.com
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18201a7938dc7dbd9ebee7e02d50357657643b22
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Tue Oct 29 16:51:19 2019 -0700

    CIFS: Properly process SMB3 lease breaks
    
    [ Upstream commit 9bd4540836684013aaad6070a65d6fcdd9006625 ]
    
    Currenly we doesn't assume that a server may break a lease
    from RWH to RW which causes us setting a wrong lease state
    on a file and thus mistakenly flushing data and byte-range
    locks and purging cached data on the client. This leads to
    performance degradation because subsequent IOs go directly
    to the server.
    
    Fix this by propagating new lease state and epoch values
    to the oplock break handler through cifsFileInfo structure
    and removing the use of cifsInodeInfo flags for that. It
    allows to avoid some races of several lease/oplock breaks
    using those flags in parallel.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 421ac08d3d5df1eb7a3a6481986714ca2131ff44
Author: Kusanagi Kouichi <slash@ac.auone-net.jp>
Date:   Thu Nov 21 19:20:21 2019 +0900

    debugfs: Fix !DEBUG_FS debugfs_create_automount
    
    [ Upstream commit 4250b047039d324e0ff65267c8beb5bad5052a86 ]
    
    If DEBUG_FS=n, compile fails with the following error:
    
    kernel/trace/trace.c: In function 'tracing_init_dentry':
    kernel/trace/trace.c:8658:9: error: passing argument 3 of 'debugfs_create_automount' from incompatible pointer type [-Werror=incompatible-pointer-types]
     8658 |         trace_automount, NULL);
          |         ^~~~~~~~~~~~~~~
          |         |
          |         struct vfsmount * (*)(struct dentry *, void *)
    In file included from kernel/trace/trace.c:24:
    ./include/linux/debugfs.h:206:25: note: expected 'struct vfsmount * (*)(void *)' but argument is of type 'struct vfsmount * (*)(struct dentry *, void *)'
      206 |      struct vfsmount *(*f)(void *),
          |      ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
    
    Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
    Link: https://lore.kernel.org/r/20191121102021787.MLMY.25002.ppp.dion.ne.jp@dmta0003.auone-net.jp
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db3ff4f7d7a83dfd63ec4e1c34e387b4e9aa93a6
Author: peter chang <dpf@google.com>
Date:   Thu Nov 14 15:39:06 2019 +0530

    scsi: pm80xx: Cleanup command when a reset times out
    
    [ Upstream commit 51c1c5f6ed64c2b65a8cf89dac136273d25ca540 ]
    
    Added the fix so the if driver properly sent the abort it tries to remove
    it from the firmware's list of outstanding commands regardless of the abort
    status. This means that the task gets freed 'now' rather than possibly
    getting freed later when the scsi layer thinks it's leaked but still valid.
    
    Link: https://lore.kernel.org/r/20191114100910.6153-10-deepak.ukey@microchip.com
    Acked-by: Jack Wang <jinpu.wang@cloud.ionos.com>
    Signed-off-by: peter chang <dpf@google.com>
    Signed-off-by: Deepak Ukey <deepak.ukey@microchip.com>
    Signed-off-by: Viswas G <Viswas.G@microchip.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 19709adfd7cda040781705ca02a6f7b638d2ac14
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Tue Nov 19 11:40:46 2019 -0500

    gfs2: clean up iopen glock mess in gfs2_create_inode
    
    [ Upstream commit 2c47c1be51fbded1f7baa2ceaed90f97932f79be ]
    
    Before this patch, gfs2_create_inode had a use-after-free for the
    iopen glock in some error paths because it did this:
    
            gfs2_glock_put(io_gl);
    fail_gunlock2:
            if (io_gl)
                    clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);
    
    In some cases, the io_gl was used for create and only had one
    reference, so the glock might be freed before the clear_bit().
    This patch tries to straighten it out by only jumping to the
    error paths where iopen is properly set, and moving the
    gfs2_glock_put after the clear_bit.
    
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b686ce8126c971bdab261707296f4d26a71ac4e
Author: Bradley Bolen <bradleybolen@gmail.com>
Date:   Sat Nov 16 20:00:45 2019 -0500

    mmc: core: Fix size overflow for mmc partitions
    
    [ Upstream commit f3d7c2292d104519195fdb11192daec13229c219 ]
    
    With large eMMC cards, it is possible to create general purpose
    partitions that are bigger than 4GB.  The size member of the mmc_part
    struct is only an unsigned int which overflows for gp partitions larger
    than 4GB.  Change this to a u64 to handle the overflow.
    
    Signed-off-by: Bradley Bolen <bradleybolen@gmail.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ff84e6366b02643667b9a50548e07422afc0757
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Tue Nov 5 09:12:51 2019 +0100

    ubi: Fix producing anchor PEBs
    
    [ Upstream commit f9c34bb529975fe9f85b870a80c53a83a3c5a182 ]
    
    When a new fastmap is about to be written UBI must make sure it has a
    free block for a fastmap anchor available. For this ubi_update_fastmap()
    calls ubi_ensure_anchor_pebs(). This stopped working with 2e8f08deabbc
    ("ubi: Fix races around ubi_refill_pools()"), with this commit the wear
    leveling code is blocked and can no longer produce free PEBs. UBI then
    more often than not falls back to write the new fastmap anchor to the
    same block it was already on which means the same erase block gets
    erased during each fastmap write and wears out quite fast.
    
    As the locking prevents us from producing the anchor PEB when we
    actually need it, this patch changes the strategy for creating the
    anchor PEB. We no longer create it on demand right before we want to
    write a fastmap, but instead we create an anchor PEB right after we have
    written a fastmap. This gives us enough time to produce a new anchor PEB
    before it is needed. To make sure we have an anchor PEB for the very
    first fastmap write we call ubi_ensure_anchor_pebs() during
    initialisation as well.
    
    Fixes: 2e8f08deabbc ("ubi: Fix races around ubi_refill_pools()")
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3be4a89abe31efcd9d53dd5fbfd4c384593c85ec
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Sep 23 21:07:46 2019 +0200

    RDMA/iw_cgxb4: Fix an error handling path in 'c4iw_connect()'
    
    [ Upstream commit 9067f2f0b41d7e817fc8c5259bab1f17512b0147 ]
    
    We should jump to fail3 in order to undo the 'xa_insert_irq()' call.
    
    Link: https://lore.kernel.org/r/20190923190746.10964-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03ad258887f66a51ece17e6604905616a5647c55
Author: Brian Foster <bfoster@redhat.com>
Date:   Fri Nov 15 21:15:08 2019 -0800

    xfs: fix attr leaf header freemap.size underflow
    
    [ Upstream commit 2a2b5932db67586bacc560cc065d62faece5b996 ]
    
    The leaf format xattr addition helper xfs_attr3_leaf_add_work()
    adjusts the block freemap in a couple places. The first update drops
    the size of the freemap that the caller had already selected to
    place the xattr name/value data. Before the function returns, it
    also checks whether the entries array has encroached on a freemap
    range by virtue of the new entry addition. This is necessary because
    the entries array grows from the start of the block (but end of the
    block header) towards the end of the block while the name/value data
    grows from the end of the block in the opposite direction. If the
    associated freemap is already empty, however, size is zero and the
    subtraction underflows the field and causes corruption.
    
    This is reproduced rarely by generic/070. The observed behavior is
    that a smaller sized freemap is aligned to the end of the entries
    list, several subsequent xattr additions land in larger freemaps and
    the entries list expands into the smaller freemap until it is fully
    consumed and then underflows. Note that it is not otherwise a
    corruption for the entries array to consume an empty freemap because
    the nameval list (i.e. the firstused pointer in the xattr header)
    starts beyond the end of the corrupted freemap.
    
    Update the freemap size modification to account for the fact that
    the freemap entry can be empty and thus stale.
    
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98e151baabddf8f26212739ad4f194591a1b22f6
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Oct 31 01:43:31 2019 -0400

    fix dget_parent() fastpath race
    
    [ Upstream commit e84009336711d2bba885fc9cea66348ddfce3758 ]
    
    We are overoptimistic about taking the fast path there; seeing
    the same value in ->d_parent after having grabbed a reference
    to that parent does *not* mean that it has remained our parent
    all along.
    
    That wouldn't be a big deal (in the end it is our parent and
    we have grabbed the reference we are about to return), but...
    the situation with barriers is messed up.
    
    We might have hit the following sequence:
    
    d is a dentry of /tmp/a/b
    CPU1:                                   CPU2:
    parent = d->d_parent (i.e. dentry of /tmp/a)
                                            rename /tmp/a/b to /tmp/b
                                            rmdir /tmp/a, making its dentry negative
    grab reference to parent,
    end up with cached parent->d_inode (NULL)
                                            mkdir /tmp/a, rename /tmp/b to /tmp/a/b
    recheck d->d_parent, which is back to original
    decide that everything's fine and return the reference we'd got.
    
    The trouble is, caller (on CPU1) will observe dget_parent()
    returning an apparently negative dentry.  It actually is positive,
    but CPU1 has stale ->d_inode cached.
    
    Use d->d_seq to see if it has been moved instead of rechecking ->d_parent.
    NOTE: we are *NOT* going to retry on any kind of ->d_seq mismatch;
    we just go into the slow path in such case.  We don't wait for ->d_seq
    to become even either - again, if we are racing with renames, we
    can bloody well go to slow path anyway.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e4922f7e29fcbe46ac0d3e0eeab2ae0ee2e12fd
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 6 14:44:11 2019 +0800

    RDMA/i40iw: Fix potential use after free
    
    [ Upstream commit da046d5f895fca18d63b15ac8faebd5bf784e23a ]
    
    Release variable dst after logging dst->error to avoid possible use after
    free.
    
    Link: https://lore.kernel.org/r/1573022651-37171-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14d73b6a1183f8573fae64996f3a7ccadcee9a33
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 6 14:23:54 2019 +0800

    RDMA/qedr: Fix potential use after free
    
    [ Upstream commit 960657b732e1ce21b07be5ab48a7ad3913d72ba4 ]
    
    Move the release operation after error log to avoid possible use after
    free.
    
    Link: https://lore.kernel.org/r/1573021434-18768-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
    Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 515184695862ef58560603e105dc311138bd0e04
Author: Satendra Singh Thakur <sst2005@gmail.com>
Date:   Sat Nov 9 17:05:23 2019 +0530

    dmaengine: mediatek: hsdma_probe: fixed a memory leak when devm_request_irq fails
    
    [ Upstream commit 1ff95243257fad07290dcbc5f7a6ad79d6e703e2 ]
    
    When devm_request_irq fails, currently, the function
    dma_async_device_unregister gets called. This doesn't free
    the resources allocated by of_dma_controller_register.
    Therefore, we have called of_dma_controller_free for this purpose.
    
    Signed-off-by: Satendra Singh Thakur <sst2005@gmail.com>
    Link: https://lore.kernel.org/r/20191109113523.6067-1-sst2005@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c85bf62a0d6f62d8611be1100ad3a2e39cbe5426
Author: Guoju Fang <fangguoju@gmail.com>
Date:   Wed Nov 13 16:03:16 2019 +0800

    bcache: fix a lost wake-up problem caused by mca_cannibalize_lock
    
    [ Upstream commit 34cf78bf34d48dddddfeeadb44f9841d7864997a ]
    
    This patch fix a lost wake-up problem caused by the race between
    mca_cannibalize_lock and bch_cannibalize_unlock.
    
    Consider two processes, A and B. Process A is executing
    mca_cannibalize_lock, while process B takes c->btree_cache_alloc_lock
    and is executing bch_cannibalize_unlock. The problem happens that after
    process A executes cmpxchg and will execute prepare_to_wait. In this
    timeslice process B executes wake_up, but after that process A executes
    prepare_to_wait and set the state to TASK_INTERRUPTIBLE. Then process A
    goes to sleep but no one will wake up it. This problem may cause bcache
    device to dead.
    
    Signed-off-by: Guoju Fang <fangguoju@gmail.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cbef6b996e94a30e0c18995cdfea1477a2b257fc
Author: Divya Indi <divya.indi@oracle.com>
Date:   Wed Aug 14 10:55:25 2019 -0700

    tracing: Adding NULL checks for trace_array descriptor pointer
    
    [ Upstream commit 953ae45a0c25e09428d4a03d7654f97ab8a36647 ]
    
    As part of commit f45d1225adb0 ("tracing: Kernel access to Ftrace
    instances") we exported certain functions. Here, we are adding some additional
    NULL checks to ensure safe usage by users of these APIs.
    
    Link: http://lkml.kernel.org/r/1565805327-579-4-git-send-email-divya.indi@oracle.com
    
    Signed-off-by: Divya Indi <divya.indi@oracle.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b55eddf907af045cc3c74b4bb28868bfed62e4d0
Author: Ivan Lazeev <ivan.lazeev@gmail.com>
Date:   Wed Oct 16 21:28:14 2019 +0300

    tpm_crb: fix fTPM on AMD Zen+ CPUs
    
    [ Upstream commit 3ef193822b25e9ee629974f66dc1ff65167f770c ]
    
    Bug link: https://bugzilla.kernel.org/show_bug.cgi?id=195657
    
    cmd/rsp buffers are expected to be in the same ACPI region.
    For Zen+ CPUs BIOS's might report two different regions, some of
    them also report region sizes inconsistent with values from TPM
    registers.
    
    Memory configuration on ASRock x470 ITX:
    
    db0a0000-dc59efff : Reserved
            dc57e000-dc57efff : MSFT0101:00
            dc582000-dc582fff : MSFT0101:00
    
    Work around the issue by storing ACPI regions declared for the
    device in a fixed array and adding an array for pointers to
    corresponding possibly allocated resources in crb_map_io function.
    This data was previously held for a single resource
    in struct crb_priv (iobase field) and local variable io_res in
    crb_map_io function. ACPI resources array is used to find index of
    corresponding region for each buffer and make the buffer size
    consistent with region's length. Array of pointers to allocated
    resources is used to map the region at most once.
    
    Signed-off-by: Ivan Lazeev <ivan.lazeev@gmail.com>
    Tested-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eeda579a6376f87268159b80813dee70d26a41c3
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Nov 8 11:15:17 2019 -0500

    drm/amdgpu/powerplay/smu7: fix AVFS handling with custom powerplay table
    
    [ Upstream commit 901245624c7812b6c95d67177bae850e783b5212 ]
    
    When a custom powerplay table is provided, we need to update
    the OD VDDC flag to avoid AVFS being enabled when it shouldn't be.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=205393
    Reviewed-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66bde9c7f036cf7e6c36ec16f90f354df3e779ab
Author: Lee Jones <lee.jones@linaro.org>
Date:   Mon Oct 21 10:16:34 2019 +0100

    mfd: mfd-core: Protect against NULL call-back function pointer
    
    [ Upstream commit b195e101580db390f50b0d587b7f66f241d2bc88 ]
    
    If a child device calls mfd_cell_{en,dis}able() without an appropriate
    call-back being set, we are likely to encounter a panic.  Avoid this
    by adding suitable checking.
    
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6edb956e3c9d7b6936a236b1647b1a1ea993ea5d
Author: Hou Tao <houtao1@huawei.com>
Date:   Tue Oct 8 10:36:37 2019 +0800

    mtd: cfi_cmdset_0002: don't free cfi->cfiq in error path of cfi_amdstd_setup()
    
    [ Upstream commit 03976af89e3bd9489d542582a325892e6a8cacc0 ]
    
    Else there may be a double-free problem, because cfi->cfiq will
    be freed by mtd_do_chip_probe() if both the two invocations of
    check_cmd_set() return failure.
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45a65fff68ac457c9e8365edca00e1d9e34490a2
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Nov 7 09:50:18 2019 -0500

    drm/amdgpu/powerplay: fix AVFS handling with custom powerplay table
    
    [ Upstream commit 53dbc27ad5a93932ff1892a8e4ef266827d74a0f ]
    
    When a custom powerplay table is provided, we need to update
    the OD VDDC flag to avoid AVFS being enabled when it shouldn't be.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=205393
    Reviewed-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 297717d42418cf9aba7b24e48ca940ef30697469
Author: Stephen Kitt <steve@sk2.org>
Date:   Sat Oct 19 16:06:34 2019 +0200

    clk/ti/adpll: allocate room for terminating null
    
    [ Upstream commit 7f6ac72946b88b89ee44c1c527aa8591ac5ffcbe ]
    
    The buffer allocated in ti_adpll_clk_get_name doesn't account for the
    terminating null. This patch switches to devm_kasprintf to avoid
    overflowing.
    
    Signed-off-by: Stephen Kitt <steve@sk2.org>
    Link: https://lkml.kernel.org/r/20191019140634.15596-1-steve@sk2.org
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08f4fc4c8543a5b94299664eec3b6fafadac3ed0
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Nov 6 10:04:11 2019 -0800

    net: silence data-races on sk_backlog.tail
    
    [ Upstream commit 9ed498c6280a2f2b51d02df96df53037272ede49 ]
    
    sk->sk_backlog.tail might be read without holding the socket spinlock,
    we need to add proper READ_ONCE()/WRITE_ONCE() to silence the warnings.
    
    KCSAN reported :
    
    BUG: KCSAN: data-race in tcp_add_backlog / tcp_recvmsg
    
    write to 0xffff8881265109f8 of 8 bytes by interrupt on cpu 1:
     __sk_add_backlog include/net/sock.h:907 [inline]
     sk_add_backlog include/net/sock.h:938 [inline]
     tcp_add_backlog+0x476/0xce0 net/ipv4/tcp_ipv4.c:1759
     tcp_v4_rcv+0x1a70/0x1bd0 net/ipv4/tcp_ipv4.c:1947
     ip_protocol_deliver_rcu+0x4d/0x420 net/ipv4/ip_input.c:204
     ip_local_deliver_finish+0x110/0x140 net/ipv4/ip_input.c:231
     NF_HOOK include/linux/netfilter.h:305 [inline]
     NF_HOOK include/linux/netfilter.h:299 [inline]
     ip_local_deliver+0x133/0x210 net/ipv4/ip_input.c:252
     dst_input include/net/dst.h:442 [inline]
     ip_rcv_finish+0x121/0x160 net/ipv4/ip_input.c:413
     NF_HOOK include/linux/netfilter.h:305 [inline]
     NF_HOOK include/linux/netfilter.h:299 [inline]
     ip_rcv+0x18f/0x1a0 net/ipv4/ip_input.c:523
     __netif_receive_skb_one_core+0xa7/0xe0 net/core/dev.c:4929
     __netif_receive_skb+0x37/0xf0 net/core/dev.c:5043
     netif_receive_skb_internal+0x59/0x190 net/core/dev.c:5133
     napi_skb_finish net/core/dev.c:5596 [inline]
     napi_gro_receive+0x28f/0x330 net/core/dev.c:5629
     receive_buf+0x284/0x30b0 drivers/net/virtio_net.c:1061
     virtnet_receive drivers/net/virtio_net.c:1323 [inline]
     virtnet_poll+0x436/0x7d0 drivers/net/virtio_net.c:1428
     napi_poll net/core/dev.c:6311 [inline]
     net_rx_action+0x3ae/0xa90 net/core/dev.c:6379
     __do_softirq+0x115/0x33f kernel/softirq.c:292
     invoke_softirq kernel/softirq.c:373 [inline]
     irq_exit+0xbb/0xe0 kernel/softirq.c:413
     exiting_irq arch/x86/include/asm/apic.h:536 [inline]
     do_IRQ+0xa6/0x180 arch/x86/kernel/irq.c:263
     ret_from_intr+0x0/0x19
     native_safe_halt+0xe/0x10 arch/x86/kernel/paravirt.c:71
     arch_cpu_idle+0x1f/0x30 arch/x86/kernel/process.c:571
     default_idle_call+0x1e/0x40 kernel/sched/idle.c:94
     cpuidle_idle_call kernel/sched/idle.c:154 [inline]
     do_idle+0x1af/0x280 kernel/sched/idle.c:263
     cpu_startup_entry+0x1b/0x20 kernel/sched/idle.c:355
     start_secondary+0x208/0x260 arch/x86/kernel/smpboot.c:264
     secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:241
    
    read to 0xffff8881265109f8 of 8 bytes by task 8057 on cpu 0:
     tcp_recvmsg+0x46e/0x1b40 net/ipv4/tcp.c:2050
     inet_recvmsg+0xbb/0x250 net/ipv4/af_inet.c:838
     sock_recvmsg_nosec net/socket.c:871 [inline]
     sock_recvmsg net/socket.c:889 [inline]
     sock_recvmsg+0x92/0xb0 net/socket.c:885
     sock_read_iter+0x15f/0x1e0 net/socket.c:967
     call_read_iter include/linux/fs.h:1889 [inline]
     new_sync_read+0x389/0x4f0 fs/read_write.c:414
     __vfs_read+0xb1/0xc0 fs/read_write.c:427
     vfs_read fs/read_write.c:461 [inline]
     vfs_read+0x143/0x2c0 fs/read_write.c:446
     ksys_read+0xd5/0x1b0 fs/read_write.c:587
     __do_sys_read fs/read_write.c:597 [inline]
     __se_sys_read fs/read_write.c:595 [inline]
     __x64_sys_read+0x4c/0x60 fs/read_write.c:595
     do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 8057 Comm: syz-fuzzer Not tainted 5.4.0-rc6+ #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91e31be9baa6c526eef764786fab2485f9765c82
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Nov 4 16:57:00 2019 -0800

    scsi: lpfc: Fix kernel crash at lpfc_nvme_info_show during remote port bounce
    
    [ Upstream commit 6c1e803eac846f886cd35131e6516fc51a8414b9 ]
    
    When reading sysfs nvme_info file while a remote port leaves and comes
    back, a NULL pointer is encountered. The issue is due to ndlp list
    corruption as the the nvme_info_show does not use the same lock as the rest
    of the code.
    
    Correct by removing the rcu_xxx_lock calls and replace by the host_lock and
    phba->hbaLock spinlocks that are used by the rest of the driver.  Given
    we're called from sysfs, we are safe to use _irq rather than _irqsave.
    
    Link: https://lore.kernel.org/r/20191105005708.7399-4-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6971ba9e444c569ee93ef30d98afc06d4e8b7d4b
Author: Pan Bian <bianpan2016@163.com>
Date:   Mon Nov 4 23:26:22 2019 +0800

    scsi: fnic: fix use after free
    
    [ Upstream commit ec990306f77fd4c58c3b27cc3b3c53032d6e6670 ]
    
    The memory chunk io_req is released by mempool_free. Accessing
    io_req->start_time will result in a use after free bug. The variable
    start_time is a backup of the timestamp. So, use start_time here to
    avoid use after free.
    
    Link: https://lore.kernel.org/r/1572881182-37664-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Satish Kharat <satishkh@cisco.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea678da9965512669a6f54524ee4f6a42d62ab40
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Tue Nov 5 00:56:03 2019 +0300

    PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
    
    [ Upstream commit 53b4b2aeee26f42cde5ff2a16dd0d8590c51a55a ]
    
    There is another kHz-conversion bug in the code, resulting in integer
    overflow. Although, this time the resulting value is 4294966296 and it's
    close to ULONG_MAX, which is okay in this case.
    
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Tested-by: Peter Geis <pgwipeout@gmail.com>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 07dde782177400db461d4f90b759504e4e234605
Author: Oleh Kravchenko <oleg@kaa.org.ua>
Date:   Wed Oct 16 10:24:30 2019 +0300

    leds: mlxreg: Fix possible buffer overflow
    
    [ Upstream commit 7c6082b903ac28dc3f383fba57c6f9e7e2594178 ]
    
    Error was detected by PVS-Studio:
    V512 A call of the 'sprintf' function will lead to overflow of
    the buffer 'led_data->led_cdev_name'.
    
    Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Acked-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Oleh Kravchenko <oleg@kaa.org.ua>
    Signed-off-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c29fd831799d09474dfdae556207b7102647a45
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Fri Sep 25 21:19:18 2020 -0700

    lib/string.c: implement stpcpy
    
    commit 1e1b6d63d6340764e00356873e5794225a2a03ea upstream.
    
    LLVM implemented a recent "libcall optimization" that lowers calls to
    `sprintf(dest, "%s", str)` where the return value is used to
    `stpcpy(dest, str) - dest`.
    
    This generally avoids the machinery involved in parsing format strings.
    `stpcpy` is just like `strcpy` except it returns the pointer to the new
    tail of `dest`.  This optimization was introduced into clang-12.
    
    Implement this so that we don't observe linkage failures due to missing
    symbol definitions for `stpcpy`.
    
    Similar to last year's fire drill with: commit 5f074f3e192f
    ("lib/string.c: implement a basic bcmp")
    
    The kernel is somewhere between a "freestanding" environment (no full
    libc) and "hosted" environment (many symbols from libc exist with the
    same type, function signature, and semantics).
    
    As Peter Anvin notes, there's not really a great way to inform the
    compiler that you're targeting a freestanding environment but would like
    to opt-in to some libcall optimizations (see pr/47280 below), rather
    than opt-out.
    
    Arvind notes, -fno-builtin-* behaves slightly differently between GCC
    and Clang, and Clang is missing many __builtin_* definitions, which I
    consider a bug in Clang and am working on fixing.
    
    Masahiro summarizes the subtle distinction between compilers justly:
      To prevent transformation from foo() into bar(), there are two ways in
      Clang to do that; -fno-builtin-foo, and -fno-builtin-bar.  There is
      only one in GCC; -fno-buitin-foo.
    
    (Any difference in that behavior in Clang is likely a bug from a missing
    __builtin_* definition.)
    
    Masahiro also notes:
      We want to disable optimization from foo() to bar(),
      but we may still benefit from the optimization from
      foo() into something else. If GCC implements the same transform, we
      would run into a problem because it is not -fno-builtin-bar, but
      -fno-builtin-foo that disables that optimization.
    
      In this regard, -fno-builtin-foo would be more future-proof than
      -fno-built-bar, but -fno-builtin-foo is still potentially overkill. We
      may want to prevent calls from foo() being optimized into calls to
      bar(), but we still may want other optimization on calls to foo().
    
    It seems that compilers today don't quite provide the fine grain control
    over which libcall optimizations pseudo-freestanding environments would
    prefer.
    
    Finally, Kees notes that this interface is unsafe, so we should not
    encourage its use.  As such, I've removed the declaration from any
    header, but it still needs to be exported to avoid linkage errors in
    modules.
    
    Reported-by: Sami Tolvanen <samitolvanen@google.com>
    Suggested-by: Andy Lavr <andy.lavr@gmail.com>
    Suggested-by: Arvind Sankar <nivedita@alum.mit.edu>
    Suggested-by: Joe Perches <joe@perches.com>
    Suggested-by: Kees Cook <keescook@chromium.org>
    Suggested-by: Masahiro Yamada <masahiroy@kernel.org>
    Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200914161643.938408-1-ndesaulniers@google.com
    Link: https://bugs.llvm.org/show_bug.cgi?id=47162
    Link: https://bugs.llvm.org/show_bug.cgi?id=47280
    Link: https://github.com/ClangBuiltLinux/linux/issues/1126
    Link: https://man7.org/linux/man-pages/man3/stpcpy.3.html
    Link: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stpcpy.html
    Link: https://reviews.llvm.org/D85963
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab61c58cdb29aecb7827fc83a8e83e48d58e130b
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Mon Sep 14 15:02:29 2020 +0800

    ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation P520
    
    commit f73bbf639b32acb6b409e188fdde5644b301978f upstream.
    
    On Lenovo P520, the front panel headset LED isn't lit up right now.
    
    Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
    let's do it accordingly to light the LED up.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Acked-by: Hui Wang <hui.wang@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200914070231.13192-1-kai.heng.feng@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 761025297a7984a96e8d0a15506ac1d8ee90277b
Author: Hui Wang <hui.wang@canonical.com>
Date:   Mon Sep 14 14:51:18 2020 +0800

    ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged
    
    commit 3f74249057827c5f6676c41c18f6be12ce1469ce upstream.
    
    We found a Mic detection issue on many Lenovo laptops, those laptops
    belong to differnt models and they have different audio design like
    internal mic connects to the codec or PCH, they all have this problem,
    the problem is if plugging a headset before powerup/reboot the
    machine, after booting up, the headphone could be detected but Mic
    couldn't. If we plug out and plug in the headset, both headphone and
    Mic could be detected then.
    
    Through debugging we found the codec on those laptops are same, it is
    alc257, and if we don't disable the 3k pulldown in alc256_shutup(),
    the issue will be fixed. So far there is no pop noise or power
    consumption regression on those laptops after this change.
    
    Cc: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20200914065118.19238-1-hui.wang@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 201c2c320802b16e7ba3a58adf0a4cbf6e380c37
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Thu Sep 10 10:53:28 2020 +0200

    ALSA: usb-audio: Add delay quirk for H570e USB headsets
    
    commit 315c7ad7a701baba28c628c4c5426b3d9617ceed upstream.
    
    Needs the same delay as H650e
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200910085328.19188-1-joakim.tjernlund@infinera.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fddc16ff603e1cd311f5ae15131daf1fff506bc
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Sep 23 17:46:20 2020 +0200

    x86/ioapic: Unbreak check_timer()
    
    commit 86a82ae0b5095ea24c55898a3f025791e7958b21 upstream.
    
    Several people reported in the kernel bugzilla that between v4.12 and v4.13
    the magic which works around broken hardware and BIOSes to find the proper
    timer interrupt delivery mode stopped working for some older affected
    platforms which need to fall back to ExtINT delivery mode.
    
    The reason is that the core code changed to keep track of the masked and
    disabled state of an interrupt line more accurately to avoid the expensive
    hardware operations.
    
    That broke an assumption in i8259_make_irq() which invokes
    
         disable_irq_nosync();
         irq_set_chip_and_handler();
         enable_irq();
    
    Up to v4.12 this worked because enable_irq() unconditionally unmasked the
    interrupt line, but after the state tracking improvements this is not
    longer the case because the IO/APIC uses lazy disabling. So the line state
    is unmasked which means that enable_irq() does not call into the new irq
    chip to unmask it.
    
    In principle this is a shortcoming of the core code, but it's more than
    unclear whether the core code should try to reset state. At least this
    cannot be done unconditionally as that would break other existing use cases
    where the chip type is changed, e.g. when changing the trigger type, but
    the callers expect the state to be preserved.
    
    As the way how check_timer() is switching the delivery modes is truly
    unique, the obvious fix is to simply unmask the i8259 manually after
    changing the mode to ExtINT delivery and switching the irq chip to the
    legacy PIC.
    
    Note, that the fixes tag is not really precise, but identifies the commit
    which broke the assumptions in the IO/APIC and i8259 code and that's the
    kernel version to which this needs to be backported.
    
    Fixes: bf22ff45bed6 ("genirq: Avoid unnecessary low level irq function calls")
    Reported-by: p_c_chan@hotmail.com
    Reported-by: ecm4@mail.com
    Reported-by: perdigao1@yahoo.com
    Reported-by: matzes@users.sourceforge.net
    Reported-by: rvelascog@gmail.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: p_c_chan@hotmail.com
    Tested-by: matzes@users.sourceforge.net
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197769
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a88cda149cd19e97e01f76d3d4fec149ba989cf9
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Sep 25 21:19:24 2020 -0700

    arch/x86/lib/usercopy_64.c: fix __copy_user_flushcache() cache writeback
    
    commit a1cd6c2ae47ee10ff21e62475685d5b399e2ed4a upstream.
    
    If we copy less than 8 bytes and if the destination crosses a cache
    line, __copy_user_flushcache would invalidate only the first cache line.
    
    This patch makes it invalidate the second cache line as well.
    
    Fixes: 0aed55af88345b ("x86, uaccess: introduce copy_from_iter_flushcache for pmem / cache-bypass operations")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Dan Williams <dan.j.wiilliams@intel.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Toshi Kani <toshi.kani@hpe.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/alpine.LRH.2.02.2009161451140.21915@file01.intranet.prod.int.rdu2.redhat.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5a35a815c8aba3f7e3c92757f299e2ea85503da
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Mon Sep 23 11:25:42 2019 -0300

    media: smiapp: Fix error handling at NVM reading
    
    [ Upstream commit a5b1d5413534607b05fb34470ff62bf395f5c8d0 ]
    
    If NVM reading failed, the device was left powered on. Fix that.
    
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7f775c06ee25163a189413b2e5d8a9b3fe2883aa
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Wed Oct 23 16:46:59 2019 +0100

    ASoC: kirkwood: fix IRQ error handling
    
    [ Upstream commit 175fc928198236037174e5c5c066fe3c4691903e ]
    
    Propagate the error code from request_irq(), rather than returning
    -EBUSY.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/E1iNIqh-0000tW-EZ@rmk-PC.armlinux.org.uk
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef488886e34a65aac17385835572eb5d69c45682
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Thu Oct 17 23:29:53 2019 -0500

    gma/gma500: fix a memory disclosure bug due to uninitialized bytes
    
    [ Upstream commit 57a25a5f754ce27da2cfa6f413cfd366f878db76 ]
    
    `best_clock` is an object that may be sent out. Object `clock`
    contains uninitialized bytes that are copied to `best_clock`,
    which leads to memory disclosure and information leak.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191018042953.31099-1-kjlu@umn.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 448221087d7793c2959bb10916e0ce78fe045a50
Author: Fuqian Huang <huangfq.daxian@gmail.com>
Date:   Fri Sep 27 20:15:44 2019 +0800

    m68k: q40: Fix info-leak in rtc_ioctl
    
    [ Upstream commit 7cf78b6b12fd5550545e4b73b35dca18bd46b44c ]
    
    When the option is RTC_PLL_GET, pll will be copied to userland
    via copy_to_user. pll is initialized using mach_get_rtc_pll indirect
    call and mach_get_rtc_pll is only assigned with function
    q40_get_rtc_pll in arch/m68k/q40/config.c.
    In function q40_get_rtc_pll, the field pll_ctrl is not initialized.
    This will leak uninitialized stack content to userland.
    Fix this by zeroing the uninitialized field.
    
    Signed-off-by: Fuqian Huang <huangfq.daxian@gmail.com>
    Link: https://lore.kernel.org/r/20190927121544.7650-1-huangfq.daxian@gmail.com
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cbdeff7874420a9da774bc9d5bb84cf532b2df2
Author: Balsundar P <balsundar.p@microsemi.com>
Date:   Tue Oct 15 11:51:58 2019 +0530

    scsi: aacraid: fix illegal IO beyond last LBA
    
    [ Upstream commit c86fbe484c10b2cd1e770770db2d6b2c88801c1d ]
    
    The driver fails to handle data when read or written beyond device reported
    LBA, which triggers kernel panic
    
    Link: https://lore.kernel.org/r/1571120524-6037-2-git-send-email-balsundar.p@microsemi.com
    Signed-off-by: Balsundar P <balsundar.p@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8579a0440381353e0a71dd6a4d4371be8457eac4
Author: Jia He <justin.he@arm.com>
Date:   Fri Oct 11 22:09:39 2019 +0800

    mm: fix double page fault on arm64 if PTE_AF is cleared
    
    [ Upstream commit 83d116c53058d505ddef051e90ab27f57015b025 ]
    
    When we tested pmdk unit test [1] vmmalloc_fork TEST3 on arm64 guest, there
    will be a double page fault in __copy_from_user_inatomic of cow_user_page.
    
    To reproduce the bug, the cmd is as follows after you deployed everything:
    make -C src/test/vmmalloc_fork/ TEST_TIME=60m check
    
    Below call trace is from arm64 do_page_fault for debugging purpose:
    [  110.016195] Call trace:
    [  110.016826]  do_page_fault+0x5a4/0x690
    [  110.017812]  do_mem_abort+0x50/0xb0
    [  110.018726]  el1_da+0x20/0xc4
    [  110.019492]  __arch_copy_from_user+0x180/0x280
    [  110.020646]  do_wp_page+0xb0/0x860
    [  110.021517]  __handle_mm_fault+0x994/0x1338
    [  110.022606]  handle_mm_fault+0xe8/0x180
    [  110.023584]  do_page_fault+0x240/0x690
    [  110.024535]  do_mem_abort+0x50/0xb0
    [  110.025423]  el0_da+0x20/0x24
    
    The pte info before __copy_from_user_inatomic is (PTE_AF is cleared):
    [ffff9b007000] pgd=000000023d4f8003, pud=000000023da9b003,
                   pmd=000000023d4b3003, pte=360000298607bd3
    
    As told by Catalin: "On arm64 without hardware Access Flag, copying from
    user will fail because the pte is old and cannot be marked young. So we
    always end up with zeroed page after fork() + CoW for pfn mappings. we
    don't always have a hardware-managed access flag on arm64."
    
    This patch fixes it by calling pte_mkyoung. Also, the parameter is
    changed because vmf should be passed to cow_user_page()
    
    Add a WARN_ON_ONCE when __copy_from_user_inatomic() returns error
    in case there can be some obscure use-case (by Kirill).
    
    [1] https://github.com/pmem/pmdk/tree/master/src/test/vmmalloc_fork
    
    Signed-off-by: Jia He <justin.he@arm.com>
    Reported-by: Yibo Cai <Yibo.Cai@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c22a24ad5f16a88695f6403d98ae265cf0013424
Author: Miaoqing Pan <miaoqing@codeaurora.org>
Date:   Wed Oct 9 16:18:09 2019 +0800

    ath10k: fix memory leak for tpc_stats_final
    
    [ Upstream commit 486a8849843455298d49e694cca9968336ce2327 ]
    
    The memory of ar->debug.tpc_stats_final is reallocated every debugfs
    reading, it should be freed in ath10k_debug_destroy() for the last
    allocation.
    
    Tested HW: QCA9984
    Tested FW: 10.4-3.9.0.2-00035
    
    Signed-off-by: Miaoqing Pan <miaoqing@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ffca49e2925c709372727022273c66a49865009d
Author: Miaoqing Pan <miaoqing@codeaurora.org>
Date:   Wed Oct 9 16:18:08 2019 +0800

    ath10k: fix array out-of-bounds access
    
    [ Upstream commit c5329b2d5b8b4e41be14d31ee8505b4f5607bf9b ]
    
    If firmware reports rate_max > WMI_TPC_RATE_MAX(WMI_TPC_FINAL_RATE_MAX)
    or num_tx_chain > WMI_TPC_TX_N_CHAIN, it will cause array out-of-bounds
    access, so print a warning and reset to avoid memory corruption.
    
    Tested HW: QCA9984
    Tested FW: 10.4-3.9.0.2-00035
    
    Signed-off-by: Miaoqing Pan <miaoqing@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e634b7b1953df74784cf7e5f732620f45abfb76
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Oct 4 11:11:40 2019 +0100

    dma-fence: Serialise signal enabling (dma_fence_enable_sw_signaling)
    
    [ Upstream commit 9c98f021e4e717ffd9948fa65340ea3ef12b7935 ]
    
    Make dma_fence_enable_sw_signaling() behave like its
    dma_fence_add_callback() and dma_fence_default_wait() counterparts and
    perform the test to enable signaling under the fence->lock, along with
    the action to do so. This ensure that should an implementation be trying
    to flush the cb_list (by signaling) on retirement before freeing the
    fence, it can do so in a race-free manner.
    
    See also 0fc89b6802ba ("dma-fence: Simply wrap dma_fence_signal_locked
    with dma_fence_signal").
    
    v2: Refactor all 3 enable_signaling paths to use a common function.
    v3: Don't argue, just keep the tracepoint in the existing spot.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191004101140.32713-1-chris@chris-wilson.co.uk
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e4afbb188576cbf755f2156f8712cc8553b5330
Author: zhengbin <zhengbin13@huawei.com>
Date:   Sun Aug 18 22:51:30 2019 -0300

    media: mc-device.c: fix memleak in media_device_register_entity
    
    [ Upstream commit 713f871b30a66dc4daff4d17b760c9916aaaf2e1 ]
    
    In media_device_register_entity, if media_graph_walk_init fails,
    need to free the previously memory.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: zhengbin <zhengbin13@huawei.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1904f6dfcbbd78e6f4858945c441838367469902
Author: Jonathan Lebon <jlebon@redhat.com>
Date:   Thu Sep 12 09:30:07 2019 -0400

    selinux: allow labeling before policy is loaded
    
    [ Upstream commit 3e3e24b42043eceb97ed834102c2d094dfd7aaa6 ]
    
    Currently, the SELinux LSM prevents one from setting the
    `security.selinux` xattr on an inode without a policy first being
    loaded. However, this restriction is problematic: it makes it impossible
    to have newly created files with the correct label before actually
    loading the policy.
    
    This is relevant in distributions like Fedora, where the policy is
    loaded by systemd shortly after pivoting out of the initrd. In such
    instances, all files created prior to pivoting will be unlabeled. One
    then has to relabel them after pivoting, an operation which inherently
    races with other processes trying to access those same files.
    
    Going further, there are use cases for creating the entire root
    filesystem on first boot from the initrd (e.g. Container Linux supports
    this today[1], and we'd like to support it in Fedora CoreOS as well[2]).
    One can imagine doing this in two ways: at the block device level (e.g.
    laying down a disk image), or at the filesystem level. In the former,
    labeling can simply be part of the image. But even in the latter
    scenario, one still really wants to be able to set the right labels when
    populating the new filesystem.
    
    This patch enables this by changing behaviour in the following two ways:
    1. allow `setxattr` if we're not initialized
    2. don't try to set the in-core inode SID if we're not initialized;
       instead leave it as `LABEL_INVALID` so that revalidation may be
       attempted at a later time
    
    Note the first hunk of this patch is mostly the same as a previously
    discussed one[3], though it was part of a larger series which wasn't
    accepted.
    
    [1] https://coreos.com/os/docs/latest/root-filesystem-placement.html
    [2] https://github.com/coreos/fedora-coreos-tracker/issues/94
    [3] https://www.spinics.net/lists/linux-initramfs/msg04593.html
    
    Co-developed-by: Victor Kamensky <kamensky@cisco.com>
    Signed-off-by: Victor Kamensky <kamensky@cisco.com>
    Signed-off-by: Jonathan Lebon <jlebon@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>