commit 8961076ed318dfd22aa357b41589f07bf67e73b6
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Nov 18 18:28:03 2020 +0100

    Linux 4.14.207
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20201117122111.018425544@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5a6c8b389e1cd02a8928acca003052bd3d5641b
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Mon Sep 14 14:52:16 2020 +1000

    mm: fix exec activate_mm vs TLB shootdown and lazy tlb switching race
    
    commit d53c3dfb23c45f7d4f910c3a3ca84bf0a99c6143 upstream.
    
    Reading and modifying current->mm and current->active_mm and switching
    mm should be done with irqs off, to prevent races seeing an intermediate
    state.
    
    This is similar to commit 38cf307c1f20 ("mm: fix kthread_use_mm() vs TLB
    invalidate"). At exec-time when the new mm is activated, the old one
    should usually be single-threaded and no longer used, unless something
    else is holding an mm_users reference (which may be possible).
    
    Absent other mm_users, there is also a race with preemption and lazy tlb
    switching. Consider the kernel_execve case where the current thread is
    using a lazy tlb active mm:
    
      call_usermodehelper()
        kernel_execve()
          old_mm = current->mm;
          active_mm = current->active_mm;
          *** preempt *** -------------------->  schedule()
                                                   prev->active_mm = NULL;
                                                   mmdrop(prev active_mm);
                                                 ...
                          <--------------------  schedule()
          current->mm = mm;
          current->active_mm = mm;
          if (!old_mm)
              mmdrop(active_mm);
    
    If we switch back to the kernel thread from a different mm, there is a
    double free of the old active_mm, and a missing free of the new one.
    
    Closing this race only requires interrupts to be disabled while ->mm
    and ->active_mm are being switched, but the TLB problem requires also
    holding interrupts off over activate_mm. Unfortunately not all archs
    can do that yet, e.g., arm defers the switch if irqs are disabled and
    expects finish_arch_post_lock_switch() to be called to complete the
    flush; um takes a blocking lock in activate_mm().
    
    So as a first step, disable interrupts across the mm/active_mm updates
    to close the lazy tlb preempt race, and provide an arch option to
    extend that to activate_mm which allows architectures doing IPI based
    TLB shootdowns to close the second race.
    
    This is a bit ugly, but in the interest of fixing the bug and backporting
    before all architectures are converted this is a compromise.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    [mpe: Manual backport to 4.19 due to membarrier_exec_mmap(mm) changes]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200914045219.3736466-2-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0947e875e567b26d161de31cf91fd11e82dafa46
Author: Boris Protopopov <pboris@amazon.com>
Date:   Thu Sep 24 00:36:38 2020 +0000

    Convert trailing spaces and periods in path components
    
    commit 57c176074057531b249cf522d90c22313fa74b0b upstream.
    
    When converting trailing spaces and periods in paths, do so
    for every component of the path, not just the last component.
    If the conversion is not done for every path component, then
    subsequent operations in directories with trailing spaces or
    periods (e.g. create(), mkdir()) will fail with ENOENT. This
    is because on the server, the directory will have a special
    symbol in its name, and the client needs to provide the same.
    
    Signed-off-by: Boris Protopopov <pboris@amazon.com>
    Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77a8c23403494a657635e932a3479f641468932c
Author: Matteo Croce <mcroce@microsoft.com>
Date:   Fri Nov 13 22:52:07 2020 -0800

    reboot: fix overflow parsing reboot cpu number
    
    commit df5b0ab3e08a156701b537809914b339b0daa526 upstream.
    
    Limit the CPU number to num_possible_cpus(), because setting it to a
    value lower than INT_MAX but higher than NR_CPUS produces the following
    error on reboot and shutdown:
    
        BUG: unable to handle page fault for address: ffffffff90ab1bb0
        #PF: supervisor read access in kernel mode
        #PF: error_code(0x0000) - not-present page
        PGD 1c09067 P4D 1c09067 PUD 1c0a063 PMD 0
        Oops: 0000 [#1] SMP
        CPU: 1 PID: 1 Comm: systemd-shutdow Not tainted 5.9.0-rc8-kvm #110
        Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
        RIP: 0010:migrate_to_reboot_cpu+0xe/0x60
        Code: ea ea 00 48 89 fa 48 c7 c7 30 57 f1 81 e9 fa ef ff ff 66 2e 0f 1f 84 00 00 00 00 00 53 8b 1d d5 ea ea 00 e8 14 33 fe ff 89 da <48> 0f a3 15 ea fc bd 00 48 89 d0 73 29 89 c2 c1 e8 06 65 48 8b 3c
        RSP: 0018:ffffc90000013e08 EFLAGS: 00010246
        RAX: ffff88801f0a0000 RBX: 0000000077359400 RCX: 0000000000000000
        RDX: 0000000077359400 RSI: 0000000000000002 RDI: ffffffff81c199e0
        RBP: ffffffff81c1e3c0 R08: ffff88801f41f000 R09: ffffffff81c1e348
        R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
        R13: 00007f32bedf8830 R14: 00000000fee1dead R15: 0000000000000000
        FS:  00007f32bedf8980(0000) GS:ffff88801f480000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: ffffffff90ab1bb0 CR3: 000000001d057000 CR4: 00000000000006a0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
          __do_sys_reboot.cold+0x34/0x5b
          do_syscall_64+0x2d/0x40
    
    Fixes: 1b3a5d02ee07 ("reboot: move arch/x86 reboot= handling to generic kernel")
    Signed-off-by: Matteo Croce <mcroce@microsoft.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Fabian Frederick <fabf@skynet.be>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Robin Holt <robinmholt@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201103214025.116799-3-mcroce@linux.microsoft.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [sudip: use reboot_mode instead of mode]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbdcc81e0223dc451d1fa9f088ee6c66eef6069f
Author: Matteo Croce <mcroce@microsoft.com>
Date:   Fri Nov 13 22:52:02 2020 -0800

    Revert "kernel/reboot.c: convert simple_strtoul to kstrtoint"
    
    commit 8b92c4ff4423aa9900cf838d3294fcade4dbda35 upstream.
    
    Patch series "fix parsing of reboot= cmdline", v3.
    
    The parsing of the reboot= cmdline has two major errors:
    
     - a missing bound check can crash the system on reboot
    
     - parsing of the cpu number only works if specified last
    
    Fix both.
    
    This patch (of 2):
    
    This reverts commit 616feab753972b97.
    
    kstrtoint() and simple_strtoul() have a subtle difference which makes
    them non interchangeable: if a non digit character is found amid the
    parsing, the former will return an error, while the latter will just
    stop parsing, e.g.  simple_strtoul("123xyx") = 123.
    
    The kernel cmdline reboot= argument allows to specify the CPU used for
    rebooting, with the syntax `s####` among the other flags, e.g.
    "reboot=warm,s31,force", so if this flag is not the last given, it's
    silently ignored as well as the subsequent ones.
    
    Fixes: 616feab75397 ("kernel/reboot.c: convert simple_strtoul to kstrtoint")
    Signed-off-by: Matteo Croce <mcroce@microsoft.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Robin Holt <robinmholt@gmail.com>
    Cc: Fabian Frederick <fabf@skynet.be>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201103214025.116799-2-mcroce@linux.microsoft.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [sudip: use reboot_mode instead of mode]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30c8324e9e7ee57b58af2501cb7db5d9d4f7b69b
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Wed Sep 16 13:53:11 2020 +0200

    perf/core: Fix race in the perf_mmap_close() function
    
    commit f91072ed1b7283b13ca57fcfbece5a3b92726143 upstream.
    
    There's a possible race in perf_mmap_close() when checking ring buffer's
    mmap_count refcount value. The problem is that the mmap_count check is
    not atomic because we call atomic_dec() and atomic_read() separately.
    
      perf_mmap_close:
      ...
       atomic_dec(&rb->mmap_count);
       ...
       if (atomic_read(&rb->mmap_count))
          goto out_put;
    
       <ring buffer detach>
       free_uid
    
    out_put:
      ring_buffer_put(rb); /* could be last */
    
    The race can happen when we have two (or more) events sharing same ring
    buffer and they go through atomic_dec() and then they both see 0 as refcount
    value later in atomic_read(). Then both will go on and execute code which
    is meant to be run just once.
    
    The code that detaches ring buffer is probably fine to be executed more
    than once, but the problem is in calling free_uid(), which will later on
    demonstrate in related crashes and refcount warnings, like:
    
      refcount_t: addition on 0; use-after-free.
      ...
      RIP: 0010:refcount_warn_saturate+0x6d/0xf
      ...
      Call Trace:
      prepare_creds+0x190/0x1e0
      copy_creds+0x35/0x172
      copy_process+0x471/0x1a80
      _do_fork+0x83/0x3a0
      __do_sys_wait4+0x83/0x90
      __do_sys_clone+0x85/0xa0
      do_syscall_64+0x5b/0x1e0
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Using atomic decrease and check instead of separated calls.
    
    Tested-by: Michael Petlan <mpetlan@redhat.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: Wade Mealing <wmealing@redhat.com>
    Fixes: 9bb5d40cd93c ("perf: Fix mmap() accounting hole");
    Link: https://lore.kernel.org/r/20200916115311.GE2301783@krava
    [sudip: used ring_buffer]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d125d6f3c5b9fd0d9097d8e45767afc5a3a14838
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:11 2020 +0100

    xen/events: block rogue events for some time
    
    commit 5f7f77400ab5b357b5fdb7122c3442239672186c upstream.
    
    In order to avoid high dom0 load due to rogue guests sending events at
    high frequency, block those events in case there was no action needed
    in dom0 to handle the events.
    
    This is done by adding a per-event counter, which set to zero in case
    an EOI without the XEN_EOI_FLAG_SPURIOUS is received from a backend
    driver, and incremented when this flag has been set. In case the
    counter is 2 or higher delay the EOI by 1 << (cnt - 2) jiffies, but
    not more than 1 second.
    
    In order not to waste memory shorten the per-event refcnt to two bytes
    (it should normally never exceed a value of 2). Add an overflow check
    to evtchn_get() to make sure the 2 bytes really won't overflow.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bca9cfde93cf6be2b5e34b87b348e0445dc9727
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:10 2020 +0100

    xen/events: defer eoi in case of excessive number of events
    
    commit e99502f76271d6bc4e374fe368c50c67a1fd3070 upstream.
    
    In case rogue guests are sending events at high frequency it might
    happen that xen_evtchn_do_upcall() won't stop processing events in
    dom0. As this is done in irq handling a crash might be the result.
    
    In order to avoid that, delay further inter-domain events after some
    time in xen_evtchn_do_upcall() by forcing eoi processing into a
    worker on the same cpu, thus inhibiting new events coming in.
    
    The time after which eoi processing is to be delayed is configurable
    via a new module parameter "event_loop_timeout" which specifies the
    maximum event loop time in jiffies (default: 2, the value was chosen
    after some tests showing that a value of 2 was the lowest with an
    only slight drop of dom0 network throughput while multiple guests
    performed an event storm).
    
    How long eoi processing will be delayed can be specified via another
    parameter "event_eoi_delay" (again in jiffies, default 10, again the
    value was chosen after testing with different delay values).
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8947cebce49599fe00bf588954b42742d62c2b2
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:09 2020 +0100

    xen/events: use a common cpu hotplug hook for event channels
    
    commit 7beb290caa2adb0a399e735a1e175db9aae0523a upstream.
    
    Today only fifo event channels have a cpu hotplug callback. In order
    to prepare for more percpu (de)init work move that callback into
    events_base.c and add percpu_init() and percpu_deinit() hooks to
    struct evtchn_ops.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bf6c6f0e5a8a21f853148b189e41ca8ee545a14
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:08 2020 +0100

    xen/events: switch user event channels to lateeoi model
    
    commit c44b849cee8c3ac587da3b0980e01f77500d158c upstream.
    
    Instead of disabling the irq when an event is received and enabling
    it again when handled by the user process use the lateeoi model.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Tested-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc7884f1f0024ea2a8ce16e0dc12f77e321037f1
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:07 2020 +0100

    xen/pciback: use lateeoi irq binding
    
    commit c2711441bc961b37bba0615dd7135857d189035f upstream.
    
    In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving pcifront use the lateeoi irq
    binding for pciback and unmask the event channel only just before
    leaving the event handling function.
    
    Restructure the handling to support that scheme. Basically an event can
    come in for two reasons: either a normal request for a pciback action,
    which is handled in a worker, or in case the guest has finished an AER
    request which was requested by pciback.
    
    When an AER request is issued to the guest and a normal pciback action
    is currently active issue an EOI early in order to be able to receive
    another event when the AER request has been finished by the guest.
    
    Let the worker processing the normal requests run until no further
    request is pending, instead of starting a new worker ion that case.
    Issue the EOI only just before leaving the worker.
    
    This scheme allows to drop calling the generic function
    xen_pcibk_test_and_schedule_op() after processing of any request as
    the handling of both request types is now separated more cleanly.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52e1da512fdd278773f566c1320cbbe12d212f21
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:06 2020 +0100

    xen/pvcallsback: use lateeoi irq binding
    
    commit c8d647a326f06a39a8e5f0f1af946eacfa1835f8 upstream.
    
    In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving pvcallsfront use the lateeoi
    irq binding for pvcallsback and unmask the event channel only after
    handling all write requests, which are the ones coming in via an irq.
    
    This requires modifying the logic a little bit to not require an event
    for each write request, but to keep the ioworker running until no
    further data is found on the ring page to be processed.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81432d5da7ec727f07bec1ed06bbcfce1f01e03c
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:05 2020 +0100

    xen/scsiback: use lateeoi irq binding
    
    commit 86991b6e7ea6c613b7692f65106076943449b6b7 upstream.
    
    In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving scsifront use the lateeoi
    irq binding for scsiback and unmask the event channel only just before
    leaving the event handling function.
    
    In case of a ring protocol error don't issue an EOI in order to avoid
    the possibility to use that for producing an event storm. This at once
    will result in no further call of scsiback_irq_fn(), so the ring_error
    struct member can be dropped and scsiback_do_cmd_fn() can signal the
    protocol error via a negative return value.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cad6b264e35cc31de99c58ed11e42ba6e06d80f
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:04 2020 +0100

    xen/netback: use lateeoi irq binding
    
    commit 23025393dbeb3b8b3b60ebfa724cdae384992e27 upstream.
    
    In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving netfront use the lateeoi
    irq binding for netback and unmask the event channel only just before
    going to sleep waiting for new events.
    
    Make sure not to issue an EOI when none is pending by introducing an
    eoi_pending element to struct xenvif_queue.
    
    When no request has been consumed set the spurious flag when sending
    the EOI for an interrupt.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cd83056c4bafcfb169bed5782f8d9e761a4873e
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:03 2020 +0100

    xen/blkback: use lateeoi irq binding
    
    commit 01263a1fabe30b4d542f34c7e2364a22587ddaf2 upstream.
    
    In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving blkfront use the lateeoi
    irq binding for blkback and unmask the event channel only after
    processing all pending requests.
    
    As the thread processing requests is used to do purging work in regular
    intervals an EOI may be sent only after having received an event. If
    there was no pending I/O request flag the EOI as spurious.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b454e8e950fc9acfa9dfb435660b38b42a113cf8
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:02 2020 +0100

    xen/events: add a new "late EOI" evtchn framework
    
    commit 54c9de89895e0a36047fcc4ae754ea5b8655fb9d upstream.
    
    In order to avoid tight event channel related IRQ loops add a new
    framework of "late EOI" handling: the IRQ the event channel is bound
    to will be masked until the event has been handled and the related
    driver is capable to handle another event. The driver is responsible
    for unmasking the event channel via the new function xen_irq_lateeoi().
    
    This is similar to binding an event channel to a threaded IRQ, but
    without having to structure the driver accordingly.
    
    In order to support a future special handling in case a rogue guest
    is sending lots of unsolicited events, add a flag to xen_irq_lateeoi()
    which can be set by the caller to indicate the event was a spurious
    one.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bb3ef08f7042bbc8b5c65db43f48618ef5f6eb2
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:01 2020 +0100

    xen/events: fix race in evtchn_fifo_unmask()
    
    commit f01337197419b7e8a492e83089552b77d3b5fb90 upstream.
    
    Unmasking a fifo event channel can result in unmasking it twice, once
    directly in the kernel and once via a hypercall in case the event was
    pending.
    
    Fix that by doing the local unmask only if the event is not pending.
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 025ea15db5665fa14d1c48e39aa788acaf30471b
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:29:00 2020 +0100

    xen/events: add a proper barrier to 2-level uevent unmasking
    
    commit 4d3fe31bd993ef504350989786858aefdb877daa upstream.
    
    A follow-up patch will require certain write to happen before an event
    channel is unmasked.
    
    While the memory barrier is not strictly necessary for all the callers,
    the main one will need it. In order to avoid an extra memory barrier
    when using fifo event channels, mandate evtchn_unmask() to provide
    write ordering.
    
    The 2-level event handling unmask operation is missing an appropriate
    barrier, so add it. Fifo event channels are fine in this regard due to
    using sync_cmpxchg().
    
    This is part of XSA-332.
    
    Cc: stable@vger.kernel.org
    Suggested-by: Julien Grall <julien@xen.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b559da71974b5eb93311f7f475b2e4b16c0f9bb3
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 3 15:28:59 2020 +0100

    xen/events: avoid removing an event channel while handling it
    
    commit 073d0552ead5bfc7a3a9c01de590e924f11b5dd2 upstream.
    
    Today it can happen that an event channel is being removed from the
    system while the event handling loop is active. This can lead to a
    race resulting in crashes or WARN() splats when trying to access the
    irq_info structure related to the event channel.
    
    Fix this problem by using a rwlock taken as reader in the event
    handling loop and as writer when deallocating the irq_info structure.
    
    As the observed problem was a NULL dereference in evtchn_from_irq()
    make this function more robust against races by testing the irq_info
    pointer to be not NULL before dereferencing it.
    
    And finally make all accesses to evtchn_to_irq[row][col] atomic ones
    in order to avoid seeing partial updates of an array element in irq
    handling. Note that irq handling can be entered only for event channels
    which have been valid before, so any not populated row isn't a problem
    in this regard, as rows are only ever added and never removed.
    
    This is XSA-331.
    
    Cc: stable@vger.kernel.org
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reported-by: Jinoh Kang <luke1337@theori.io>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Wei Liu <wl@xen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 006f71167397127a53c95eed8fa8a2b0c4caf81b
Author: Mathieu Poirier <mathieu.poirier@linaro.org>
Date:   Mon Jul 16 17:13:51 2018 -0600

    perf/core: Fix crash when using HW tracing kernel filters
    
    commit 7f635ff187ab6be0b350b3ec06791e376af238ab upstream
    
    In function perf_event_parse_addr_filter(), the path::dentry of each struct
    perf_addr_filter is left unassigned (as it should be) when the pattern
    being parsed is related to kernel space.  But in function
    perf_addr_filter_match() the same dentries are given to d_inode() where
    the value is not expected to be NULL, resulting in the following splat:
    
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000058
      pc : perf_event_mmap+0x2fc/0x5a0
      lr : perf_event_mmap+0x2c8/0x5a0
      Process uname (pid: 2860, stack limit = 0x000000001cbcca37)
      Call trace:
       perf_event_mmap+0x2fc/0x5a0
       mmap_region+0x124/0x570
       do_mmap+0x344/0x4f8
       vm_mmap_pgoff+0xe4/0x110
       vm_mmap+0x2c/0x40
       elf_map+0x60/0x108
       load_elf_binary+0x450/0x12c4
       search_binary_handler+0x90/0x290
       __do_execve_file.isra.13+0x6e4/0x858
       sys_execve+0x3c/0x50
       el0_svc_naked+0x30/0x34
    
    This patch is fixing the problem by introducing a new check in function
    perf_addr_filter_match() to see if the filter's dentry is NULL.
    
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Cc: miklos@szeredi.hu
    Cc: namhyung@kernel.org
    Cc: songliubraving@fb.com
    Fixes: 9511bce9fe8e ("perf/core: Fix bad use of igrab()")
    Link: http://lkml.kernel.org/r/1531782831-1186-1-git-send-email-mathieu.poirier@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cd62032ff7d99509286e3594df93e95248ff037
Author: Song Liu <songliubraving@fb.com>
Date:   Tue Apr 17 23:29:07 2018 -0700

    perf/core: Fix bad use of igrab()
    
    commit 9511bce9fe8e5e6c0f923c09243a713eba560141 upstream
    
    As Miklos reported and suggested:
    
     "This pattern repeats two times in trace_uprobe.c and in
      kernel/events/core.c as well:
    
          ret = kern_path(filename, LOOKUP_FOLLOW, &path);
          if (ret)
              goto fail_address_parse;
    
          inode = igrab(d_inode(path.dentry));
          path_put(&path);
    
      And it's wrong.  You can only hold a reference to the inode if you
      have an active ref to the superblock as well (which is normally
      through path.mnt) or holding s_umount.
    
      This way unmounting the containing filesystem while the tracepoint is
      active will give you the "VFS: Busy inodes after unmount..." message
      and a crash when the inode is finally put.
    
      Solution: store path instead of inode."
    
    This patch fixes the issue in kernel/event/core.c.
    
    Reviewed-and-tested-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Reported-by: Miklos Szeredi <miklos@szeredi.hu>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <kernel-team@fb.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 375637bc5249 ("perf/core: Introduce address range filtering")
    Link: http://lkml.kernel.org/r/20180418062907.3210386-2-songliubraving@fb.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bd4eaf991f8896dae5b1a305544d726515a3e85
Author: Anand K Mistry <amistry@google.com>
Date:   Thu Nov 5 16:33:04 2020 +1100

    x86/speculation: Allow IBPB to be conditionally enabled on CPUs with always-on STIBP
    
    commit 1978b3a53a74e3230cd46932b149c6e62e832e9a upstream.
    
    On AMD CPUs which have the feature X86_FEATURE_AMD_STIBP_ALWAYS_ON,
    STIBP is set to on and
    
      spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED
    
    At the same time, IBPB can be set to conditional.
    
    However, this leads to the case where it's impossible to turn on IBPB
    for a process because in the PR_SPEC_DISABLE case in ib_prctl_set() the
    
      spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED
    
    condition leads to a return before the task flag is set. Similarly,
    ib_prctl_get() will return PR_SPEC_DISABLE even though IBPB is set to
    conditional.
    
    More generally, the following cases are possible:
    
    1. STIBP = conditional && IBPB = on for spectre_v2_user=seccomp,ibpb
    2. STIBP = on && IBPB = conditional for AMD CPUs with
       X86_FEATURE_AMD_STIBP_ALWAYS_ON
    
    The first case functions correctly today, but only because
    spectre_v2_user_ibpb isn't updated to reflect the IBPB mode.
    
    At a high level, this change does one thing. If either STIBP or IBPB
    is set to conditional, allow the prctl to change the task flag.
    Also, reflect that capability when querying the state. This isn't
    perfect since it doesn't take into account if only STIBP or IBPB is
    unconditionally on. But it allows the conditional feature to work as
    expected, without affecting the unconditional one.
    
     [ bp: Massage commit message and comment; space out statements for
       better readability. ]
    
    Fixes: 21998a351512 ("x86/speculation: Avoid force-disabling IBPB based on STIBP and enhanced IBRS.")
    Signed-off-by: Anand K Mistry <amistry@google.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Tom Lendacky <thomas.lendacky@amd.com>
    Link: https://lkml.kernel.org/r/20201105163246.v2.1.Ifd7243cd3e2c2206a893ad0a5b9a4f19549e22c6@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a16f026330fee92e434267dc35c21bceaa7fd573
Author: George Spelvin <lkml@sdf.org>
Date:   Sun Aug 9 06:57:44 2020 +0000

    random32: make prandom_u32() output unpredictable
    
    commit c51f8f88d705e06bd696d7510aff22b33eb8e638 upstream.
    
    Non-cryptographic PRNGs may have great statistical properties, but
    are usually trivially predictable to someone who knows the algorithm,
    given a small sample of their output.  An LFSR like prandom_u32() is
    particularly simple, even if the sample is widely scattered bits.
    
    It turns out the network stack uses prandom_u32() for some things like
    random port numbers which it would prefer are *not* trivially predictable.
    Predictability led to a practical DNS spoofing attack.  Oops.
    
    This patch replaces the LFSR with a homebrew cryptographic PRNG based
    on the SipHash round function, which is in turn seeded with 128 bits
    of strong random key.  (The authors of SipHash have *not* been consulted
    about this abuse of their algorithm.)  Speed is prioritized over security;
    attacks are rare, while performance is always wanted.
    
    Replacing all callers of prandom_u32() is the quick fix.
    Whether to reinstate a weaker PRNG for uses which can tolerate it
    is an open question.
    
    Commit f227e3ec3b5c ("random32: update the net random state on interrupt
    and activity") was an earlier attempt at a solution.  This patch replaces
    it.
    
    Reported-by: Amit Klein <aksecurity@gmail.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: tytso@mit.edu
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Marc Plumb <lkml.mplumb@gmail.com>
    Fixes: f227e3ec3b5c ("random32: update the net random state on interrupt and activity")
    Signed-off-by: George Spelvin <lkml@sdf.org>
    Link: https://lore.kernel.org/netdev/20200808152628.GA27941@SDF.ORG/
    [ willy: partial reversal of f227e3ec3b5c; moved SIPROUND definitions
      to prandom.h for later use; merged George's prandom_seed() proposal;
      inlined siprand_u32(); replaced the net_rand_state[] array with 4
      members to fix a build issue; cosmetic cleanups to make checkpatch
      happy; fixed RANDOM32_SELFTEST build ]
    [wt: backported to 4.14 -- various context adjustments; timer API change]
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc08b8e9d8928a21faf7fb5d31fc5d3f26a910a8
Author: Mao Wenan <wenan.mao@linux.alibaba.com>
Date:   Tue Nov 10 08:16:31 2020 +0800

    net: Update window_clamp if SOCK_RCVBUF is set
    
    [ Upstream commit 909172a149749242990a6e64cb55d55460d4e417 ]
    
    When net.ipv4.tcp_syncookies=1 and syn flood is happened,
    cookie_v4_check or cookie_v6_check tries to redo what
    tcp_v4_send_synack or tcp_v6_send_synack did,
    rsk_window_clamp will be changed if SOCK_RCVBUF is set,
    which will make rcv_wscale is different, the client
    still operates with initial window scale and can overshot
    granted window, the client use the initial scale but local
    server use new scale to advertise window value, and session
    work abnormally.
    
    Fixes: e88c64f0a425 ("tcp: allow effective reduction of TCP's rcv-buffer via setsockopt")
    Signed-off-by: Mao Wenan <wenan.mao@linux.alibaba.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/1604967391-123737-1-git-send-email-wenan.mao@linux.alibaba.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c7cd7a91b5ddbef807895d035aae5bcb05c5970
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Nov 5 15:28:42 2020 +0100

    r8169: fix potential skb double free in an error path
    
    [ Upstream commit cc6528bc9a0c901c83b8220a2e2617f3354d6dd9 ]
    
    The caller of rtl8169_tso_csum_v2() frees the skb if false is returned.
    eth_skb_pad() internally frees the skb on error what would result in a
    double free. Therefore use __skb_put_padto() directly and instruct it
    to not free the skb on error.
    
    Fixes: b423e9ae49d7 ("r8169: fix offloaded tx checksum for small packets.")
    Reported-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/f7e68191-acff-9ded-4263-c016428a8762@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a67427dc854ac1ebab325047d906823d3b4469f
Author: Martin Willi <martin@strongswan.org>
Date:   Fri Nov 6 08:30:30 2020 +0100

    vrf: Fix fast path output packet handling with async Netfilter rules
    
    [ Upstream commit 9e2b7fa2df4365e99934901da4fb4af52d81e820 ]
    
    VRF devices use an optimized direct path on output if a default qdisc
    is involved, calling Netfilter hooks directly. This path, however, does
    not consider Netfilter rules completing asynchronously, such as with
    NFQUEUE. The Netfilter okfn() is called for asynchronously accepted
    packets, but the VRF never passes that packet down the stack to send
    it out over the slave device. Using the slower redirect path for this
    seems not feasible, as we do not know beforehand if a Netfilter hook
    has asynchronously completing rules.
    
    Fix the use of asynchronously completing Netfilter rules in OUTPUT and
    POSTROUTING by using a special completion function that additionally
    calls dst_output() to pass the packet down the stack. Also, slightly
    adjust the use of nf_reset_ct() so that is called in the asynchronous
    case, too.
    
    Fixes: dcdd43c41e60 ("net: vrf: performance improvements for IPv4")
    Fixes: a9ec54d1b0cd ("net: vrf: performance improvements for IPv6")
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Link: https://lore.kernel.org/r/20201106073030.3974927-1-martin@strongswan.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05547c50cf9e8f83a066389c2b1941f5f3e1435d
Author: Martin Schiller <ms@dev.tdt.de>
Date:   Mon Nov 9 07:54:49 2020 +0100

    net/x25: Fix null-ptr-deref in x25_connect
    
    [ Upstream commit 361182308766a265b6c521879b34302617a8c209 ]
    
    This fixes a regression for blocking connects introduced by commit
    4becb7ee5b3d ("net/x25: Fix x25_neigh refcnt leak when x25 disconnect").
    
    The x25->neighbour is already set to "NULL" by x25_disconnect() now,
    while a blocking connect is waiting in
    x25_wait_for_connection_establishment(). Therefore x25->neighbour must
    not be accessed here again and x25->state is also already set to
    X25_STATE_0 by x25_disconnect().
    
    Fixes: 4becb7ee5b3d ("net/x25: Fix x25_neigh refcnt leak when x25 disconnect")
    Signed-off-by: Martin Schiller <ms@dev.tdt.de>
    Reviewed-by: Xie He <xie.he.0141@gmail.com>
    Link: https://lore.kernel.org/r/20201109065449.9014-1-ms@dev.tdt.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72f0eed0c6a443e6833b1c95c8738a3951e19f68
Author: Ursula Braun <ubraun@linux.ibm.com>
Date:   Mon Nov 9 08:57:05 2020 +0100

    net/af_iucv: fix null pointer dereference on shutdown
    
    [ Upstream commit 4031eeafa71eaf22ae40a15606a134ae86345daf ]
    
    syzbot reported the following KASAN finding:
    
    BUG: KASAN: nullptr-dereference in iucv_send_ctrl+0x390/0x3f0 net/iucv/af_iucv.c:385
    Read of size 2 at addr 000000000000021e by task syz-executor907/519
    
    CPU: 0 PID: 519 Comm: syz-executor907 Not tainted 5.9.0-syzkaller-07043-gbcf9877ad213 #0
    Hardware name: IBM 3906 M04 701 (KVM/Linux)
    Call Trace:
     [<00000000c576af60>] unwind_start arch/s390/include/asm/unwind.h:65 [inline]
     [<00000000c576af60>] show_stack+0x180/0x228 arch/s390/kernel/dumpstack.c:135
     [<00000000c9dcd1f8>] __dump_stack lib/dump_stack.c:77 [inline]
     [<00000000c9dcd1f8>] dump_stack+0x268/0x2f0 lib/dump_stack.c:118
     [<00000000c5fed016>] print_address_description.constprop.0+0x5e/0x218 mm/kasan/report.c:383
     [<00000000c5fec82a>] __kasan_report mm/kasan/report.c:517 [inline]
     [<00000000c5fec82a>] kasan_report+0x11a/0x168 mm/kasan/report.c:534
     [<00000000c98b5b60>] iucv_send_ctrl+0x390/0x3f0 net/iucv/af_iucv.c:385
     [<00000000c98b6262>] iucv_sock_shutdown+0x44a/0x4c0 net/iucv/af_iucv.c:1457
     [<00000000c89d3a54>] __sys_shutdown+0x12c/0x1c8 net/socket.c:2204
     [<00000000c89d3b70>] __do_sys_shutdown net/socket.c:2212 [inline]
     [<00000000c89d3b70>] __s390x_sys_shutdown+0x38/0x48 net/socket.c:2210
     [<00000000c9e36eac>] system_call+0xe0/0x28c arch/s390/kernel/entry.S:415
    
    There is nothing to shutdown if a connection has never been established.
    Besides that iucv->hs_dev is not yet initialized if a socket is in
    IUCV_OPEN state and iucv->path is not yet initialized if socket is in
    IUCV_BOUND state.
    So, just skip the shutdown calls for a socket in these states.
    
    Fixes: eac3731bd04c ("[S390]: Add AF_IUCV socket support")
    Fixes: 82492a355fac ("af_iucv: add shutdown for HS transport")
    Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
    [jwi: correct one Fixes tag]
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 631d8475dfb197140a8501f8079e8a8ae4f0638c
Author: Oliver Herms <oliver.peter.herms@gmail.com>
Date:   Tue Nov 3 11:41:33 2020 +0100

    IPv6: Set SIT tunnel hard_header_len to zero
    
    [ Upstream commit 8ef9ba4d666614497a057d09b0a6eafc1e34eadf ]
    
    Due to the legacy usage of hard_header_len for SIT tunnels while
    already using infrastructure from net/ipv4/ip_tunnel.c the
    calculation of the path MTU in tnl_update_pmtu is incorrect.
    This leads to unnecessary creation of MTU exceptions for any
    flow going over a SIT tunnel.
    
    As SIT tunnels do not have a header themsevles other than their
    transport (L3, L2) headers we're leaving hard_header_len set to zero
    as tnl_update_pmtu is already taking care of the transport headers
    sizes.
    
    This will also help avoiding unnecessary IPv6 GC runs and spinlock
    contention seen when using SIT tunnels and for more than
    net.ipv6.route.gc_thresh flows.
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: Oliver Herms <oliver.peter.herms@gmail.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20201103104133.GA1573211@tws
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2e390fede7085120b06c99a05ca745c0f9851bb
Author: Stefano Stabellini <stefano.stabellini@xilinx.com>
Date:   Mon Oct 26 17:02:14 2020 -0700

    swiotlb: fix "x86: Don't panic if can not alloc buffer for swiotlb"
    
    commit e9696d259d0fb5d239e8c28ca41089838ea76d13 upstream.
    
    kernel/dma/swiotlb.c:swiotlb_init gets called first and tries to
    allocate a buffer for the swiotlb. It does so by calling
    
      memblock_alloc_low(PAGE_ALIGN(bytes), PAGE_SIZE);
    
    If the allocation must fail, no_iotlb_memory is set.
    
    Later during initialization swiotlb-xen comes in
    (drivers/xen/swiotlb-xen.c:xen_swiotlb_init) and given that io_tlb_start
    is != 0, it thinks the memory is ready to use when actually it is not.
    
    When the swiotlb is actually needed, swiotlb_tbl_map_single gets called
    and since no_iotlb_memory is set the kernel panics.
    
    Instead, if swiotlb-xen.c:xen_swiotlb_init knew the swiotlb hadn't been
    initialized, it would do the initialization itself, which might still
    succeed.
    
    Fix the panic by setting io_tlb_start to 0 on swiotlb initialization
    failure, and also by setting no_iotlb_memory to false on swiotlb
    initialization success.
    
    Fixes: ac2cbab21f31 ("x86: Don't panic if can not alloc buffer for swiotlb")
    
    Reported-by: Elliott Mitchell <ehem+xen@m5p.com>
    Tested-by: Elliott Mitchell <ehem+xen@m5p.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee06ff469ead43cc57534880b345d75c4220283e
Author: Coiby Xu <coiby.xu@gmail.com>
Date:   Fri Nov 6 07:19:09 2020 +0800

    pinctrl: amd: fix incorrect way to disable debounce filter
    
    commit 06abe8291bc31839950f7d0362d9979edc88a666 upstream.
    
    The correct way to disable debounce filter is to clear bit 5 and 6
    of the register.
    
    Cc: stable@vger.kerne.org
    Signed-off-by: Coiby Xu <coiby.xu@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/linux-gpio/df2c008b-e7b5-4fdd-42ea-4d1c62b52139@redhat.com/
    Link: https://lore.kernel.org/r/20201105231912.69527-2-coiby.xu@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fee6311e5404f425d270243a7b8f913066c6640
Author: Coiby Xu <coiby.xu@gmail.com>
Date:   Fri Nov 6 07:19:10 2020 +0800

    pinctrl: amd: use higher precision for 512 RtcClk
    
    commit c64a6a0d4a928c63e5bc3b485552a8903a506c36 upstream.
    
    RTC is 32.768kHz thus 512 RtcClk equals 15625 usec. The documentation
    likely has dropped precision and that's why the driver mistakenly took
    the slightly deviated value.
    
    Cc: stable@vger.kernel.org
    Reported-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Suggested-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Coiby Xu <coiby.xu@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/linux-gpio/2f4706a1-502f-75f0-9596-cc25b4933b6c@redhat.com/
    Link: https://lore.kernel.org/r/20201105231912.69527-3-coiby.xu@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7053269fc75fe0fab8ad0945f6c4d667943246f
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Thu Nov 5 20:02:56 2020 +0100

    drm/gma500: Fix out-of-bounds access to struct drm_device.vblank[]
    
    commit 06ad8d339524bf94b89859047822c31df6ace239 upstream.
    
    The gma500 driver expects 3 pipelines in several it's IRQ functions.
    Accessing struct drm_device.vblank[], this fails with devices that only
    have 2 pipelines. An example KASAN report is shown below.
    
      [   62.267688] ==================================================================
      [   62.268856] BUG: KASAN: slab-out-of-bounds in psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
      [   62.269450] Read of size 1 at addr ffff8880012bc6d0 by task systemd-udevd/285
      [   62.269949]
      [   62.270192] CPU: 0 PID: 285 Comm: systemd-udevd Tainted: G            E     5.10.0-rc1-1-default+ #572
      [   62.270807] Hardware name:  /DN2800MT, BIOS MTCDT10N.86A.0164.2012.1213.1024 12/13/2012
      [   62.271366] Call Trace:
      [   62.271705]  dump_stack+0xae/0xe5
      [   62.272180]  print_address_description.constprop.0+0x17/0xf0
      [   62.272987]  ? psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
      [   62.273474]  __kasan_report.cold+0x20/0x38
      [   62.273989]  ? psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
      [   62.274460]  kasan_report+0x3a/0x50
      [   62.274891]  psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
      [   62.275380]  drm_irq_install+0x131/0x1f0
      <...>
      [   62.300751] Allocated by task 285:
      [   62.301223]  kasan_save_stack+0x1b/0x40
      [   62.301731]  __kasan_kmalloc.constprop.0+0xbf/0xd0
      [   62.302293]  drmm_kmalloc+0x55/0x100
      [   62.302773]  drm_vblank_init+0x77/0x210
    
    Resolve the issue by only handling vblank entries up to the number of
    CRTCs.
    
    I'm adding a Fixes tag for reference, although the bug has been present
    since the driver's initial commit.
    
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Fixes: 5c49fd3aa0ab ("gma500: Add the core DRM files and headers")
    Cc: Alan Cox <alan@linux.intel.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: stable@vger.kernel.org#v3.3+
    Link: https://patchwork.freedesktop.org/patch/msgid/20201105190256.3893-1-tzimmermann@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 672164be3002db135b3e1b6ac5519afb7ca2f575
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Oct 28 16:39:49 2020 -0400

    don't dump the threads that had been already exiting when zapped.
    
    commit 77f6ab8b7768cf5e6bdd0e72499270a0671506ee upstream.
    
    Coredump logics needs to report not only the registers of the dumping
    thread, but (since 2.5.43) those of other threads getting killed.
    
    Doing that might require extra state saved on the stack in asm glue at
    kernel entry; signal delivery logics does that (we need to be able to
    save sigcontext there, at the very least) and so does seccomp.
    
    That covers all callers of do_coredump().  Secondary threads get hit with
    SIGKILL and caught as soon as they reach exit_mm(), which normally happens
    in signal delivery, so those are also fine most of the time.  Unfortunately,
    it is possible to end up with secondary zapped when it has already entered
    exit(2) (or, worse yet, is oopsing).  In those cases we reach exit_mm()
    when mm->core_state is already set, but the stack contents is not what
    we would have in signal delivery.
    
    At least on two architectures (alpha and m68k) it leads to infoleaks - we
    end up with a chunk of kernel stack written into coredump, with the contents
    consisting of normal C stack frames of the call chain leading to exit_mm()
    instead of the expected copy of userland registers.  In case of alpha we
    leak 312 bytes of stack.  Other architectures (including the regset-using
    ones) might have similar problems - the normal user of regsets is ptrace
    and the state of tracee at the time of such calls is special in the same
    way signal delivery is.
    
    Note that had the zapper gotten to the exiting thread slightly later,
    it wouldn't have been included into coredump anyway - we skip the threads
    that have already cleared their ->mm.  So let's pretend that zapper always
    loses the race.  IOW, have exit_mm() only insert into the dumper list if
    we'd gotten there from handling a fatal signal[*]
    
    As the result, the callers of do_exit() that have *not* gone through get_signal()
    are not seen by coredump logics as secondary threads.  Which excludes voluntary
    exit()/oopsen/traps/etc.  The dumper thread itself is unaffected by that,
    so seccomp is fine.
    
    [*] originally I intended to add a new flag in tsk->flags, but ebiederman pointed
    out that PF_SIGNALED is already doing just what we need.
    
    Cc: stable@vger.kernel.org
    Fixes: d89f3847def4 ("[PATCH] thread-aware coredumps, 2.5.43-C3")
    History-tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 531ef54548372c6b5b3eb5e5f264119b01a85ddb
Author: Chen Zhou <chenzhou10@huawei.com>
Date:   Thu Nov 12 21:53:32 2020 +0800

    selinux: Fix error return code in sel_ib_pkey_sid_slow()
    
    commit c350f8bea271782e2733419bd2ab9bf4ec2051ef upstream.
    
    Fix to return a negative error code from the error handling case
    instead of 0 in function sel_ib_pkey_sid_slow(), as done elsewhere
    in this function.
    
    Cc: stable@vger.kernel.org
    Fixes: 409dcf31538a ("selinux: Add a cache for quicker retreival of PKey SIDs")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3ea2654705758979a7213b7d08e70264dba2afd
Author: Wengang Wang <wen.gang.wang@oracle.com>
Date:   Fri Nov 13 22:52:23 2020 -0800

    ocfs2: initialize ip_next_orphan
    
    commit f5785283dd64867a711ca1fb1f5bb172f252ecdf upstream.
    
    Though problem if found on a lower 4.1.12 kernel, I think upstream has
    same issue.
    
    In one node in the cluster, there is the following callback trace:
    
       # cat /proc/21473/stack
       __ocfs2_cluster_lock.isra.36+0x336/0x9e0 [ocfs2]
       ocfs2_inode_lock_full_nested+0x121/0x520 [ocfs2]
       ocfs2_evict_inode+0x152/0x820 [ocfs2]
       evict+0xae/0x1a0
       iput+0x1c6/0x230
       ocfs2_orphan_filldir+0x5d/0x100 [ocfs2]
       ocfs2_dir_foreach_blk+0x490/0x4f0 [ocfs2]
       ocfs2_dir_foreach+0x29/0x30 [ocfs2]
       ocfs2_recover_orphans+0x1b6/0x9a0 [ocfs2]
       ocfs2_complete_recovery+0x1de/0x5c0 [ocfs2]
       process_one_work+0x169/0x4a0
       worker_thread+0x5b/0x560
       kthread+0xcb/0xf0
       ret_from_fork+0x61/0x90
    
    The above stack is not reasonable, the final iput shouldn't happen in
    ocfs2_orphan_filldir() function.  Looking at the code,
    
      2067         /* Skip inodes which are already added to recover list, since dio may
      2068          * happen concurrently with unlink/rename */
      2069         if (OCFS2_I(iter)->ip_next_orphan) {
      2070                 iput(iter);
      2071                 return 0;
      2072         }
      2073
    
    The logic thinks the inode is already in recover list on seeing
    ip_next_orphan is non-NULL, so it skip this inode after dropping a
    reference which incremented in ocfs2_iget().
    
    While, if the inode is already in recover list, it should have another
    reference and the iput() at line 2070 should not be the final iput
    (dropping the last reference).  So I don't think the inode is really in
    the recover list (no vmcore to confirm).
    
    Note that ocfs2_queue_orphans(), though not shown up in the call back
    trace, is holding cluster lock on the orphan directory when looking up
    for unlinked inodes.  The on disk inode eviction could involve a lot of
    IOs which may need long time to finish.  That means this node could hold
    the cluster lock for very long time, that can lead to the lock requests
    (from other nodes) to the orhpan directory hang for long time.
    
    Looking at more on ip_next_orphan, I found it's not initialized when
    allocating a new ocfs2_inode_info structure.
    
    This causes te reflink operations from some nodes hang for very long
    time waiting for the cluster lock on the orphan directory.
    
    Fix: initialize ip_next_orphan as NULL.
    
    Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201109171746.27884-1-wen.gang.wang@oracle.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70618302fdc55bbd1f7edd37e2ce5fd01322d05f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Nov 6 11:52:05 2020 +0300

    futex: Don't enable IRQs unconditionally in put_pi_state()
    
    commit 1e106aa3509b86738769775969822ffc1ec21bf4 upstream.
    
    The exit_pi_state_list() function calls put_pi_state() with IRQs disabled
    and is not expecting that IRQs will be enabled inside the function.
    
    Use the _irqsave() variant so that IRQs are restored to the original state
    instead of being enabled unconditionally.
    
    Fixes: 153fbd1226fb ("futex: Fix more put_pi_state() vs. exit_pi_state_list() races")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20201106085205.GA1159983@mwanda
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8af347892ab7b52689d59d8722a66f23500c45ad
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Thu Oct 29 11:54:42 2020 +0200

    mei: protect mei_cl_mtu from null dereference
    
    commit bcbc0b2e275f0a797de11a10eff495b4571863fc upstream.
    
    A receive callback is queued while the client is still connected
    but can still be called after the client was disconnected. Upon
    disconnect cl->me_cl is set to NULL, hence we need to check
    that ME client is not-NULL in mei_cl_mtu to avoid
    null dereference.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20201029095444.957924-2-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bd625c9b3483ef2a2624effb9e9aeac8475b96b
Author: Chris Brandt <chris.brandt@renesas.com>
Date:   Wed Nov 11 08:12:09 2020 -0500

    usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode
    
    commit 6d853c9e4104b4fc8d55dc9cd3b99712aa347174 upstream.
    
    Renesas R-Car and RZ/G SoCs have a firmware download mode over USB.
    However, on reset a banner string is transmitted out which is not expected
    to be echoed back and will corrupt the protocol.
    
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
    Link: https://lore.kernel.org/r/20201111131209.3977903-1-chris.brandt@renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb50a5ddc506f5dda513010165853eec67674507
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Mon Nov 2 21:28:19 2020 +0900

    uio: Fix use-after-free in uio_unregister_device()
    
    commit 092561f06702dd4fdd7fb74dd3a838f1818529b7 upstream.
    
    Commit 8fd0e2a6df26 ("uio: free uio id after uio file node is freed")
    triggered KASAN use-after-free failure at deletion of TCM-user
    backstores [1].
    
    In uio_unregister_device(), struct uio_device *idev is passed to
    uio_free_minor() to refer idev->minor. However, before uio_free_minor()
    call, idev is already freed by uio_device_release() during call to
    device_unregister().
    
    To avoid reference to idev->minor after idev free, keep idev->minor
    value in a local variable. Also modify uio_free_minor() argument to
    receive the value.
    
    [1]
    BUG: KASAN: use-after-free in uio_unregister_device+0x166/0x190
    Read of size 4 at addr ffff888105196508 by task targetcli/49158
    
    CPU: 3 PID: 49158 Comm: targetcli Not tainted 5.10.0-rc1 #1
    Hardware name: Supermicro Super Server/X10SRL-F, BIOS 2.0 12/17/2015
    Call Trace:
     dump_stack+0xae/0xe5
     ? uio_unregister_device+0x166/0x190
     print_address_description.constprop.0+0x1c/0x210
     ? uio_unregister_device+0x166/0x190
     ? uio_unregister_device+0x166/0x190
     kasan_report.cold+0x37/0x7c
     ? kobject_put+0x80/0x410
     ? uio_unregister_device+0x166/0x190
     uio_unregister_device+0x166/0x190
     tcmu_destroy_device+0x1c4/0x280 [target_core_user]
     ? tcmu_release+0x90/0x90 [target_core_user]
     ? __mutex_unlock_slowpath+0xd6/0x5d0
     target_free_device+0xf3/0x2e0 [target_core_mod]
     config_item_cleanup+0xea/0x210
     configfs_rmdir+0x651/0x860
     ? detach_groups.isra.0+0x380/0x380
     vfs_rmdir.part.0+0xec/0x3a0
     ? __lookup_hash+0x20/0x150
     do_rmdir+0x252/0x320
     ? do_file_open_root+0x420/0x420
     ? strncpy_from_user+0xbc/0x2f0
     ? getname_flags.part.0+0x8e/0x450
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x7f9e2bfc91fb
    Code: 73 01 c3 48 8b 0d 9d ec 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 54 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 6d ec 0c 00 f7 d8 64 89 01 48
    RSP: 002b:00007ffdd2baafe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000054
    RAX: ffffffffffffffda RBX: 00007f9e2beb44a0 RCX: 00007f9e2bfc91fb
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00007f9e1c20be90
    RBP: 00007ffdd2bab000 R08: 0000000000000000 R09: 00007f9e2bdf2440
    R10: 00007ffdd2baaf37 R11: 0000000000000246 R12: 00000000ffffff9c
    R13: 000055f9abb7e390 R14: 000055f9abcf9558 R15: 00007f9e2be7a780
    
    Allocated by task 34735:
     kasan_save_stack+0x1b/0x40
     __kasan_kmalloc.constprop.0+0xc2/0xd0
     __uio_register_device+0xeb/0xd40
     tcmu_configure_device+0x5a0/0xbc0 [target_core_user]
     target_configure_device+0x12f/0x760 [target_core_mod]
     target_dev_enable_store+0x32/0x50 [target_core_mod]
     configfs_write_file+0x2bb/0x450
     vfs_write+0x1ce/0x610
     ksys_write+0xe9/0x1b0
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 49158:
     kasan_save_stack+0x1b/0x40
     kasan_set_track+0x1c/0x30
     kasan_set_free_info+0x1b/0x30
     __kasan_slab_free+0x110/0x150
     slab_free_freelist_hook+0x5a/0x170
     kfree+0xc6/0x560
     device_release+0x9b/0x210
     kobject_put+0x13e/0x410
     uio_unregister_device+0xf9/0x190
     tcmu_destroy_device+0x1c4/0x280 [target_core_user]
     target_free_device+0xf3/0x2e0 [target_core_mod]
     config_item_cleanup+0xea/0x210
     configfs_rmdir+0x651/0x860
     vfs_rmdir.part.0+0xec/0x3a0
     do_rmdir+0x252/0x320
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The buggy address belongs to the object at ffff888105196000
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 1288 bytes inside of
     2048-byte region [ffff888105196000, ffff888105196800)
    The buggy address belongs to the page:
    page:0000000098e6ca81 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x105190
    head:0000000098e6ca81 order:3 compound_mapcount:0 compound_pincount:0
    flags: 0x17ffffc0010200(slab|head)
    raw: 0017ffffc0010200 dead000000000100 dead000000000122 ffff888100043040
    raw: 0000000000000000 0000000000080008 00000001ffffffff ffff88810eb55c01
    page dumped because: kasan: bad access detected
    page->mem_cgroup:ffff88810eb55c01
    
    Memory state around the buggy address:
     ffff888105196400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888105196480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff888105196500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                          ^
     ffff888105196580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888105196600: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    Fixes: 8fd0e2a6df26 ("uio: free uio id after uio file node is freed")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Link: https://lore.kernel.org/r/20201102122819.2346270-1-shinichiro.kawasaki@wdc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47b99052e5c406e7c7b93a4078cd6598e58f79c1
Author: Jing Xiangfeng <jingxiangfeng@huawei.com>
Date:   Thu Oct 15 16:40:53 2020 +0800

    thunderbolt: Add the missed ida_simple_remove() in ring_request_msix()
    
    commit 7342ca34d931a357d408aaa25fadd031e46af137 upstream.
    
    ring_request_msix() misses to call ida_simple_remove() in an error path.
    Add a label 'err_ida_remove' and jump to it.
    
    Fixes: 046bee1f9ab8 ("thunderbolt: Add MSI-X support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e088e703db45fe58d6755d7fba984265192c24b6
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Tue Nov 3 10:29:02 2020 +0800

    ext4: unlock xattr_sem properly in ext4_inline_data_truncate()
    
    commit 7067b2619017d51e71686ca9756b454de0e5826a upstream.
    
    It takes xattr_sem to check inline data again but without unlock it
    in case not have. So unlock it before return.
    
    Fixes: aef1c8513c1f ("ext4: let ext4_truncate handle inline data correctly")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Tao Ma <boyu.mt@taobao.com>
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Link: https://lore.kernel.org/r/1604370542-124630-1-git-send-email-joseph.qi@linux.alibaba.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42d77370227651d2e190792125dece054f822bf0
Author: Kaixu Xia <kaixuxia@tencent.com>
Date:   Thu Oct 29 23:46:36 2020 +0800

    ext4: correctly report "not supported" for {usr,grp}jquota when !CONFIG_QUOTA
    
    commit 174fe5ba2d1ea0d6c5ab2a7d4aa058d6d497ae4d upstream.
    
    The macro MOPT_Q is used to indicates the mount option is related to
    quota stuff and is defined to be MOPT_NOSUPPORT when CONFIG_QUOTA is
    disabled.  Normally the quota options are handled explicitly, so it
    didn't matter that the MOPT_STRING flag was missing, even though the
    usrjquota and grpjquota mount options take a string argument.  It's
    important that's present in the !CONFIG_QUOTA case, since without
    MOPT_STRING, the mount option matcher will match usrjquota= followed
    by an integer, and will otherwise skip the table entry, and so "mount
    option not supported" error message is never reported.
    
    [ Fixed up the commit description to better explain why the fix
      works. --TYT ]
    
    Fixes: 26092bf52478 ("ext4: use a table-driven handler for mount options")
    Signed-off-by: Kaixu Xia <kaixuxia@tencent.com>
    Link: https://lore.kernel.org/r/1603986396-28917-1-git-send-email-kaixuxia@tencent.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f4fa9473799acc8a3946ecd3fb776dbb4fe2d5d
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Oct 30 12:49:45 2020 +0100

    perf: Fix get_recursion_context()
    
    [ Upstream commit ce0f17fc93f63ee91428af10b7b2ddef38cd19e5 ]
    
    One should use in_serving_softirq() to detect SoftIRQ context.
    
    Fixes: 96f6d4444302 ("perf_counter: avoid recursion")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20201030151955.120572175@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6372d0e3d8e808608b61a49593030b1c41c90d51
Author: Wang Hai <wanghai38@huawei.com>
Date:   Tue Nov 10 22:46:14 2020 +0800

    cosa: Add missing kfree in error path of cosa_write
    
    [ Upstream commit 52755b66ddcef2e897778fac5656df18817b59ab ]
    
    If memory allocation for 'kbuf' succeed, cosa_write() doesn't have a
    corresponding kfree() in exception handling. Thus add kfree() for this
    function implementation.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Acked-by: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
    Link: https://lore.kernel.org/r/20201110144614.43194-1-wanghai38@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f420ef00ac9f7ebc546780b85c90e21d568b2e91
Author: Evan Nimmo <evan.nimmo@alliedtelesis.co.nz>
Date:   Tue Nov 10 15:28:25 2020 +1300

    of/address: Fix of_node memory leak in of_dma_is_coherent
    
    [ Upstream commit a5bea04fcc0b3c0aec71ee1fd58fd4ff7ee36177 ]
    
    Commit dabf6b36b83a ("of: Add OF_DMA_DEFAULT_COHERENT & select it on
    powerpc") added a check to of_dma_is_coherent which returns early
    if OF_DMA_DEFAULT_COHERENT is enabled. This results in the of_node_put()
    being skipped causing a memory leak. Moved the of_node_get() below this
    check so we now we only get the node if OF_DMA_DEFAULT_COHERENT is not
    enabled.
    
    Fixes: dabf6b36b83a ("of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc")
    Signed-off-by: Evan Nimmo <evan.nimmo@alliedtelesis.co.nz>
    Link: https://lore.kernel.org/r/20201110022825.30895-1-evan.nimmo@alliedtelesis.co.nz
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a25dba6c9b6277b4c86c79382a00e8e633fa312a
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Nov 11 08:07:37 2020 -0800

    xfs: fix a missing unlock on error in xfs_fs_map_blocks
    
    [ Upstream commit 2bd3fa793aaa7e98b74e3653fdcc72fa753913b5 ]
    
    We also need to drop the iolock when invalidate_inode_pages2 fails, not
    only on all other error or successful cases.
    
    Fixes: 527851124d10 ("xfs: implement pNFS export operations")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    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 048d54100ce49e9684e20dfc9880337ebab9913f
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Sun Nov 8 16:32:44 2020 -0800

    xfs: fix rmap key and record comparison functions
    
    [ Upstream commit 6ff646b2ceb0eec916101877f38da0b73e3a5b7f ]
    
    Keys for extent interval records in the reverse mapping btree are
    supposed to be computed as follows:
    
    (physical block, owner, fork, is_btree, is_unwritten, offset)
    
    This provides users the ability to look up a reverse mapping from a bmbt
    record -- start with the physical block; then if there are multiple
    records for the same block, move on to the owner; then the inode fork
    type; and so on to the file offset.
    
    However, the key comparison functions incorrectly remove the
    fork/btree/unwritten information that's encoded in the on-disk offset.
    This means that lookup comparisons are only done with:
    
    (physical block, owner, offset)
    
    This means that queries can return incorrect results.  On consistent
    filesystems this hasn't been an issue because blocks are never shared
    between forks or with bmbt blocks; and are never unwritten.  However,
    this bug means that online repair cannot always detect corruption in the
    key information in internal rmapbt nodes.
    
    Found by fuzzing keys[1].attrfork = ones on xfs/371.
    
    Fixes: 4b8ed67794fe ("xfs: add rmap btree operations")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4da3f05d429daf3ea896aba8c8818b1f11cfc10f
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Sun Nov 8 16:32:43 2020 -0800

    xfs: fix flags argument to rmap lookup when converting shared file rmaps
    
    [ Upstream commit ea8439899c0b15a176664df62aff928010fad276 ]
    
    Pass the same oldext argument (which contains the existing rmapping's
    unwritten state) to xfs_rmap_lookup_le_range at the start of
    xfs_rmap_convert_shared.  At this point in the code, flags is zero,
    which means that we perform lookups using the wrong key.
    
    Fixes: 3f165b334e51 ("xfs: convert unwritten status of reverse mappings for shared files")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 018a39e8977bd49077c4a8aa8a810eb9362ca28e
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Nov 9 18:30:59 2020 +0100

    nbd: fix a block_device refcount leak in nbd_release
    
    [ Upstream commit 2bd645b2d3f0bacadaa6037f067538e1cd4e42ef ]
    
    bdget_disk needs to be paired with bdput to not leak a reference
    on the block device inode.
    
    Fixes: 08ba91ee6e2c ("nbd: Add the nbd NBD_DISCONNECT_ON_CLOSE config flag.")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10692ad5fc60864737c5176c67e1963b8f39615e
Author: Billy Tsai <billy_tsai@aspeedtech.com>
Date:   Fri Oct 30 13:54:50 2020 +0800

    pinctrl: aspeed: Fix GPI only function problem.
    
    [ Upstream commit 9b92f5c51e9a41352d665f6f956bd95085a56a83 ]
    
    Some gpio pin at aspeed soc is input only and the prefix name of these
    pin is "GPI" only.
    This patch fine-tune the condition of GPIO check from "GPIO" to "GPI"
    and it will fix the usage error of banks D and E in the AST2400/AST2500
    and banks T and U in the AST2600.
    
    Fixes: 4d3d0e4272d8 ("pinctrl: Add core support for Aspeed SoCs")
    Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Link: https://lore.kernel.org/r/20201030055450.29613-1-billy_tsai@aspeedtech.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f7c56dd2ea70b9d79e97a15a20117b5b4b49d34
Author: Andrew Jeffery <andrew@aj.id.au>
Date:   Thu Oct 22 01:43:59 2020 +0100

    ARM: 9019/1: kprobes: Avoid fortify_panic() when copying optprobe template
    
    [ Upstream commit 9fa2e7af3d53a4b769136eccc32c02e128a4ee51 ]
    
    Setting both CONFIG_KPROBES=y and CONFIG_FORTIFY_SOURCE=y on ARM leads
    to a panic in memcpy() when injecting a kprobe despite the fixes found
    in commit e46daee53bb5 ("ARM: 8806/1: kprobes: Fix false positive with
    FORTIFY_SOURCE") and commit 0ac569bf6a79 ("ARM: 8834/1: Fix: kprobes:
    optimized kprobes illegal instruction").
    
    arch/arm/include/asm/kprobes.h effectively declares
    the target type of the optprobe_template_entry assembly label as a u32
    which leads memcpy()'s __builtin_object_size() call to determine that
    the pointed-to object is of size four. However, the symbol is used as a handle
    for the optimised probe assembly template that is at least 96 bytes in size.
    The symbol's use despite its type blows up the memcpy() in ARM's
    arch_prepare_optimized_kprobe() with a false-positive fortify_panic() when it
    should instead copy the optimised probe template into place:
    
    ```
    $ sudo perf probe -a aspeed_g6_pinctrl_probe
    [  158.457252] detected buffer overflow in memcpy
    [  158.458069] ------------[ cut here ]------------
    [  158.458283] kernel BUG at lib/string.c:1153!
    [  158.458436] Internal error: Oops - BUG: 0 [#1] SMP ARM
    [  158.458768] Modules linked in:
    [  158.459043] CPU: 1 PID: 99 Comm: perf Not tainted 5.9.0-rc7-00038-gc53ebf8167e9 #158
    [  158.459296] Hardware name: Generic DT based system
    [  158.459529] PC is at fortify_panic+0x18/0x20
    [  158.459658] LR is at __irq_work_queue_local+0x3c/0x74
    [  158.459831] pc : [<8047451c>]    lr : [<8020ecd4>]    psr: 60000013
    [  158.460032] sp : be2d1d50  ip : be2d1c58  fp : be2d1d5c
    [  158.460174] r10: 00000006  r9 : 00000000  r8 : 00000060
    [  158.460348] r7 : 8011e434  r6 : b9e0b800  r5 : 7f000000  r4 : b9fe4f0c
    [  158.460557] r3 : 80c04cc8  r2 : 00000000  r1 : be7c03cc  r0 : 00000022
    [  158.460801] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [  158.461037] Control: 10c5387d  Table: b9cd806a  DAC: 00000051
    [  158.461251] Process perf (pid: 99, stack limit = 0x81c71a69)
    [  158.461472] Stack: (0xbe2d1d50 to 0xbe2d2000)
    [  158.461757] 1d40:                                     be2d1d84 be2d1d60 8011e724 80474510
    [  158.462104] 1d60: b9e0b800 b9fe4f0c 00000000 b9fe4f14 80c8ec80 be235000 be2d1d9c be2d1d88
    [  158.462436] 1d80: 801cee44 8011e57c b9fe4f0c 00000000 be2d1dc4 be2d1da0 801d0ad0 801cedec
    [  158.462742] 1da0: 00000000 00000000 b9fe4f00 ffffffea 00000000 be235000 be2d1de4 be2d1dc8
    [  158.463087] 1dc0: 80204604 801d0738 00000000 00000000 b9fe4004 ffffffea be2d1e94 be2d1de8
    [  158.463428] 1de0: 80205434 80204570 00385c00 00000000 00000000 00000000 be2d1e14 be2d1e08
    [  158.463880] 1e00: 802ba014 b9fe4f00 b9e718c0 b9fe4f84 b9e71ec8 be2d1e24 00000000 00385c00
    [  158.464365] 1e20: 00000000 626f7270 00000065 802b905c be2d1e94 0000002e 00000000 802b9914
    [  158.464829] 1e40: be2d1e84 be2d1e50 802b9914 8028ff78 804629d0 b9e71ec0 0000002e b9e71ec0
    [  158.465141] 1e60: be2d1ea8 80c04cc8 00000cc0 b9e713c4 00000002 80205834 80205834 0000002e
    [  158.465488] 1e80: be235000 be235000 be2d1ea4 be2d1e98 80205854 80204e94 be2d1ecc be2d1ea8
    [  158.465806] 1ea0: 801ee4a0 80205840 00000002 80c04cc8 00000000 0000002e 0000002e 00000000
    [  158.466110] 1ec0: be2d1f0c be2d1ed0 801ee5c8 801ee428 00000000 be2d0000 006b1fd0 00000051
    [  158.466398] 1ee0: 00000000 b9eedf00 0000002e 80204410 006b1fd0 be2d1f60 00000000 00000004
    [  158.466763] 1f00: be2d1f24 be2d1f10 8020442c 801ee4c4 80205834 802c613c be2d1f5c be2d1f28
    [  158.467102] 1f20: 802c60ac 8020441c be2d1fac be2d1f38 8010c764 802e9888 be2d1f5c b9eedf00
    [  158.467447] 1f40: b9eedf00 006b1fd0 0000002e 00000000 be2d1f94 be2d1f60 802c634c 802c5fec
    [  158.467812] 1f60: 00000000 00000000 00000000 80c04cc8 006b1fd0 00000003 76f7a610 00000004
    [  158.468155] 1f80: 80100284 be2d0000 be2d1fa4 be2d1f98 802c63ec 802c62e8 00000000 be2d1fa8
    [  158.468508] 1fa0: 80100080 802c63e0 006b1fd0 00000003 00000003 006b1fd0 0000002e 00000000
    [  158.468858] 1fc0: 006b1fd0 00000003 76f7a610 00000004 006b1fb0 0026d348 00000017 7ef2738c
    [  158.469202] 1fe0: 76f3431c 7ef272d8 0014ec50 76f34338 60000010 00000003 00000000 00000000
    [  158.469461] Backtrace:
    [  158.469683] [<80474504>] (fortify_panic) from [<8011e724>] (arch_prepare_optimized_kprobe+0x1b4/0x1f8)
    [  158.470021] [<8011e570>] (arch_prepare_optimized_kprobe) from [<801cee44>] (alloc_aggr_kprobe+0x64/0x70)
    [  158.470287]  r9:be235000 r8:80c8ec80 r7:b9fe4f14 r6:00000000 r5:b9fe4f0c r4:b9e0b800
    [  158.470478] [<801cede0>] (alloc_aggr_kprobe) from [<801d0ad0>] (register_kprobe+0x3a4/0x5a0)
    [  158.470685]  r5:00000000 r4:b9fe4f0c
    [  158.470790] [<801d072c>] (register_kprobe) from [<80204604>] (__register_trace_kprobe+0xa0/0xa4)
    [  158.471001]  r9:be235000 r8:00000000 r7:ffffffea r6:b9fe4f00 r5:00000000 r4:00000000
    [  158.471188] [<80204564>] (__register_trace_kprobe) from [<80205434>] (trace_kprobe_create+0x5ac/0x9ac)
    [  158.471408]  r7:ffffffea r6:b9fe4004 r5:00000000 r4:00000000
    [  158.471553] [<80204e88>] (trace_kprobe_create) from [<80205854>] (create_or_delete_trace_kprobe+0x20/0x3c)
    [  158.471766]  r10:be235000 r9:be235000 r8:0000002e r7:80205834 r6:80205834 r5:00000002
    [  158.471949]  r4:b9e713c4
    [  158.472027] [<80205834>] (create_or_delete_trace_kprobe) from [<801ee4a0>] (trace_run_command+0x84/0x9c)
    [  158.472255] [<801ee41c>] (trace_run_command) from [<801ee5c8>] (trace_parse_run_command+0x110/0x1f8)
    [  158.472471]  r6:00000000 r5:0000002e r4:0000002e
    [  158.472594] [<801ee4b8>] (trace_parse_run_command) from [<8020442c>] (probes_write+0x1c/0x28)
    [  158.472800]  r10:00000004 r9:00000000 r8:be2d1f60 r7:006b1fd0 r6:80204410 r5:0000002e
    [  158.472968]  r4:b9eedf00
    [  158.473046] [<80204410>] (probes_write) from [<802c60ac>] (vfs_write+0xcc/0x1e8)
    [  158.473226] [<802c5fe0>] (vfs_write) from [<802c634c>] (ksys_write+0x70/0xf8)
    [  158.473400]  r8:00000000 r7:0000002e r6:006b1fd0 r5:b9eedf00 r4:b9eedf00
    [  158.473567] [<802c62dc>] (ksys_write) from [<802c63ec>] (sys_write+0x18/0x1c)
    [  158.473745]  r9:be2d0000 r8:80100284 r7:00000004 r6:76f7a610 r5:00000003 r4:006b1fd0
    [  158.473932] [<802c63d4>] (sys_write) from [<80100080>] (ret_fast_syscall+0x0/0x54)
    [  158.474126] Exception stack(0xbe2d1fa8 to 0xbe2d1ff0)
    [  158.474305] 1fa0:                   006b1fd0 00000003 00000003 006b1fd0 0000002e 00000000
    [  158.474573] 1fc0: 006b1fd0 00000003 76f7a610 00000004 006b1fb0 0026d348 00000017 7ef2738c
    [  158.474811] 1fe0: 76f3431c 7ef272d8 0014ec50 76f34338
    [  158.475171] Code: e24cb004 e1a01000 e59f0004 ebf40dd3 (e7f001f2)
    [  158.475847] ---[ end trace 55a5b31c08a29f00 ]---
    [  158.476088] Kernel panic - not syncing: Fatal exception
    [  158.476375] CPU0: stopping
    [  158.476709] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G      D           5.9.0-rc7-00038-gc53ebf8167e9 #158
    [  158.477176] Hardware name: Generic DT based system
    [  158.477411] Backtrace:
    [  158.477604] [<8010dd28>] (dump_backtrace) from [<8010dfd4>] (show_stack+0x20/0x24)
    [  158.477990]  r7:00000000 r6:60000193 r5:00000000 r4:80c2f634
    [  158.478323] [<8010dfb4>] (show_stack) from [<8046390c>] (dump_stack+0xcc/0xe8)
    [  158.478686] [<80463840>] (dump_stack) from [<80110750>] (handle_IPI+0x334/0x3a0)
    [  158.479063]  r7:00000000 r6:00000004 r5:80b65cc8 r4:80c78278
    [  158.479352] [<8011041c>] (handle_IPI) from [<801013f8>] (gic_handle_irq+0x88/0x94)
    [  158.479757]  r10:10c5387d r9:80c01ed8 r8:00000000 r7:c0802000 r6:80c0537c r5:000003ff
    [  158.480146]  r4:c080200c r3:fffffff4
    [  158.480364] [<80101370>] (gic_handle_irq) from [<80100b6c>] (__irq_svc+0x6c/0x90)
    [  158.480748] Exception stack(0x80c01ed8 to 0x80c01f20)
    [  158.481031] 1ec0:                                                       000128bc 00000000
    [  158.481499] 1ee0: be7b8174 8011d3a0 80c00000 00000000 80c04cec 80c04d28 80c5d7c2 80a026d4
    [  158.482091] 1f00: 10c5387d 80c01f34 80c01f38 80c01f28 80109554 80109558 60000013 ffffffff
    [  158.482621]  r9:80c00000 r8:80c5d7c2 r7:80c01f0c r6:ffffffff r5:60000013 r4:80109558
    [  158.482983] [<80109518>] (arch_cpu_idle) from [<80818780>] (default_idle_call+0x38/0x120)
    [  158.483360] [<80818748>] (default_idle_call) from [<801585a8>] (do_idle+0xd4/0x158)
    [  158.483945]  r5:00000000 r4:80c00000
    [  158.484237] [<801584d4>] (do_idle) from [<801588f4>] (cpu_startup_entry+0x28/0x2c)
    [  158.484784]  r9:80c78000 r8:00000000 r7:80c78000 r6:80c78040 r5:80c04cc0 r4:000000d6
    [  158.485328] [<801588cc>] (cpu_startup_entry) from [<80810a78>] (rest_init+0x9c/0xbc)
    [  158.485930] [<808109dc>] (rest_init) from [<80b00ae4>] (arch_call_rest_init+0x18/0x1c)
    [  158.486503]  r5:80c04cc0 r4:00000001
    [  158.486857] [<80b00acc>] (arch_call_rest_init) from [<80b00fcc>] (start_kernel+0x46c/0x548)
    [  158.487589] [<80b00b60>] (start_kernel) from [<00000000>] (0x0)
    ```
    
    Fixes: e46daee53bb5 ("ARM: 8806/1: kprobes: Fix false positive with FORTIFY_SOURCE")
    Fixes: 0ac569bf6a79 ("ARM: 8834/1: Fix: kprobes: optimized kprobes illegal instruction")
    Suggested-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
    Tested-by: Luka Oreskovic <luka.oreskovic@sartura.hr>
    Tested-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Luka Oreskovic <luka.oreskovic@sartura.hr>
    Cc: Juraj Vijtiuk <juraj.vijtiuk@sartura.hr>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 919600c4b15eedb96d7a2734accc9e68203ff614
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Oct 14 13:46:38 2020 +0300

    pinctrl: intel: Set default bias in case no particular value given
    
    [ Upstream commit f3c75e7a9349d1d33eb53ddc1b31640994969f73 ]
    
    When GPIO library asks pin control to set the bias, it doesn't pass
    any value of it and argument is considered boolean (and this is true
    for ACPI GpioIo() / GpioInt() resources, by the way). Thus, individual
    drivers must behave well, when they got the resistance value of 1 Ohm,
    i.e. transforming it to sane default.
    
    In case of Intel pin control hardware the 5 kOhm sounds plausible
    because on one hand it's a minimum of resistors present in all
    hardware generations and at the same time it's high enough to minimize
    leakage current (will be only 200 uA with the above choice).
    
    Fixes: e57725eabf87 ("pinctrl: intel: Add support for hardware debouncer")
    Reported-by: Jamie McClymont <jamie@kwiius.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6826bfd942bce8094121587bd6d91bb3a4e34cb2
Author: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Date:   Thu Oct 15 02:50:02 2020 +0000

    iommu/amd: Increase interrupt remapping table limit to 512 entries
    
    [ Upstream commit 73db2fc595f358460ce32bcaa3be1f0cce4a2db1 ]
    
    Certain device drivers allocate IO queues on a per-cpu basis.
    On AMD EPYC platform, which can support up-to 256 cpu threads,
    this can exceed the current MAX_IRQ_PER_TABLE limit of 256,
    and result in the error message:
    
        AMD-Vi: Failed to allocate IRTE
    
    This has been observed with certain NVME devices.
    
    AMD IOMMU hardware can actually support upto 512 interrupt
    remapping table entries. Therefore, update the driver to
    match the hardware limit.
    
    Please note that this also increases the size of interrupt remapping
    table to 8KB per device when using the 128-bit IRTE format.
    
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Link: https://lore.kernel.org/r/20201015025002.87997-1-suravee.suthikulpanit@amd.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c8dfc188f2501650074dd4bfcb4fa4b656ab9b6e
Author: Hannes Reinecke <hare@suse.de>
Date:   Thu Sep 24 12:45:59 2020 +0200

    scsi: scsi_dh_alua: Avoid crash during alua_bus_detach()
    
    [ Upstream commit 5faf50e9e9fdc2117c61ff7e20da49cd6a29e0ca ]
    
    alua_bus_detach() might be running concurrently with alua_rtpg_work(), so
    we might trip over h->sdev == NULL and call BUG_ON().  The correct way of
    handling it is to not set h->sdev to NULL in alua_bus_detach(), and call
    rcu_synchronize() before the final delete to ensure that all concurrent
    threads have left the critical section.  Then we can get rid of the
    BUG_ON() and replace it with a simple if condition.
    
    Link: https://lore.kernel.org/r/1600167537-12509-1-git-send-email-jitendra.khasdev@oracle.com
    Link: https://lore.kernel.org/r/20200924104559.26753-1-hare@suse.de
    Cc: Brian Bunker <brian@purestorage.com>
    Acked-by: Brian Bunker <brian@purestorage.com>
    Tested-by: Jitendra Khasdev <jitendra.khasdev@oracle.com>
    Reviewed-by: Jitendra Khasdev <jitendra.khasdev@oracle.com>
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ebde65ffdea3ce82b711e6721d5e468541adf18
Author: Ye Bin <yebin10@huawei.com>
Date:   Fri Oct 9 15:02:15 2020 +0800

    cfg80211: regulatory: Fix inconsistent format argument
    
    [ Upstream commit db18d20d1cb0fde16d518fb5ccd38679f174bc04 ]
    
    Fix follow warning:
    [net/wireless/reg.c:3619]: (warning) %d in format string (no. 2)
    requires 'int' but the argument type is 'unsigned int'.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Link: https://lore.kernel.org/r/20201009070215.63695-1-yebin10@huawei.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9545b214152af06e22ddc9fc2816fa130bb314c
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Oct 9 13:25:41 2020 +0200

    mac80211: fix use of skb payload instead of header
    
    [ Upstream commit 14f46c1e5108696ec1e5a129e838ecedf108c7bf ]
    
    When ieee80211_skb_resize() is called from ieee80211_build_hdr()
    the skb has no 802.11 header yet, in fact it consist only of the
    payload as the ethernet frame is removed. As such, we're using
    the payload data for ieee80211_is_mgmt(), which is of course
    completely wrong. This didn't really hurt us because these are
    always data frames, so we could only have added more tailroom
    than we needed if we determined it was a management frame and
    sdata->crypto_tx_tailroom_needed_cnt was false.
    
    However, syzbot found that of course there need not be any payload,
    so we're using at best uninitialized memory for the check.
    
    Fix this to pass explicitly the kind of frame that we have instead
    of checking there, by replacing the "bool may_encrypt" argument
    with an argument that can carry the three possible states - it's
    not going to be encrypted, it's a management frame, or it's a data
    frame (and then we check sdata->crypto_tx_tailroom_needed_cnt).
    
    Reported-by: syzbot+32fd1a1bfe355e93f1e2@syzkaller.appspotmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://lore.kernel.org/r/20201009132538.e1fd7f802947.I799b288466ea2815f9d4c84349fae697dca2f189@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d97d793f4e619a4190ed0c815bb6ac3d62b5c92e
Author: Evan Quan <evan.quan@amd.com>
Date:   Wed Oct 28 15:29:59 2020 +0800

    drm/amdgpu: perform srbm soft reset always on SDMA resume
    
    [ Upstream commit 253475c455eb5f8da34faa1af92709e7bb414624 ]
    
    This can address the random SDMA hang after pci config reset
    seen on Hawaii.
    
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Tested-by: Sandeep Raghuraman <sandy.8925@gmail.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b60098b2a521c6dc3142e5ca60de9be7f61140db
Author: Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
Date:   Tue Oct 27 07:31:24 2020 +0000

    scsi: hpsa: Fix memory leak in hpsa_init_one()
    
    [ Upstream commit af61bc1e33d2c0ec22612b46050f5b58ac56a962 ]
    
    When hpsa_scsi_add_host() fails, h->lastlogicals is leaked since it is
    missing a free() in the error handler.
    
    Fix this by adding free() when hpsa_scsi_add_host() fails.
    
    Link: https://lore.kernel.org/r/20201027073125.14229-1-keitasuzuki.park@sslab.ics.keio.ac.jp
    Tested-by: Don Brace <don.brace@microchip.com>
    Acked-by: Don Brace <don.brace@microchip.com>
    Signed-off-by: Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 73ba53619ff810a0b74fbfc8b5f50d662f145e7f
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Wed Oct 28 13:42:18 2020 -0500

    gfs2: check for live vs. read-only file system in gfs2_fitrim
    
    [ Upstream commit c5c68724696e7d2f8db58a5fce3673208d35c485 ]
    
    Before this patch, gfs2_fitrim was not properly checking for a "live" file
    system. If the file system had something to trim and the file system
    was read-only (or spectator) it would start the trim, but when it starts
    the transaction, gfs2_trans_begin returns -EROFS (read-only file system)
    and it errors out. However, if the file system was already trimmed so
    there's no work to do, it never called gfs2_trans_begin. That code is
    bypassed so it never returns the error. Instead, it returns a good
    return code with 0 work. All this makes for inconsistent behavior:
    The same fstrim command can return -EROFS in one case and 0 in another.
    This tripped up xfstests generic/537 which reports the error as:
    
        +fstrim with unrecovered metadata just ate your filesystem
    
    This patch adds a check for a "live" (iow, active journal, iow, RW)
    file system, and if not, returns the error properly.
    
    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 0bc72fb1f4140ed95e6be77acfa7fadb451b55c5
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Tue Oct 27 10:10:02 2020 -0500

    gfs2: Add missing truncate_inode_pages_final for sd_aspace
    
    [ Upstream commit a9dd945ccef07a904e412f208f8de708a3d7159e ]
    
    Gfs2 creates an address space for its rgrps called sd_aspace, but it never
    called truncate_inode_pages_final on it. This confused vfs greatly which
    tried to reference the address space after gfs2 had freed the superblock
    that contained it.
    
    This patch adds a call to truncate_inode_pages_final for sd_aspace, thus
    avoiding the use-after-free.
    
    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 0a637f7c46621e9d73f7a6e07468cadd2b22803b
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Tue Oct 27 10:10:01 2020 -0500

    gfs2: Free rd_bits later in gfs2_clear_rgrpd to fix use-after-free
    
    [ Upstream commit d0f17d3883f1e3f085d38572c2ea8edbd5150172 ]
    
    Function gfs2_clear_rgrpd calls kfree(rgd->rd_bits) before calling
    return_all_reservations, but return_all_reservations still dereferences
    rgd->rd_bits in __rs_deltree.  Fix that by moving the call to kfree below the
    call to return_all_reservations.
    
    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 de5c848322d1901128cfc481ef14e582638331e7
Author: Evgeny Novikov <novikov@ispras.ru>
Date:   Fri Oct 2 18:01:55 2020 +0300

    usb: gadget: goku_udc: fix potential crashes in probe
    
    [ Upstream commit 0d66e04875c5aae876cf3d4f4be7978fa2b00523 ]
    
    goku_probe() goes to error label "err" and invokes goku_remove()
    in case of failures of pci_enable_device(), pci_resource_start()
    and ioremap(). goku_remove() gets a device from
    pci_get_drvdata(pdev) and works with it without any checks, in
    particular it dereferences a corresponding pointer. But
    goku_probe() did not set this device yet. So, one can expect
    various crashes. The patch moves setting the device just after
    allocation of memory for it.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Reported-by: Pavel Andrianov <andrianov@ispras.ru>
    Signed-off-by: Evgeny Novikov <novikov@ispras.ru>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3973f7d4a244cb35351f4d4c316dd9100cbed6b
Author: Masashi Honma <masashi.honma@gmail.com>
Date:   Sun Aug 9 08:32:58 2020 +0900

    ath9k_htc: Use appropriate rs_datalen type
    
    commit 5024f21c159f8c1668f581fff37140741c0b1ba9 upstream.
    
    kernel test robot says:
    drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:987:20: sparse: warning: incorrect type in assignment (different base types)
    drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:987:20: sparse:    expected restricted __be16 [usertype] rs_datalen
    drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:987:20: sparse:    got unsigned short [usertype]
    drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:988:13: sparse: warning: restricted __be16 degrades to integer
    drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:1001:13: sparse: warning: restricted __be16 degrades to integer
    
    Indeed rs_datalen has host byte order, so modify it's own type.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Fixes: cd486e627e67 ("ath9k_htc: Discard undersized packets")
    Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200808233258.4596-1-masashi.honma@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b37799da7161e0aacd4d50ebb7686d8232d55b3c
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Sep 11 17:42:28 2019 +0100

    Btrfs: fix missing error return if writeback for extent buffer never started
    
    [ Upstream commit 0607eb1d452d45c5ac4c745a9e9e0d95152ea9d0 ]
    
    If lock_extent_buffer_for_io() fails, it returns a negative value, but its
    caller btree_write_cache_pages() ignores such error. This means that a
    call to flush_write_bio(), from lock_extent_buffer_for_io(), might have
    failed. We should make btree_write_cache_pages() notice such error values
    and stop immediatelly, making sure filemap_fdatawrite_range() returns an
    error to the transaction commit path. A failure from flush_write_bio()
    should also result in the endio callback end_bio_extent_buffer_writepage()
    being invoked, which sets the BTRFS_FS_*_ERR bits appropriately, so that
    there's no risk a transaction or log commit doesn't catch a writeback
    failure.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae97357defab968a2892cd402740393e16a15c3e
Author: Brian Foster <bfoster@redhat.com>
Date:   Thu Oct 29 14:30:48 2020 -0700

    xfs: flush new eof page on truncate to avoid post-eof corruption
    
    [ Upstream commit 869ae85dae64b5540e4362d7fe4cd520e10ec05c ]
    
    It is possible to expose non-zeroed post-EOF data in XFS if the new
    EOF page is dirty, backed by an unwritten block and the truncate
    happens to race with writeback. iomap_truncate_page() will not zero
    the post-EOF portion of the page if the underlying block is
    unwritten. The subsequent call to truncate_setsize() will, but
    doesn't dirty the page. Therefore, if writeback happens to complete
    after iomap_truncate_page() (so it still sees the unwritten block)
    but before truncate_setsize(), the cached page becomes inconsistent
    with the on-disk block. A mapped read after the associated page is
    reclaimed or invalidated exposes non-zero post-EOF data.
    
    For example, consider the following sequence when run on a kernel
    modified to explicitly flush the new EOF page within the race
    window:
    
    $ xfs_io -fc "falloc 0 4k" -c fsync /mnt/file
    $ xfs_io -c "pwrite 0 4k" -c "truncate 1k" /mnt/file
      ...
    $ xfs_io -c "mmap 0 4k" -c "mread -v 1k 8" /mnt/file
    00000400:  00 00 00 00 00 00 00 00  ........
    $ umount /mnt/; mount <dev> /mnt/
    $ xfs_io -c "mmap 0 4k" -c "mread -v 1k 8" /mnt/file
    00000400:  cd cd cd cd cd cd cd cd  ........
    
    Update xfs_setattr_size() to explicitly flush the new EOF page prior
    to the page truncate to ensure iomap has the latest state of the
    underlying block.
    
    Fixes: 68a9f5e7007c ("xfs: implement iomap based buffered write path")
    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 804bf14fd101c4ffef7ea28a824adac628fcf489
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Tue Oct 13 17:39:47 2020 +0200

    can: peak_canfd: pucan_handle_can_rx(): fix echo management when loopback is on
    
    [ Upstream commit 93ef65e5a6357cc7381f85fcec9283fe29970045 ]
    
    Echo management is driven by PUCAN_MSG_LOOPED_BACK bit, while loopback
    frames are identified with PUCAN_MSG_SELF_RECEIVE bit. Those bits are set
    for each outgoing frame written to the IP core so that a copy of each one
    will be placed into the rx path. Thus,
    
    - when PUCAN_MSG_LOOPED_BACK is set then the rx frame is an echo of a
      previously sent frame,
    - when PUCAN_MSG_LOOPED_BACK+PUCAN_MSG_SELF_RECEIVE are set, then the rx
      frame is an echo AND a loopback frame. Therefore, this frame must be
      put into the socket rx path too.
    
    This patch fixes how CAN frames are handled when these are sent while the
    can interface is configured in "loopback on" mode.
    
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Link: https://lore.kernel.org/r/20201013153947.28012-1-s.grosjean@peak-system.com
    Fixes: 8ac8321e4a79 ("can: peak: add support for PEAK PCAN-PCIe FD CAN-FD boards")
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f22ff5228d3afbc8172e04053dc72797062d9269
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Wed Oct 14 10:56:31 2020 +0200

    can: peak_usb: peak_usb_get_ts_time(): fix timestamp wrapping
    
    [ Upstream commit ecc7b4187dd388549544195fb13a11b4ea8e6a84 ]
    
    Fabian Inostroza <fabianinostrozap@gmail.com> has discovered a potential
    problem in the hardware timestamp reporting from the PCAN-USB USB CAN interface
    (only), related to the fact that a timestamp of an event may precede the
    timestamp used for synchronization when both records are part of the same USB
    packet. However, this case was used to detect the wrapping of the time counter.
    
    This patch details and fixes the two identified cases where this problem can
    occur.
    
    Reported-by: Fabian Inostroza <fabianinostrozap@gmail.com>
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Link: https://lore.kernel.org/r/20201014085631.15128-1-s.grosjean@peak-system.com
    Fixes: bb4785551f64 ("can: usb: PEAK-System Technik USB adapters driver core")
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17dc3483514798a1d27b0a6d7125a66c990b1fde
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Aug 13 17:06:04 2020 +0300

    can: peak_usb: add range checking in decode operations
    
    [ Upstream commit a6921dd524fe31d1f460c161d3526a407533b6db ]
    
    These values come from skb->data so Smatch considers them untrusted.  I
    believe Smatch is correct but I don't have a way to test this.
    
    The usb_if->dev[] array has 2 elements but the index is in the 0-15
    range without checks.  The cfd->len can be up to 255 but the maximum
    valid size is CANFD_MAX_DLEN (64) so that could lead to memory
    corruption.
    
    Fixes: 0a25e1f4f185 ("can: peak_usb: add support for PEAK new CANFD USB adapters")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20200813140604.GA456946@mwanda
    Acked-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6df51ca5977cab16b7093b4290a87970d5ea11e1
Author: Oleksij Rempel <linux@rempel-privat.de>
Date:   Wed Dec 18 09:39:02 2019 +0100

    can: can_create_echo_skb(): fix echo skb generation: always use skb_clone()
    
    [ Upstream commit 286228d382ba6320f04fa2e7c6fc8d4d92e428f4 ]
    
    All user space generated SKBs are owned by a socket (unless injected into the
    key via AF_PACKET). If a socket is closed, all associated skbs will be cleaned
    up.
    
    This leads to a problem when a CAN driver calls can_put_echo_skb() on a
    unshared SKB. If the socket is closed prior to the TX complete handler,
    can_get_echo_skb() and the subsequent delivering of the echo SKB to all
    registered callbacks, a SKB with a refcount of 0 is delivered.
    
    To avoid the problem, in can_get_echo_skb() the original SKB is now always
    cloned, regardless of shared SKB or not. If the process exists it can now
    safely discard its SKBs, without disturbing the delivery of the echo SKB.
    
    The problem shows up in the j1939 stack, when it clones the incoming skb, which
    detects the already 0 refcount.
    
    We can easily reproduce this with following example:
    
    testj1939 -B -r can0: &
    cansend can0 1823ff40#0123
    
    WARNING: CPU: 0 PID: 293 at lib/refcount.c:25 refcount_warn_saturate+0x108/0x174
    refcount_t: addition on 0; use-after-free.
    Modules linked in: coda_vpu imx_vdoa videobuf2_vmalloc dw_hdmi_ahb_audio vcan
    CPU: 0 PID: 293 Comm: cansend Not tainted 5.5.0-rc6-00376-g9e20dcb7040d #1
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Backtrace:
    [<c010f570>] (dump_backtrace) from [<c010f90c>] (show_stack+0x20/0x24)
    [<c010f8ec>] (show_stack) from [<c0c3e1a4>] (dump_stack+0x8c/0xa0)
    [<c0c3e118>] (dump_stack) from [<c0127fec>] (__warn+0xe0/0x108)
    [<c0127f0c>] (__warn) from [<c01283c8>] (warn_slowpath_fmt+0xa8/0xcc)
    [<c0128324>] (warn_slowpath_fmt) from [<c0539c0c>] (refcount_warn_saturate+0x108/0x174)
    [<c0539b04>] (refcount_warn_saturate) from [<c0ad2cac>] (j1939_can_recv+0x20c/0x210)
    [<c0ad2aa0>] (j1939_can_recv) from [<c0ac9dc8>] (can_rcv_filter+0xb4/0x268)
    [<c0ac9d14>] (can_rcv_filter) from [<c0aca2cc>] (can_receive+0xb0/0xe4)
    [<c0aca21c>] (can_receive) from [<c0aca348>] (can_rcv+0x48/0x98)
    [<c0aca300>] (can_rcv) from [<c09b1fdc>] (__netif_receive_skb_one_core+0x64/0x88)
    [<c09b1f78>] (__netif_receive_skb_one_core) from [<c09b2070>] (__netif_receive_skb+0x38/0x94)
    [<c09b2038>] (__netif_receive_skb) from [<c09b2130>] (netif_receive_skb_internal+0x64/0xf8)
    [<c09b20cc>] (netif_receive_skb_internal) from [<c09b21f8>] (netif_receive_skb+0x34/0x19c)
    [<c09b21c4>] (netif_receive_skb) from [<c0791278>] (can_rx_offload_napi_poll+0x58/0xb4)
    
    Fixes: 0ae89beb283a ("can: add destructor for self generated skbs")
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: http://lore.kernel.org/r/20200124132656.22156-1-o.rempel@pengutronix.de
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08b5f4d3371a2c40a05dd2587502442241aa0b8a
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Tue Oct 20 08:44:43 2020 +0200

    can: dev: __can_get_echo_skb(): fix real payload length return value for RTR frames
    
    [ Upstream commit ed3320cec279407a86bc4c72edc4a39eb49165ec ]
    
    The can_get_echo_skb() function returns the number of received bytes to
    be used for netdev statistics. In the case of RTR frames we get a valid
    (potential non-zero) data length value which has to be passed for further
    operations. But on the wire RTR frames have no payload length. Therefore
    the value to be used in the statistics has to be zero for RTR frames.
    
    Reported-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Link: https://lore.kernel.org/r/20201020064443.80164-1-socketcan@hartkopp.net
    Fixes: cf5046b309b3 ("can: dev: let can_get_echo_skb() return dlc of CAN frame")
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a922a85701939624484e7f2fd07d32beed00d25
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Sat Oct 3 00:41:45 2020 +0900

    can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ context
    
    [ Upstream commit 2283f79b22684d2812e5c76fc2280aae00390365 ]
    
    If a driver calls can_get_echo_skb() during a hardware IRQ (which is often, but
    not always, the case), the 'WARN_ON(in_irq)' in
    net/core/skbuff.c#skb_release_head_state() might be triggered, under network
    congestion circumstances, together with the potential risk of a NULL pointer
    dereference.
    
    The root cause of this issue is the call to kfree_skb() instead of
    dev_kfree_skb_irq() in net/core/dev.c#enqueue_to_backlog().
    
    This patch prevents the skb to be freed within the call to netif_rx() by
    incrementing its reference count with skb_get(). The skb is finally freed by
    one of the in-irq-context safe functions: dev_consume_skb_any() or
    dev_kfree_skb_any(). The "any" version is used because some drivers might call
    can_get_echo_skb() in a normal context.
    
    The reason for this issue to occur is that initially, in the core network
    stack, loopback skb were not supposed to be received in hardware IRQ context.
    The CAN stack is an exeption.
    
    This bug was previously reported back in 2017 in [1] but the proposed patch
    never got accepted.
    
    While [1] directly modifies net/core/dev.c, we try to propose here a
    smoother modification local to CAN network stack (the assumption
    behind is that only CAN devices are affected by this issue).
    
    [1] http://lore.kernel.org/r/57a3ffb6-3309-3ad5-5a34-e93c3fe3614d@cetitec.com
    
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Link: https://lore.kernel.org/r/20201002154219.4887-2-mailhol.vincent@wanadoo.fr
    Fixes: 39549eef3587 ("can: CAN Network device driver and Netlink interface")
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20194f9e308844c3b793b156e01b22860583436c
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Thu Jun 18 12:47:06 2020 +0200

    can: rx-offload: don't call kfree_skb() from IRQ context
    
    [ Upstream commit 2ddd6bfe7bdbb6c661835c3ff9cab8e0769940a6 ]
    
    A CAN driver, using the rx-offload infrastructure, is reading CAN frames
    (usually in IRQ context) from the hardware and placing it into the rx-offload
    queue to be delivered to the networking stack via NAPI.
    
    In case the rx-offload queue is full, trying to add more skbs results in the
    skbs being dropped using kfree_skb(). If done from hard-IRQ context this
    results in the following warning:
    
    [  682.552693] ------------[ cut here ]------------
    [  682.557360] WARNING: CPU: 0 PID: 3057 at net/core/skbuff.c:650 skb_release_head_state+0x74/0x84
    [  682.566075] Modules linked in: can_raw can coda_vpu flexcan dw_hdmi_ahb_audio v4l2_jpeg imx_vdoa can_dev
    [  682.575597] CPU: 0 PID: 3057 Comm: cansend Tainted: G        W         5.7.0+ #18
    [  682.583098] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [  682.589657] [<c0112628>] (unwind_backtrace) from [<c010c1c4>] (show_stack+0x10/0x14)
    [  682.597423] [<c010c1c4>] (show_stack) from [<c06c481c>] (dump_stack+0xe0/0x114)
    [  682.604759] [<c06c481c>] (dump_stack) from [<c0128f10>] (__warn+0xc0/0x10c)
    [  682.611742] [<c0128f10>] (__warn) from [<c0129314>] (warn_slowpath_fmt+0x5c/0xc0)
    [  682.619248] [<c0129314>] (warn_slowpath_fmt) from [<c0b95dec>] (skb_release_head_state+0x74/0x84)
    [  682.628143] [<c0b95dec>] (skb_release_head_state) from [<c0b95e08>] (skb_release_all+0xc/0x24)
    [  682.636774] [<c0b95e08>] (skb_release_all) from [<c0b95eac>] (kfree_skb+0x74/0x1c8)
    [  682.644479] [<c0b95eac>] (kfree_skb) from [<bf001d1c>] (can_rx_offload_queue_sorted+0xe0/0xe8 [can_dev])
    [  682.654051] [<bf001d1c>] (can_rx_offload_queue_sorted [can_dev]) from [<bf001d6c>] (can_rx_offload_get_echo_skb+0x48/0x94 [can_dev])
    [  682.666007] [<bf001d6c>] (can_rx_offload_get_echo_skb [can_dev]) from [<bf01efe4>] (flexcan_irq+0x194/0x5dc [flexcan])
    [  682.676734] [<bf01efe4>] (flexcan_irq [flexcan]) from [<c019c1ec>] (__handle_irq_event_percpu+0x4c/0x3ec)
    [  682.686322] [<c019c1ec>] (__handle_irq_event_percpu) from [<c019c5b8>] (handle_irq_event_percpu+0x2c/0x88)
    [  682.695993] [<c019c5b8>] (handle_irq_event_percpu) from [<c019c64c>] (handle_irq_event+0x38/0x5c)
    [  682.704887] [<c019c64c>] (handle_irq_event) from [<c01a1058>] (handle_fasteoi_irq+0xc8/0x180)
    [  682.713432] [<c01a1058>] (handle_fasteoi_irq) from [<c019b2c0>] (generic_handle_irq+0x30/0x44)
    [  682.722063] [<c019b2c0>] (generic_handle_irq) from [<c019b8f8>] (__handle_domain_irq+0x64/0xdc)
    [  682.730783] [<c019b8f8>] (__handle_domain_irq) from [<c06df4a4>] (gic_handle_irq+0x48/0x9c)
    [  682.739158] [<c06df4a4>] (gic_handle_irq) from [<c0100b30>] (__irq_svc+0x70/0x98)
    [  682.746656] Exception stack(0xe80e9dd8 to 0xe80e9e20)
    [  682.751725] 9dc0:                                                       00000001 e80e8000
    [  682.759922] 9de0: e820cf80 00000000 ffffe000 00000000 eaf08fe4 00000000 600d0013 00000000
    [  682.768117] 9e00: c1732e3c c16093a8 e820d4c0 e80e9e28 c018a57c c018b870 600d0013 ffffffff
    [  682.776315] [<c0100b30>] (__irq_svc) from [<c018b870>] (lock_acquire+0x108/0x4e8)
    [  682.783821] [<c018b870>] (lock_acquire) from [<c0e938e4>] (down_write+0x48/0xa8)
    [  682.791242] [<c0e938e4>] (down_write) from [<c02818dc>] (unlink_file_vma+0x24/0x40)
    [  682.798922] [<c02818dc>] (unlink_file_vma) from [<c027a258>] (free_pgtables+0x34/0xb8)
    [  682.806858] [<c027a258>] (free_pgtables) from [<c02835a4>] (exit_mmap+0xe4/0x170)
    [  682.814361] [<c02835a4>] (exit_mmap) from [<c01248e0>] (mmput+0x5c/0x110)
    [  682.821171] [<c01248e0>] (mmput) from [<c012e910>] (do_exit+0x374/0xbe4)
    [  682.827892] [<c012e910>] (do_exit) from [<c0130888>] (do_group_exit+0x38/0xb4)
    [  682.835132] [<c0130888>] (do_group_exit) from [<c0130914>] (__wake_up_parent+0x0/0x14)
    [  682.843063] irq event stamp: 1936
    [  682.846399] hardirqs last  enabled at (1935): [<c02938b0>] rmqueue+0xf4/0xc64
    [  682.853553] hardirqs last disabled at (1936): [<c0100b20>] __irq_svc+0x60/0x98
    [  682.860799] softirqs last  enabled at (1878): [<bf04cdcc>] raw_release+0x108/0x1f0 [can_raw]
    [  682.869256] softirqs last disabled at (1876): [<c0b8f478>] release_sock+0x18/0x98
    [  682.876753] ---[ end trace 7bca4751ce44c444 ]---
    
    This patch fixes the problem by replacing the kfree_skb() by
    dev_kfree_skb_any(), as rx-offload might be called from threaded IRQ handlers
    as well.
    
    Fixes: ca913f1ac024 ("can: rx-offload: can_rx_offload_queue_sorted(): fix error handling, avoid skb mem leak")
    Fixes: 6caf8a6d6586 ("can: rx-offload: can_rx_offload_queue_tail(): fix error handling, avoid skb mem leak")
    Link: http://lore.kernel.org/r/20201019190524.1285319-3-mkl@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 935303d0b58a077c50089d0be577f8ff666584d6
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Nov 3 13:18:07 2020 +0300

    ALSA: hda: prevent undefined shift in snd_hdac_ext_bus_get_link()
    
    [ Upstream commit 158e1886b6262c1d1c96a18c85fac5219b8bf804 ]
    
    This is harmless, but the "addr" comes from the user and it could lead
    to a negative shift or to shift wrapping if it's too high.
    
    Fixes: 0b00a5615dc4 ("ALSA: hdac_ext: add hdac extended controller")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20201103101807.GC1127762@mwanda
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 836b93cf3043440408416c51b51066b2377c8b0a
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Mon Nov 2 00:31:03 2020 +0100

    perf tools: Add missing swap for ino_generation
    
    [ Upstream commit fe01adb72356a4e2f8735e4128af85921ca98fa1 ]
    
    We are missing swap for ino_generation field.
    
    Fixes: 5c5e854bc760 ("perf tools: Add attr->mmap2 support")
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20201101233103.3537427-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4cf755e9bceb0f69898bc6be10ea21e815d49659
Author: zhuoliang zhang <zhuoliang.zhang@mediatek.com>
Date:   Fri Oct 23 09:05:35 2020 +0200

    net: xfrm: fix a race condition during allocing spi
    
    [ Upstream commit a779d91314ca7208b7feb3ad817b62904397c56d ]
    
    we found that the following race condition exists in
    xfrm_alloc_userspi flow:
    
    user thread                                    state_hash_work thread
    ----                                           ----
    xfrm_alloc_userspi()
     __find_acq_core()
       /*alloc new xfrm_state:x*/
       xfrm_state_alloc()
       /*schedule state_hash_work thread*/
       xfrm_hash_grow_check()                      xfrm_hash_resize()
     xfrm_alloc_spi                                  /*hold lock*/
          x->id.spi = htonl(spi)                     spin_lock_bh(&net->xfrm.xfrm_state_lock)
          /*waiting lock release*/                     xfrm_hash_transfer()
          spin_lock_bh(&net->xfrm.xfrm_state_lock)      /*add x into hlist:net->xfrm.state_byspi*/
                                                            hlist_add_head_rcu(&x->byspi)
                                                     spin_unlock_bh(&net->xfrm.xfrm_state_lock)
    
        /*add x into hlist:net->xfrm.state_byspi 2 times*/
        hlist_add_head_rcu(&x->byspi)
    
    1. a new state x is alloced in xfrm_state_alloc() and added into the bydst hlist
    in  __find_acq_core() on the LHS;
    2. on the RHS, state_hash_work thread travels the old bydst and tranfers every xfrm_state
    (include x) into the new bydst hlist and new byspi hlist;
    3. user thread on the LHS gets the lock and adds x into the new byspi hlist again.
    
    So the same xfrm_state (x) is added into the same list_hash
    (net->xfrm.state_byspi) 2 times that makes the list_hash become
    an inifite loop.
    
    To fix the race, x->id.spi = htonl(spi) in the xfrm_alloc_spi() is moved
    to the back of spin_lock_bh, sothat state_hash_work thread no longer add x
    which id.spi is zero into the hash_list.
    
    Fixes: f034b5d4efdf ("[XFRM]: Dynamic xfrm_state hash table sizing.")
    Signed-off-by: zhuoliang zhang <zhuoliang.zhang@mediatek.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6fb1e4eceb6e58f3a0e3eddc552ae1fde103fadd
Author: Olaf Hering <olaf@aepfle.de>
Date:   Thu Oct 8 09:12:15 2020 +0200

    hv_balloon: disable warning when floor reached
    
    [ Upstream commit 2c3bd2a5c86fe744e8377733c5e511a5ca1e14f5 ]
    
    It is not an error if the host requests to balloon down, but the VM
    refuses to do so. Without this change a warning is logged in dmesg
    every five minutes.
    
    Fixes:  b3bb97b8a49f3 ("Drivers: hv: balloon: Add logging for dynamic memory operations")
    
    Signed-off-by: Olaf Hering <olaf@aepfle.de>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20201008071216.16554-1-olaf@aepfle.de
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9cd1dcc3050cf42baf67ca4c4a2604b3ec8c4a7d
Author: Marc Zyngier <maz@kernel.org>
Date:   Thu Oct 15 21:41:44 2020 +0100

    genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_HIERARCHY
    
    [ Upstream commit 151a535171be6ff824a0a3875553ea38570f4c05 ]
    
    kernel/irq/ipi.c otherwise fails to compile if nothing else
    selects it.
    
    Fixes: 379b656446a3 ("genirq: Add GENERIC_IRQ_IPI Kconfig symbol")
    Reported-by: Pavel Machek <pavel@ucw.cz>
    Tested-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20201015101222.GA32747@amd
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b238eaa1536c9fa9b1e8a468e1542bff3b9a98ea
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Tue Sep 22 17:27:29 2020 +0900

    btrfs: reschedule when cloning lots of extents
    
    [ Upstream commit 6b613cc97f0ace77f92f7bc112b8f6ad3f52baf8 ]
    
    We have several occurrences of a soft lockup from fstest's generic/175
    testcase, which look more or less like this one:
    
      watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [xfs_io:10030]
      Kernel panic - not syncing: softlockup: hung tasks
      CPU: 0 PID: 10030 Comm: xfs_io Tainted: G             L    5.9.0-rc5+ #768
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4-rebuilt.opensuse.org 04/01/2014
      Call Trace:
       <IRQ>
       dump_stack+0x77/0xa0
       panic+0xfa/0x2cb
       watchdog_timer_fn.cold+0x85/0xa5
       ? lockup_detector_update_enable+0x50/0x50
       __hrtimer_run_queues+0x99/0x4c0
       ? recalibrate_cpu_khz+0x10/0x10
       hrtimer_run_queues+0x9f/0xb0
       update_process_times+0x28/0x80
       tick_handle_periodic+0x1b/0x60
       __sysvec_apic_timer_interrupt+0x76/0x210
       asm_call_on_stack+0x12/0x20
       </IRQ>
       sysvec_apic_timer_interrupt+0x7f/0x90
       asm_sysvec_apic_timer_interrupt+0x12/0x20
      RIP: 0010:btrfs_tree_unlock+0x91/0x1a0 [btrfs]
      RSP: 0018:ffffc90007123a58 EFLAGS: 00000282
      RAX: ffff8881cea2fbe0 RBX: ffff8881cea2fbe0 RCX: 0000000000000000
      RDX: ffff8881d23fd200 RSI: ffffffff82045220 RDI: ffff8881cea2fba0
      RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000032
      R10: 0000160000000000 R11: 0000000000001000 R12: 0000000000001000
      R13: ffff8882357fd5b0 R14: ffff88816fa76e70 R15: ffff8881cea2fad0
       ? btrfs_tree_unlock+0x15b/0x1a0 [btrfs]
       btrfs_release_path+0x67/0x80 [btrfs]
       btrfs_insert_replace_extent+0x177/0x2c0 [btrfs]
       btrfs_replace_file_extents+0x472/0x7c0 [btrfs]
       btrfs_clone+0x9ba/0xbd0 [btrfs]
       btrfs_clone_files.isra.0+0xeb/0x140 [btrfs]
       ? file_update_time+0xcd/0x120
       btrfs_remap_file_range+0x322/0x3b0 [btrfs]
       do_clone_file_range+0xb7/0x1e0
       vfs_clone_file_range+0x30/0xa0
       ioctl_file_clone+0x8a/0xc0
       do_vfs_ioctl+0x5b2/0x6f0
       __x64_sys_ioctl+0x37/0xa0
       do_syscall_64+0x33/0x40
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f87977fc247
      RSP: 002b:00007ffd51a2f6d8 EFLAGS: 00000206 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f87977fc247
      RDX: 00007ffd51a2f710 RSI: 000000004020940d RDI: 0000000000000003
      RBP: 0000000000000004 R08: 00007ffd51a79080 R09: 0000000000000000
      R10: 00005621f11352f2 R11: 0000000000000206 R12: 0000000000000000
      R13: 0000000000000000 R14: 00005621f128b958 R15: 0000000080000000
      Kernel Offset: disabled
      ---[ end Kernel panic - not syncing: softlockup: hung tasks ]---
    
    All of these lockup reports have the call chain btrfs_clone_files() ->
    btrfs_clone() in common. btrfs_clone_files() calls btrfs_clone() with
    both source and destination extents locked and loops over the source
    extent to create the clones.
    
    Conditionally reschedule in the btrfs_clone() loop, to give some time back
    to other processes.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a2090914ae6b0232a9e20fe090e07a2c928e113
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Tue Sep 1 08:09:01 2020 -0400

    btrfs: sysfs: init devices outside of the chunk_mutex
    
    [ Upstream commit ca10845a56856fff4de3804c85e6424d0f6d0cde ]
    
    While running btrfs/061, btrfs/073, btrfs/078, or btrfs/178 we hit the
    following lockdep splat:
    
      ======================================================
      WARNING: possible circular locking dependency detected
      5.9.0-rc3+ #4 Not tainted
      ------------------------------------------------------
      kswapd0/100 is trying to acquire lock:
      ffff96ecc22ef4a0 (&delayed_node->mutex){+.+.}-{3:3}, at: __btrfs_release_delayed_node.part.0+0x3f/0x330
    
      but task is already holding lock:
      ffffffff8dd74700 (fs_reclaim){+.+.}-{0:0}, at: __fs_reclaim_acquire+0x5/0x30
    
      which lock already depends on the new lock.
    
      the existing dependency chain (in reverse order) is:
    
      -> #3 (fs_reclaim){+.+.}-{0:0}:
             fs_reclaim_acquire+0x65/0x80
             slab_pre_alloc_hook.constprop.0+0x20/0x200
             kmem_cache_alloc+0x37/0x270
             alloc_inode+0x82/0xb0
             iget_locked+0x10d/0x2c0
             kernfs_get_inode+0x1b/0x130
             kernfs_get_tree+0x136/0x240
             sysfs_get_tree+0x16/0x40
             vfs_get_tree+0x28/0xc0
             path_mount+0x434/0xc00
             __x64_sys_mount+0xe3/0x120
             do_syscall_64+0x33/0x40
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #2 (kernfs_mutex){+.+.}-{3:3}:
             __mutex_lock+0x7e/0x7e0
             kernfs_add_one+0x23/0x150
             kernfs_create_link+0x63/0xa0
             sysfs_do_create_link_sd+0x5e/0xd0
             btrfs_sysfs_add_devices_dir+0x81/0x130
             btrfs_init_new_device+0x67f/0x1250
             btrfs_ioctl+0x1ef/0x2e20
             __x64_sys_ioctl+0x83/0xb0
             do_syscall_64+0x33/0x40
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #1 (&fs_info->chunk_mutex){+.+.}-{3:3}:
             __mutex_lock+0x7e/0x7e0
             btrfs_chunk_alloc+0x125/0x3a0
             find_free_extent+0xdf6/0x1210
             btrfs_reserve_extent+0xb3/0x1b0
             btrfs_alloc_tree_block+0xb0/0x310
             alloc_tree_block_no_bg_flush+0x4a/0x60
             __btrfs_cow_block+0x11a/0x530
             btrfs_cow_block+0x104/0x220
             btrfs_search_slot+0x52e/0x9d0
             btrfs_insert_empty_items+0x64/0xb0
             btrfs_insert_delayed_items+0x90/0x4f0
             btrfs_commit_inode_delayed_items+0x93/0x140
             btrfs_log_inode+0x5de/0x2020
             btrfs_log_inode_parent+0x429/0xc90
             btrfs_log_new_name+0x95/0x9b
             btrfs_rename2+0xbb9/0x1800
             vfs_rename+0x64f/0x9f0
             do_renameat2+0x320/0x4e0
             __x64_sys_rename+0x1f/0x30
             do_syscall_64+0x33/0x40
             entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      -> #0 (&delayed_node->mutex){+.+.}-{3:3}:
             __lock_acquire+0x119c/0x1fc0
             lock_acquire+0xa7/0x3d0
             __mutex_lock+0x7e/0x7e0
             __btrfs_release_delayed_node.part.0+0x3f/0x330
             btrfs_evict_inode+0x24c/0x500
             evict+0xcf/0x1f0
             dispose_list+0x48/0x70
             prune_icache_sb+0x44/0x50
             super_cache_scan+0x161/0x1e0
             do_shrink_slab+0x178/0x3c0
             shrink_slab+0x17c/0x290
             shrink_node+0x2b2/0x6d0
             balance_pgdat+0x30a/0x670
             kswapd+0x213/0x4c0
             kthread+0x138/0x160
             ret_from_fork+0x1f/0x30
    
      other info that might help us debug this:
    
      Chain exists of:
        &delayed_node->mutex --> kernfs_mutex --> fs_reclaim
    
       Possible unsafe locking scenario:
    
             CPU0                    CPU1
             ----                    ----
        lock(fs_reclaim);
                                     lock(kernfs_mutex);
                                     lock(fs_reclaim);
        lock(&delayed_node->mutex);
    
       *** DEADLOCK ***
    
      3 locks held by kswapd0/100:
       #0: ffffffff8dd74700 (fs_reclaim){+.+.}-{0:0}, at: __fs_reclaim_acquire+0x5/0x30
       #1: ffffffff8dd65c50 (shrinker_rwsem){++++}-{3:3}, at: shrink_slab+0x115/0x290
       #2: ffff96ed2ade30e0 (&type->s_umount_key#36){++++}-{3:3}, at: super_cache_scan+0x38/0x1e0
    
      stack backtrace:
      CPU: 0 PID: 100 Comm: kswapd0 Not tainted 5.9.0-rc3+ #4
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      Call Trace:
       dump_stack+0x8b/0xb8
       check_noncircular+0x12d/0x150
       __lock_acquire+0x119c/0x1fc0
       lock_acquire+0xa7/0x3d0
       ? __btrfs_release_delayed_node.part.0+0x3f/0x330
       __mutex_lock+0x7e/0x7e0
       ? __btrfs_release_delayed_node.part.0+0x3f/0x330
       ? __btrfs_release_delayed_node.part.0+0x3f/0x330
       ? lock_acquire+0xa7/0x3d0
       ? find_held_lock+0x2b/0x80
       __btrfs_release_delayed_node.part.0+0x3f/0x330
       btrfs_evict_inode+0x24c/0x500
       evict+0xcf/0x1f0
       dispose_list+0x48/0x70
       prune_icache_sb+0x44/0x50
       super_cache_scan+0x161/0x1e0
       do_shrink_slab+0x178/0x3c0
       shrink_slab+0x17c/0x290
       shrink_node+0x2b2/0x6d0
       balance_pgdat+0x30a/0x670
       kswapd+0x213/0x4c0
       ? _raw_spin_unlock_irqrestore+0x41/0x50
       ? add_wait_queue_exclusive+0x70/0x70
       ? balance_pgdat+0x670/0x670
       kthread+0x138/0x160
       ? kthread_create_worker_on_cpu+0x40/0x40
       ret_from_fork+0x1f/0x30
    
    This happens because we are holding the chunk_mutex at the time of
    adding in a new device.  However we only need to hold the
    device_list_mutex, as we're going to iterate over the fs_devices
    devices.  Move the sysfs init stuff outside of the chunk_mutex to get
    rid of this lockdep splat.
    
    CC: stable@vger.kernel.org # 4.4.x: f3cd2c58110dad14e: btrfs: sysfs, rename device_link add/remove functions
    CC: stable@vger.kernel.org # 4.4.x
    Reported-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8ac0a578021813f1eb30c7b8974fbb5f7d4c2b9
Author: Ming Lei <ming.lei@redhat.com>
Date:   Wed Oct 28 15:24:34 2020 +0800

    nbd: don't update block size after device is started
    
    [ Upstream commit b40813ddcd6bf9f01d020804e4cb8febc480b9e4 ]
    
    Mounted NBD device can be resized, one use case is rbd-nbd.
    
    Fix the issue by setting up default block size, then not touch it
    in nbd_size_update() any more. This kind of usage is aligned with loop
    which has same use case too.
    
    Cc: stable@vger.kernel.org
    Fixes: c8a83a6b54d0 ("nbd: Use set_blocksize() to set device blocksize")
    Reported-by: lining <lining2020x@163.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Cc: Josef Bacik <josef@toxicpanda.com>
    Cc: Jan Kara <jack@suse.cz>
    Tested-by: lining <lining2020x@163.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b0c077318aa0ba8b0341d6de4f3da58dd0e56f4
Author: Zeng Tao <prime.zeng@hisilicon.com>
Date:   Tue Sep 1 17:30:13 2020 +0800

    time: Prevent undefined behaviour in timespec64_to_ns()
    
    [ Upstream commit cb47755725da7b90fecbb2aa82ac3b24a7adb89b ]
    
    UBSAN reports:
    
    Undefined behaviour in ./include/linux/time64.h:127:27
    signed integer overflow:
    17179869187 * 1000000000 cannot be represented in type 'long long int'
    Call Trace:
     timespec64_to_ns include/linux/time64.h:127 [inline]
     set_cpu_itimer+0x65c/0x880 kernel/time/itimer.c:180
     do_setitimer+0x8e/0x740 kernel/time/itimer.c:245
     __x64_sys_setitimer+0x14c/0x2c0 kernel/time/itimer.c:336
     do_syscall_64+0xa1/0x540 arch/x86/entry/common.c:295
    
    Commit bd40a175769d ("y2038: itimer: change implementation to timespec64")
    replaced the original conversion which handled time clamping correctly with
    timespec64_to_ns() which has no overflow protection.
    
    Fix it in timespec64_to_ns() as this is not necessarily limited to the
    usage in itimers.
    
    [ tglx: Added comment and adjusted the fixes tag ]
    
    Fixes: 361a3bf00582 ("time64: Add time64.h header and define struct timespec64")
    Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/1598952616-6416-1-git-send-email-prime.zeng@hisilicon.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

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

commit f97472014d600720a56a99e9904e329bbf3bddc5
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Mon Nov 2 15:31:27 2020 -0500

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

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

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