commit 3f7c1cab1a61108821cf47dda8a32ed25cc3588b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat May 25 18:22:32 2019 +0200

    Linux 5.0.19

commit 64d314bd8cc887db7ff9822e38226b08ffc49715
Author: Yifeng Li <tomli@tomli.me>
Date:   Tue Apr 2 17:14:10 2019 +0200

    fbdev: sm712fb: fix memory frequency by avoiding a switch/case fallthrough
    
    commit 9dc20113988b9a75ea6b3abd68dc45e2d73ccdab upstream.
    
    A fallthrough in switch/case was introduced in f627caf55b8e ("fbdev:
    sm712fb: fix crashes and garbled display during DPMS modesetting"),
    due to my copy-paste error, which would cause the memory clock frequency
    for SM720 to be programmed to SM712.
    
    Since it only reprograms the clock to a different frequency, it's only
    a benign issue without visible side-effect, so it also evaded Sudip
    Mukherjee's code review and regression tests. scripts/checkpatch.pl
    also failed to discover the issue, possibly due to nested switch
    statements.
    
    This issue was found by Stephen Rothwell by building linux-next with
    -Wimplicit-fallthrough.
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Fixes: f627caf55b8e ("fbdev: sm712fb: fix crashes and garbled display during DPMS modesetting")
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5c6d75b0f03958239c3d223472d00d54a6ea96a
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue May 14 01:18:56 2019 +0200

    bpf, lru: avoid messing with eviction heuristics upon syscall lookup
    
    commit 50b045a8c0ccf44f76640ac3eea8d80ca53979a3 upstream.
    
    One of the biggest issues we face right now with picking LRU map over
    regular hash table is that a map walk out of user space, for example,
    to just dump the existing entries or to remove certain ones, will
    completely mess up LRU eviction heuristics and wrong entries such
    as just created ones will get evicted instead. The reason for this
    is that we mark an entry as "in use" via bpf_lru_node_set_ref() from
    system call lookup side as well. Thus upon walk, all entries are
    being marked, so information of actual least recently used ones
    are "lost".
    
    In case of Cilium where it can be used (besides others) as a BPF
    based connection tracker, this current behavior causes disruption
    upon control plane changes that need to walk the map from user space
    to evict certain entries. Discussion result from bpfconf [0] was that
    we should simply just remove marking from system call side as no
    good use case could be found where it's actually needed there.
    Therefore this patch removes marking for regular LRU and per-CPU
    flavor. If there ever should be a need in future, the behavior could
    be selected via map creation flag, but due to mentioned reason we
    avoid this here.
    
      [0] http://vger.kernel.org/bpfconf.html
    
    Fixes: 29ba732acbee ("bpf: Add BPF_MAP_TYPE_LRU_HASH")
    Fixes: 8f8449384ec3 ("bpf: Add BPF_MAP_TYPE_LRU_PERCPU_HASH")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5f95aa7a88bd95b11a7b8e32ec09a5554b8e855
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue May 14 01:18:55 2019 +0200

    bpf: add map_lookup_elem_sys_only for lookups from syscall side
    
    commit c6110222c6f49ea68169f353565eb865488a8619 upstream.
    
    Add a callback map_lookup_elem_sys_only() that map implementations
    could use over map_lookup_elem() from system call side in case the
    map implementation needs to handle the latter differently than from
    the BPF data path. If map_lookup_elem_sys_only() is set, this will
    be preferred pick for map lookups out of user space. This hook is
    used in a follow-up fix for LRU map, but once development window
    opens, we can convert other map types from map_lookup_elem() (here,
    the one called upon BPF_MAP_LOOKUP_ELEM cmd is meant) over to use
    the callback to simplify and clean up the latter.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d811930f74ac7a24342b1882fdfb9a01caca90d6
Author: Chenbo Feng <fengc@google.com>
Date:   Tue May 14 19:42:57 2019 -0700

    bpf: relax inode permission check for retrieving bpf program
    
    commit e547ff3f803e779a3898f1f48447b29f43c54085 upstream.
    
    For iptable module to load a bpf program from a pinned location, it
    only retrieve a loaded program and cannot change the program content so
    requiring a write permission for it might not be necessary.
    Also when adding or removing an unrelated iptable rule, it might need to
    flush and reload the xt_bpf related rules as well and triggers the inode
    permission check. It might be better to remove the write premission
    check for the inode so we won't need to grant write access to all the
    processes that flush and restore iptables rules.
    
    Signed-off-by: Chenbo Feng <fengc@google.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca7ef7e3ddfad32558d2aade0e827d720661eb13
Author: John Garry <john.garry@huawei.com>
Date:   Thu Mar 28 18:08:05 2019 +0800

    driver core: Postpone DMA tear-down until after devres release for probe failure
    
    commit 0b777eee88d712256ba8232a9429edb17c4f9ceb upstream.
    
    In commit 376991db4b64 ("driver core: Postpone DMA tear-down until after
    devres release"), we changed the ordering of tearing down the device DMA
    ops and releasing all the device's resources; this was because the DMA ops
    should be maintained until we release the device's managed DMA memories.
    
    However, we have seen another crash on an arm64 system when a
    device driver probe fails:
    
      hisi_sas_v3_hw 0000:74:02.0: Adding to iommu group 2
      scsi host1: hisi_sas_v3_hw
      BUG: Bad page state in process swapper/0  pfn:313f5
      page:ffff7e0000c4fd40 count:1 mapcount:0
      mapping:0000000000000000 index:0x0
      flags: 0xfffe00000001000(reserved)
      raw: 0fffe00000001000 ffff7e0000c4fd48 ffff7e0000c4fd48
    0000000000000000
      raw: 0000000000000000 0000000000000000 00000001ffffffff
    0000000000000000
      page dumped because: PAGE_FLAGS_CHECK_AT_FREE flag(s) set
      bad because of flags: 0x1000(reserved)
      Modules linked in:
      CPU: 49 PID: 1 Comm: swapper/0 Not tainted
    5.1.0-rc1-43081-g22d97fd-dirty #1433
      Hardware name: Huawei D06/D06, BIOS Hisilicon D06 UEFI
    RC0 - V1.12.01 01/29/2019
      Call trace:
      dump_backtrace+0x0/0x118
      show_stack+0x14/0x1c
      dump_stack+0xa4/0xc8
      bad_page+0xe4/0x13c
      free_pages_check_bad+0x4c/0xc0
      __free_pages_ok+0x30c/0x340
      __free_pages+0x30/0x44
      __dma_direct_free_pages+0x30/0x38
      dma_direct_free+0x24/0x38
      dma_free_attrs+0x9c/0xd8
      dmam_release+0x20/0x28
      release_nodes+0x17c/0x220
      devres_release_all+0x34/0x54
      really_probe+0xc4/0x2c8
      driver_probe_device+0x58/0xfc
      device_driver_attach+0x68/0x70
      __driver_attach+0x94/0xdc
      bus_for_each_dev+0x5c/0xb4
      driver_attach+0x20/0x28
      bus_add_driver+0x14c/0x200
      driver_register+0x6c/0x124
      __pci_register_driver+0x48/0x50
      sas_v3_pci_driver_init+0x20/0x28
      do_one_initcall+0x40/0x25c
      kernel_init_freeable+0x2b8/0x3c0
      kernel_init+0x10/0x100
      ret_from_fork+0x10/0x18
      Disabling lock debugging due to kernel taint
      BUG: Bad page state in process swapper/0  pfn:313f6
      page:ffff7e0000c4fd80 count:1 mapcount:0
    mapping:0000000000000000 index:0x0
    [   89.322983] flags: 0xfffe00000001000(reserved)
      raw: 0fffe00000001000 ffff7e0000c4fd88 ffff7e0000c4fd88
    0000000000000000
      raw: 0000000000000000 0000000000000000 00000001ffffffff
    0000000000000000
    
    The crash occurs for the same reason.
    
    In this case, on the really_probe() failure path, we are still clearing
    the DMA ops prior to releasing the device's managed memories.
    
    This patch fixes this issue by reordering the DMA ops teardown and the
    call to devres_release_all() on the failure path.
    
    Reported-by: Xiang Chen <chenxiang66@hisilicon.com>
    Tested-by: Xiang Chen <chenxiang66@hisilicon.com>
    Signed-off-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bad4fbe76cfbf51ad8a712e74121b2778a9be4ef
Author: Nigel Croxon <ncroxon@redhat.com>
Date:   Tue Apr 16 09:50:09 2019 -0700

    md/raid: raid5 preserve the writeback action after the parity check
    
    commit b2176a1dfb518d870ee073445d27055fea64dfb8 upstream.
    
    The problem is that any 'uptodate' vs 'disks' check is not precise
    in this path. Put a "WARN_ON(!test_bit(R5_UPTODATE, &dev->flags)" on the
    device that might try to kick off writes and then skip the action.
    Better to prevent the raid driver from taking unexpected action *and* keep
    the system alive vs killing the machine with BUG_ON.
    
    Note: fixed warning reported by kbuild test robot <lkp@intel.com>
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3770eb3721be4a1a15a3b5c771e1a3147c21b2d8
Author: Song Liu <songliubraving@fb.com>
Date:   Tue Apr 16 09:34:21 2019 -0700

    Revert "Don't jump to compute_result state from check_result state"
    
    commit a25d8c327bb41742dbd59f8c545f59f3b9c39983 upstream.
    
    This reverts commit 4f4fd7c5798bbdd5a03a60f6269cf1177fbd11ef.
    
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Nigel Croxon <ncroxon@redhat.com>
    Cc: Xiao Ni <xni@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07116a6548c80a2c1e470f9e18a9ca8fdb5d3262
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Sat May 4 17:15:56 2019 +0200

    perf/x86/intel: Fix race in intel_pmu_disable_event()
    
    [ Upstream commit 6f55967ad9d9752813e36de6d5fdbd19741adfc7 ]
    
    New race in x86_pmu_stop() was introduced by replacing the
    atomic __test_and_clear_bit() of cpuc->active_mask by separate
    test_bit() and __clear_bit() calls in the following commit:
    
      3966c3feca3f ("x86/perf/amd: Remove need to check "running" bit in NMI handler")
    
    The race causes panic for PEBS events with enabled callchains:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
      ...
      RIP: 0010:perf_prepare_sample+0x8c/0x530
      Call Trace:
       <NMI>
       perf_event_output_forward+0x2a/0x80
       __perf_event_overflow+0x51/0xe0
       handle_pmi_common+0x19e/0x240
       intel_pmu_handle_irq+0xad/0x170
       perf_event_nmi_handler+0x2e/0x50
       nmi_handle+0x69/0x110
       default_do_nmi+0x3e/0x100
       do_nmi+0x11a/0x180
       end_repeat_nmi+0x16/0x1a
      RIP: 0010:native_write_msr+0x6/0x20
      ...
       </NMI>
       intel_pmu_disable_event+0x98/0xf0
       x86_pmu_stop+0x6e/0xb0
       x86_pmu_del+0x46/0x140
       event_sched_out.isra.97+0x7e/0x160
      ...
    
    The event is configured to make samples from PEBS drain code,
    but when it's disabled, we'll go through NMI path instead,
    where data->callchain will not get allocated and we'll crash:
    
              x86_pmu_stop
                test_bit(hwc->idx, cpuc->active_mask)
                intel_pmu_disable_event(event)
                {
                  ...
                  intel_pmu_pebs_disable(event);
                  ...
    
    EVENT OVERFLOW ->  <NMI>
                         intel_pmu_handle_irq
                           handle_pmi_common
       TEST PASSES ->        test_bit(bit, cpuc->active_mask))
                               perf_event_overflow
                                 perf_prepare_sample
                                 {
                                   ...
                                   if (!(sample_type & __PERF_SAMPLE_CALLCHAIN_EARLY))
                                         data->callchain = perf_callchain(event, regs);
    
             CRASH ->              size += data->callchain->nr;
                                 }
                       </NMI>
                  ...
                  x86_pmu_disable_event(event)
                }
    
                __clear_bit(hwc->idx, cpuc->active_mask);
    
    Fixing this by disabling the event itself before setting
    off the PEBS bit.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Arcari <darcari@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Lendacky Thomas <Thomas.Lendacky@amd.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: 3966c3feca3f ("x86/perf/amd: Remove need to check "running" bit in NMI handler")
    Link: http://lkml.kernel.org/r/20190504151556.31031-1-jolsa@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58d1e074c74287b9f92e8ef357372e6189ccf0a7
Author: Leo Yan <leo.yan@linaro.org>
Date:   Sun Apr 28 16:32:27 2019 +0800

    perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet
    
    [ Upstream commit 35bb59c10a6d0578806dd500477dae9cb4be344e ]
    
    Robert Walker reported a segmentation fault is observed when process
    CoreSight trace data; this issue can be easily reproduced by the command
    'perf report --itrace=i1000i' for decoding tracing data.
    
    If neither the 'b' flag (synthesize branches events) nor 'l' flag
    (synthesize last branch entries) are specified to option '--itrace',
    cs_etm_queue::prev_packet will not been initialised.  After merging the
    code to support exception packets and sample flags, there introduced a
    number of uses of cs_etm_queue::prev_packet without checking whether it
    is valid, for these cases any accessing to uninitialised prev_packet
    will cause crash.
    
    As cs_etm_queue::prev_packet is used more widely now and it's already
    hard to follow which functions have been called in a context where the
    validity of cs_etm_queue::prev_packet has been checked, this patch
    always allocates memory for cs_etm_queue::prev_packet.
    
    Reported-by: Robert Walker <robert.walker@arm.com>
    Suggested-by: Robert Walker <robert.walker@arm.com>
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Tested-by: Robert Walker <robert.walker@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Suzuki K Poulouse <suzuki.poulose@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Fixes: 7100b12cf474 ("perf cs-etm: Generate branch sample for exception packet")
    Fixes: 24fff5eb2b93 ("perf cs-etm: Avoid stale branch samples when flush packet")
    Link: http://lkml.kernel.org/r/20190428083228.20246-1-leo.yan@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd448c27b08eabae019f7d933f6313768617ad0d
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Apr 25 18:36:51 2019 -0300

    perf bench numa: Add define for RUSAGE_THREAD if not present
    
    [ Upstream commit bf561d3c13423fc54daa19b5d49dc15fafdb7acc ]
    
    While cross building perf to the ARC architecture on a fedora 30 host,
    we were failing with:
    
          CC       /tmp/build/perf/bench/numa.o
      bench/numa.c: In function ‘worker_thread’:
      bench/numa.c:1261:12: error: ‘RUSAGE_THREAD’ undeclared (first use in this function); did you mean ‘SIGEV_THREAD’?
        getrusage(RUSAGE_THREAD, &rusage);
                  ^~~~~~~~~~~~~
                  SIGEV_THREAD
      bench/numa.c:1261:12: note: each undeclared identifier is reported only once for each function it appears in
    
    [perfbuilder@60d5802468f6 perf]$ /arc_gnu_2019.03-rc1_prebuilt_uclibc_le_archs_linux_install/bin/arc-linux-gcc --version | head -1
    arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1) 8.3.1 20190225
    [perfbuilder@60d5802468f6 perf]$
    
    Trying to reproduce a report by Vineet, I noticed that, with just
    cross-built zlib and numactl libraries, I ended up with the above
    failure.
    
    So, since RUSAGE_THREAD is available as a define, check for that and
    numactl libraries, I ended up with the above failure.
    
    So, since RUSAGE_THREAD is available as a define in the system headers,
    check if it is defined in the 'perf bench numa' sources and define it if
    not.
    
    Now it builds and I have to figure out if the problem reported by Vineet
    only takes place if we have libelf or some other library available.
    
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: linux-snps-arc@lists.infradead.org
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
    Link: https://lkml.kernel.org/n/tip-2wb4r1gir9xrevbpq7qp0amk@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7325696ce2614d4a6de0f7c8ca5527f47db7cc36
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Wed Apr 24 18:16:32 2019 +0200

    i2c: designware: ratelimit 'transfer when suspended' errors
    
    [ Upstream commit 6bac9bc273cdab6157ad7a2ead09400aabfc445b ]
    
    There are two problems with dev_err() here. One: It is not ratelimited.
    Two: We don't see which driver tried to transfer something with a
    suspended adapter. Switch to dev_WARN_ONCE to fix both issues. Drawback
    is that we don't see if multiple drivers are trying to transfer while
    suspended. They need to be discovered one after the other now. This is
    better than a high CPU load because a really broken driver might try to
    resend endlessly.
    
    Link: https://bugs.archlinux.org/task/62391
    Fixes: 275154155538 ("i2c: designware: Do not allow i2c_dw_xfer() calls while suspended")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reported-by: skidnik <skidnik@gmail.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Tested-by: skidnik <skidnik@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8258661858d56b5ec28f830da32d942e0687a3c0
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed May 1 22:46:11 2019 -0400

    ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour
    
    [ Upstream commit 4e9036042fedaffcd868d7f7aa948756c48c637d ]
    
    To choose whether to pick the GID from the old (16bit) or new (32bit)
    field, we should check if the old gid field is set to 0xffff.  Mainline
    checks the old *UID* field instead - cut'n'paste from the corresponding
    code in ufs_get_inode_uid().
    
    Fixes: 252e211e90ce
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b73764a5d2cd625929fd5b21d9697b841368364
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Apr 26 15:27:11 2019 +0200

    KVM: selftests: make hyperv_cpuid test pass on AMD
    
    [ Upstream commit eba3afde1cea7dbd7881683232f2a85e2ed86bfe ]
    
    Enlightened VMCS is only supported on Intel CPUs but the test shouldn't
    fail completely.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb654d0763c83406347588f4544d6507c7ee51d7
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Apr 17 15:28:44 2019 +0200

    KVM: fix KVM_CLEAR_DIRTY_LOG for memory slots of unaligned size
    
    [ Upstream commit 76d58e0f07ec203bbdfcaabd9a9fc10a5a3ed5ea ]
    
    If a memory slot's size is not a multiple of 64 pages (256K), then
    the KVM_CLEAR_DIRTY_LOG API is unusable: clearing the final 64 pages
    either requires the requested page range to go beyond memslot->npages,
    or requires log->num_pages to be unaligned, and kvm_clear_dirty_log_protect
    requires log->num_pages to be both in range and aligned.
    
    To allow this case, allow log->num_pages not to be a multiple of 64 if
    it ends exactly on the last page of the slot.
    
    Reported-by: Peter Xu <peterx@redhat.com>
    Fixes: 98938aa8edd6 ("KVM: validate userspace input in kvm_clear_dirty_log_protect()", 2019-01-02)
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 497ce5c7f5387d7cc0a17c414b247b1e7ef7e288
Author: Gary Hook <Gary.Hook@amd.com>
Date:   Mon Apr 29 22:22:58 2019 +0000

    x86/mm/mem_encrypt: Disable all instrumentation for early SME setup
    
    [ Upstream commit b51ce3744f115850166f3d6c292b9c8cb849ad4f ]
    
    Enablement of AMD's Secure Memory Encryption feature is determined very
    early after start_kernel() is entered. Part of this procedure involves
    scanning the command line for the parameter 'mem_encrypt'.
    
    To determine intended state, the function sme_enable() uses library
    functions cmdline_find_option() and strncmp(). Their use occurs early
    enough such that it cannot be assumed that any instrumentation subsystem
    is initialized.
    
    For example, making calls to a KASAN-instrumented function before KASAN
    is set up will result in the use of uninitialized memory and a boot
    failure.
    
    When AMD's SME support is enabled, conditionally disable instrumentation
    of these dependent functions in lib/string.c and arch/x86/lib/cmdline.c.
    
     [ bp: Get rid of intermediary nostackp var and cleanup whitespace. ]
    
    Fixes: aca20d546214 ("x86/mm: Add support to make use of Secure Memory Encryption")
    Reported-by: Li RongQing <lirongqing@baidu.com>
    Signed-off-by: Gary R Hook <gary.hook@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Boris Brezillon <bbrezillon@kernel.org>
    Cc: Coly Li <colyli@suse.de>
    Cc: "dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Cc: "luto@kernel.org" <luto@kernel.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: "mingo@redhat.com" <mingo@redhat.com>
    Cc: "peterz@infradead.org" <peterz@infradead.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/155657657552.7116.18363762932464011367.stgit@sosrh3.amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96f0be982c8a112d1dbf5eb520757f614764707c
Author: Tobin C. Harding <tobin@kernel.org>
Date:   Tue Apr 30 10:11:44 2019 +1000

    sched/cpufreq: Fix kobject memleak
    
    [ Upstream commit 9a4f26cc98d81b67ecc23b890c28e2df324e29f3 ]
    
    Currently the error return path from kobject_init_and_add() is not
    followed by a call to kobject_put() - which means we are leaking
    the kobject.
    
    Fix it by adding a call to kobject_put() in the error path of
    kobject_init_and_add().
    
    Signed-off-by: Tobin C. Harding <tobin@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tobin C. Harding <tobin@kernel.org>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Link: http://lkml.kernel.org/r/20190430001144.24890-1-tobin@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a9605f177f810297258df2805aa5c791ae468f0
Author: Luca Coelho <luciano.coelho@intel.com>
Date:   Tue Apr 16 12:57:21 2019 +0300

    iwlwifi: mvm: check for length correctness in iwl_mvm_create_skb()
    
    [ Upstream commit de1887c064b9996ac03120d90d0a909a3f678f98 ]
    
    We don't check for the validity of the lengths in the packet received
    from the firmware.  If the MPDU length received in the rx descriptor
    is too short to contain the header length and the crypt length
    together, we may end up trying to copy a negative number of bytes
    (headlen - hdrlen < 0) which will underflow and cause us to try to
    copy a huge amount of data.  This causes oopses such as this one:
    
    BUG: unable to handle kernel paging request at ffff896be2970000
    PGD 5e201067 P4D 5e201067 PUD 5e205067 PMD 16110d063 PTE 8000000162970161
    Oops: 0003 [#1] PREEMPT SMP NOPTI
    CPU: 2 PID: 1824 Comm: irq/134-iwlwifi Not tainted 4.19.33-04308-geea41cf4930f #1
    Hardware name: [...]
    RIP: 0010:memcpy_erms+0x6/0x10
    Code: 90 90 90 90 eb 1e 0f 1f 00 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07 f3 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 <f3> a4 c3
     0f 1f 80 00 00 00 00 48 89 f8 48 83 fa 20 72 7e 40 38 fe
    RSP: 0018:ffffa4630196fc60 EFLAGS: 00010287
    RAX: ffff896be2924618 RBX: ffff896bc8ecc600 RCX: 00000000fffb4610
    RDX: 00000000fffffff8 RSI: ffff896a835e2a38 RDI: ffff896be2970000
    RBP: ffffa4630196fd30 R08: ffff896bc8ecc600 R09: ffff896a83597000
    R10: ffff896bd6998400 R11: 000000000200407f R12: ffff896a83597050
    R13: 00000000fffffff8 R14: 0000000000000010 R15: ffff896a83597038
    FS:  0000000000000000(0000) GS:ffff896be8280000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffff896be2970000 CR3: 000000005dc12002 CR4: 00000000003606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     iwl_mvm_rx_mpdu_mq+0xb51/0x121b [iwlmvm]
     iwl_pcie_rx_handle+0x58c/0xa89 [iwlwifi]
     iwl_pcie_irq_rx_msix_handler+0xd9/0x12a [iwlwifi]
     irq_thread_fn+0x24/0x49
     irq_thread+0xb0/0x122
     kthread+0x138/0x140
     ret_from_fork+0x1f/0x40
    
    Fix that by checking the lengths for correctness and trigger a warning
    to show that we have received wrong data.
    
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df5eba5f41be863c209932b35f06cb7082f81716
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Apr 24 19:12:46 2019 +0200

    qmi_wwan: new Wistron, ZTE and D-Link devices
    
    [ Upstream commit 88ef66a28391ea7b624bfb7508a5b015c13b28f3 ]
    
    Adding device entries found in vendor modified versions of this
    driver.  Function maps for some of the devices follow:
    
    WNC D16Q1, D16Q5, D18Q1 LTE CAT3 module (1435:0918)
    
    MI_00 Qualcomm HS-USB Diagnostics
    MI_01 Android Debug interface
    MI_02 Qualcomm HS-USB Modem
    MI_03 Qualcomm Wireless HS-USB Ethernet Adapter
    MI_04 Qualcomm Wireless HS-USB Ethernet Adapter
    MI_05 Qualcomm Wireless HS-USB Ethernet Adapter
    MI_06 USB Mass Storage Device
    
     T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
     D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
     P:  Vendor=1435 ProdID=0918 Rev= 2.32
     S:  Manufacturer=Android
     S:  Product=Android
     S:  SerialNumber=0123456789ABCDEF
     C:* #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=500mA
     I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
     E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
     E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
     E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
     E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
     E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
     E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
     E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
     E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
     E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
     E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
     E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    WNC D18 LTE CAT3 module (1435:d182)
    
    MI_00 Qualcomm HS-USB Diagnostics
    MI_01 Androd Debug interface
    MI_02 Qualcomm HS-USB Modem
    MI_03 Qualcomm HS-USB NMEA
    MI_04 Qualcomm Wireless HS-USB Ethernet Adapter
    MI_05 Qualcomm Wireless HS-USB Ethernet Adapter
    MI_06 USB Mass Storage Device
    
    ZM8510/ZM8620/ME3960 (19d2:0396)
    
    MI_00 ZTE Mobile Broadband Diagnostics Port
    MI_01 ZTE Mobile Broadband AT Port
    MI_02 ZTE Mobile Broadband Modem
    MI_03 ZTE Mobile Broadband NDIS Port (qmi_wwan)
    MI_04 ZTE Mobile Broadband ADB Port
    
    ME3620_X (19d2:1432)
    
    MI_00 ZTE Diagnostics Device
    MI_01 ZTE UI AT Interface
    MI_02 ZTE Modem Device
    MI_03 ZTE Mobile Broadband Network Adapter
    MI_04 ZTE Composite ADB Interface
    
    Reported-by: Lars Melin <larsm17@gmail.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd61ddd3e9fc45a9c7d8852827fec9f3693d278d
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Apr 23 21:55:59 2019 +0200

    bpf: Fix preempt_enable_no_resched() abuse
    
    [ Upstream commit 0edd6b64d1939e9e9168ff27947995bb7751db5d ]
    
    Unless the very next line is schedule(), or implies it, one must not use
    preempt_enable_no_resched(). It can cause a preemption to go missing and
    thereby cause arbitrary delays, breaking the PREEMPT=y invariant.
    
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd3713424a01a3ceb684a354363d5239eec1e9ee
Author: Alban Crequy <alban@kinvolk.io>
Date:   Fri Apr 12 14:40:50 2019 +0200

    tools: bpftool: fix infinite loop in map create
    
    [ Upstream commit 8694d8c1f82cccec9380e0d3720b84eee315dfb7 ]
    
    "bpftool map create" has an infinite loop on "while (argc)". The error
    case is missing.
    
    Symptoms: when forgetting to type the keyword 'type' in front of 'hash':
    $ sudo bpftool map create /sys/fs/bpf/dir/foobar hash key 8 value 8 entries 128
    (infinite loop, taking all the CPU)
    ^C
    
    After the patch:
    $ sudo bpftool map create /sys/fs/bpf/dir/foobar hash key 8 value 8 entries 128
    Error: unknown arg hash
    
    Fixes: 0b592b5a01be ("tools: bpftool: add map create command")
    Signed-off-by: Alban Crequy <alban@kinvolk.io>
    Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
    Acked-by: Song Liu <songliubraving@fb.com>
    Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e61a219090fdc7f17286a315fcebd34fd784c46
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Date:   Wed Apr 24 00:16:10 2019 -0700

    power: supply: sysfs: prevent endless uevent loop with CONFIG_POWER_SUPPLY_DEBUG
    
    [ Upstream commit 349ced9984ff540ce74ca8a0b2e9b03dc434b9dd ]
    
    Fix a similar endless event loop as was done in commit
    8dcf32175b4e ("i2c: prevent endless uevent loop with
    CONFIG_I2C_DEBUG_CORE"):
    
      The culprit is the dev_dbg printk in the i2c uevent handler. If
      this is activated (for instance by CONFIG_I2C_DEBUG_CORE) it results
      in an endless loop with systemd-journald.
    
      This happens if user-space scans the system log and reads the uevent
      file to get information about a newly created device, which seems
      fair use to me. Unfortunately reading the "uevent" file uses the
      same function that runs for creating the uevent for a new device,
      generating the next syslog entry
    
    Both CONFIG_I2C_DEBUG_CORE and CONFIG_POWER_SUPPLY_DEBUG were reported
    in https://bugs.freedesktop.org/show_bug.cgi?id=76886 but only former
    seems to have been fixed. Drop debug prints as it was done in I2C
    subsystem to resolve the issue.
    
    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Cc: Chris Healy <cphealy@gmail.com>
    Cc: linux-pm@vger.kernel.org
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e6ae439228972264d28461ab1a36d9ffd1b78261
Author: Andrew Jones <drjones@redhat.com>
Date:   Thu Apr 4 19:42:30 2019 +0200

    KVM: arm/arm64: Ensure vcpu target is unset on reset failure
    
    [ Upstream commit 811328fc3222f7b55846de0cd0404339e2e1e6d7 ]
    
    A failed KVM_ARM_VCPU_INIT should not set the vcpu target,
    as the vcpu target is used by kvm_vcpu_initialized() to
    determine if other vcpu ioctls may proceed. We need to set
    the target before calling kvm_reset_vcpu(), but if that call
    fails, we should then unset it and clear the feature bitmap
    while we're at it.
    
    Signed-off-by: Andrew Jones <drjones@redhat.com>
    [maz: Simplified patch, completed commit message]
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5450811a02f53b1e2b3b3a2a297f7af5f3e51623
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Sun Mar 24 18:18:56 2019 -0500

    net: ieee802154: fix missing checks for regmap_update_bits
    
    [ Upstream commit 22e8860cf8f777fbf6a83f2fb7127f682a8e9de4 ]
    
    regmap_update_bits could fail and deserves a check.
    
    The patch adds the checks and if it fails, returns its error
    code upstream.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15f64f420bae7556233ac5e3c8d2ff732ee9d979
Author: Bhagavathi Perumal S <bperumal@codeaurora.org>
Date:   Tue Apr 16 12:54:40 2019 +0530

    mac80211: Fix kernel panic due to use of txq after free
    
    [ Upstream commit f1267cf3c01b12e0f843fb6a7450a7f0b2efab8a ]
    
    The txq of vif is added to active_txqs list for ATF TXQ scheduling
    in the function ieee80211_queue_skb(), but it was not properly removed
    before freeing the txq object. It was causing use after free of the txq
    objects from the active_txqs list, result was kernel panic
    due to invalid memory access.
    
    Fix kernel invalid memory access by properly removing txq object
    from active_txqs list before free the object.
    
    Signed-off-by: Bhagavathi Perumal S <bperumal@codeaurora.org>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eff6d5429bd2814cb8ebbe832b19a344be4ff80f
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Mar 20 18:43:20 2019 +0100

    x86: kvm: hyper-v: deal with buggy TLB flush requests from WS2012
    
    [ Upstream commit da66761c2d93a46270d69001abb5692717495a68 ]
    
    It was reported that with some special Multi Processor Group configuration,
    e.g:
     bcdedit.exe /set groupsize 1
     bcdedit.exe /set maxgroup on
     bcdedit.exe /set groupaware on
    for a 16-vCPU guest WS2012 shows BSOD on boot when PV TLB flush mechanism
    is in use.
    
    Tracing kvm_hv_flush_tlb immediately reveals the issue:
    
     kvm_hv_flush_tlb: processor_mask 0x0 address_space 0x0 flags 0x2
    
    The only flag set in this request is HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES,
    however, processor_mask is 0x0 and no HV_FLUSH_ALL_PROCESSORS is specified.
    We don't flush anything and apparently it's not what Windows expects.
    
    TLFS doesn't say anything about such requests and newer Windows versions
    seem to be unaffected. This all feels like a WS2012 bug, which is, however,
    easy to workaround in KVM: let's flush everything when we see an empty
    flush request, over-flushing doesn't hurt.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48be4d7ced2cd62430c01c9bd62afa734540caeb
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Wed Apr 10 15:05:31 2019 -0600

    PCI: Fix issue with "pci=disable_acs_redir" parameter being ignored
    
    [ Upstream commit d5bc73f34cc97c4b4b9202cc93182c2515076edf ]
    
    In most cases, kmalloc() will not be available early in boot when
    pci_setup() is called.  Thus, the kstrdup() call that was added to fix the
    __initdata bug with the disable_acs_redir parameter usually returns NULL,
    so the parameter is discarded and has no effect.
    
    To fix this, store the string that's in initdata until an initcall function
    can allocate the memory appropriately.  This way we don't need any
    additional static memory.
    
    Fixes: d2fd6e81912a ("PCI: Fix __initdata issue with "pci=disable_acs_redir" parameter")
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa42fde1f8e6da596de8e0bb1e353bc8ce000bc2
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Apr 10 14:04:34 2019 -0400

    apparmorfs: fix use-after-free on symlink traversal
    
    [ Upstream commit f51dcd0f621caac5380ce90fbbeafc32ce4517ae ]
    
    symlink body shouldn't be freed without an RCU delay.  Switch apparmorfs
    to ->destroy_inode() and use of call_rcu(); free both the inode and symlink
    body in the callback.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cf0259f7662a84b20ac3a71b9e1cc9e918e9a244
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Apr 10 14:03:45 2019 -0400

    securityfs: fix use-after-free on symlink traversal
    
    [ Upstream commit 46c874419652bbefdfed17420fd6e88d8a31d9ec ]
    
    symlink body shouldn't be freed without an RCU delay.  Switch securityfs
    to ->destroy_inode() and use of call_rcu(); free both the inode and symlink
    body in the callback.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04aa8a51e7230e9e84ddc6a52b9934394a47d31e
Author: Tony Lindgren <tony@atomide.com>
Date:   Sun Apr 7 11:12:48 2019 -0700

    power: supply: cpcap-battery: Fix division by zero
    
    [ Upstream commit dbe7208c6c4aec083571f2ec742870a0d0edbea3 ]
    
    If called fast enough so samples do not increment, we can get
    division by zero in kernel:
    
    __div0
    cpcap_battery_cc_raw_div
    cpcap_battery_get_property
    power_supply_get_property.part.1
    power_supply_get_property
    power_supply_show_property
    power_supply_uevent
    
    Fixes: 874b2adbed12 ("power: supply: cpcap-battery: Add a battery driver")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Acked-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38a725dd0be77e83b6b546b2060d7f37512f83e5
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Fri Mar 29 16:41:13 2019 +1100

    KVM: PPC: Book3S: Protect memslots while validating user address
    
    [ Upstream commit 345077c8e172c255ea0707214303ccd099e5656b ]
    
    Guest physical to user address translation uses KVM memslots and reading
    these requires holding the kvm->srcu lock. However recently introduced
    kvmppc_tce_validate() broke the rule (see the lockdep warning below).
    
    This moves srcu_read_lock(&vcpu->kvm->srcu) earlier to protect
    kvmppc_tce_validate() as well.
    
    =============================
    WARNING: suspicious RCU usage
    5.1.0-rc2-le_nv2_aikATfstn1-p1 #380 Not tainted
    -----------------------------
    include/linux/kvm_host.h:605 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by qemu-system-ppc/8020:
     #0: 0000000094972fe9 (&vcpu->mutex){+.+.}, at: kvm_vcpu_ioctl+0xdc/0x850 [kvm]
    
    stack backtrace:
    CPU: 44 PID: 8020 Comm: qemu-system-ppc Not tainted 5.1.0-rc2-le_nv2_aikATfstn1-p1 #380
    Call Trace:
    [c000003fece8f740] [c000000000bcc134] dump_stack+0xe8/0x164 (unreliable)
    [c000003fece8f790] [c000000000181be0] lockdep_rcu_suspicious+0x130/0x170
    [c000003fece8f810] [c0000000000d5f50] kvmppc_tce_to_ua+0x280/0x290
    [c000003fece8f870] [c00800001a7e2c78] kvmppc_tce_validate+0x80/0x1b0 [kvm]
    [c000003fece8f8e0] [c00800001a7e3fac] kvmppc_h_put_tce+0x94/0x3e4 [kvm]
    [c000003fece8f9a0] [c00800001a8baac4] kvmppc_pseries_do_hcall+0x30c/0xce0 [kvm_hv]
    [c000003fece8fa10] [c00800001a8bd89c] kvmppc_vcpu_run_hv+0x694/0xec0 [kvm_hv]
    [c000003fece8fae0] [c00800001a7d95dc] kvmppc_vcpu_run+0x34/0x48 [kvm]
    [c000003fece8fb00] [c00800001a7d56bc] kvm_arch_vcpu_ioctl_run+0x2f4/0x400 [kvm]
    [c000003fece8fb90] [c00800001a7c3618] kvm_vcpu_ioctl+0x460/0x850 [kvm]
    [c000003fece8fd00] [c00000000041c4f4] do_vfs_ioctl+0xe4/0x930
    [c000003fece8fdb0] [c00000000041ce04] ksys_ioctl+0xc4/0x110
    [c000003fece8fe00] [c00000000041ce78] sys_ioctl+0x28/0x80
    [c000003fece8fe20] [c00000000000b5a4] system_call+0x5c/0x70
    
    Fixes: 42de7b9e2167 ("KVM: PPC: Validate TCEs against preregistered memory page sizes", 2018-09-10)
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eec0c746757b23f79fb69ceea2fbc2ab59c045e7
Author: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Date:   Mon Mar 18 13:59:46 2019 +1100

    KVM: PPC: Book3S HV: Perserve PSSCR FAKE_SUSPEND bit on guest exit
    
    [ Upstream commit 7cb9eb106d7a4efab6bcf30ec9503f1d703c77f5 ]
    
    There is a hardware bug in some POWER9 processors where a treclaim in
    fake suspend mode can cause an inconsistency in the XER[SO] bit across
    the threads of a core, the workaround being to force the core into SMT4
    when doing the treclaim.
    
    The FAKE_SUSPEND bit (bit 10) in the PSSCR is used to control whether a
    thread is in fake suspend or real suspend. The important difference here
    being that thread reconfiguration is blocked in real suspend but not
    fake suspend mode.
    
    When we exit a guest which was in fake suspend mode, we force the core
    into SMT4 while we do the treclaim in kvmppc_save_tm_hv().
    However on the new exit path introduced with the function
    kvmhv_run_single_vcpu() we restore the host PSSCR before calling
    kvmppc_save_tm_hv() which means that if we were in fake suspend mode we
    put the thread into real suspend mode when we clear the
    PSSCR[FAKE_SUSPEND] bit. This means that we block thread reconfiguration
    and the thread which is trying to get the core into SMT4 before it can
    do the treclaim spins forever since it itself is blocking thread
    reconfiguration. The result is that that core is essentially lost.
    
    This results in a trace such as:
    [   93.512904] CPU: 7 PID: 13352 Comm: qemu-system-ppc Not tainted 5.0.0 #4
    [   93.512905] NIP:  c000000000098a04 LR: c0000000000cc59c CTR: 0000000000000000
    [   93.512908] REGS: c000003fffd2bd70 TRAP: 0100   Not tainted  (5.0.0)
    [   93.512908] MSR:  9000000302883033 <SF,HV,VEC,VSX,FP,ME,IR,DR,RI,LE,TM[SE]>  CR: 22222444  XER: 00000000
    [   93.512914] CFAR: c000000000098a5c IRQMASK: 3
    [   93.512915] PACATMSCRATCH: 0000000000000001
    [   93.512916] GPR00: 0000000000000001 c000003f6cc1b830 c000000001033100 0000000000000004
    [   93.512928] GPR04: 0000000000000004 0000000000000002 0000000000000004 0000000000000007
    [   93.512930] GPR08: 0000000000000000 0000000000000004 0000000000000000 0000000000000004
    [   93.512932] GPR12: c000203fff7fc000 c000003fffff9500 0000000000000000 0000000000000000
    [   93.512935] GPR16: 2000000000300375 000000000000059f 0000000000000000 0000000000000000
    [   93.512951] GPR20: 0000000000000000 0000000000080053 004000000256f41f c000003f6aa88ef0
    [   93.512953] GPR24: c000003f6aa89100 0000000000000010 0000000000000000 0000000000000000
    [   93.512956] GPR28: c000003f9e9a0800 0000000000000000 0000000000000001 c000203fff7fc000
    [   93.512959] NIP [c000000000098a04] pnv_power9_force_smt4_catch+0x1b4/0x2c0
    [   93.512960] LR [c0000000000cc59c] kvmppc_save_tm_hv+0x40/0x88
    [   93.512960] Call Trace:
    [   93.512961] [c000003f6cc1b830] [0000000000080053] 0x80053 (unreliable)
    [   93.512965] [c000003f6cc1b8a0] [c00800001e9cb030] kvmhv_p9_guest_entry+0x508/0x6b0 [kvm_hv]
    [   93.512967] [c000003f6cc1b940] [c00800001e9cba44] kvmhv_run_single_vcpu+0x2dc/0xb90 [kvm_hv]
    [   93.512968] [c000003f6cc1ba10] [c00800001e9cc948] kvmppc_vcpu_run_hv+0x650/0xb90 [kvm_hv]
    [   93.512969] [c000003f6cc1bae0] [c00800001e8f620c] kvmppc_vcpu_run+0x34/0x48 [kvm]
    [   93.512971] [c000003f6cc1bb00] [c00800001e8f2d4c] kvm_arch_vcpu_ioctl_run+0x2f4/0x400 [kvm]
    [   93.512972] [c000003f6cc1bb90] [c00800001e8e3918] kvm_vcpu_ioctl+0x460/0x7d0 [kvm]
    [   93.512974] [c000003f6cc1bd00] [c0000000003ae2c0] do_vfs_ioctl+0xe0/0x8e0
    [   93.512975] [c000003f6cc1bdb0] [c0000000003aeb24] ksys_ioctl+0x64/0xe0
    [   93.512978] [c000003f6cc1be00] [c0000000003aebc8] sys_ioctl+0x28/0x80
    [   93.512981] [c000003f6cc1be20] [c00000000000b3a4] system_call+0x5c/0x70
    [   93.512983] Instruction dump:
    [   93.512986] 419dffbc e98c0000 2e8b0000 38000001 60000000 60000000 60000000 40950068
    [   93.512993] 392bffff 39400000 79290020 39290001 <7d2903a6> 60000000 60000000 7d235214
    
    To fix this we preserve the PSSCR[FAKE_SUSPEND] bit until we call
    kvmppc_save_tm_hv() which will mean the core can get into SMT4 and
    perform the treclaim. Note kvmppc_save_tm_hv() clears the
    PSSCR[FAKE_SUSPEND] bit again so there is no need to explicitly do that.
    
    Fixes: 95a6432ce9038 ("KVM: PPC: Book3S HV: Streamlined guest entry/exit path on P9 for radix guests")
    
    Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3adb80bb2439af018e4b21eb28058d4ebe830f3
Author: Jernej Skrabec <jernej.skrabec@siol.net>
Date:   Tue Apr 2 23:06:21 2019 +0200

    clk: sunxi-ng: nkmp: Avoid GENMASK(-1, 0)
    
    [ Upstream commit 2abc330c514fe56c570bb1a6318b054b06a4f72e ]
    
    Sometimes one of the nkmp factors is unused. This means that one of the
    factors shift and width values are set to 0. Current nkmp clock code
    generates a mask for each factor with GENMASK(width + shift - 1, shift).
    For unused factor this translates to GENMASK(-1, 0). This code is
    further expanded by C preprocessor to final version:
    (((~0UL) - (1UL << (0)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (-1))))
    or a bit simplified:
    (~0UL & (~0UL >> BITS_PER_LONG))
    
    It turns out that result of the second part (~0UL >> BITS_PER_LONG) is
    actually undefined by C standard, which clearly specifies:
    
    "If the value of the right operand is negative or is greater than or
    equal to the width of the promoted left operand, the behavior is
    undefined."
    
    Additionally, compiling kernel with aarch64-linux-gnu-gcc 8.3.0 gave
    different results whether literals or variables with same values as
    literals were used. GENMASK with literals -1 and 0 gives zero and with
    variables gives 0xFFFFFFFFFFFFFFF (~0UL). Because nkmp driver uses
    GENMASK with variables as parameter, expression calculates mask as ~0UL
    instead of 0. This has further consequences that LSB in register is
    always set to 1 (1 is neutral value for a factor and shift is 0).
    
    For example, H6 pll-de clock is set to 600 MHz by sun4i-drm driver, but
    due to this bug ends up being 300 MHz. Additionally, 300 MHz seems to be
    too low because following warning can be found in dmesg:
    
    [    1.752763] WARNING: CPU: 2 PID: 41 at drivers/clk/sunxi-ng/ccu_common.c:41 ccu_helper_wait_for_lock.part.0+0x6c/0x90
    [    1.763378] Modules linked in:
    [    1.766441] CPU: 2 PID: 41 Comm: kworker/2:1 Not tainted 5.1.0-rc2-next-20190401 #138
    [    1.774269] Hardware name: Pine H64 (DT)
    [    1.778200] Workqueue: events deferred_probe_work_func
    [    1.783341] pstate: 40000005 (nZcv daif -PAN -UAO)
    [    1.788135] pc : ccu_helper_wait_for_lock.part.0+0x6c/0x90
    [    1.793623] lr : ccu_helper_wait_for_lock.part.0+0x48/0x90
    [    1.799107] sp : ffff000010f93840
    [    1.802422] x29: ffff000010f93840 x28: 0000000000000000
    [    1.807735] x27: ffff800073ce9d80 x26: ffff000010afd1b8
    [    1.813049] x25: ffffffffffffffff x24: 00000000ffffffff
    [    1.818362] x23: 0000000000000001 x22: ffff000010abd5c8
    [    1.823675] x21: 0000000010000000 x20: 00000000685f367e
    [    1.828987] x19: 0000000000001801 x18: 0000000000000001
    [    1.834300] x17: 0000000000000001 x16: 0000000000000000
    [    1.839613] x15: 0000000000000000 x14: ffff000010789858
    [    1.844926] x13: 0000000000000000 x12: 0000000000000001
    [    1.850239] x11: 0000000000000000 x10: 0000000000000970
    [    1.855551] x9 : ffff000010f936c0 x8 : ffff800074cec0d0
    [    1.860864] x7 : 0000800067117000 x6 : 0000000115c30b41
    [    1.866177] x5 : 00ffffffffffffff x4 : 002c959300bfe500
    [    1.871490] x3 : 0000000000000018 x2 : 0000000029aaaaab
    [    1.876802] x1 : 00000000000002e6 x0 : 00000000686072bc
    [    1.882114] Call trace:
    [    1.884565]  ccu_helper_wait_for_lock.part.0+0x6c/0x90
    [    1.889705]  ccu_helper_wait_for_lock+0x10/0x20
    [    1.894236]  ccu_nkmp_set_rate+0x244/0x2a8
    [    1.898334]  clk_change_rate+0x144/0x290
    [    1.902258]  clk_core_set_rate_nolock+0x180/0x1b8
    [    1.906963]  clk_set_rate+0x34/0xa0
    [    1.910455]  sun8i_mixer_bind+0x484/0x558
    [    1.914466]  component_bind_all+0x10c/0x230
    [    1.918651]  sun4i_drv_bind+0xc4/0x1a0
    [    1.922401]  try_to_bring_up_master+0x164/0x1c0
    [    1.926932]  __component_add+0xa0/0x168
    [    1.930769]  component_add+0x10/0x18
    [    1.934346]  sun8i_dw_hdmi_probe+0x18/0x20
    [    1.938443]  platform_drv_probe+0x50/0xa0
    [    1.942455]  really_probe+0xcc/0x280
    [    1.946032]  driver_probe_device+0x54/0xe8
    [    1.950130]  __device_attach_driver+0x80/0xb8
    [    1.954488]  bus_for_each_drv+0x78/0xc8
    [    1.958326]  __device_attach+0xd4/0x130
    [    1.962163]  device_initial_probe+0x10/0x18
    [    1.966348]  bus_probe_device+0x90/0x98
    [    1.970185]  deferred_probe_work_func+0x6c/0xa0
    [    1.974720]  process_one_work+0x1e0/0x320
    [    1.978732]  worker_thread+0x228/0x428
    [    1.982484]  kthread+0x120/0x128
    [    1.985714]  ret_from_fork+0x10/0x18
    [    1.989290] ---[ end trace 9babd42e1ca4b84f ]---
    
    This commit solves the issue by first checking value of the factor
    width. If it is equal to 0 (unused factor), mask is set to 0, otherwise
    GENMASK() macro is used as before.
    
    Fixes: d897ef56faf9 ("clk: sunxi-ng: Mask nkmp factors when setting register")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 791746a758e77246b194214eb6faff94ac057047
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Thu Mar 21 17:19:37 2019 -0700

    ARC: PAE40: don't panic and instead turn off hw ioc
    
    [ Upstream commit 99bd5fcc505d65ea9c60619202f0b2d926eabbe9 ]
    
    HSDK currently panics when built for HIGHMEM/ARC_HAS_PAE40 because ioc
    is enabled with default which doesn't work for the 2 non contiguous
    memory nodes. So get PAE working by disabling ioc instead.
    
    Tested with !PAE40 by forcing @ioc_enable=0 and running the glibc
    testsuite over ssh
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 30bd4585bf149c8b20ed9080e0e92704ef5052e6
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Tue Feb 26 07:04:50 2019 +0100

    xfrm4: Fix uninitialized memory read in _decode_session4
    
    [ Upstream commit 8742dc86d0c7a9628117a989c11f04a9b6b898f3 ]
    
    We currently don't reload pointers pointing into skb header
    after doing pskb_may_pull() in _decode_session4(). So in case
    pskb_may_pull() changed the pointers, we read from random
    memory. Fix this by putting all the needed infos on the
    stack, so that we don't need to access the header pointers
    after doing pskb_may_pull().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79fad8fd2b7664883d3c3ba9aa88937a56d70940
Author: Martin Willi <martin@strongswan.org>
Date:   Tue Mar 26 13:20:43 2019 +0100

    xfrm: Honor original L3 slave device in xfrmi policy lookup
    
    [ Upstream commit 025c65e119bf58b610549ca359c9ecc5dee6a8d2 ]
    
    If an xfrmi is associated to a vrf layer 3 master device,
    xfrm_policy_check() fails after traffic decapsulation. The input
    interface is replaced by the layer 3 master device, and hence
    xfrmi_decode_session() can't match the xfrmi anymore to satisfy
    policy checking.
    
    Extend ingress xfrmi lookup to honor the original layer 3 slave
    device, allowing xfrm interfaces to operate within a vrf domain.
    
    Fixes: f203b76d7809 ("xfrm: Add virtual xfrm interfaces")
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff7fa2c801bce4920ef75741283364b133728e8c
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Mon Mar 25 14:30:00 2019 +0100

    esp4: add length check for UDP encapsulation
    
    [ Upstream commit 8dfb4eba4100e7cdd161a8baef2d8d61b7a7e62e ]
    
    esp_output_udp_encap can produce a length that doesn't fit in the 16
    bits of a UDP header's length field. In that case, we'll send a
    fragmented packet whose length is larger than IP_MAX_MTU (resulting in
    "Oversized IP packet" warnings on receive) and with a bogus UDP
    length.
    
    To prevent this, add a length check to esp_output_udp_encap and return
     -EMSGSIZE on failure.
    
    This seems to be older than git history.
    
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e8ce2680442d924c7b267fded16967c33b0e87c
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Mar 22 16:26:19 2019 -0700

    xfrm: clean up xfrm protocol checks
    
    [ Upstream commit dbb2483b2a46fbaf833cfb5deb5ed9cace9c7399 ]
    
    In commit 6a53b7593233 ("xfrm: check id proto in validate_tmpl()")
    I introduced a check for xfrm protocol, but according to Herbert
    IPSEC_PROTO_ANY should only be used as a wildcard for lookup, so
    it should be removed from validate_tmpl().
    
    And, IPSEC_PROTO_ANY is expected to only match 3 IPSec-specific
    protocols, this is why xfrm_state_flush() could still miss
    IPPROTO_ROUTING, which leads that those entries are left in
    net->xfrm.state_all before exit net. Fix this by replacing
    IPSEC_PROTO_ANY with zero.
    
    This patch also extracts the check from validate_tmpl() to
    xfrm_id_proto_valid() and uses it in parse_ipsecrequest().
    With this, no other protocols should be added into xfrm.
    
    Fixes: 6a53b7593233 ("xfrm: check id proto in validate_tmpl()")
    Reported-by: syzbot+0bf0519d6e0de15914fe@syzkaller.appspotmail.com
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.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 6c0db1cbf7724e62c888ab1aa21ca5c17c013b46
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Tue Mar 19 15:39:20 2019 +0000

    vti4: ipip tunnel deregistration fixes.
    
    [ Upstream commit 5483844c3fc18474de29f5d6733003526e0a9f78 ]
    
    If tunnel registration failed during module initialization, the module
    would fail to deregister the IPPROTO_COMP protocol and would attempt to
    deregister the tunnel.
    
    The tunnel was not deregistered during module-exit.
    
    Fixes: dd9ee3444014e ("vti4: Fix a ipip packet processing bug in 'IPCOMP' virtual tunnel")
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8a427ca50d6e22bf65d302ef7a502248a194fbc
Author: Su Yanjun <suyj.fnst@cn.fujitsu.com>
Date:   Thu Mar 14 14:59:42 2019 +0800

    xfrm6_tunnel: Fix potential panic when unloading xfrm6_tunnel module
    
    [ Upstream commit 6ee02a54ef990a71bf542b6f0a4e3321de9d9c66 ]
    
    When unloading xfrm6_tunnel module, xfrm6_tunnel_fini directly
    frees the xfrm6_tunnel_spi_kmem. Maybe someone has gotten the
    xfrm6_tunnel_spi, so need to wait it.
    
    Fixes: 91cc3bb0b04ff("xfrm6_tunnel: RCU conversion")
    Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.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 70a87327025adb6be2cf1e71ba6d215e79f95f3f
Author: Myungho Jung <mhjungk@gmail.com>
Date:   Thu Mar 7 10:23:08 2019 +0900

    xfrm: Reset secpath in xfrm failure
    
    [ Upstream commit 6ed69184ed9c43873b8a1ee721e3bf3c08c2c6be ]
    
    In esp4_gro_receive() and esp6_gro_receive(), secpath can be allocated
    without adding xfrm state to xvec. Then, sp->xvec[sp->len - 1] would
    fail and result in dereferencing invalid pointer in esp4_gso_segment()
    and esp6_gso_segment(). Reset secpath if xfrm function returns error.
    
    Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
    Reported-by: syzbot+b69368fd933c6c592f4c@syzkaller.appspotmail.com
    Signed-off-by: Myungho Jung <mhjungk@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9531aac1ee3ee4498bde4f89df83818a1617419e
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Feb 28 15:18:59 2019 +0800

    xfrm: policy: Fix out-of-bound array accesses in __xfrm_policy_unlink
    
    [ Upstream commit b805d78d300bcf2c83d6df7da0c818b0fee41427 ]
    
    UBSAN report this:
    
    UBSAN: Undefined behaviour in net/xfrm/xfrm_policy.c:1289:24
    index 6 is out of range for type 'unsigned int [6]'
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.4.162-514.55.6.9.x86_64+ #13
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
     0000000000000000 1466cf39b41b23c9 ffff8801f6b07a58 ffffffff81cb35f4
     0000000041b58ab3 ffffffff83230f9c ffffffff81cb34e0 ffff8801f6b07a80
     ffff8801f6b07a20 1466cf39b41b23c9 ffffffff851706e0 ffff8801f6b07ae8
    Call Trace:
     <IRQ>  [<ffffffff81cb35f4>] __dump_stack lib/dump_stack.c:15 [inline]
     <IRQ>  [<ffffffff81cb35f4>] dump_stack+0x114/0x1a0 lib/dump_stack.c:51
     [<ffffffff81d94225>] ubsan_epilogue+0x12/0x8f lib/ubsan.c:164
     [<ffffffff81d954db>] __ubsan_handle_out_of_bounds+0x16e/0x1b2 lib/ubsan.c:382
     [<ffffffff82a25acd>] __xfrm_policy_unlink+0x3dd/0x5b0 net/xfrm/xfrm_policy.c:1289
     [<ffffffff82a2e572>] xfrm_policy_delete+0x52/0xb0 net/xfrm/xfrm_policy.c:1309
     [<ffffffff82a3319b>] xfrm_policy_timer+0x30b/0x590 net/xfrm/xfrm_policy.c:243
     [<ffffffff813d3927>] call_timer_fn+0x237/0x990 kernel/time/timer.c:1144
     [<ffffffff813d8e7e>] __run_timers kernel/time/timer.c:1218 [inline]
     [<ffffffff813d8e7e>] run_timer_softirq+0x6ce/0xb80 kernel/time/timer.c:1401
     [<ffffffff8120d6f9>] __do_softirq+0x299/0xe10 kernel/softirq.c:273
     [<ffffffff8120e676>] invoke_softirq kernel/softirq.c:350 [inline]
     [<ffffffff8120e676>] irq_exit+0x216/0x2c0 kernel/softirq.c:391
     [<ffffffff82c5edab>] exiting_irq arch/x86/include/asm/apic.h:652 [inline]
     [<ffffffff82c5edab>] smp_apic_timer_interrupt+0x8b/0xc0 arch/x86/kernel/apic/apic.c:926
     [<ffffffff82c5c985>] apic_timer_interrupt+0xa5/0xb0 arch/x86/entry/entry_64.S:735
     <EOI>  [<ffffffff81188096>] ? native_safe_halt+0x6/0x10 arch/x86/include/asm/irqflags.h:52
     [<ffffffff810834d7>] arch_safe_halt arch/x86/include/asm/paravirt.h:111 [inline]
     [<ffffffff810834d7>] default_idle+0x27/0x430 arch/x86/kernel/process.c:446
     [<ffffffff81085f05>] arch_cpu_idle+0x15/0x20 arch/x86/kernel/process.c:437
     [<ffffffff8132abc3>] default_idle_call+0x53/0x90 kernel/sched/idle.c:92
     [<ffffffff8132b32d>] cpuidle_idle_call kernel/sched/idle.c:156 [inline]
     [<ffffffff8132b32d>] cpu_idle_loop kernel/sched/idle.c:251 [inline]
     [<ffffffff8132b32d>] cpu_startup_entry+0x60d/0x9a0 kernel/sched/idle.c:299
     [<ffffffff8113e119>] start_secondary+0x3c9/0x560 arch/x86/kernel/smpboot.c:245
    
    The issue is triggered as this:
    
    xfrm_add_policy
        -->verify_newpolicy_info  //check the index provided by user with XFRM_POLICY_MAX
                                  //In my case, the index is 0x6E6BB6, so it pass the check.
        -->xfrm_policy_construct  //copy the user's policy and set xfrm_policy_timer
        -->xfrm_policy_insert
            --> __xfrm_policy_link //use the orgin dir, in my case is 2
            --> xfrm_gen_index   //generate policy index, there is 0x6E6BB6
    
    then xfrm_policy_timer be fired
    
    xfrm_policy_timer
       --> xfrm_policy_id2dir  //get dir from (policy index & 7), in my case is 6
       --> xfrm_policy_delete
          --> __xfrm_policy_unlink //access policy_count[dir], trigger out of range access
    
    Add xfrm_policy_id2dir check in verify_newpolicy_info, make sure the computed dir is
    valid, to fix the issue.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: e682adf021be ("xfrm: Try to honor policy index if it's supplied by user")
    Signed-off-by: YueHaibing <yuehaibing@huawei.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 07a573c046c0a149b1a45370f89d5c0f22315f2e
Author: Kirill Smelkov <kirr@nexedi.com>
Date:   Wed Apr 24 07:13:57 2019 +0000

    fuse: Add FOPEN_STREAM to use stream_open()
    
    commit bbd84f33652f852ce5992d65db4d020aba21f882 upstream.
    
    Starting from commit 9c225f2655e3 ("vfs: atomic f_pos accesses as per
    POSIX") files opened even via nonseekable_open gate read and write via lock
    and do not allow them to be run simultaneously. This can create read vs
    write deadlock if a filesystem is trying to implement a socket-like file
    which is intended to be simultaneously used for both read and write from
    filesystem client.  See commit 10dce8af3422 ("fs: stream_open - opener for
    stream-like files so that read and write can run simultaneously without
    deadlock") for details and e.g. commit 581d21a2d02a ("xenbus: fix deadlock
    on writes to /proc/xen/xenbus") for a similar deadlock example on
    /proc/xen/xenbus.
    
    To avoid such deadlock it was tempting to adjust fuse_finish_open to use
    stream_open instead of nonseekable_open on just FOPEN_NONSEEKABLE flags,
    but grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
    and in particular GVFS which actually uses offset in its read and write
    handlers
    
            https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
    
    so if we would do such a change it will break a real user.
    
    Add another flag (FOPEN_STREAM) for filesystem servers to indicate that the
    opened handler is having stream-like semantics; does not use file position
    and thus the kernel is free to issue simultaneous read and write request on
    opened file handle.
    
    This patch together with stream_open() should be added to stable kernels
    starting from v3.14+. This will allow to patch OSSPD and other FUSE
    filesystems that provide stream-like files to return FOPEN_STREAM |
    FOPEN_NONSEEKABLE in open handler and this way avoid the deadlock on all
    kernel versions. This should work because fuse_finish_open ignores unknown
    open flags returned from a filesystem and so passing FOPEN_STREAM to a
    kernel that is not aware of this flag cannot hurt. In turn the kernel that
    is not aware of FOPEN_STREAM will be < v3.14 where just FOPEN_NONSEEKABLE
    is sufficient to implement streams without read vs write deadlock.
    
    Cc: stable@vger.kernel.org # v3.14+
    Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 560c6fd312c9d8891f3282771178ba0b929356c8
Author: Martin Wilck <mwilck@suse.com>
Date:   Mon Apr 29 11:48:15 2019 +0200

    dm mpath: always free attached_handler_name in parse_path()
    
    commit 940bc471780b004a5277c1931f52af363c2fc9da upstream.
    
    Commit b592211c33f7 ("dm mpath: fix attached_handler_name leak and
    dangling hw_handler_name pointer") fixed a memory leak for the case
    where setup_scsi_dh() returns failure. But setup_scsi_dh may return
    success and not "use" attached_handler_name if the
    retain_attached_hwhandler flag is not set on the map. As setup_scsi_sh
    properly "steals" the pointer by nullifying it, freeing it
    unconditionally in parse_path() is safe.
    
    Fixes: b592211c33f7 ("dm mpath: fix attached_handler_name leak and dangling hw_handler_name pointer")
    Cc: stable@vger.kernel.org
    Reported-by: Yufen Yu <yuyufen@huawei.com>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96ecf4c59f08b37f1e0f024d4976544525ce578c
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue May 7 14:28:35 2019 -0400

    dm integrity: correctly calculate the size of metadata area
    
    commit 30bba430ddf737978e40561198693ba91386dac1 upstream.
    
    When we use separate devices for data and metadata, dm-integrity would
    incorrectly calculate the size of the metadata device as if it had
    512-byte block size - and it would refuse activation with larger block
    size and smaller metadata device.
    
    Fix this so that it takes actual block size into account, which fixes
    the following reported issue:
    https://gitlab.com/cryptsetup/cryptsetup/issues/450
    
    Fixes: 356d9d52e122 ("dm integrity: allow separate metadata device")
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ecff1441aa15571b1297dfb4ac16812223112802
Author: Milan Broz <gmazyland@gmail.com>
Date:   Wed May 15 16:23:43 2019 +0200

    dm crypt: move detailed message into debug level
    
    commit 7a1cd7238fde6ab367384a4a2998cba48330c398 upstream.
    
    The information about tag size should not be printed without debug info
    set. Also print device major:minor in the error message to identify the
    device instance.
    
    Also use rate limiting and debug level for info about used crypto API
    implementaton.  This is important because during online reencryption
    the existing message saturates syslog (because we are moving hotzone
    across the whole device).
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Milan Broz <gmazyland@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 862a78341ade4fa52da2803e48e8c271b7fbf6e8
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Apr 25 12:07:54 2019 -0400

    dm delay: fix a crash when invalid device is specified
    
    commit 81bc6d150ace6250503b825d9d0c10f7bbd24095 upstream.
    
    When the target line contains an invalid device, delay_ctr() will call
    delay_dtr() with NULL workqueue.  Attempting to destroy the NULL
    workqueue causes a crash.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fab2e96c6be0078059ce77f2ee0fb2b8d7c22124
Author: Damien Le Moal <damien.lemoal@wdc.com>
Date:   Thu Apr 18 18:03:07 2019 +0900

    dm zoned: Fix zone report handling
    
    commit 7aedf75ff740a98f3683439449cd91c8662d03b2 upstream.
    
    The function blkdev_report_zones() returns success even if no zone
    information is reported (empty report). Empty zone reports can only
    happen if the report start sector passed exceeds the device capacity.
    The conditions for this to happen are either a bug in the caller code,
    or, a change in the device that forced the low level driver to change
    the device capacity to a value that is lower than the report start
    sector. This situation includes a failed disk revalidation resulting in
    the disk capacity being changed to 0.
    
    If this change happens while dm-zoned is in its initialization phase
    executing dmz_init_zones(), this function may enter an infinite loop
    and hang the system. To avoid this, add a check to disallow empty zone
    reports and bail out early. Also fix the function dmz_update_zone() to
    make sure that the report for the requested zone was correctly obtained.
    
    Fixes: 3b1a94c88b79 ("dm zoned: drive-managed zoned block device target")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Reviewed-by: Shaun Tancheff <shaun@tancheff.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef3f84246954dbfb603fb100f6f5391f938a9134
Author: Nikos Tsironis <ntsironis@arrikto.com>
Date:   Wed Apr 17 17:19:18 2019 +0300

    dm cache metadata: Fix loading discard bitset
    
    commit e28adc3bf34e434b30e8d063df4823ba0f3e0529 upstream.
    
    Add missing dm_bitset_cursor_next() to properly advance the bitset
    cursor.
    
    Otherwise, the discarded state of all blocks is set according to the
    discarded state of the first block.
    
    Fixes: ae4a46a1f6 ("dm cache metadata: use bitset cursor api to load discard bitset")
    Cc: stable@vger.kernel.org
    Signed-off-by: Nikos Tsironis <ntsironis@arrikto.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c412dc3b757487e369999477eda8e3d6806e498
Author: Stefan Mätje <stefan.maetje@esd.eu>
Date:   Fri Mar 29 18:07:35 2019 +0100

    PCI: Work around Pericom PCIe-to-PCI bridge Retrain Link erratum
    
    commit 4ec73791a64bab25cabf16a6067ee478692e506d upstream.
    
    Due to an erratum in some Pericom PCIe-to-PCI bridges in reverse mode
    (conventional PCI on primary side, PCIe on downstream side), the Retrain
    Link bit needs to be cleared manually to allow the link training to
    complete successfully.
    
    If it is not cleared manually, the link training is continuously restarted
    and no devices below the PCI-to-PCIe bridge can be accessed.  That means
    drivers for devices below the bridge will be loaded but won't work and may
    even crash because the driver is only reading 0xffff.
    
    See the Pericom Errata Sheet PI7C9X111SLB_errata_rev1.2_102711.pdf for
    details.  Devices known as affected so far are: PI7C9X110, PI7C9X111SL,
    PI7C9X130.
    
    Add a new flag, clear_retrain_link, in struct pci_dev.  Quirks for affected
    devices set this bit.
    
    Note that pcie_retrain_link() lives in aspm.c because that's currently the
    only place we use it, but this erratum is not specific to ASPM, and we may
    retrain links for other reasons in the future.
    
    Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
    [bhelgaas: apply regardless of CONFIG_PCIEASPM]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d06a30b1a957c1f903fdf00863335c59a4b0ca2c
Author: Stefan Mätje <stefan.maetje@esd.eu>
Date:   Fri Mar 29 18:07:34 2019 +0100

    PCI: Factor out pcie_retrain_link() function
    
    commit 86fa6a344209d9414ea962b1f1ac6ade9dd7563a upstream.
    
    Factor out pcie_retrain_link() to use for Pericom Retrain Link quirk.  No
    functional change intended.
    
    Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f22ec9f0c285e4df37cecfd30b000cc5bf5ffda
Author: Kazufumi Ikeda <kaz-ikeda@xc.jp.nec.com>
Date:   Mon Mar 25 20:43:19 2019 +0100

    PCI: rcar: Add the initialization of PCIe link in resume_noirq()
    
    commit be20bbcb0a8cb5597cc62b3e28d275919f3431df upstream.
    
    Reestablish the PCIe link very early in the resume process in case it
    went down to prevent PCI accesses from hanging the bus. Such accesses
    can happen early in the PCI resume process, as early as the
    SUSPEND_RESUME_NOIRQ step, thus the link must be reestablished in the
    driver resume_noirq() callback.
    
    Fixes: e015f88c368d ("PCI: rcar: Add support for R-Car H3 to pcie-rcar")
    Signed-off-by: Kazufumi Ikeda <kaz-ikeda@xc.jp.nec.com>
    Signed-off-by: Gaku Inami <gaku.inami.xw@bp.renesas.com>
    Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
    [lorenzo.pieralisi@arm.com: reformatted commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Cc: stable@vger.kernel.org
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Phil Edworthy <phil.edworthy@renesas.com>
    Cc: Simon Horman <horms+renesas@verge.net.au>
    Cc: Wolfram Sang <wsa@the-dreams.de>
    Cc: linux-renesas-soc@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbd9c6ef0dfcda23784b2cd95b9bc339389f04ba
Author: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date:   Fri Apr 12 06:43:06 2019 +0000

    PCI/AER: Change pci_aer_init() stub to return void
    
    commit 31f996efbd5a7825f4d30150469e9d110aea00e8 upstream.
    
    Commit 60ed982a4e78 ("PCI/AER: Move internal declarations to
    drivers/pci/pci.h") changed pci_aer_init() to return "void", but didn't
    change the stub for when CONFIG_PCIEAER isn't enabled.  Change the stub to
    match.
    
    Fixes: 60ed982a4e78 ("PCI/AER: Move internal declarations to drivers/pci/pci.h")
    Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org      # v4.19+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be361ee757b8aa217b927c0a75b7a6ebf68c1550
Author: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Date:   Mon Mar 18 16:07:18 2019 +0000

    PCI: Init PCIe feature bits for managed host bridge alloc
    
    commit 6302bf3ef78dd210b5ff4a922afcb7d8eff8a211 upstream.
    
    Two functions allocate a host bridge: devm_pci_alloc_host_bridge() and
    pci_alloc_host_bridge().  At the moment, only the unmanaged one initializes
    the PCIe feature bits, which prevents from using features such as hotplug
    or AER on some systems, when booting with device tree.  Make the
    initialization code common.
    
    Fixes: 02bfeb484230 ("PCI/portdrv: Simplify PCIe feature permission checking")
    Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org      # v4.17+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adb00a68d2dd96bf4237d0e2884370670e5dcb59
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Feb 12 17:02:30 2019 -0500

    PCI: Reset Lenovo ThinkPad P50 nvgpu at boot if necessary
    
    commit e0547c81bfcfad01cbbfa93a5e66bb98ab932f80 upstream.
    
    On ThinkPad P50 SKUs with an Nvidia Quadro M1000M instead of the M2000M
    variant, the BIOS does not always reset the secondary Nvidia GPU during
    reboot if the laptop is configured in Hybrid Graphics mode.  The reason is
    unknown, but the following steps and possibly a good bit of patience will
    reproduce the issue:
    
      1. Boot up the laptop normally in Hybrid Graphics mode
      2. Make sure nouveau is loaded and that the GPU is awake
      3. Allow the Nvidia GPU to runtime suspend itself after being idle
      4. Reboot the machine, the more sudden the better (e.g. sysrq-b may help)
      5. If nouveau loads up properly, reboot the machine again and go back to
         step 2 until you reproduce the issue
    
    This results in some very strange behavior: the GPU will be left in exactly
    the same state it was in when the previously booted kernel started the
    reboot.  This has all sorts of bad side effects: for starters, this
    completely breaks nouveau starting with a mysterious EVO channel failure
    that happens well before we've actually used the EVO channel for anything:
    
      nouveau 0000:01:00.0: disp: chid 0 mthd 0000 data 00000400 00001000 00000002
    
    This causes a timeout trying to bring up the GR ctx:
    
      nouveau 0000:01:00.0: timeout
      WARNING: CPU: 0 PID: 12 at drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c:1547 gf100_grctx_generate+0x7b2/0x850 [nouveau]
      Hardware name: LENOVO 20EQS64N0B/20EQS64N0B, BIOS N1EET82W (1.55 ) 12/18/2018
      Workqueue: events_long drm_dp_mst_link_probe_work [drm_kms_helper]
      ...
      nouveau 0000:01:00.0: gr: wait for idle timeout (en: 1, ctxsw: 0, busy: 1)
      nouveau 0000:01:00.0: gr: wait for idle timeout (en: 1, ctxsw: 0, busy: 1)
      nouveau 0000:01:00.0: fifo: fault 01 [WRITE] at 0000000000008000 engine 00 [GR] client 15 [HUB/SCC_NB] reason c4 [] on channel -1 [0000000000 unknown]
    
    The GPU never manages to recover.  Booting without loading nouveau causes
    issues as well, since the GPU starts sending spurious interrupts that cause
    other device's IRQs to get disabled by the kernel:
    
      irq 16: nobody cared (try booting with the "irqpoll" option)
      ...
      handlers:
      [<000000007faa9e99>] i801_isr [i2c_i801]
      Disabling IRQ #16
      ...
      serio: RMI4 PS/2 pass-through port at rmi4-00.fn03
      i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
      i801_smbus 0000:00:1f.4: Transaction timeout
      rmi4_f03 rmi4-00.fn03: rmi_f03_pt_write: Failed to write to F03 TX register (-110).
      i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
      i801_smbus 0000:00:1f.4: Transaction timeout
      rmi4_physical rmi4-00: rmi_driver_set_irq_bits: Failed to change enabled interrupts!
    
    This causes the touchpad and sometimes other things to get disabled.
    
    Since this happens without nouveau, we can't fix this problem from nouveau
    itself.
    
    Add a PCI quirk for the specific P50 variant of this GPU.  Make sure the
    GPU is advertising NoReset- so we don't reset the GPU when the machine is
    in Dedicated graphics mode (where the GPU being initialized by the BIOS is
    normal and expected).  Map the GPU MMIO space and read the magic 0x2240c
    register, which will have bit 1 set if the device was POSTed during a
    previous boot.  Once we've confirmed all of this, reset the GPU and
    re-disable it - bringing it back to a healthy state.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203003
    Link: https://lore.kernel.org/lkml/20190212220230.1568-1-lyude@redhat.com
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: nouveau@lists.freedesktop.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: Karol Herbst <kherbst@redhat.com>
    Cc: Ben Skeggs <skeggsb@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e4017e3ddfd17a912e462721c8b31e824060cb7
Author: James Prestwood <james.prestwood@linux.intel.com>
Date:   Mon Jan 7 13:32:48 2019 -0800

    PCI: Mark Atheros AR9462 to avoid bus reset
    
    commit 6afb7e26978da5e86e57e540fdce65c8b04f398a upstream.
    
    When using PCI passthrough with this device, the host machine locks up
    completely when starting the VM, requiring a hard reboot.  Add a quirk to
    avoid bus resets on this device.
    
    Fixes: c3e59ee4e766 ("PCI: Mark Atheros AR93xx to avoid bus reset")
    Link: https://lore.kernel.org/linux-pci/20190107213248.3034-1-james.prestwood@linux.intel.com
    Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org      # v3.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ddfb43373ca397830b84a91627d3359b8dd0239
Author: Nikolai Kostrigin <nickel@altlinux.org>
Date:   Mon Apr 8 13:37:25 2019 +0300

    PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken
    
    commit d28ca864c493637f3c957f4ed9348a94fca6de60 upstream.
    
    ATS is broken on the Radeon R7 GPU (at least for Stoney Ridge based laptop)
    and causes IOMMU stalls and system failure.  Disable ATS on these devices
    to make them usable again with IOMMU enabled.
    
    Thanks to Joerg Roedel <jroedel@suse.de> for help.
    
    [bhelgaas: In the email thread mentioned below, Alex suspects the real
    problem is in sbios or iommu, so it may affect only certain systems, and it
    may affect other devices in those systems as well.  However, per Joerg we
    lack the ability to debug further, so this quirk is the best we can do for
    now.]
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=194521
    Link: https://lore.kernel.org/lkml/20190408103725.30426-1-nickel@altlinux.org
    Fixes: 9b44b0b09dec ("PCI: Mark AMD Stoney GPU ATS as broken")
    Signed-off-by: Nikolai Kostrigin <nickel@altlinux.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Joerg Roedel <jroedel@suse.de>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fbec8aa02f3a7ea83f8035896e341a2ea62871c
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix crashes and garbled display during DPMS modesetting
    
    commit f627caf55b8e735dcec8fa6538e9668632b55276 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), blanking the display
    or starting the X server will crash and freeze the system, or garble the
    display.
    
    Experiments showed this problem can mostly be solved by adjusting the
    order of register writes. Also, sm712fb failed to consider the difference
    of clock frequency when unblanking the display, and programs the clock for
    SM712 to SM720.
    
    Fix them by adjusting the order of register writes, and adding an
    additional check for SM720 for programming the clock frequency.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 620a97786fd666fcd735a87c111c9831c4846d38
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: use 1024x768 by default on non-MIPS, fix garbled display
    
    commit 4ed7d2ccb7684510ec5f7a8f7ef534bc6a3d55b2 upstream.
    
    Loongson MIPS netbooks use 1024x600 LCD panels, which is the original
    target platform of this driver, but nearly all old x86 laptops have
    1024x768. Lighting 768 panels using 600's timings would partially
    garble the display. Since it's not possible to distinguish them reliably,
    we change the default to 768, but keep 600 as-is on MIPS.
    
    Further, earlier laptops, such as IBM Thinkpad 240X, has a 800x600 LCD
    panel, this driver would probably garbled those display. As we don't
    have one for testing, the original behavior of the driver is kept as-is,
    but the problem has been documented is the comments.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2adbace369e5c1376afc2aab49020d79fb967b6
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix support for 1024x768-16 mode
    
    commit 6053d3a4793e5bde6299ac5388e76a3bf679ff65 upstream.
    
    In order to support the 1024x600 panel on Yeeloong Loongson MIPS
    laptop, the original 1024x768-16 table was modified to 1024x600-16,
    without leaving the original. It causes problem on x86 laptop as
    the 1024x768-16 support was still claimed but not working.
    
    Fix it by introducing the 1024x768-16 mode.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d119b4a43e53ba01f97b27faafaeaf6ffac681f0
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix crashes during framebuffer writes by correctly mapping VRAM
    
    commit 9e0e59993df0601cddb95c4f6c61aa3d5e753c00 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), running fbtest or X
    will crash the machine instantly, because the VRAM/framebuffer is not
    mapped correctly.
    
    On SM712, the framebuffer starts at the beginning of address space, but
    SM720's framebuffer starts at the 1 MiB offset from the beginning. However,
    sm712fb fails to take this into account, as a result, writing to the
    framebuffer will destroy all the registers and kill the system immediately.
    Another problem is the driver assumes 8 MiB of VRAM for SM720, but some
    SM720 system, such as this IBM Thinkpad, only has 4 MiB of VRAM.
    
    Fix this problem by removing the hardcoded VRAM size, adding a function to
    query the amount of VRAM from register MCR76 on SM720, and adding proper
    framebuffer offset.
    
    Please note that the memory map may have additional problems on Big-Endian
    system, which is not available for testing by myself. But I highly suspect
    that the original code is also broken on Big-Endian machines for SM720, so
    at least we are not making the problem worse. More, the driver also assumed
    SM710/SM712 has 4 MiB of VRAM, but it has a 2 MiB version as well, and used
    in earlier laptops, such as IBM Thinkpad 240X, the driver would probably
    crash on them. I've never seen one of those machines and cannot fix it, but
    I have documented these problems in the comments.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39045ad5a808a61340e9edf1a930451065e4b349
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix boot screen glitch when sm712fb replaces VGA
    
    commit ec1587d5073f29820e358f3a383850d61601d981 upstream.
    
    When the machine is booted in VGA mode, loading sm712fb would cause
    a glitch of random pixels shown on the screen. To prevent it from
    happening, we first clear the entire framebuffer, and we also need
    to stop calling smtcfb_setmode() during initialization, the fbdev
    layer will call it for us later when it's ready.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4badede3e74b5f59680e903211d4d218578da9a0
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:58 2019 +0200

    fbdev: sm712fb: fix white screen of death on reboot, don't set CR3B-CR3F
    
    commit 8069053880e0ee3a75fd6d7e0a30293265fe3de4 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), rebooting with
    sm712fb framebuffer driver would cause a white screen of death on
    the next POST, presumably the proper timings for the LCD panel was
    not reprogrammed properly by the BIOS.
    
    Experiments showed a few CRTC Scratch Registers, including CRT3D,
    CRT3E and CRT3F may be used internally by BIOS as some flags. CRT3B is
    a hardware testing register, we shouldn't mess with it. CRT3C has
    blanking signal and line compare control, which is not needed for this
    driver.
    
    Stop writing to CR3B-CR3F (a.k.a CRT3B-CRT3F) registers. Even if these
    registers don't have side-effect on other systems, writing to them is
    also highly questionable.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62463c4661f1029f3348158be0156de2c04095c3
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:58 2019 +0200

    fbdev: sm712fb: fix VRAM detection, don't set SR70/71/74/75
    
    commit dcf9070595e100942c539e229dde4770aaeaa4e9 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), the amount of Video
    RAM is not detected correctly by the xf86-video-siliconmotion driver.
    This is because sm712fb overwrites the GPR71 Scratch Pad Register, which
    is set by BIOS on x86 and used to indicate amount of VRAM.
    
    Other Scratch Pad Registers, including GPR70/74/75, don't have the same
    side-effect, but overwriting to them is still questionable, as they are
    not related to modesetting.
    
    Stop writing to SR70/71/74/75 (a.k.a GPR70/71/74/75).
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a5d31230505ea7b4e27a233499a744710460f35
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:58 2019 +0200

    fbdev: sm712fb: fix brightness control on reboot, don't set SR30
    
    commit 5481115e25e42b9215f2619452aa99c95f08492f upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), rebooting with
    sm712fb framebuffer driver would cause the role of brightness up/down
    button to swap.
    
    Experiments showed the FPR30 register caused this behavior. Moreover,
    even if this register don't have side-effect on other systems, over-
    writing it is also highly questionable, since it was originally
    configurated by the motherboard manufacturer by hardwiring pull-down
    resistors to indicate the type of LCD panel. We should not mess with
    it.
    
    Stop writing to the SR30 (a.k.a FPR30) register.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfe31930dac8f6af9b974c00c70bf11096c02b66
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Thu May 16 23:31:59 2019 +0200

    fbdev/efifb: Ignore framebuffer memmap entries that lack any memory types
    
    commit f8585539df0a1527c78b5d760665c89fe1c105a9 upstream.
    
    The following commit:
    
      38ac0287b7f4 ("fbdev/efifb: Honour UEFI memory map attributes when mapping the FB")
    
    updated the EFI framebuffer code to use memory mappings for the linear
    framebuffer that are permitted by the memory attributes described by the
    EFI memory map for the particular region, if the framebuffer happens to
    be covered by the EFI memory map (which is typically only the case for
    framebuffers in shared memory). This is required since non-x86 systems
    may require cacheable attributes for memory mappings that are shared
    with other masters (such as GPUs), and this information cannot be
    described by the Graphics Output Protocol (GOP) EFI protocol itself,
    and so we rely on the EFI memory map for this.
    
    As reported by James, this breaks some x86 systems:
    
      [ 1.173368] efifb: probing for efifb
      [ 1.173386] efifb: abort, cannot remap video memory 0x1d5000 @ 0xcf800000
      [ 1.173395] Trying to free nonexistent resource <00000000cf800000-00000000cf9d4bff>
      [ 1.173413] efi-framebuffer: probe of efi-framebuffer.0 failed with error -5
    
    The problem turns out to be that the memory map entry that describes the
    framebuffer has no memory attributes listed at all, and so we end up with
    a mem_flags value of 0x0.
    
    So work around this by ensuring that the memory map entry's attribute field
    has a sane value before using it to mask the set of usable attributes.
    
    Reported-by: James Hilliard <james.hilliard1@gmail.com>
    Tested-by: James Hilliard <james.hilliard1@gmail.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: <stable@vger.kernel.org> # v4.19+
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: James Morse <james.morse@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Fixes: 38ac0287b7f4 ("fbdev/efifb: Honour UEFI memory map attributes when ...")
    Link: http://lkml.kernel.org/r/20190516213159.3530-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a816dc52fe7701568578574670865d63f691506f
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Fri Apr 19 12:47:47 2019 -0700

    x86/mpx, mm/core: Fix recursive munmap() corruption
    
    commit 5a28fc94c9143db766d1ba5480cae82d856ad080 upstream.
    
    This is a bit of a mess, to put it mildly.  But, it's a bug
    that only seems to have showed up in 4.20 but wasn't noticed
    until now, because nobody uses MPX.
    
    MPX has the arch_unmap() hook inside of munmap() because MPX
    uses bounds tables that protect other areas of memory.  When
    memory is unmapped, there is also a need to unmap the MPX
    bounds tables.  Barring this, unused bounds tables can eat 80%
    of the address space.
    
    But, the recursive do_munmap() that gets called vi arch_unmap()
    wreaks havoc with __do_munmap()'s state.  It can result in
    freeing populated page tables, accessing bogus VMA state,
    double-freed VMAs and more.
    
    See the "long story" further below for the gory details.
    
    To fix this, call arch_unmap() before __do_unmap() has a chance
    to do anything meaningful.  Also, remove the 'vma' argument
    and force the MPX code to do its own, independent VMA lookup.
    
    == UML / unicore32 impact ==
    
    Remove unused 'vma' argument to arch_unmap().  No functional
    change.
    
    I compile tested this on UML but not unicore32.
    
    == powerpc impact ==
    
    powerpc uses arch_unmap() well to watch for munmap() on the
    VDSO and zeroes out 'current->mm->context.vdso_base'.  Moving
    arch_unmap() makes this happen earlier in __do_munmap().  But,
    'vdso_base' seems to only be used in perf and in the signal
    delivery that happens near the return to userspace.  I can not
    find any likely impact to powerpc, other than the zeroing
    happening a little earlier.
    
    powerpc does not use the 'vma' argument and is unaffected by
    its removal.
    
    I compile-tested a 64-bit powerpc defconfig.
    
    == x86 impact ==
    
    For the common success case this is functionally identical to
    what was there before.  For the munmap() failure case, it's
    possible that some MPX tables will be zapped for memory that
    continues to be in use.  But, this is an extraordinarily
    unlikely scenario and the harm would be that MPX provides no
    protection since the bounds table got reset (zeroed).
    
    I can't imagine anyone doing this:
    
            ptr = mmap();
            // use ptr
            ret = munmap(ptr);
            if (ret)
                    // oh, there was an error, I'll
                    // keep using ptr.
    
    Because if you're doing munmap(), you are *done* with the
    memory.  There's probably no good data in there _anyway_.
    
    This passes the original reproducer from Richard Biener as
    well as the existing mpx selftests/.
    
    The long story:
    
    munmap() has a couple of pieces:
    
     1. Find the affected VMA(s)
     2. Split the start/end one(s) if neceesary
     3. Pull the VMAs out of the rbtree
     4. Actually zap the memory via unmap_region(), including
        freeing page tables (or queueing them to be freed).
     5. Fix up some of the accounting (like fput()) and actually
        free the VMA itself.
    
    This specific ordering was actually introduced by:
    
      dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in munmap")
    
    during the 4.20 merge window.  The previous __do_munmap() code
    was actually safe because the only thing after arch_unmap() was
    remove_vma_list().  arch_unmap() could not see 'vma' in the
    rbtree because it was detached, so it is not even capable of
    doing operations unsafe for remove_vma_list()'s use of 'vma'.
    
    Richard Biener reported a test that shows this in dmesg:
    
      [1216548.787498] BUG: Bad rss-counter state mm:0000000017ce560b idx:1 val:551
      [1216548.787500] BUG: non-zero pgtables_bytes on freeing mm: 24576
    
    What triggered this was the recursive do_munmap() called via
    arch_unmap().  It was freeing page tables that has not been
    properly zapped.
    
    But, the problem was bigger than this.  For one, arch_unmap()
    can free VMAs.  But, the calling __do_munmap() has variables
    that *point* to VMAs and obviously can't handle them just
    getting freed while the pointer is still in use.
    
    I tried a couple of things here.  First, I tried to fix the page
    table freeing problem in isolation, but I then found the VMA
    issue.  I also tried having the MPX code return a flag if it
    modified the rbtree which would force __do_munmap() to re-walk
    to restart.  That spiralled out of control in complexity pretty
    fast.
    
    Just moving arch_unmap() and accepting that the bonkers failure
    case might eat some bounds tables seems like the simplest viable
    fix.
    
    This was also reported in the following kernel bugzilla entry:
    
      https://bugzilla.kernel.org/show_bug.cgi?id=203123
    
    There are some reports that this commit triggered this bug:
    
      dd2283f2605 ("mm: mmap: zap pages with read mmap_sem in munmap")
    
    While that commit certainly made the issues easier to hit, I believe
    the fundamental issue has been with us as long as MPX itself, thus
    the Fixes: tag below is for one of the original MPX commits.
    
    [ mingo: Minor edits to the changelog and the patch. ]
    
    Reported-by: Richard Biener <rguenther@suse.de>
    Reported-by: H.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Yang Shi <yang.shi@linux.alibaba.com>
    Acked-by: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Guan Xuetao <gxt@pku.edu.cn>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jeff Dike <jdike@addtoit.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: linux-arch@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: linux-um@lists.infradead.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: stable@vger.kernel.org
    Fixes: dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in munmap")
    Link: http://lkml.kernel.org/r/20190419194747.5E1AD6DC@viggo.jf.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d50a05607a788c1f38bcc0f71ee52603c68f538
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Thu May 16 12:49:42 2019 -0500

    objtool: Allow AR to be overridden with HOSTAR
    
    commit 8ea58f1e8b11cca3087b294779bf5959bf89cc10 upstream.
    
    Currently, this Makefile hardcodes GNU ar, meaning that if it is not
    available, there is no way to supply a different one and the build will
    fail.
    
      $ make AR=llvm-ar CC=clang LD=ld.lld HOSTAR=llvm-ar HOSTCC=clang \
             HOSTLD=ld.lld HOSTLDFLAGS=-fuse-ld=lld defconfig modules_prepare
      ...
        AR       /out/tools/objtool/libsubcmd.a
      /bin/sh: 1: ar: not found
      ...
    
    Follow the logic of HOST{CC,LD} and allow the user to specify a
    different ar tool via HOSTAR (which is used elsewhere in other
    tools/ Makefiles).
    
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Cc: <stable@vger.kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/80822a9353926c38fd7a152991c6292491a9d0e8.1558028966.git.jpoimboe@redhat.com
    Link: https://github.com/ClangBuiltLinux/linux/issues/481
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93dbb5304b51f9d90bd2093351e4313f89eb89ea
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu May 9 11:30:47 2019 -0700

    MIPS: perf: Fix build with CONFIG_CPU_BMIPS5000 enabled
    
    commit 1b1f01b653b408ebe58fec78c566d1075d285c64 upstream.
    
    arch/mips/kernel/perf_event_mipsxx.c: In function 'mipsxx_pmu_enable_event':
    arch/mips/kernel/perf_event_mipsxx.c:326:21: error: unused variable 'event' [-Werror=unused-variable]
      struct perf_event *event = container_of(evt, struct perf_event, hw);
                         ^~~~~
    
    Fix this by making use of IS_ENABLED() to simplify the code and avoid
    unnecessary ifdefery.
    
    Fixes: 84002c88599d ("MIPS: perf: Fix perf with MT counting other threads")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@linux-mips.org
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mips@vger.kernel.org
    Cc: stable@vger.kernel.org # v4.18+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 822e8c43b08a0ec2a197137dd0856bf6c17c89ef
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri May 10 15:41:43 2019 +0300

    perf intel-pt: Fix sample timestamp wrt non-taken branches
    
    commit 1b6599a9d8e6c9f7e9b0476012383b1777f7fc93 upstream.
    
    The sample timestamp is updated to ensure that the timestamp represents
    the time of the sample and not a branch that the decoder is still
    walking towards. The sample timestamp is updated when the decoder
    returns, but the decoder does not return for non-taken branches. Update
    the sample timestamp then also.
    
    Note that commit 3f04d98e972b5 ("perf intel-pt: Improve sample
    timestamp") was also a stable fix and appears, for example, in v4.4
    stable tree as commit a4ebb58fd124 ("perf intel-pt: Improve sample
    timestamp").
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v4.4+
    Fixes: 3f04d98e972b ("perf intel-pt: Improve sample timestamp")
    Link: http://lkml.kernel.org/r/20190510124143.27054-4-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14f3460ed499e734f472bb339ce8b0ec0acb26c6
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri May 10 15:41:42 2019 +0300

    perf intel-pt: Fix improved sample timestamp
    
    commit 61b6e08dc8e3ea80b7485c9b3f875ddd45c8466b upstream.
    
    The decoder uses its current timestamp in samples. Usually that is a
    timestamp that has already passed, but in some cases it is a timestamp
    for a branch that the decoder is walking towards, and consequently
    hasn't reached.
    
    The intel_pt_sample_time() function decides which is which, but was not
    handling TNT packets exactly correctly.
    
    In the case of TNT, the timestamp applies to the first branch, so the
    decoder must first walk to that branch.
    
    That means intel_pt_sample_time() should return true for TNT, and this
    patch makes that change. However, if the first branch is a non-taken
    branch (i.e. a 'N'), then intel_pt_sample_time() needs to return false
    for subsequent taken branches in the same TNT packet.
    
    To handle that, introduce a new state INTEL_PT_STATE_TNT_CONT to
    distinguish the cases.
    
    Note that commit 3f04d98e972b5 ("perf intel-pt: Improve sample
    timestamp") was also a stable fix and appears, for example, in v4.4
    stable tree as commit a4ebb58fd124 ("perf intel-pt: Improve sample
    timestamp").
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v4.4+
    Fixes: 3f04d98e972b5 ("perf intel-pt: Improve sample timestamp")
    Link: http://lkml.kernel.org/r/20190510124143.27054-3-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23abb1eed2ee4c6ce0ff080831918ff86f913852
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri May 10 15:41:41 2019 +0300

    perf intel-pt: Fix instructions sampling rate
    
    commit 7ba8fa20e26eb3c0c04d747f7fd2223694eac4d5 upstream.
    
    The timestamp used to determine if an instruction sample is made, is an
    estimate based on the number of instructions since the last known
    timestamp. A consequence is that it might go backwards, which results in
    extra samples. Change it so that a sample is only made when the
    timestamp goes forwards.
    
    Note this does not affect a sampling period of 0 or sampling periods
    specified as a count of instructions.
    
    Example:
    
     Before:
    
     $ perf script --itrace=i10us
     ls 13812 [003] 2167315.222583:       3270 instructions:u:      7fac71e2e494 __GI___tunables_init+0xf4 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:      30902 instructions:u:      7fac71e2da0f _dl_cache_libcmp+0x2f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:         10 instructions:u:      7fac71e2d9ff _dl_cache_libcmp+0x1f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:          8 instructions:u:      7fac71e2d9ea _dl_cache_libcmp+0xa (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:         14 instructions:u:      7fac71e2d9ea _dl_cache_libcmp+0xa (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:          6 instructions:u:      7fac71e2d9ff _dl_cache_libcmp+0x1f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:         14 instructions:u:      7fac71e2d9ff _dl_cache_libcmp+0x1f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:          4 instructions:u:      7fac71e2dab2 _dl_cache_libcmp+0xd2 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222728:      16423 instructions:u:      7fac71e2477a _dl_map_object_deps+0x1ba (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222734:      12731 instructions:u:      7fac71e27938 _dl_name_match_p+0x68 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ...
    
     After:
     $ perf script --itrace=i10us
     ls 13812 [003] 2167315.222583:       3270 instructions:u:      7fac71e2e494 __GI___tunables_init+0xf4 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:      30902 instructions:u:      7fac71e2da0f _dl_cache_libcmp+0x2f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222728:      16479 instructions:u:      7fac71e2477a _dl_map_object_deps+0x1ba (/lib/x86_64-linux-gnu/ld-2.28.so)
     ...
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: f4aa081949e7b ("perf tools: Add Intel PT decoder")
    Link: http://lkml.kernel.org/r/20190510124143.27054-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c82da3e43ce171bd5da4b698deced68c80c58bd6
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Fri Apr 12 01:12:48 2019 +0300

    memory: tegra: Fix integer overflow on tick value calculation
    
    commit b906c056b6023c390f18347169071193fda57dde upstream.
    
    Multiplying the Memory Controller clock rate by the tick count results
    in an integer overflow and in result the truncated tick value is being
    programmed into hardware, such that the GR3D memory client performance is
    reduced by two times.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dda71c1663c808c72cb95d59cbd0989f767bd9d4
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue May 7 22:56:02 2019 +0900

    tracing: probeevent: Fix to make the type of $comm string
    
    commit 3dd1f7f24f8ceec00bbbc364c2ac3c893f0fdc4c upstream.
    
    Fix to make the type of $comm "string".  If we set the other type to $comm
    argument, it shows meaningless value or wrong data. Currently probe events
    allow us to set string array type (e.g. ":string[2]"), or other digit types
    like x8 on $comm. But since clearly $comm is just a string data, it should
    not be fetched by other types including array.
    
    Link: http://lkml.kernel.org/r/155723736241.9149.14582064184468574539.stgit@devnote2
    
    Cc: Andreas Ziegler <andreas.ziegler@fau.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 533059281ee5 ("tracing: probeevent: Introduce new argument fetching code")
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95142e28042b1f51cbeec81488799d163eb67242
Author: Elazar Leibovich <elazar@lightbitslabs.com>
Date:   Mon Dec 31 13:58:37 2018 +0200

    tracing: Fix partial reading of trace event's id file
    
    commit cbe08bcbbe787315c425dde284dcb715cfbf3f39 upstream.
    
    When reading only part of the id file, the ppos isn't tracked correctly.
    This is taken care by simple_read_from_buffer.
    
    Reading a single byte, and then the next byte would result EOF.
    
    While this seems like not a big deal, this breaks abstractions that
    reads information from files unbuffered. See for example
    https://github.com/golang/go/issues/29399
    
    This code was mentioned as problematic in
    commit cd458ba9d5a5
    ("tracing: Do not (ab)use trace_seq in event_id_read()")
    
    An example C code that show this bug is:
    
      #include <stdio.h>
      #include <stdint.h>
    
      #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>
      #include <unistd.h>
    
      int main(int argc, char **argv) {
        if (argc < 2)
          return 1;
        int fd = open(argv[1], O_RDONLY);
        char c;
        read(fd, &c, 1);
        printf("First  %c\n", c);
        read(fd, &c, 1);
        printf("Second %c\n", c);
      }
    
    Then run with, e.g.
    
      sudo ./a.out /sys/kernel/debug/tracing/events/tcp/tcp_set_state/id
    
    You'll notice you're getting the first character twice, instead of the
    first two characters in the id file.
    
    Link: http://lkml.kernel.org/r/20181231115837.4932-1-elazar@lightbitslabs.com
    
    Cc: Orit Wasserman <orit.was@gmail.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 23725aeeab10b ("ftrace: provide an id file for each event")
    Signed-off-by: Elazar Leibovich <elazar@lightbitslabs.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dba717a81560b6164582c3ebb2b94d4ae08c12e
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed May 1 15:11:17 2019 +0200

    ftrace/x86_64: Emulate call function while updating in breakpoint handler
    
    commit 9e298e8604088a600d8100a111a532a9d342af09 upstream.
    
    Nicolai Stange discovered[1] that if live kernel patching is enabled, and the
    function tracer started tracing the same function that was patched, the
    conversion of the fentry call site during the translation of going from
    calling the live kernel patch trampoline to the iterator trampoline, would
    have as slight window where it didn't call anything.
    
    As live kernel patching depends on ftrace to always call its code (to
    prevent the function being traced from being called, as it will redirect
    it). This small window would allow the old buggy function to be called, and
    this can cause undesirable results.
    
    Nicolai submitted new patches[2] but these were controversial. As this is
    similar to the static call emulation issues that came up a while ago[3].
    But after some debate[4][5] adding a gap in the stack when entering the
    breakpoint handler allows for pushing the return address onto the stack to
    easily emulate a call.
    
    [1] http://lkml.kernel.org/r/20180726104029.7736-1-nstange@suse.de
    [2] http://lkml.kernel.org/r/20190427100639.15074-1-nstange@suse.de
    [3] http://lkml.kernel.org/r/3cf04e113d71c9f8e4be95fb84a510f085aa4afa.1541711457.git.jpoimboe@redhat.com
    [4] http://lkml.kernel.org/r/CAHk-=wh5OpheSU8Em_Q3Hg8qw_JtoijxOdPtHru6d+5K8TWM=A@mail.gmail.com
    [5] http://lkml.kernel.org/r/CAHk-=wjvQxY4DvPrJ6haPgAa6b906h=MwZXO6G8OtiTGe=N7_w@mail.gmail.com
    
    [
      Live kernel patching is not implemented on x86_32, thus the emulate
      calls are only for x86_64.
    ]
    
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Nicolai Stange <nstange@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: the arch/x86 maintainers <x86@kernel.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Miroslav Benes <mbenes@suse.cz>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Mimi Zohar <zohar@linux.ibm.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Nayna Jain <nayna@linux.ibm.com>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: "open list:KERNEL SELFTEST FRAMEWORK" <linux-kselftest@vger.kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: b700e7f03df5 ("livepatch: kernel: add support for live patching")
    Tested-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    [ Changed to only implement emulated calls for x86_64 ]
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a1069824a5c2739aa2850edfa0b4ba6fb06168c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed May 1 15:11:17 2019 +0200

    x86_64: Allow breakpoints to emulate call instructions
    
    commit 4b33dadf37666c0860b88f9e52a16d07bf6d0b03 upstream.
    
    In order to allow breakpoints to emulate call instructions, they need to push
    the return address onto the stack. The x86_64 int3 handler adds a small gap
    to allow the stack to grow some. Use this gap to add the return address to
    be able to emulate a call instruction at the breakpoint location.
    
    These helper functions are added:
    
      int3_emulate_jmp(): changes the location of the regs->ip to return there.
    
     (The next two are only for x86_64)
      int3_emulate_push(): to push the address onto the gap in the stack
      int3_emulate_call(): push the return address and change regs->ip
    
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Nicolai Stange <nstange@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: the arch/x86 maintainers <x86@kernel.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Miroslav Benes <mbenes@suse.cz>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Mimi Zohar <zohar@linux.ibm.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Nayna Jain <nayna@linux.ibm.com>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: "open list:KERNEL SELFTEST FRAMEWORK" <linux-kselftest@vger.kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: b700e7f03df5 ("livepatch: kernel: add support for live patching")
    Tested-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    [ Modified to only work for x86_64 and added comment to int3_emulate_push() ]
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16e559791d6bfcce4f0c1dc2e9e1bde94101088f
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Fri Nov 30 12:39:17 2018 -0600

    x86_64: Add gap to int3 to allow for call emulation
    
    commit 2700fefdb2d9751c416ad56897e27d41e409324a upstream.
    
    To allow an int3 handler to emulate a call instruction, it must be able to
    push a return address onto the stack. Add a gap to the stack to allow the
    int3 handler to push the return address and change the return from int3 to
    jump straight to the emulated called function target.
    
    Link: http://lkml.kernel.org/r/20181130183917.hxmti5josgq4clti@treble
    Link: http://lkml.kernel.org/r/20190502162133.GX2623@hirez.programming.kicks-ass.net
    
    [
      Note, this is needed to allow Live Kernel Patching to not miss calling a
      patched function when tracing is enabled. -- Steven Rostedt
    ]
    
    Cc: stable@vger.kernel.org
    Fixes: b700e7f03df5 ("livepatch: kernel: add support for live patching")
    Tested-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69fc24195198d511c2d996ad259b647269baddf2
Author: Jeff Layton <jlayton@kernel.org>
Date:   Tue May 7 09:20:54 2019 -0400

    ceph: flush dirty inodes before proceeding with remount
    
    commit 00abf69dd24f4444d185982379c5cc3bb7b6d1fc upstream.
    
    xfstest generic/452 was triggering a "Busy inodes after umount" warning.
    ceph was allowing the mount to go read-only without first flushing out
    dirty inodes in the cache. Ensure we sync out the filesystem before
    allowing a remount to proceed.
    
    Cc: stable@vger.kernel.org
    Link: http://tracker.ceph.com/issues/39571
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43cc8d378ca0e73c1e4b2bbe966d57e7e4799205
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Thu Mar 7 01:50:07 2019 +0300

    iommu/tegra-smmu: Fix invalid ASID bits on Tegra30/114
    
    commit 43a0541e312f7136e081e6bf58f6c8a2e9672688 upstream.
    
    Both Tegra30 and Tegra114 have 4 ASID's and the corresponding bitfield of
    the TLB_FLUSH register differs from later Tegra generations that have 128
    ASID's.
    
    In a result the PTE's are now flushed correctly from TLB and this fixes
    problems with graphics (randomly failing tests) on Tegra30.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d79e6a726acbf3a8ac372e635c39130e54c3fbae
Author: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date:   Fri May 10 21:00:25 2019 +1200

    gcc-plugins: arm_ssp_per_task_plugin: Fix for older GCC < 6
    
    commit 259799ea5a9aa099a267f3b99e1f7078bbaf5c5e upstream.
    
    Use gen_rtx_set instead of gen_rtx_SET. The former is a wrapper macro
    that handles the difference between GCC versions implementing
    the latter.
    
    This fixes the following error on my system with g++ 5.4.0 as the host
    compiler
    
       HOSTCXX -fPIC scripts/gcc-plugins/arm_ssp_per_task_plugin.o
     scripts/gcc-plugins/arm_ssp_per_task_plugin.c:42:14: error: macro "gen_rtx_SET" requires 3 arguments, but only 2 given
              mask)),
                   ^
     scripts/gcc-plugins/arm_ssp_per_task_plugin.c: In function ‘unsigned int arm_pertask_ssp_rtl_execute()’:
     scripts/gcc-plugins/arm_ssp_per_task_plugin.c:39:20: error: ‘gen_rtx_SET’ was not declared in this scope
        emit_insn_before(gen_rtx_SET
    
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Fixes: 189af4657186 ("ARM: smp: add support for per-task stack canaries")
    Cc: stable@vger.kernel.org
    Tested-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e83f9e5ce4630f47f294bdefdbdab51a27a5b8d
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Tue Jan 22 07:01:39 2019 +0200

    ovl: fix missing upper fs freeze protection on copy up for ioctl
    
    commit 3428030da004a1128cbdcf93dc03e16f184d845b upstream.
    
    Generalize the helper ovl_open_maybe_copy_up() and use it to copy up file
    with data before FS_IOC_SETFLAGS ioctl.
    
    The FS_IOC_SETFLAGS ioctl is a bit of an odd ball in vfs, which probably
    caused the confusion.  File may be open O_RDONLY, but ioctl modifies the
    file.  VFS does not call mnt_want_write_file() nor lock inode mutex, but
    fs-specific code for FS_IOC_SETFLAGS does.  So ovl_ioctl() calls
    mnt_want_write_file() for the overlay file, and fs-specific code calls
    mnt_want_write_file() for upper fs file, but there was no call for
    ovl_want_write() for copy up duration which prevents overlayfs from copying
    up on a frozen upper fs.
    
    Fixes: dab5ca8fd9dd ("ovl: add lsattr/chattr support")
    Cc: <stable@vger.kernel.org> # v4.19
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf076fd44bd654fb0aca707a5c4b8ab53a6df885
Author: Liu Bo <bo.liu@linux.alibaba.com>
Date:   Thu Apr 18 04:04:41 2019 +0800

    fuse: honor RLIMIT_FSIZE in fuse_file_fallocate
    
    commit 0cbade024ba501313da3b7e5dd2a188a6bc491b5 upstream.
    
    fstests generic/228 reported this failure that fuse fallocate does not
    honor what 'ulimit -f' has set.
    
    This adds the necessary inode_newsize_ok() check.
    
    Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
    Fixes: 05ba1f082300 ("fuse: add FALLOCATE operation")
    Cc: <stable@vger.kernel.org> # v3.5
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79d8f6321221468a60c35bea6f897ba64951a781
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Apr 24 17:05:06 2019 +0200

    fuse: fix writepages on 32bit
    
    commit 9de5be06d0a89ca97b5ab902694d42dfd2bb77d2 upstream.
    
    Writepage requests were cropped to i_size & 0xffffffff, which meant that
    mmaped writes to any file larger than 4G might be silently discarded.
    
    Fix by storing the file size in a properly sized variable (loff_t instead
    of size_t).
    
    Reported-by: Antonio SJ Musumeci <trapexit@spawn.link>
    Fixes: 6eaf4782eb09 ("fuse: writepages: crop secondary requests")
    Cc: <stable@vger.kernel.org> # v3.13
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12db517f8a3e261255601ddf18fe6f0d0097c749
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Apr 1 17:46:57 2019 +0200

    udlfb: introduce a rendering mutex
    
    commit babc250e278eac7b0e671bdaedf833759b43bb78 upstream.
    
    Rendering calls may be done simultaneously from the workqueue,
    dlfb_ops_write, dlfb_ops_ioctl, dlfb_ops_set_par and dlfb_dpy_deferred_io.
    The code is robust enough so that it won't crash on concurrent rendering.
    
    However, concurrent rendering may cause display corruption if the same
    pixel is simultaneously being rendered. In order to avoid this corruption,
    this patch adds a mutex around the rendering calls.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Bernie Thompson <bernie@plugable.com>
    Cc: Ladislav Michl <ladis@linux-mips.org>
    Cc: <stable@vger.kernel.org>
    [b.zolnierkie: replace "dlfb:" with "uldfb:" in the patch summary]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bd143ed410943f00ea3eddecc209d7d2b308a54
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Apr 1 17:46:56 2019 +0200

    udlfb: fix sleeping inside spinlock
    
    commit 6b11f9d8433b471fdd3ebed232b43a4b723be6ff upstream.
    
    If a framebuffer device is used as a console, the rendering calls
    (copyarea, fillrect, imageblit) may be done with the console spinlock
    held. On udlfb, these function call dlfb_handle_damage that takes a
    blocking semaphore before acquiring an URB.
    
    In order to fix the bug, this patch changes the calls copyarea, fillrect
    and imageblit to offload USB work to a workqueue.
    
    A side effect of this patch is 3x improvement in console scrolling speed
    because the device doesn't have to be updated after each copyarea call.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Bernie Thompson <bernie@plugable.com>
    Cc: Ladislav Michl <ladis@linux-mips.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02851943751d8696c499967156d04bd9613ba26c
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Apr 1 17:46:56 2019 +0200

    udlfb: delete the unused parameter for dlfb_handle_damage
    
    commit bd86b6c5c60711dbd4fa21bdb497a188ecb6cf63 upstream.
    
    Remove the unused parameter "data" and unused variable "ret".
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Bernie Thompson <bernie@plugable.com>
    Cc: Ladislav Michl <ladis@linux-mips.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 855e2af24ab59cad0fde7ff75aedf43703974256
Author: Jonas Karlman <jonas@kwiboo.se>
Date:   Sun Mar 10 12:00:45 2019 +0000

    clk: rockchip: fix wrong clock definitions for rk3328
    
    commit fb903392131a324a243c7731389277db1cd9f8df upstream.
    
    This patch fixes definition of several clock gate and select register
    that is wrong for rk3328 referring to the TRM and vendor kernel.
    Also use correct number of softrst registers.
    
    Fix clock definition for:
    - clk_crypto
    - aclk_h265
    - pclk_h265
    - aclk_h264
    - hclk_h264
    - aclk_axisram
    - aclk_gmac
    - aclk_usb3otg
    
    Fixes: fe3511ad8a1c ("clk: rockchip: add clock controller for rk3328")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
    Tested-by: Peter Geis <pgwipeout@gmail.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 317e574eaf6dfe7149ebc3fa0c2080a9c3f7176d
Author: Owen Chen <owen.chen@mediatek.com>
Date:   Tue Mar 5 13:05:38 2019 +0800

    clk: mediatek: Disable tuner_en before change PLL rate
    
    commit be17ca6ac76a5cfd07cc3a0397dd05d6929fcbbb upstream.
    
    PLLs with tuner_en bit, such as APLL1, need to disable
    tuner_en before apply new frequency settings, or the new frequency
    settings (pcw) will not be applied.
    The tuner_en bit will be disabled during changing PLL rate
    and be restored after new settings applied.
    
    Fixes: e2f744a82d725 (clk: mediatek: Add MT2712 clock support)
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Owen Chen <owen.chen@mediatek.com>
    Signed-off-by: Weiyi Lu <weiyi.lu@mediatek.com>
    Reviewed-by: James Liao <jamesjj.liao@mediatek.com>
    Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5f7027a6f79b71f98525a50fb3f9639954b3b5b
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Fri Apr 12 00:48:34 2019 +0300

    clk: tegra: Fix PLLM programming on Tegra124+ when PMC overrides divider
    
    commit 40db569d6769ffa3864fd1b89616b1a7323568a8 upstream.
    
    There are wrongly set parenthesis in the code that are resulting in a
    wrong configuration being programmed for PLLM. The original fix was made
    by Danny Huang in the downstream kernel. The patch was tested on Nyan Big
    Tegra124 chromebook, PLLM rate changing works correctly now and system
    doesn't lock up after changing the PLLM rate due to EMC scaling.
    
    Cc: <stable@vger.kernel.org>
    Tested-by: Steev Klimaszewski <steev@kali.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87b083dbdd8f15fb06ef270cc270bbc0684c3504
Author: Leo Yan <leo.yan@linaro.org>
Date:   Wed Mar 20 18:05:08 2019 +0800

    clk: hi3660: Mark clk_gate_ufs_subsys as critical
    
    commit 9f77a60669d13ed4ddfa6cd7374c9d88da378ffa upstream.
    
    clk_gate_ufs_subsys is a system bus clock, turning off it will
    introduce lockup issue during system suspend flow.  Let's mark
    clk_gate_ufs_subsys as critical clock, thus keeps it on during
    system suspend and resume.
    
    Fixes: d374e6fd5088 ("clk: hisilicon: Add clock driver for hi3660 SoC")
    Cc: stable@vger.kernel.org
    Cc: Zhong Kaihua <zhongkaihua@huawei.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Zhangfei Gao <zhangfei.gao@linaro.org>
    Suggested-by: Dong Zhang <zhangdong46@hisilicon.com>
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c1f44469d838bea098d06da8d61092a4e488d6c
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Tue May 7 13:41:49 2019 -0400

    PNFS fallback to MDS if no deviceid found
    
    commit b1029c9bc078a6f1515f55dd993b507dcc7e3440 upstream.
    
    If we fail to find a good deviceid while trying to pnfs instead of
    propogating an error back fallback to doing IO to the MDS. Currently,
    code with fals the IO with EINVAL.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Fixes: 8d40b0f14846f ("NFS filelayout:call GETDEVICEINFO after pnfs_layout_process completes"
    Cc: stable@vger.kernel.org # v4.11+
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73e0d62f16ec5a8297ae8b2f6ec5f2e5a8b6ba56
Author: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Date:   Mon May 6 11:57:03 2019 +0800

    NFS4: Fix v4.0 client state corruption when mount
    
    commit f02f3755dbd14fb935d24b14650fff9ba92243b8 upstream.
    
    stat command with soft mount never return after server is stopped.
    
    When alloc a new client, the state of the client will be set to
    NFS4CLNT_LEASE_EXPIRED.
    
    When the server is stopped, the state manager will work, and accord
    the state to recover. But the state is NFS4CLNT_LEASE_EXPIRED, it
    will drain the slot table and lead other task to wait queue, until
    the client recovered. Then the stat command is hung.
    
    When discover server trunking, the client will renew the lease,
    but check the client state, it lead the client state corruption.
    
    So, we need to call state manager to recover it when detect server
    ip trunking.
    
    Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1aa8f89cf5adfe69635c40ff087c07b60ca50640
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Mon May 6 14:23:04 2019 +0300

    RDMA/ipoib: Allow user space differentiate between valid dev_port
    
    commit b79656ed44c6865e17bcd93472ec39488bcc4984 upstream.
    
    Systemd triggers the following warning during IPoIB device load:
    
     mlx5_core 0000:00:0c.0 ib0: "systemd-udevd" wants to know my dev_id.
            Should it look at dev_port instead?
            See Documentation/ABI/testing/sysfs-class-net for more info.
    
    This is caused due to user space attempt to differentiate old systems
    without dev_port and new systems with dev_port. In case dev_port will be
    zero, the systemd will try to read dev_id instead.
    
    There is no need to print a warning in such case, because it is valid
    situation and it is needed to ensure systemd compatibility with old
    kernels.
    
    Link: https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c#L358
    Cc: <stable@vger.kernel.org> # 4.19
    Fixes: f6350da41dc7 ("IB/ipoib: Log sysfs 'dev_id' accesses from userspace")
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90ebb540a7b150cc9b7dfe0e5e2036de5cf31794
Author: Jason Gunthorpe <jgg@mellanox.com>
Date:   Tue Apr 16 14:07:29 2019 +0300

    RDMA/mlx5: Use get_zeroed_page() for clock_info
    
    commit ddcdc368b1033e19fd3a5f750752e10e28a87826 upstream.
    
    get_zeroed_page() returns a virtual address for the page which is better
    than allocating a struct page and doing a permanent kmap on it.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Reviewed-by: Haggai Eran <haggaie@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2132baff7e0f2c11b45c6e858b68487d7c3ab6c3
Author: Steve Longerbeam <slongerbeam@gmail.com>
Date:   Wed Feb 20 18:53:30 2019 -0500

    media: imx: Clear fwnode link struct for each endpoint iteration
    
    commit 107927fa597c99eaeee4f51865ca0956ec71b6a2 upstream.
    
    In imx_media_create_csi_of_links(), the 'struct v4l2_fwnode_link' must
    be cleared for each endpoint iteration, otherwise if the remote port
    has no "reg" property, link.remote_port will not be reset to zero.
    This was discovered on the i.MX53 SMD board, since the OV5642 connects
    directly to ipu1_csi0 and has a single source port with no "reg"
    property.
    
    Fixes: 621b08eabcddb ("media: staging/imx: remove static media link arrays")
    
    Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7543aeaf9331132ae094839c658959900a9c66c5
Author: Steve Longerbeam <slongerbeam@gmail.com>
Date:   Wed Feb 20 18:53:29 2019 -0500

    media: imx: csi: Allow unknown nearest upstream entities
    
    commit 904371f90b2c0c749a5ab75478c129a4682ac3d8 upstream.
    
    On i.MX6, the nearest upstream entity to the CSI can only be the
    CSI video muxes or the Synopsys DW MIPI CSI-2 receiver.
    
    However the i.MX53 has no CSI video muxes or a MIPI CSI-2 receiver.
    So allow for the nearest upstream entity to the CSI to be something
    other than those.
    
    Fixes: bf3cfaa712e5c ("media: staging/imx: get CSI bus type from nearest
    upstream entity")
    
    Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a6a542635fe91b1aa5508d8b5b634ccf2ca9c45
Author: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Date:   Sun Mar 24 20:21:12 2019 -0400

    media: ov6650: Fix sensor possibly not detected on probe
    
    commit 933c1320847f5ed6b61a7d10f0a948aa98ccd7b0 upstream.
    
    After removal of clock_start() from before soc_camera_init_i2c() in
    soc_camera_probe() by commit 9aea470b399d ("[media] soc-camera: switch
    I2C subdevice drivers to use v4l2-clk") introduced in v3.11, the ov6650
    driver could no longer probe the sensor successfully because its clock
    was no longer turned on in advance.  The issue was initially worked
    around by adding that missing clock_start() equivalent to OMAP1 camera
    interface driver - the only user of this sensor - but a propoer fix
    should be rather implemented in the sensor driver code itself.
    
    Fix the issue by inserting a delay between the clock is turned on and
    the sensor I2C registers are read for the first time.
    
    Tested on Amstrad Delta with now out of tree but still locally
    maintained omap1_camera host driver.
    
    Fixes: 9aea470b399d ("[media] soc-camera: switch I2C subdevice drivers to use v4l2-clk")
    
    Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 252f74c15935476839ce80032c978b15537c361e
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Feb 19 14:53:49 2019 +0000

    phy: ti-pipe3: fix missing bit-wise or operator when assigning val
    
    commit e6577cb5103b7ca7c0204c0c86ef4af8aa6288f6 upstream.
    
    There seems to be a missing bit-wise or operator when setting val,
    fix this by adding it in.
    
    Fixes: 2796ceb0c18a ("phy: ti-pipe3: Update pcie phy settings")
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 921bb3e9be5b90d3bcb9afc881ae8d38d76b0f85
Author: Christoph Probst <kernel@probst.it>
Date:   Tue May 7 17:16:40 2019 +0200

    cifs: fix strcat buffer overflow and reduce raciness in smb21_set_oplock_level()
    
    commit 6a54b2e002c9d00b398d35724c79f9fe0d9b38fb upstream.
    
    Change strcat to strncpy in the "None" case to fix a buffer overflow
    when cinode->oplock is reset to 0 by another thread accessing the same
    cinode. It is never valid to append "None" to any other message.
    
    Consolidate multiple writes to cinode->oplock to reduce raciness.
    
    Signed-off-by: Christoph Probst <kernel@probst.it>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c65b5a9d8293dd7493d62f4b3e25e7a1c800be9
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Apr 22 22:41:23 2019 +0200

    brcmfmac: Add DMI nvram filename quirk for ACEPC T8 and T11 mini PCs
    
    commit b1a0ba8f772d7a6dcb5aa3e856f5bd8274989ebe upstream.
    
    The ACEPC T8 and T11 mini PCs contain quite generic names in the sys_vendor
    and product_name DMI strings, without this patch brcmfmac will try to load:
    "brcmfmac43455-sdio.Default string-Default string.txt" as nvram file which
    is way too generic.
    
    The DMI strings on which we are matching are somewhat generic too, but
    "To be filled by O.E.M." is less common then "Default string" and the
    system-sku and bios-version strings are pretty unique. Beside the DMI
    strings we also check the wifi-module chip-id and revision. I'm confident
    that the combination of all this is unique.
    
    Both the T8 and T11 use the same wifi-module, this commit adds DMI
    quirks for both mini PCs pointing to brcmfmac43455-sdio.acepc-t8.txt .
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1690852
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e15c901c9b1faf8035bb79d450840f98f47bfb87
Author: Phong Tran <tranmanphong@gmail.com>
Date:   Tue Apr 30 21:56:24 2019 +0700

    of: fix clang -Wunsequenced for be32_to_cpu()
    
    commit 440868661f36071886ed360d91de83bd67c73b4f upstream.
    
    Now, make the loop explicit to avoid clang warning.
    
    ./include/linux/of.h:238:37: warning: multiple unsequenced modifications
    to 'cell' [-Wunsequenced]
                    r = (r << 32) | be32_to_cpu(*(cell++));
                                                      ^~
    ./include/linux/byteorder/generic.h:95:21: note: expanded from macro
    'be32_to_cpu'
                        ^
    ./include/uapi/linux/byteorder/little_endian.h:40:59: note: expanded
    from macro '__be32_to_cpu'
                                                              ^
    ./include/uapi/linux/swab.h:118:21: note: expanded from macro '__swab32'
            ___constant_swab32(x) :                 \
                               ^
    ./include/uapi/linux/swab.h:18:12: note: expanded from macro
    '___constant_swab32'
            (((__u32)(x) & (__u32)0x000000ffUL) << 24) |            \
                      ^
    
    Signed-off-by: Phong Tran <tranmanphong@gmail.com>
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/460
    Suggested-by: David Laight <David.Laight@ACULAB.COM>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: stable@vger.kernel.org
    [robh: fix up whitespace]
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1243cd457451255c2d7a2cfe53698a15e074554
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Apr 17 17:41:23 2019 +0800

    p54: drop device reference count if fails to enable device
    
    commit 8149069db81853570a665f5e5648c0e526dc0e43 upstream.
    
    The function p54p_probe takes an extra reference count of the PCI
    device. However, the extra reference count is not dropped when it fails
    to enable the PCI device. This patch fixes the bug.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Acked-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24cb69043d680963a30cb99eaf45100fea2820fc
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Fri May 3 11:44:34 2019 +0300

    intel_th: msu: Fix single mode with IOMMU
    
    commit 4e0eaf239fb33ebc671303e2b736fa043462e2f4 upstream.
    
    Currently, the pages that are allocated for the single mode of MSC are not
    mapped into the device's dma space and the code is incorrectly using
    *_to_phys() in place of a dma address. This fails with IOMMU enabled and
    is otherwise bad practice.
    
    Fix the single mode buffer allocation to map the pages into the device's
    DMA space.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Fixes: ba82664c134e ("intel_th: Add Memory Storage Unit driver")
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86901d0a34ab0496e7c3bda88f82e1dc03a11981
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Mar 15 22:23:19 2019 -0400

    dcache: sort the freeing-without-RCU-delay mess for good.
    
    commit 5467a68cbf6884c9a9d91e2a89140afb1839c835 upstream.
    
    For lockless accesses to dentries we don't have pinned we rely
    (among other things) upon having an RCU delay between dropping
    the last reference and actually freeing the memory.
    
    On the other hand, for things like pipes and sockets we neither
    do that kind of lockless access, nor want to deal with the
    overhead of an RCU delay every time a socket gets closed.
    
    So delay was made optional - setting DCACHE_RCUACCESS in ->d_flags
    made sure it would happen.  We tried to avoid setting it unless
    we knew we need it.  Unfortunately, that had led to recurring
    class of bugs, in which we missed the need to set it.
    
    We only really need it for dentries that are created by
    d_alloc_pseudo(), so let's not bother with trying to be smart -
    just make having an RCU delay the default.  The ones that do
    *not* get it set the replacement flag (DCACHE_NORCU) and we'd
    better use that sparingly.  d_alloc_pseudo() is the only
    such user right now.
    
    FWIW, the race that finally prompted that switch had been
    between __lock_parent() of immediate subdirectory of what's
    currently the root of a disconnected tree (e.g. from
    open-by-handle in progress) racing with d_splice_alias()
    elsewhere picking another alias for the same inode, either
    on outright corrupted fs image, or (in case of open-by-handle
    on NFS) that subdirectory having been just moved on server.
    It's not easy to hit, so the sky is not falling, but that's
    not the first race on similar missed cases and the logics
    for settinf DCACHE_RCUACCESS has gotten ridiculously
    convoluted.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb259d53313c7bf9c3676d779e87d2cfd8f1d077
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Apr 4 18:56:10 2019 +0200

    md: add a missing endianness conversion in check_sb_changes
    
    commit ed4d0a4ea11e19863952ac6a7cea3bbb27ccd452 upstream.
    
    The on-disk value is little endian and we need to convert it to
    native endian before storing the value in the in-core structure.
    
    Fixes: 7564beda19b36 ("md-cluster/raid10: support add disk under grow mode")
    Cc: <stable@vger.kernel.org> # 4.20+
    Acked-by: Guoqing Jiang <gqjiang@suse.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ceaae3df28efaf53dab5f4719931b79dbade647e
Author: Yufen Yu <yuyufen@huawei.com>
Date:   Tue Apr 2 14:22:14 2019 +0800

    md: add mddev->pers to avoid potential NULL pointer dereference
    
    commit ee37e62191a59d253fc916b9fc763deb777211e2 upstream.
    
    When doing re-add, we need to ensure rdev->mddev->pers is not NULL,
    which can avoid potential NULL pointer derefence in fallowing
    add_bound_rdev().
    
    Fixes: a6da4ef85cef ("md: re-add a failed disk")
    Cc: Xiao Ni <xni@redhat.com>
    Cc: NeilBrown <neilb@suse.com>
    Cc: <stable@vger.kernel.org> # 4.4+
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Yufen Yu <yuyufen@huawei.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d8c54fb4b8f1930ef1028a3072de01700e4c7cb
Author: NeilBrown <neilb@suse.com>
Date:   Fri Mar 29 10:46:17 2019 -0700

    md: batch flush requests.
    
    commit 2bc13b83e6298486371761de503faeffd15b7534 upstream.
    
    Currently if many flush requests are submitted to an md device is quick
    succession, they are serialized and can take a long to process them all.
    We don't really need to call flush all those times - a single flush call
    can satisfy all requests submitted before it started.
    So keep track of when the current flush started and when it finished,
    allow any pending flush that was requested before the flush started
    to complete without waiting any more.
    
    Test results from Xiao:
    
    Test is done on a raid10 device which is created by 4 SSDs. The tool is
    dbench.
    
    1. The latest linux stable kernel
      Operation                Count    AvgLat    MaxLat
      --------------------------------------------------
      Deltree                    768    10.509    78.305
      Flush                  2078376     0.013    10.094
      Close                  21787697     0.019    18.821
      LockX                    96580     0.007     3.184
      Mkdir                      384     0.008     0.062
      Rename                 1255883     0.191    23.534
      ReadX                  46495589     0.020    14.230
      WriteX                 14790591     7.123    60.706
      Unlink                 5989118     0.440    54.551
      UnlockX                  96580     0.005     2.736
      FIND_FIRST             10393845     0.042    12.079
      SET_FILE_INFORMATION   2415558     0.129    10.088
      QUERY_FILE_INFORMATION 4711725     0.005     8.462
      QUERY_PATH_INFORMATION 26883327     0.032    21.715
      QUERY_FS_INFORMATION   4929409     0.010     8.238
      NTCreateX              29660080     0.100    53.268
    
    Throughput 1034.88 MB/sec (sync open)  128 clients  128 procs
    max_latency=60.712 ms
    
    2. With patch1 "Revert "MD: fix lock contention for flush bios""
      Operation                Count    AvgLat    MaxLat
      --------------------------------------------------
      Deltree                    256     8.326    36.761
      Flush                   693291     3.974   180.269
      Close                  7266404     0.009    36.929
      LockX                    32160     0.006     0.840
      Mkdir                      128     0.008     0.021
      Rename                  418755     0.063    29.945
      ReadX                  15498708     0.007     7.216
      WriteX                 4932310    22.482   267.928
      Unlink                 1997557     0.109    47.553
      UnlockX                  32160     0.004     1.110
      FIND_FIRST             3465791     0.036     7.320
      SET_FILE_INFORMATION    805825     0.015     1.561
      QUERY_FILE_INFORMATION 1570950     0.005     2.403
      QUERY_PATH_INFORMATION 8965483     0.013    14.277
      QUERY_FS_INFORMATION   1643626     0.009     3.314
      NTCreateX              9892174     0.061    41.278
    
    Throughput 345.009 MB/sec (sync open)  128 clients  128 procs
    max_latency=267.939 m
    
    3. With patch1 and patch2
      Operation                Count    AvgLat    MaxLat
      --------------------------------------------------
      Deltree                    768     9.570    54.588
      Flush                  2061354     0.666    15.102
      Close                  21604811     0.012    25.697
      LockX                    95770     0.007     1.424
      Mkdir                      384     0.008     0.053
      Rename                 1245411     0.096    12.263
      ReadX                  46103198     0.011    12.116
      WriteX                 14667988     7.375    60.069
      Unlink                 5938936     0.173    30.905
      UnlockX                  95770     0.005     4.147
      FIND_FIRST             10306407     0.041    11.715
      SET_FILE_INFORMATION   2395987     0.048     7.640
      QUERY_FILE_INFORMATION 4672371     0.005     9.291
      QUERY_PATH_INFORMATION 26656735     0.018    19.719
      QUERY_FS_INFORMATION   4887940     0.010     7.654
      NTCreateX              29410811     0.059    28.551
    
    Throughput 1026.21 MB/sec (sync open)  128 clients  128 procs
    max_latency=60.075 ms
    
    Cc: <stable@vger.kernel.org> # v4.19+
    Tested-by: Xiao Ni <xni@redhat.com>
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfbe4d1af4b34adbd81fb29bbb1e3936e0c5fc69
Author: NeilBrown <neilb@suse.com>
Date:   Fri Mar 29 10:46:16 2019 -0700

    Revert "MD: fix lock contention for flush bios"
    
    commit 4bc034d35377196c854236133b07730a777c4aba upstream.
    
    This reverts commit 5a409b4f56d50b212334f338cb8465d65550cd85.
    
    This patch has two problems.
    
    1/ it make multiple calls to submit_bio() from inside a make_request_fn.
     The bios thus submitted will be queued on current->bio_list and not
     submitted immediately.  As the bios are allocated from a mempool,
     this can theoretically result in a deadlock - all the pool of requests
     could be in various ->bio_list queues and a subsequent mempool_alloc
     could block waiting for one of them to be released.
    
    2/ It aims to handle a case when there are many concurrent flush requests.
      It handles this by submitting many requests in parallel - all of which
      are identical and so most of which do nothing useful.
      It would be more efficient to just send one lower-level request, but
      allow that to satisfy multiple upper-level requests.
    
    Fixes: 5a409b4f56d5 ("MD: fix lock contention for flush bios")
    Cc: <stable@vger.kernel.org> # v4.19+
    Tested-by: Xiao Ni <xni@redhat.com>
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be2bcbeda06b0d84352ff199f4df4d6b73b63a81
Author: Paul Moore <paul@paul-moore.com>
Date:   Fri Apr 19 14:55:12 2019 -0400

    proc: prevent changes to overridden credentials
    
    commit 35a196bef449b5824033865b963ed9a43fb8c730 upstream.
    
    Prevent userspace from changing the the /proc/PID/attr values if the
    task's credentials are currently overriden.  This not only makes sense
    conceptually, it also prevents some really bizarre error cases caused
    when trying to commit credentials to a task with overridden
    credentials.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: "chengjian (D)" <cj.chengjian@huawei.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Acked-by: John Johansen <john.johansen@canonical.com>
    Acked-by: James Morris <james.morris@microsoft.com>
    Acked-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2d95e6022f92215034e178db5d6d618699aaa9d
Author: Hou Tao <houtao1@huawei.com>
Date:   Mon Apr 22 21:23:21 2019 +0800

    brd: re-enable __GFP_HIGHMEM in brd_insert_page()
    
    commit f6b50160a06d4a0d6a3999ab0c5aec4f52dba248 upstream.
    
    __GFP_HIGHMEM is disabled if dax is enabled on brd, however
    dax support for brd has been removed since commit (7a862fbbdec6
    "brd: remove dax support"), so restore __GFP_HIGHMEM in
    brd_insert_page().
    
    Also remove the no longer applicable comments about DAX and highmem.
    
    Cc: stable@vger.kernel.org
    Fixes: 7a862fbbdec6 ("brd: remove dax support")
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 019da3cf8d2d90837d16ea731def0d0e913f1995
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Wed Apr 17 10:35:35 2019 +0300

    stm class: Fix channel bitmap on 32-bit systems
    
    commit 51e0f227812ed81a368de54157ebe14396b4be03 upstream.
    
    Commit 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace
    Module devices") naively calculates the channel bitmap size in 64-bit
    chunks regardless of the size of underlying unsigned long, making the
    bitmap half as big on a 32-bit system. This leads to an out of bounds
    access with the upper half of the bitmap.
    
    Fix this by using BITS_TO_LONGS. While at it, convert to using
    struct_size() for the total size calculation of the master struct.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Fixes: 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")
    Reported-by: Mulu He <muluhe@codeaurora.org>
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e52484d4b3154c36f745f9bb46df25e972dd9f7b
Author: Tingwei Zhang <tingwei@codeaurora.org>
Date:   Wed Apr 17 10:35:34 2019 +0300

    stm class: Fix channel free in stm output free path
    
    commit ee496da4c3915de3232b5f5cd20e21ae3e46fe8d upstream.
    
    Number of free masters is not set correctly in stm
    free path. Fix this by properly adding the number
    of output channels before setting them to 0 in
    stm_output_disclaim().
    
    Currently it is equivalent to doing nothing since
    master->nr_free is incremented by 0.
    
    Fixes: 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")
    Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org>
    Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Cc: stable@vger.kernel.org # v4.4
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a76effe2dea3e011f5d1e1a6a1e31809cd73f5f
Author: Helge Deller <deller@gmx.de>
Date:   Sun May 5 23:54:34 2019 +0200

    parisc: Rename LEVEL to PA_ASM_LEVEL to avoid name clash with DRBD code
    
    commit 1829dda0e87f4462782ca81be474c7890efe31ce upstream.
    
    LEVEL is a very common word, and now after many years it suddenly
    clashed with another LEVEL define in the DRBD code.
    Rename it to PA_ASM_LEVEL instead.
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2d87b36a59bed6f685b337caf5af5a041a6da98
Author: Helge Deller <deller@gmx.de>
Date:   Sun May 5 23:55:02 2019 +0200

    parisc: Use PA_ASM_LEVEL in boot code
    
    commit bdca5d64ee92abeacd6dada0bc6f6f8e6350dd67 upstream.
    
    The LEVEL define clashed with the DRBD code.
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v4.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fac8648ec7cec6d693c17f473c5eb2b5f3b67a1c
Author: Helge Deller <deller@gmx.de>
Date:   Wed May 1 14:59:58 2019 +0200

    parisc: Allow live-patching of __meminit functions
    
    commit d19a12906e5e558c0f6b6cfece7b7caf1012ef95 upstream.
    
    When making the text sections writeable with set_kernel_text_rw(1),
    include all text sections including those in the __init section.
    Otherwise functions marked with __meminit will stay read-only.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org>    # 4.20+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62c78938e3ee3de18de59550eb20f3e18b0143c0
Author: Helge Deller <deller@gmx.de>
Date:   Sat Apr 27 23:57:49 2019 +0200

    parisc: Add memory barrier to asm pdc and sync instructions
    
    commit 2d94a832e246ac00fd32eec241e6f1aa6fbc5700 upstream.
    
    Add compiler memory barriers to ensure the compiler doesn't reorder memory
    operations around these instructions.
    
    Cc: stable@vger.kernel.org # v4.20+
    Fixes: 3847dab77421 ("parisc: Add alternative coding infrastructure")
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81641f9c6039342fdc6040fe37be5275bd50ef26
Author: Helge Deller <deller@gmx.de>
Date:   Tue Apr 2 12:17:08 2019 +0200

    parisc: Skip registering LED when running in QEMU
    
    commit b438749044356dd1329c45e9b5a9377b6ea13eb2 upstream.
    
    No need to spend CPU cycles when we run on QEMU.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    CC: stable@vger.kernel.org # v4.9+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4a05c586c3adabd48de69734cb7d78daa32c9ec
Author: John David Anglin <dave.anglin@bell.net>
Date:   Sun Apr 21 19:47:17 2019 -0400

    parisc: Add memory clobber to TLB purges
    
    commit 44224bdb99150ad17cf394973b25736cb92c246a upstream.
    
    The pdtlb and pitlb instructions are strongly ordered. The asms invoking
    these instructions should be compiler memory barriers to ensure the
    compiler doesn't reorder memory operations around these instructions.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    CC: stable@vger.kernel.org # v4.20+
    Fixes: 3847dab77421 ("parisc: Add alternative coding infrastructure")
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52b905433b0d804b3e77826f5bbe977f0dbe2d95
Author: Helge Deller <deller@gmx.de>
Date:   Sat Apr 6 16:45:14 2019 +0200

    parisc: Export running_on_qemu symbol for modules
    
    commit 3e1120f4b57bc12437048494ab56648edaa5b57d upstream.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    CC: stable@vger.kernel.org # v4.9+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b3b51fe5befc703eb218b8f0f71d2c6657c974c
Author: Steve Twiss <stwiss.opensource@diasemi.com>
Date:   Mon Mar 18 16:17:57 2019 +0000

    regulator: core: fix error path for regulator_set_voltage_unlocked
    
    commit 70b464918e5331e488058870fcc6821d54c4e541 upstream.
    
    During several error paths in the function
    regulator_set_voltage_unlocked() the value of 'ret' can take on negative
    error values. However, in calls that go through the 'goto out' statement,
    this return value is lost and return 0 is used instead, indicating a
    'pass'.
    
    There are several cases where this function should legitimately return a
    fail instead of a pass: one such case includes constraints check during
    voltage selection in the call to regulator_check_voltage(), which can
    have -EINVAL for the case when an unsupported voltage is incorrectly
    requested. In that case, -22 is expected as the return value, not 0.
    
    Fixes: 9243a195be7a ("regulator: core: Change voltage setting path")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97346dda2c9952f6e86de509cd9982587011b9b0
Author: Ming Lei <ming.lei@redhat.com>
Date:   Tue Apr 30 09:52:25 2019 +0800

    blk-mq: free hw queue's resource in hctx's release handler
    
    commit c7e2d94b3d1634988a95ac4d77a72dc7487ece06 upstream.
    
    Once blk_cleanup_queue() returns, tags shouldn't be used any more,
    because blk_mq_free_tag_set() may be called. Commit 45a9c9d909b2
    ("blk-mq: Fix a use-after-free") fixes this issue exactly.
    
    However, that commit introduces another issue. Before 45a9c9d909b2,
    we are allowed to run queue during cleaning up queue if the queue's
    kobj refcount is held. After that commit, queue can't be run during
    queue cleaning up, otherwise oops can be triggered easily because
    some fields of hctx are freed by blk_mq_free_queue() in blk_cleanup_queue().
    
    We have invented ways for addressing this kind of issue before, such as:
    
            8dc765d438f1 ("SCSI: fix queue cleanup race before queue initialization is done")
            c2856ae2f315 ("blk-mq: quiesce queue before freeing queue")
    
    But still can't cover all cases, recently James reports another such
    kind of issue:
    
            https://marc.info/?l=linux-scsi&m=155389088124782&w=2
    
    This issue can be quite hard to address by previous way, given
    scsi_run_queue() may run requeues for other LUNs.
    
    Fixes the above issue by freeing hctx's resources in its release handler, and this
    way is safe becasue tags isn't needed for freeing such hctx resource.
    
    This approach follows typical design pattern wrt. kobject's release handler.
    
    Cc: Dongli Zhang <dongli.zhang@oracle.com>
    Cc: James Smart <james.smart@broadcom.com>
    Cc: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: linux-scsi@vger.kernel.org,
    Cc: Martin K . Petersen <martin.petersen@oracle.com>,
    Cc: Christoph Hellwig <hch@lst.de>,
    Cc: James E . J . Bottomley <jejb@linux.vnet.ibm.com>,
    Reported-by: James Smart <james.smart@broadcom.com>
    Fixes: 45a9c9d909b2 ("blk-mq: Fix a use-after-free")
    Cc: stable@vger.kernel.org
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Tested-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 860dde8d09627606834c3ed3c98008725c8f8ec9
Author: Ira Weiny <ira.weiny@intel.com>
Date:   Sun Feb 10 14:34:24 2019 -0800

    mm/gup: Remove the 'write' parameter from gup_fast_permitted()
    
    commit ad8cfb9c42ef83ecf4079bc7d77e6557648e952b upstream.
    
    The 'write' parameter is unused in gup_fast_permitted() so remove it.
    
    Signed-off-by: Ira Weiny <ira.weiny@intel.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20190210223424.13934-1-ira.weiny@intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Justin Forbes <jmforbes@linuxtx.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b80fc1eed53783dd1d8ac2d27b504912c4b45fa3
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Tue May 7 12:59:38 2019 -0700

    net/mlx5e: Fix ethtool rxfh commands when CONFIG_MLX5_EN_RXNFC is disabled
    
    [ Upstream commit 8f0916c6dc5cd5e3bc52416fa2a9ff4075080180 ]
    
    ethtool user spaces needs to know ring count via ETHTOOL_GRXRINGS when
    executing (ethtool -x) which is retrieved via ethtool get_rxnfc callback,
    in mlx5 this callback is disabled when CONFIG_MLX5_EN_RXNFC=n.
    
    This patch allows only ETHTOOL_GRXRINGS command on mlx5e_get_rxnfc() when
    CONFIG_MLX5_EN_RXNFC is disabled, so ethtool -x will continue working.
    
    Fixes: fe6d86b3c316 ("net/mlx5e: Add CONFIG_MLX5_EN_RXNFC for ethtool rx nfc")
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5125c4d4cfca1a1852425ec710e83710080876f7
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Tue May 7 13:15:20 2019 -0700

    net/mlx5: Imply MLXFW in mlx5_core
    
    [ Upstream commit bad861f31bb15a99becef31aab59640eaeb247e2 ]
    
    mlxfw can be compiled as external module while mlx5_core can be
    builtin, in such case mlx5 will act like mlxfw is disabled.
    
    Since mlxfw is just a service library for mlx* drivers,
    imply it in mlx5_core to make it always reachable if it was enabled.
    
    Fixes: 3ffaabecd1a1 ("net/mlx5e: Support the flash device ethtool callback")
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac5465716ae6f5cc383256242fe3db5d9a66eb59
Author: Dmytro Linkin <dmitrolin@mellanox.com>
Date:   Thu May 2 15:21:38 2019 +0000

    net/mlx5e: Additional check for flow destination comparison
    
    [ Upstream commit c979c445a88e1c9dd7d8f90838c10456ae4ecd09 ]
    
    Flow destination comparison has an inaccuracy: code see no
    difference between same vf ports, which belong to different pfs.
    
    Example: If start ping from VF0 (PF1) to VF1 (PF1) and mirror
    all traffic to VF0 (PF2), icmp reply to VF0 (PF1) and mirrored
    flow to VF0 (PF2) would be determined as same destination. It lead
    to creating flow handler with rule nodes, which not added to node
    tree. When later driver try to delete this flow rules we got
    kernel crash.
    
    Add comparison of vhca_id field to avoid this.
    
    Fixes: 1228e912c934 ("net/mlx5: Consider encapsulation properties when comparing destinations")
    Signed-off-by: Dmytro Linkin <dmitrolin@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Vlad Buslov <vladbu@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3e09b07aab6b2db3f70e1f69c70bf9b4edc5bf4
Author: Dmytro Linkin <dmitrolin@mellanox.com>
Date:   Thu Apr 25 08:52:02 2019 +0000

    net/mlx5e: Add missing ethtool driver info for representors
    
    [ Upstream commit cf83c8fdcd4756644595521f48748ec22f7efede ]
    
    For all representors added firmware version info to show in
    ethtool driver info.
    For uplink representor, because only it is tied to the pci device
    sysfs, added pci bus info.
    
    Fixes: ff9b85de5d5d ("net/mlx5e: Add some ethtool port control entries to the uplink rep netdev")
    Signed-off-by: Dmytro Linkin <dmitrolin@mellanox.com>
    Reviewed-by: Gavi Teitz <gavi@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5048d03fa137ee48968c0433d3d4e53cb1f3a83b
Author: Jorge E. Moreira <jemoreira@google.com>
Date:   Thu May 16 13:51:07 2019 -0700

    vsock/virtio: Initialize core virtio vsock before registering the driver
    
    [ Upstream commit ba95e5dfd36647622d8897a2a0470dde60e59ffd ]
    
    Avoid a race in which static variables in net/vmw_vsock/af_vsock.c are
    accessed (while handling interrupts) before they are initialized.
    
    [    4.201410] BUG: unable to handle kernel paging request at ffffffffffffffe8
    [    4.207829] IP: vsock_addr_equals_addr+0x3/0x20
    [    4.211379] PGD 28210067 P4D 28210067 PUD 28212067 PMD 0
    [    4.211379] Oops: 0000 [#1] PREEMPT SMP PTI
    [    4.211379] Modules linked in:
    [    4.211379] CPU: 1 PID: 30 Comm: kworker/1:1 Not tainted 4.14.106-419297-gd7e28cc1f241 #1
    [    4.211379] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
    [    4.211379] Workqueue: virtio_vsock virtio_transport_rx_work
    [    4.211379] task: ffffa3273d175280 task.stack: ffffaea1800e8000
    [    4.211379] RIP: 0010:vsock_addr_equals_addr+0x3/0x20
    [    4.211379] RSP: 0000:ffffaea1800ebd28 EFLAGS: 00010286
    [    4.211379] RAX: 0000000000000002 RBX: 0000000000000000 RCX: ffffffffb94e42f0
    [    4.211379] RDX: 0000000000000400 RSI: ffffffffffffffe0 RDI: ffffaea1800ebdd0
    [    4.211379] RBP: ffffaea1800ebd58 R08: 0000000000000001 R09: 0000000000000001
    [    4.211379] R10: 0000000000000000 R11: ffffffffb89d5d60 R12: ffffaea1800ebdd0
    [    4.211379] R13: 00000000828cbfbf R14: 0000000000000000 R15: ffffaea1800ebdc0
    [    4.211379] FS:  0000000000000000(0000) GS:ffffa3273fd00000(0000) knlGS:0000000000000000
    [    4.211379] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    4.211379] CR2: ffffffffffffffe8 CR3: 000000002820e001 CR4: 00000000001606e0
    [    4.211379] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [    4.211379] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [    4.211379] Call Trace:
    [    4.211379]  ? vsock_find_connected_socket+0x6c/0xe0
    [    4.211379]  virtio_transport_recv_pkt+0x15f/0x740
    [    4.211379]  ? detach_buf+0x1b5/0x210
    [    4.211379]  virtio_transport_rx_work+0xb7/0x140
    [    4.211379]  process_one_work+0x1ef/0x480
    [    4.211379]  worker_thread+0x312/0x460
    [    4.211379]  kthread+0x132/0x140
    [    4.211379]  ? process_one_work+0x480/0x480
    [    4.211379]  ? kthread_destroy_worker+0xd0/0xd0
    [    4.211379]  ret_from_fork+0x35/0x40
    [    4.211379] Code: c7 47 08 00 00 00 00 66 c7 07 28 00 c7 47 08 ff ff ff ff c7 47 04 ff ff ff ff c3 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 8b 47 08 <3b> 46 08 75 0a 8b 47 04 3b 46 04 0f 94 c0 c3 31 c0 c3 90 66 2e
    [    4.211379] RIP: vsock_addr_equals_addr+0x3/0x20 RSP: ffffaea1800ebd28
    [    4.211379] CR2: ffffffffffffffe8
    [    4.211379] ---[ end trace f31cc4a2e6df3689 ]---
    [    4.211379] Kernel panic - not syncing: Fatal exception in interrupt
    [    4.211379] Kernel Offset: 0x37000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    [    4.211379] Rebooting in 5 seconds..
    
    Fixes: 22b5c0b63f32 ("vsock/virtio: fix kernel panic after device hot-unplug")
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Cc: Stefano Garzarella <sgarzare@redhat.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: kvm@vger.kernel.org
    Cc: virtualization@lists.linux-foundation.org
    Cc: netdev@vger.kernel.org
    Cc: kernel-team@android.com
    Cc: stable@vger.kernel.org [4.9+]
    Signed-off-by: Jorge E. Moreira <jemoreira@google.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac01b87ed3ec104e6bb413d7654e164044def2df
Author: Junwei Hu <hujunwei4@huawei.com>
Date:   Fri May 17 19:27:34 2019 +0800

    tipc: fix modprobe tipc failed after switch order of device registration
    
    [ Upstream commit 532b0f7ece4cb2ffd24dc723ddf55242d1188e5e ]
    
    Error message printed:
    modprobe: ERROR: could not insert 'tipc': Address family not
    supported by protocol.
    when modprobe tipc after the following patch: switch order of
    device registration, commit 7e27e8d6130c
    ("tipc: switch order of device registration to fix a crash")
    
    Because sock_create_kern(net, AF_TIPC, ...) is called by
    tipc_topsrv_create_listener() in the initialization process
    of tipc_net_ops, tipc_socket_init() must be execute before that.
    
    I move tipc_socket_init() into function tipc_init_net().
    
    Fixes: 7e27e8d6130c
    ("tipc: switch order of device registration to fix a crash")
    Signed-off-by: Junwei Hu <hujunwei4@huawei.com>
    Reported-by: Wang Wang <wangwang2@huawei.com>
    Reviewed-by: Kang Zhou <zhoukang7@huawei.com>
    Reviewed-by: Suanming Mou <mousuanming@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51adb8ebe8c1d80528fc2ea863cfea9d32d2c52b
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri May 17 16:45:43 2019 +0200

    vsock/virtio: free packets during the socket release
    
    [ Upstream commit ac03046ece2b158ebd204dfc4896fd9f39f0e6c8 ]
    
    When the socket is released, we should free all packets
    queued in the per-socket list in order to avoid a memory
    leak.
    
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f48a2fa3d79c6d1d114098a2fb4468695af1bd1
Author: Junwei Hu <hujunwei4@huawei.com>
Date:   Thu May 16 10:51:15 2019 +0800

    tipc: switch order of device registration to fix a crash
    
    [ Upstream commit 7e27e8d6130c5e88fac9ddec4249f7f2337fe7f8 ]
    
    When tipc is loaded while many processes try to create a TIPC socket,
    a crash occurs:
     PANIC: Unable to handle kernel paging request at virtual
     address "dfff20000000021d"
     pc : tipc_sk_create+0x374/0x1180 [tipc]
     lr : tipc_sk_create+0x374/0x1180 [tipc]
       Exception class = DABT (current EL), IL = 32 bits
     Call trace:
      tipc_sk_create+0x374/0x1180 [tipc]
      __sock_create+0x1cc/0x408
      __sys_socket+0xec/0x1f0
      __arm64_sys_socket+0x74/0xa8
     ...
    
    This is due to race between sock_create and unfinished
    register_pernet_device. tipc_sk_insert tries to do
    "net_generic(net, tipc_net_id)".
    but tipc_net_id is not initialized yet.
    
    So switch the order of the two to close the race.
    
    This can be reproduced with multiple processes doing socket(AF_TIPC, ...)
    and one process doing module removal.
    
    Fixes: a62fbccecd62 ("tipc: make subscriber server support net namespace")
    Signed-off-by: Junwei Hu <hujunwei4@huawei.com>
    Reported-by: Wang Wang <wangwang2@huawei.com>
    Reviewed-by: Xiaogang Wang <wangxiaogang3@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0501b80b158aa7959f81d447bdeb3015d949ac71
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue May 14 15:12:19 2019 +0200

    rtnetlink: always put IFLA_LINK for links with a link-netnsid
    
    [ Upstream commit feadc4b6cf42a53a8a93c918a569a0b7e62bd350 ]
    
    Currently, nla_put_iflink() doesn't put the IFLA_LINK attribute when
    iflink == ifindex.
    
    In some cases, a device can be created in a different netns with the
    same ifindex as its parent. That device will not dump its IFLA_LINK
    attribute, which can confuse some userspace software that expects it.
    For example, if the last ifindex created in init_net and foo are both
    8, these commands will trigger the issue:
    
        ip link add parent type dummy                   # ifindex 9
        ip link add link parent netns foo type macvlan  # ifindex 9 in ns foo
    
    So, in case a device puts the IFLA_LINK_NETNSID attribute in a dump,
    always put the IFLA_LINK attribute as well.
    
    Thanks to Dan Winship for analyzing the original OpenShift bug down to
    the missing netlink attribute.
    
    v2: change Fixes tag, it's been here forever, as Nicolas Dichtel said
        add Nicolas' ack
    v3: change Fixes tag
        fix subject typo, spotted by Edward Cree
    
    Analyzed-by: Dan Winship <danw@redhat.com>
    Fixes: d8a5ec672768 ("[NET]: netlink support for moving devices between network namespaces.")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d4b2073848940aa9a90c509a72ca802faea1538
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue May 14 22:55:32 2019 +0800

    ppp: deflate: Fix possible crash in deflate_init
    
    [ Upstream commit 3ebe1bca58c85325c97a22d4fc3f5b5420752e6f ]
    
    BUG: unable to handle kernel paging request at ffffffffa018f000
    PGD 3270067 P4D 3270067 PUD 3271063 PMD 2307eb067 PTE 0
    Oops: 0000 [#1] PREEMPT SMP
    CPU: 0 PID: 4138 Comm: modprobe Not tainted 5.1.0-rc7+ #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    RIP: 0010:ppp_register_compressor+0x3e/0xd0 [ppp_generic]
    Code: 98 4a 3f e2 48 8b 15 c1 67 00 00 41 8b 0c 24 48 81 fa 40 f0 19 a0
    75 0e eb 35 48 8b 12 48 81 fa 40 f0 19 a0 74
    RSP: 0018:ffffc90000d93c68 EFLAGS: 00010287
    RAX: ffffffffa018f000 RBX: ffffffffa01a3000 RCX: 000000000000001a
    RDX: ffff888230c750a0 RSI: 0000000000000000 RDI: ffffffffa019f000
    RBP: ffffc90000d93c80 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa0194080
    R13: ffff88822ee1a700 R14: 0000000000000000 R15: ffffc90000d93e78
    FS:  00007f2339557540(0000) GS:ffff888237a00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffa018f000 CR3: 000000022bde4000 CR4: 00000000000006f0
    Call Trace:
     ? 0xffffffffa01a3000
     deflate_init+0x11/0x1000 [ppp_deflate]
     ? 0xffffffffa01a3000
     do_one_initcall+0x6c/0x3cc
     ? kmem_cache_alloc_trace+0x248/0x3b0
     do_init_module+0x5b/0x1f1
     load_module+0x1db1/0x2690
     ? m_show+0x1d0/0x1d0
     __do_sys_finit_module+0xc5/0xd0
     __x64_sys_finit_module+0x15/0x20
     do_syscall_64+0x6b/0x1d0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    If ppp_deflate fails to register in deflate_init,
    module initialization failed out, however
    ppp_deflate_draft may has been regiestred and not
    unregistered before return.
    Then the seconed modprobe will trigger crash like this.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebf4338d96e9f605468ef462fefa0b8ac5867140
Author: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Date:   Tue May 14 14:28:19 2019 -0700

    nfp: flower: add rcu locks when accessing netdev for tunnels
    
    [ Upstream commit cb07d915bf278a7a3938b983bbcb4921366b5eff ]
    
    Add rcu locks when accessing netdev when processing route request
    and tunnel keep alive messages received from hardware.
    
    Fixes: 8e6a9046b66a ("nfp: flower vxlan neighbour offload")
    Fixes: 856f5b135758 ("nfp: flower vxlan neighbour keep-alive")
    Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
    Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: John Hurley <john.hurley@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d818a94975edbdf6a2646f0a5cf33edd1a7b9c19
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Wed May 15 17:29:43 2019 +0200

    net: usb: qmi_wwan: add Telit 0x1260 and 0x1261 compositions
    
    [ Upstream commit b4e467c82f8c12af78b6f6fa5730cb7dea7af1b4 ]
    
    Added support for Telit LE910Cx 0x1260 and 0x1261 compositions.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18b3bb2503b499b8029fcf776edd9850094b37ac
Author: Willem de Bruijn <willemb@google.com>
Date:   Wed May 15 13:29:16 2019 -0400

    net: test nouarg before dereferencing zerocopy pointers
    
    [ Upstream commit 185ce5c38ea76f29b6bd9c7c8c7a5e5408834920 ]
    
    Zerocopy skbs without completion notification were added for packet
    sockets with PACKET_TX_RING user buffers. Those signal completion
    through the TP_STATUS_USER bit in the ring. Zerocopy annotation was
    added only to avoid premature notification after clone or orphan, by
    triggering a copy on these paths for these packets.
    
    The mechanism had to define a special "no-uarg" mode because packet
    sockets already use skb_uarg(skb) == skb_shinfo(skb)->destructor_arg
    for a different pointer.
    
    Before deferencing skb_uarg(skb), verify that it is a real pointer.
    
    Fixes: 5cd8d46ea1562 ("packet: copy user buffers before orphan or clone")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e6d54b16a8979d225b9c2a1253b863d5dddf1ad
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Tue May 14 19:03:19 2019 +0800

    net/mlx4_core: Change the error print to info print
    
    [ Upstream commit 00f9fec48157f3734e52130a119846e67a12314b ]
    
    The error print within mlx4_flow_steer_promisc_add() should
    be a info print.
    
    Fixes: 592e49dda812 ('net/mlx4: Implement promiscuous mode with device managed flow-steering')
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 708c22fedf0ca49b7b8c2c6ef37df3b0f1459487
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 16 08:09:57 2019 -0700

    net: avoid weird emergency message
    
    [ Upstream commit d7c04b05c9ca14c55309eb139430283a45c4c25f ]
    
    When host is under high stress, it is very possible thread
    running netdev_wait_allrefs() returns from msleep(250)
    10 seconds late.
    
    This leads to these messages in the syslog :
    
    [...] unregister_netdevice: waiting for syz_tun to become free. Usage count = 0
    
    If the device refcount is zero, the wait is over.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 145708e7d94c53399ba46b5e8fa860369383b077
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon May 13 14:06:24 2019 -0700

    net: Always descend into dsa/
    
    [ Upstream commit 0fe9f173d6cda95874edeb413b1fa9907b5ae830 ]
    
    Jiri reported that with a kernel built with CONFIG_FIXED_PHY=y,
    CONFIG_NET_DSA=m and CONFIG_NET_DSA_LOOP=m, we would not get to a
    functional state where the mock-up driver is registered. Turns out that
    we are not descending into drivers/net/dsa/ unconditionally, and we
    won't be able to link-in dsa_loop_bdinfo.o which does the actual mock-up
    mdio device registration.
    
    Reported-by: Jiri Pirko <jiri@resnulli.us>
    Fixes: 40013ff20b1b ("net: dsa: Fix functional dsa-loop dependency on FIXED_PHY")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com>
    Tested-by: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c8566ebb5f13b3d36fee56923ac5360360cff65
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 15 19:39:52 2019 -0700

    ipv6: prevent possible fib6 leaks
    
    [ Upstream commit 61fb0d01680771f72cc9d39783fb2c122aaad51e ]
    
    At ipv6 route dismantle, fib6_drop_pcpu_from() is responsible
    for finding all percpu routes and set their ->from pointer
    to NULL, so that fib6_ref can reach its expected value (1).
    
    The problem right now is that other cpus can still catch the
    route being deleted, since there is no rcu grace period
    between the route deletion and call to fib6_drop_pcpu_from()
    
    This can leak the fib6 and associated resources, since no
    notifier will take care of removing the last reference(s).
    
    I decided to add another boolean (fib6_destroying) instead
    of reusing/renaming exception_bucket_flushed to ease stable backports,
    and properly document the memory barriers used to implement this fix.
    
    This patch has been co-developped with Wei Wang.
    
    Fixes: 93531c674315 ("net/ipv6: separate handling of FIB entries from dst based routes")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Wei Wang <weiwan@google.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Martin Lau <kafai@fb.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aed9be48191fb6c878d61a3cccadf6574c38c1e8
Author: Wei Wang <weiwan@google.com>
Date:   Thu May 16 13:30:54 2019 -0700

    ipv6: fix src addr routing with the exception table
    
    [ Upstream commit 510e2ceda031eed97a7a0f9aad65d271a58b460d ]
    
    When inserting route cache into the exception table, the key is
    generated with both src_addr and dest_addr with src addr routing.
    However, current logic always assumes the src_addr used to generate the
    key is a /128 host address. This is not true in the following scenarios:
    1. When the route is a gateway route or does not have next hop.
       (rt6_is_gw_or_nonexthop() == false)
    2. When calling ip6_rt_cache_alloc(), saddr is passed in as NULL.
    This means, when looking for a route cache in the exception table, we
    have to do the lookup twice: first time with the passed in /128 host
    address, second time with the src_addr stored in fib6_info.
    
    This solves the pmtu discovery issue reported by Mikael Magnusson where
    a route cache with a lower mtu info is created for a gateway route with
    src addr. However, the lookup code is not able to find this route cache.
    
    Fixes: 2b760fcf5cfb ("ipv6: hook up exception table to store dst cache")
    Reported-by: Mikael Magnusson <mikael.kernel@lists.m7n.se>
    Bisected-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Wei Wang <weiwan@google.com>
    Cc: Martin Lau <kafai@fb.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>