commit c57b1153a58a6263863667296b5f00933fc46a4f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jul 16 08:16:48 2020 +0200

    Linux 5.4.52

commit 1a70857590f70efbfb67e088220e639c2766d63f
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Wed Jun 24 17:39:14 2020 +0200

    s390/maccess: add no DAT mode to kernel_write
    
    [ Upstream commit d6df52e9996dcc2062c3d9c9123288468bb95b52 ]
    
    To be able to patch kernel code before paging is initialized do plain
    memcpy if DAT is off. This is required to enable early jump label
    initialization.
    
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 627d15eecb61c25fb4a5e1335f737c43ad99a1c1
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Wed Apr 29 10:24:47 2020 -0500

    s390: Change s390_kernel_write() return type to match memcpy()
    
    [ Upstream commit cb2cceaefb4c4dc28fc27ff1f1b2d258bfc10353 ]
    
    s390_kernel_write()'s function type is almost identical to memcpy().
    Change its return type to "void *" so they can be used interchangeably.
    
    Cc: linux-s390@vger.kernel.org
    Cc: heiko.carstens@de.ibm.com
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
    Acked-by: Miroslav Benes <mbenes@suse.cz>
    Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> # s390
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d64dc6118a0fa9ecc8947966debda5fd67982091
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Fri Jul 10 12:27:58 2020 +0200

    pwm: jz4740: Fix build failure
    
    When commit 9017dc4fbd59 ("pwm: jz4740: Enhance precision in calculation
    of duty cycle") from v5.8-rc1 was backported to v5.4.x its dependency on
    commit ce1f9cece057 ("pwm: jz4740: Use clocks from TCU driver") was not
    noticed which made the pwm-jz4740 driver fail to build.
    
    As ce1f9cece057 depends on still more rework, just backport a small part
    of this commit to make the driver build again. (There is no dependency
    on the functionality introduced in ce1f9cece057, just the rate variable
    is needed.)
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Reported-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d13a78d13d2c97e2ffe733f4558ad66eddbdce86
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 29 12:19:52 2020 +0300

    perf scripts python: exported-sql-viewer.py: Fix unexpanded 'Find' result
    
    commit 3a3cf7c570a486b07d9a6e68a77548aea6a8421f upstream.
    
    Using Python version 3.8.2 and PySide2 version 5.14.0, ctrl-F ('Find')
    would not expand the tree to the result. Fix by using setExpanded().
    
    Example:
    
      $ perf record -e intel_pt//u uname
      Linux
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.034 MB perf.data ]
      $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py perf.data.db branches calls
      2020-06-26 15:32:14.928997 Creating database ...
      2020-06-26 15:32:14.933971 Writing records...
      2020-06-26 15:32:15.535251 Adding indexes
      2020-06-26 15:32:15.542993 Dropping unused tables
      2020-06-26 15:32:15.549716 Done
      $ python3 ~/libexec/perf-core/scripts/python/exported-sql-viewer.py perf.data.db
    
      Select: Reports -> Context-Sensitive Call Graph    or     Reports -> Call Tree
      Press: Ctrl-F
      Enter: main
      Press: Enter
    
    Before: line showing 'main' does not display
    
    After: tree is expanded to line showing 'main'
    
    Fixes: ebd70c7dc2f5f ("perf scripts python: exported-sql-viewer.py: Add ability to find symbols in the call-graph")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200629091955.17090-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 64e8b913c30b176fbe8dae4baa065eb86fba6dd4
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 29 12:19:54 2020 +0300

    perf scripts python: exported-sql-viewer.py: Fix zero id in call tree 'Find' result
    
    commit 031c8d5edb1ddeb6d398f7942ce2a01a1a51ada9 upstream.
    
    Using ctrl-F ('Find') would not find 'unknown' because it matches id
    zero.  Fix by excluding id zero from selection.
    
    Example:
    
       $ perf record -e intel_pt//u uname
       Linux
       [ perf record: Woken up 1 times to write data ]
       [ perf record: Captured and wrote 0.034 MB perf.data ]
       $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py perf.data.db branches calls
       2020-06-26 15:32:14.928997 Creating database ...
       2020-06-26 15:32:14.933971 Writing records...
       2020-06-26 15:32:15.535251 Adding indexes
       2020-06-26 15:32:15.542993 Dropping unused tables
       2020-06-26 15:32:15.549716 Done
       $ python3 ~/libexec/perf-core/scripts/python/exported-sql-viewer.py perf.data.db
    
       Select: Reports -> Call Tree
       Press: Ctrl-F
       Enter: unknown
       Press: Enter
    
    Before: displays 'unknown' not found
    After: tree is expanded to line showing 'unknown'
    
    Fixes: ae8b887c00d3f ("perf scripts python: exported-sql-viewer.py: Add call tree")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200629091955.17090-6-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2038998170b09e7430bd91ae83837caf00e2094d
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 29 12:19:53 2020 +0300

    perf scripts python: exported-sql-viewer.py: Fix zero id in call graph 'Find' result
    
    commit 7ff520b0a71dd2db695b52ad117d81b7eaf6ff9d upstream.
    
    Using ctrl-F ('Find') would not find 'unknown' because it matches id zero.
    Fix by excluding id zero from selection.
    
    Example:
    
      $ perf record -e intel_pt//u uname
      Linux
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.034 MB perf.data ]
      $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py perf.data.db branches calls
      2020-06-26 15:32:14.928997 Creating database ...
      2020-06-26 15:32:14.933971 Writing records...
      2020-06-26 15:32:15.535251 Adding indexes
      2020-06-26 15:32:15.542993 Dropping unused tables
      2020-06-26 15:32:15.549716 Done
      $ python3 ~/libexec/perf-core/scripts/python/exported-sql-viewer.py perf.data.db
    
      Select: Reports -> Context-Sensitive Call Graph
      Press: Ctrl-F
      Enter: unknown
      Press: Enter
    
    Before: gets stuck
    After: tree is expanded to line showing 'unknown'
    
    Fixes: 254c0d820b86d ("perf scripts python: exported-sql-viewer.py: Factor out CallGraphModelBase")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200629091955.17090-5-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e51a811c242e55452df537173486c0eea4950b46
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 29 12:19:50 2020 +0300

    perf scripts python: export-to-postgresql.py: Fix struct.pack() int argument
    
    commit 640432e6bed08e9d5d2ba26856ba3f55008b07e3 upstream.
    
    Python 3.8 is requiring that arguments being packed as integers are also
    integers.  Add int() accordingly.
    
     Before:
    
       $ perf record -e intel_pt//u uname
       $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-postgresql.py perf_data_db branches calls
       2020-06-25 16:09:10.547256 Creating database...
       2020-06-25 16:09:10.733185 Writing to intermediate files...
       Traceback (most recent call last):
         File "/home/ahunter/libexec/perf-core/scripts/python/export-to-postgresql.py", line 1106, in synth_data
           cbr(id, raw_buf)
         File "/home/ahunter/libexec/perf-core/scripts/python/export-to-postgresql.py", line 1058, in cbr
           value = struct.pack("!hiqiiiiii", 4, 8, id, 4, cbr, 4, MHz, 4, percent)
       struct.error: required argument is not an integer
       Fatal Python error: problem in Python trace event handler
       Python runtime state: initialized
    
       Current thread 0x00007f35d3695780 (most recent call first):
       <no Python frame>
       Aborted (core dumped)
    
     After:
    
       $ dropdb perf_data_db
       $ rm -rf perf_data_db-perf-data
       $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-postgresql.py perf_data_db branches calls
       2020-06-25 16:09:40.990267 Creating database...
       2020-06-25 16:09:41.207009 Writing to intermediate files...
       2020-06-25 16:09:41.270915 Copying to database...
       2020-06-25 16:09:41.382030 Removing intermediate files...
       2020-06-25 16:09:41.384630 Adding primary keys
       2020-06-25 16:09:41.541894 Adding foreign keys
       2020-06-25 16:09:41.677044 Dropping unused tables
       2020-06-25 16:09:41.703761 Done
    
    Fixes: aba44287a224 ("perf scripts python: export-to-postgresql.py: Export Intel PT power and ptwrite events")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200629091955.17090-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 299ffecbd5305d2806b284e380921e9454ebe8a6
Author: Michal Suchanek <msuchanek@suse.de>
Date:   Tue Jun 30 17:49:24 2020 +0200

    dm writecache: reject asynchronous pmem devices
    
    commit a46624580376a3a0beb218d94cbc7f258696e29f upstream.
    
    DM writecache does not handle asynchronous pmem. Reject it when
    supplied as cache.
    
    Link: https://lore.kernel.org/linux-nvdimm/87lfk5hahc.fsf@linux.ibm.com/
    Fixes: 6e84200c0a29 ("virtio-pmem: Add virtio pmem driver")
    Signed-off-by: Michal Suchanek <msuchanek@suse.de>
    Acked-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org # 5.3+
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49a7ac29f6a0c3360f521ab2162dc2663f3b40a2
Author: Ming Lei <ming.lei@redhat.com>
Date:   Tue Jul 7 11:04:33 2020 -0400

    blk-mq: consider non-idle request as "inflight" in blk_mq_rq_inflight()
    
    commit 05a4fed69ff00a8bd83538684cb602a4636b07a7 upstream.
    
    dm-multipath is the only user of blk_mq_queue_inflight().  When
    dm-multipath calls blk_mq_queue_inflight() to check if it has
    outstanding IO it can get a false negative.  The reason for this is
    blk_mq_rq_inflight() doesn't consider requests that are no longer
    MQ_RQ_IN_FLIGHT but that are now MQ_RQ_COMPLETE (->complete isn't
    called or finished yet) as "inflight".
    
    This causes request-based dm-multipath's dm_wait_for_completion() to
    return before all outstanding dm-multipath requests have actually
    completed.  This breaks DM multipath's suspend functionality because
    blk-mq requests complete after DM's suspend has finished -- which
    shouldn't happen.
    
    Fix this by considering any request not in the MQ_RQ_IDLE state
    (so either MQ_RQ_COMPLETE or MQ_RQ_IN_FLIGHT) as "inflight" in
    blk_mq_rq_inflight().
    
    Fixes: 3c94d83cb3526 ("blk-mq: change blk_mq_queue_busy() to blk_mq_queue_inflight()")
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dfd182451d99dfa007072cb4bc7c7b39938be9a
Author: Janosch Frank <frankja@linux.ibm.com>
Date:   Tue Jul 7 15:38:54 2020 +0200

    s390/mm: fix huge pte soft dirty copying
    
    commit 528a9539348a0234375dfaa1ca5dbbb2f8f8e8d2 upstream.
    
    If the pmd is soft dirty we must mark the pte as soft dirty (and not dirty).
    This fixes some cases for guest migration with huge page backings.
    
    Cc: <stable@vger.kernel.org> # 4.8
    Fixes: bc29b7ac1d9f ("s390/mm: clean up pte/pmd encoding")
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d62bc7e960f5b86ad8b57f9d39b3ea5fc8e4ad2
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Thu Jun 18 17:17:19 2020 +0200

    s390/setup: init jump labels before command line parsing
    
    commit 95e61b1b5d6394b53d147c0fcbe2ae70fbe09446 upstream.
    
    Command line parameters might set static keys. This is true for s390 at
    least since commit 6471384af2a6 ("mm: security: introduce init_on_alloc=1
    and init_on_free=1 boot options"). To avoid the following WARN:
    
    static_key_enable_cpuslocked(): static key 'init_on_alloc+0x0/0x40' used
    before call to jump_label_init()
    
    call jump_label_init() just before parse_early_param().
    jump_label_init() is safe to call multiple times (x86 does that), doesn't
    do any memory allocations and hence should be safe to call that early.
    
    Fixes: 6471384af2a6 ("mm: security: introduce init_on_alloc=1 and init_on_free=1 boot options")
    Cc: <stable@vger.kernel.org> # 5.3: d6df52e9996d: s390/maccess: add no DAT mode to kernel_write
    Cc: <stable@vger.kernel.org> # 5.3
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6de7cbbcacb164f34d6263e44118df88621b420
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Wed May 27 14:18:45 2020 -0700

    ARC: elf: use right ELF_ARCH
    
    commit b7faf971081a4e56147f082234bfff55135305cb upstream.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 854827a2697a9e538fbe9b7f68ee9405d18bcc53
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Tue May 19 22:28:32 2020 -0700

    ARC: entry: fix potential EFA clobber when TIF_SYSCALL_TRACE
    
    commit 00fdec98d9881bf5173af09aebd353ab3b9ac729 upstream.
    
    Trap handler for syscall tracing reads EFA (Exception Fault Address),
    in case strace wants PC of trap instruction (EFA is not part of pt_regs
    as of current code).
    
    However this EFA read is racy as it happens after dropping to pure
    kernel mode (re-enabling interrupts). A taken interrupt could
    context-switch, trigger a different task's trap, clobbering EFA for this
    execution context.
    
    Fix this by reading EFA early, before re-enabling interrupts. A slight
    side benefit is de-duplication of FAKE_RET_FROM_EXCPN in trap handler.
    The trap handler is common to both ARCompact and ARCv2 builds too.
    
    This just came out of code rework/review and no real problem was reported
    but is clearly a potential problem specially for strace.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37634f502b53f97dd7f6e4423881634a9f8b189f
Author: Neil Armstrong <narmstrong@baylibre.com>
Date:   Mon Jun 8 10:44:58 2020 +0200

    mmc: meson-gx: limit segments to 1 when dram-access-quirk is needed
    
    commit 27a5e7d36d383970affae801d77141deafd536a8 upstream.
    
    The actual max_segs computation leads to failure while using the broadcom
    sdio brcmfmac/bcmsdh driver, since the driver tries to make usage of
    scatter gather.
    
    But with the dram-access-quirk we use a 1,5K SRAM bounce buffer, and the
    max_segs current value of 3 leads to max transfers to 4,5k, which doesn't
    work.
    
    This patch sets max_segs to 1 to better describe the hardware limitation,
    and fix the SDIO functionality with the brcmfmac/bcmsdh driver on Amlogic
    G12A/G12B SoCs on boards like SEI510 or Khadas VIM3.
    
    Reported-by: Art Nikpal <art@khadas.com>
    Reported-by: Christian Hewitt <christianshewitt@gmail.com>
    Fixes: acdc8e71d9bb ("mmc: meson-gx: add dram-access-quirk")
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200608084458.32014-1-narmstrong@baylibre.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9fe45efa671246eaefa898db70044edbd7293f7
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jul 8 12:25:20 2020 -0400

    dm: use noio when sending kobject event
    
    commit 6958c1c640af8c3f40fa8a2eee3b5b905d95b677 upstream.
    
    kobject_uevent may allocate memory and it may be called while there are dm
    devices suspended. The allocation may recurse into a suspended device,
    causing a deadlock. We must set the noio flag when sending a uevent.
    
    The observed deadlock was reported here:
    https://www.redhat.com/archives/dm-devel/2020-March/msg00025.html
    
    Reported-by: Khazhismel Kumykov <khazhy@google.com>
    Reported-by: Tahsin Erdogan <tahsin@google.com>
    Reported-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    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 ede24894e8bf81ee333f176bfbf94c5ba02c0fc7
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Mon Jul 6 18:23:17 2020 -0400

    drm/amdgpu: don't do soft recovery if gpu_recovery=0
    
    commit f4892c327a8e5df7ce16cab40897daf90baf6bec upstream.
    
    It's impossible to debug shader hangs with soft recovery.
    
    Signed-off-by: Marek Olšák <marek.olsak@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef8164f03a86238eea4ea3d8abba80384ebf75dc
Author: Tom Rix <trix@redhat.com>
Date:   Mon Jul 6 05:28:57 2020 -0700

    drm/radeon: fix double free
    
    commit 41855a898650803e24b284173354cc3e44d07725 upstream.
    
    clang static analysis flags this error
    
    drivers/gpu/drm/radeon/ci_dpm.c:5652:9: warning: Use of memory after it is freed [unix.Malloc]
                    kfree(rdev->pm.dpm.ps[i].ps_priv);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/gpu/drm/radeon/ci_dpm.c:5654:2: warning: Attempt to free released memory [unix.Malloc]
            kfree(rdev->pm.dpm.ps);
            ^~~~~~~~~~~~~~~~~~~~~~
    
    problem is reported in ci_dpm_fini, with these code blocks.
    
            for (i = 0; i < rdev->pm.dpm.num_ps; i++) {
                    kfree(rdev->pm.dpm.ps[i].ps_priv);
            }
            kfree(rdev->pm.dpm.ps);
    
    The first free happens in ci_parse_power_table where it cleans up locally
    on a failure.  ci_dpm_fini also does a cleanup.
    
            ret = ci_parse_power_table(rdev);
            if (ret) {
                    ci_dpm_fini(rdev);
                    return ret;
            }
    
    So remove the cleanup in ci_parse_power_table and
    move the num_ps calculation to inside the loop so ci_dpm_fini
    will know how many array elements to free.
    
    Fixes: cc8dbbb4f62a ("drm/radeon: add dpm support for CI dGPUs (v2)")
    
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 026f830e0ba388b2f7db3510f3e89c0cacd9eb8e
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Mon Jul 6 09:14:12 2020 -0400

    btrfs: fix double put of block group with nocow
    
    commit 230ed397435e85b54f055c524fcb267ae2ce3bc4 upstream.
    
    While debugging a patch that I wrote I was hitting use-after-free panics
    when accessing block groups on unmount.  This turned out to be because
    in the nocow case if we bail out of doing the nocow for whatever reason
    we need to call btrfs_dec_nocow_writers() if we called the inc.  This
    puts our block group, but a few error cases does
    
    if (nocow) {
        btrfs_dec_nocow_writers();
        goto error;
    }
    
    unfortunately, error is
    
    error:
            if (nocow)
                    btrfs_dec_nocow_writers();
    
    so we get a double put on our block group.  Fix this by dropping the
    error cases calling of btrfs_dec_nocow_writers(), as it's handled at the
    error label now.
    
    Fixes: 762bf09893b4 ("btrfs: improve error handling in run_delalloc_nocow")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 808b2b3ea85a669a81db3d47c0b32b824f4d1798
Author: Boris Burkov <boris@bur.io>
Date:   Wed Jun 17 11:35:19 2020 -0700

    btrfs: fix fatal extent_buffer readahead vs releasepage race
    
    commit 6bf9cd2eed9aee6d742bb9296c994a91f5316949 upstream.
    
    Under somewhat convoluted conditions, it is possible to attempt to
    release an extent_buffer that is under io, which triggers a BUG_ON in
    btrfs_release_extent_buffer_pages.
    
    This relies on a few different factors. First, extent_buffer reads done
    as readahead for searching use WAIT_NONE, so they free the local extent
    buffer reference while the io is outstanding. However, they should still
    be protected by TREE_REF. However, if the system is doing signficant
    reclaim, and simultaneously heavily accessing the extent_buffers, it is
    possible for releasepage to race with two concurrent readahead attempts
    in a way that leaves TREE_REF unset when the readahead extent buffer is
    released.
    
    Essentially, if two tasks race to allocate a new extent_buffer, but the
    winner who attempts the first io is rebuffed by a page being locked
    (likely by the reclaim itself) then the loser will still go ahead with
    issuing the readahead. The loser's call to find_extent_buffer must also
    race with the reclaim task reading the extent_buffer's refcount as 1 in
    a way that allows the reclaim to re-clear the TREE_REF checked by
    find_extent_buffer.
    
    The following represents an example execution demonstrating the race:
    
                CPU0                                                         CPU1                                           CPU2
    reada_for_search                                            reada_for_search
      readahead_tree_block                                        readahead_tree_block
        find_create_tree_block                                      find_create_tree_block
          alloc_extent_buffer                                         alloc_extent_buffer
                                                                      find_extent_buffer // not found
                                                                      allocates eb
                                                                      lock pages
                                                                      associate pages to eb
                                                                      insert eb into radix tree
                                                                      set TREE_REF, refs == 2
                                                                      unlock pages
                                                                  read_extent_buffer_pages // WAIT_NONE
                                                                    not uptodate (brand new eb)
                                                                                                                lock_page
                                                                    if !trylock_page
                                                                      goto unlock_exit // not an error
                                                                  free_extent_buffer
                                                                    release_extent_buffer
                                                                      atomic_dec_and_test refs to 1
            find_extent_buffer // found
                                                                                                                try_release_extent_buffer
                                                                                                                  take refs_lock
                                                                                                                  reads refs == 1; no io
              atomic_inc_not_zero refs to 2
              mark_buffer_accessed
                check_buffer_tree_ref
                  // not STALE, won't take refs_lock
                  refs == 2; TREE_REF set // no action
        read_extent_buffer_pages // WAIT_NONE
                                                                                                                  clear TREE_REF
                                                                                                                  release_extent_buffer
                                                                                                                    atomic_dec_and_test refs to 1
                                                                                                                    unlock_page
          still not uptodate (CPU1 read failed on trylock_page)
          locks pages
          set io_pages > 0
          submit io
          return
        free_extent_buffer
          release_extent_buffer
            dec refs to 0
            delete from radix tree
            btrfs_release_extent_buffer_pages
              BUG_ON(io_pages > 0)!!!
    
    We observe this at a very low rate in production and were also able to
    reproduce it in a test environment by introducing some spurious delays
    and by introducing probabilistic trylock_page failures.
    
    To fix it, we apply check_tree_ref at a point where it could not
    possibly be unset by a competing task: after io_pages has been
    incremented. All the codepaths that clear TREE_REF check for io, so they
    would not be able to clear it after this point until the io is done.
    
    Stack trace, for reference:
    [1417839.424739] ------------[ cut here ]------------
    [1417839.435328] kernel BUG at fs/btrfs/extent_io.c:4841!
    [1417839.447024] invalid opcode: 0000 [#1] SMP
    [1417839.502972] RIP: 0010:btrfs_release_extent_buffer_pages+0x20/0x1f0
    [1417839.517008] Code: ed e9 ...
    [1417839.558895] RSP: 0018:ffffc90020bcf798 EFLAGS: 00010202
    [1417839.570816] RAX: 0000000000000002 RBX: ffff888102d6def0 RCX: 0000000000000028
    [1417839.586962] RDX: 0000000000000002 RSI: ffff8887f0296482 RDI: ffff888102d6def0
    [1417839.603108] RBP: ffff88885664a000 R08: 0000000000000046 R09: 0000000000000238
    [1417839.619255] R10: 0000000000000028 R11: ffff88885664af68 R12: 0000000000000000
    [1417839.635402] R13: 0000000000000000 R14: ffff88875f573ad0 R15: ffff888797aafd90
    [1417839.651549] FS:  00007f5a844fa700(0000) GS:ffff88885f680000(0000) knlGS:0000000000000000
    [1417839.669810] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [1417839.682887] CR2: 00007f7884541fe0 CR3: 000000049f609002 CR4: 00000000003606e0
    [1417839.699037] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [1417839.715187] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [1417839.731320] Call Trace:
    [1417839.737103]  release_extent_buffer+0x39/0x90
    [1417839.746913]  read_block_for_search.isra.38+0x2a3/0x370
    [1417839.758645]  btrfs_search_slot+0x260/0x9b0
    [1417839.768054]  btrfs_lookup_file_extent+0x4a/0x70
    [1417839.778427]  btrfs_get_extent+0x15f/0x830
    [1417839.787665]  ? submit_extent_page+0xc4/0x1c0
    [1417839.797474]  ? __do_readpage+0x299/0x7a0
    [1417839.806515]  __do_readpage+0x33b/0x7a0
    [1417839.815171]  ? btrfs_releasepage+0x70/0x70
    [1417839.824597]  extent_readpages+0x28f/0x400
    [1417839.833836]  read_pages+0x6a/0x1c0
    [1417839.841729]  ? startup_64+0x2/0x30
    [1417839.849624]  __do_page_cache_readahead+0x13c/0x1a0
    [1417839.860590]  filemap_fault+0x6c7/0x990
    [1417839.869252]  ? xas_load+0x8/0x80
    [1417839.876756]  ? xas_find+0x150/0x190
    [1417839.884839]  ? filemap_map_pages+0x295/0x3b0
    [1417839.894652]  __do_fault+0x32/0x110
    [1417839.902540]  __handle_mm_fault+0xacd/0x1000
    [1417839.912156]  handle_mm_fault+0xaa/0x1c0
    [1417839.921004]  __do_page_fault+0x242/0x4b0
    [1417839.930044]  ? page_fault+0x8/0x30
    [1417839.937933]  page_fault+0x1e/0x30
    [1417839.945631] RIP: 0033:0x33c4bae
    [1417839.952927] Code: Bad RIP value.
    [1417839.960411] RSP: 002b:00007f5a844f7350 EFLAGS: 00010206
    [1417839.972331] RAX: 000000000000006e RBX: 1614b3ff6a50398a RCX: 0000000000000000
    [1417839.988477] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000002
    [1417840.004626] RBP: 00007f5a844f7420 R08: 000000000000006e R09: 00007f5a94aeccb8
    [1417840.020784] R10: 00007f5a844f7350 R11: 0000000000000000 R12: 00007f5a94aecc79
    [1417840.036932] R13: 00007f5a94aecc78 R14: 00007f5a94aecc90 R15: 00007f5a94aecc40
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Boris Burkov <boris@bur.io>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a046d75acf74b7fd889dca11120e42733f6f46d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jul 14 14:03:44 2020 +0200

    Revert "ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb"
    
    This reverts commit b5c8896bc14f54e5c4dd5a6e42879f125b8abd2d which is
    commit 2bbcaaee1fcbd83272e29f31e2bb7e70d8c49e05 upstream.
    
    It is being reverted upstream, just hasn't made it there yet and is
    causing lots of problems.
    
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Cc: Qiujun Huang <hqjagain@gmail.com>
    Cc: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baef8d1027b0c037128c8be56338e6e066317e68
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Jul 2 15:45:23 2020 -0700

    bpf: Check correct cred for CAP_SYSLOG in bpf_dump_raw_ok()
    
    commit 63960260457a02af2a6cb35d75e6bdb17299c882 upstream.
    
    When evaluating access control over kallsyms visibility, credentials at
    open() time need to be used, not the "current" creds (though in BPF's
    case, this has likely always been the same). Plumb access to associated
    file->f_cred down through bpf_dump_raw_ok() and its callers now that
    kallsysm_show_value() has been refactored to take struct cred.
    
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: bpf@vger.kernel.org
    Cc: stable@vger.kernel.org
    Fixes: 7105e828c087 ("bpf: allow for correlation of maps and helpers in dump")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5541c6347b7404f005103b971e074c96c16c800
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Jul 2 15:20:22 2020 -0700

    kprobes: Do not expose probe addresses to non-CAP_SYSLOG
    
    commit 60f7bb66b88b649433bf700acfc60c3f24953871 upstream.
    
    The kprobe show() functions were using "current"'s creds instead
    of the file opener's creds for kallsyms visibility. Fix to use
    seq_file->file->f_cred.
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 81365a947de4 ("kprobes: Show address of kprobes if kallsyms does")
    Fixes: ffb9bd68ebdb ("kprobes: Show blacklist addresses as same as kallsyms does")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 314ac273f005b8077c272a9439ab21bd74dc80d2
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Jul 2 14:43:59 2020 -0700

    module: Do not expose section addresses to non-CAP_SYSLOG
    
    commit b25a7c5af9051850d4f3d93ca500056ab6ec724b upstream.
    
    The printing of section addresses in /sys/module/*/sections/* was not
    using the correct credentials to evaluate visibility.
    
    Before:
    
     # cat /sys/module/*/sections/.*text
     0xffffffffc0458000
     ...
     # capsh --drop=CAP_SYSLOG -- -c "cat /sys/module/*/sections/.*text"
     0xffffffffc0458000
     ...
    
    After:
    
     # cat /sys/module/*/sections/*.text
     0xffffffffc0458000
     ...
     # capsh --drop=CAP_SYSLOG -- -c "cat /sys/module/*/sections/.*text"
     0x0000000000000000
     ...
    
    Additionally replaces the existing (safe) /proc/modules check with
    file->f_cred for consistency.
    
    Reported-by: Dominik Czarnota <dominik.czarnota@trailofbits.com>
    Fixes: be71eda5383f ("module: Fix display of wrong module .text address")
    Cc: stable@vger.kernel.org
    Tested-by: Jessica Yu <jeyu@kernel.org>
    Acked-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d5d9413a692a2cc0f8848c6d93d7c487caececf
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Jul 2 13:47:20 2020 -0700

    module: Refactor section attr into bin attribute
    
    commit ed66f991bb19d94cae5d38f77de81f96aac7813f upstream.
    
    In order to gain access to the open file's f_cred for kallsym visibility
    permission checks, refactor the module section attributes to use the
    bin_attribute instead of attribute interface. Additionally removes the
    redundant "name" struct member.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Tested-by: Jessica Yu <jeyu@kernel.org>
    Acked-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a6c8d3d0dd0204fd38f302c3822e7bbb0613f24
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Jul 2 11:49:23 2020 -0700

    kallsyms: Refactor kallsyms_show_value() to take cred
    
    commit 160251842cd35a75edfb0a1d76afa3eb674ff40a upstream.
    
    In order to perform future tests against the cred saved during open(),
    switch kallsyms_show_value() to operate on a cred, and have all current
    callers pass current_cred(). This makes it very obvious where callers
    are checking the wrong credential in their "read" contexts. These will
    be fixed in the coming patches.
    
    Additionally switch return value to bool, since it is always used as a
    direct permission check, not a 0-on-success, negative-on-error style
    function return.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79aaeec71271edbf5971894d7b31122dde588802
Author: Steven Price <steven.price@arm.com>
Date:   Wed Jun 17 11:54:56 2020 +0100

    KVM: arm64: Fix kvm_reset_vcpu() return code being incorrect with SVE
    
    If SVE is enabled then 'ret' can be assigned the return value of
    kvm_vcpu_enable_sve() which may be 0 causing future "goto out" sites to
    erroneously return 0 on failure rather than -EINVAL as expected.
    
    Remove the initialisation of 'ret' and make setting the return value
    explicit to avoid this situation in the future.
    
    Fixes: 9a3cdf26e336 ("KVM: arm64/sve: Allow userspace to enable SVE for vcpus")
    Cc: stable@vger.kernel.org
    Reported-by: James Morse <james.morse@arm.com>
    Signed-off-by: Steven Price <steven.price@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200617105456.28245-1-steven.price@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a494529add3f17ea983c5feb889b0281cea01f4b
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Jul 2 21:04:21 2020 -0700

    KVM: x86: Mark CR4.TSD as being possibly owned by the guest
    
    commit 7c83d096aed055a7763a03384f92115363448b71 upstream.
    
    Mark CR4.TSD as being possibly owned by the guest as that is indeed the
    case on VMX.  Without TSD being tagged as possibly owned by the guest, a
    targeted read of CR4 to get TSD could observe a stale value.  This bug
    is benign in the current code base as the sole consumer of TSD is the
    emulator (for RDTSC) and the emulator always "reads" the entirety of CR4
    when grabbing bits.
    
    Add a build-time assertion in to ensure VMX doesn't hand over more CR4
    bits without also updating x86.
    
    Fixes: 52ce3c21aec3 ("x86,kvm,vmx: Don't trap writes to CR4.TSD")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200703040422.31536-2-sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d29a79fa7559b1f081f58194a7452bf8f0d01531
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Jul 2 19:17:14 2020 -0700

    KVM: x86: Inject #GP if guest attempts to toggle CR4.LA57 in 64-bit mode
    
    commit d74fcfc1f0ff4b6c26ecef1f9e48d8089ab4eaac upstream.
    
    Inject a #GP on MOV CR4 if CR4.LA57 is toggled in 64-bit mode, which is
    illegal per Intel's SDM:
    
      CR4.LA57
        57-bit linear addresses (bit 12 of CR4) ... blah blah blah ...
        This bit cannot be modified in IA-32e mode.
    
    Note, the pseudocode for MOV CR doesn't call out the fault condition,
    which is likely why the check was missed during initial development.
    This is arguably an SDM bug and will hopefully be fixed in future
    release of the SDM.
    
    Fixes: fd8cb433734ee ("KVM: MMU: Expose the LA57 feature to VM.")
    Cc: stable@vger.kernel.org
    Reported-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200703021714.5549-1-sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f108b1680022a4c7feb7b93d852f8fb24a116a6
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Jun 30 07:07:20 2020 -0400

    KVM: x86: bit 8 of non-leaf PDPEs is not reserved
    
    commit 5ecad245de2ae23dc4e2dbece92f8ccfbaed2fa7 upstream.
    
    Bit 8 would be the "global" bit, which does not quite make sense for non-leaf
    page table entries.  Intel ignores it; AMD ignores it in PDEs and PDPEs, but
    reserves it in PML4Es.
    
    Probably, earlier versions of the AMD manual documented it as reserved in PDPEs
    as well, and that behavior made it into KVM as well as kvm-unit-tests; fix it.
    
    Cc: stable@vger.kernel.org
    Reported-by: Nadav Amit <namit@vmware.com>
    Fixes: a0c0feb57992 ("KVM: x86: reserve bit 8 of non-leaf PDPEs and PML4Es in 64-bit mode on AMD", 2014-09-03)
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38842949864158cd1aa80d33cf2a79e1e984694e
Author: Alexandru Elisei <alexandru.elisei@arm.com>
Date:   Thu Jun 18 18:12:54 2020 +0100

    KVM: arm64: Annotate hyp NMI-related functions as __always_inline
    
    commit 7733306bd593c737c63110175da6c35b4b8bb32c upstream.
    
    The "inline" keyword is a hint for the compiler to inline a function.  The
    functions system_uses_irq_prio_masking() and gic_write_pmr() are used by
    the code running at EL2 on a non-VHE system, so mark them as
    __always_inline to make sure they'll always be part of the .hyp.text
    section.
    
    This fixes the following splat when trying to run a VM:
    
    [   47.625273] Kernel panic - not syncing: HYP panic:
    [   47.625273] PS:a00003c9 PC:0000ca0b42049fc4 ESR:86000006
    [   47.625273] FAR:0000ca0b42049fc4 HPFAR:0000000010001000 PAR:0000000000000000
    [   47.625273] VCPU:0000000000000000
    [   47.647261] CPU: 1 PID: 217 Comm: kvm-vcpu-0 Not tainted 5.8.0-rc1-ARCH+ #61
    [   47.654508] Hardware name: Globalscale Marvell ESPRESSOBin Board (DT)
    [   47.661139] Call trace:
    [   47.663659]  dump_backtrace+0x0/0x1cc
    [   47.667413]  show_stack+0x18/0x24
    [   47.670822]  dump_stack+0xb8/0x108
    [   47.674312]  panic+0x124/0x2f4
    [   47.677446]  panic+0x0/0x2f4
    [   47.680407] SMP: stopping secondary CPUs
    [   47.684439] Kernel Offset: disabled
    [   47.688018] CPU features: 0x240402,20002008
    [   47.692318] Memory Limit: none
    [   47.695465] ---[ end Kernel panic - not syncing: HYP panic:
    [   47.695465] PS:a00003c9 PC:0000ca0b42049fc4 ESR:86000006
    [   47.695465] FAR:0000ca0b42049fc4 HPFAR:0000000010001000 PAR:0000000000000000
    [   47.695465] VCPU:0000000000000000 ]---
    
    The instruction abort was caused by the code running at EL2 trying to fetch
    an instruction which wasn't mapped in the EL2 translation tables. Using
    objdump showed the two functions as separate symbols in the .text section.
    
    Fixes: 85738e05dc38 ("arm64: kvm: Unmask PMR before entering guest")
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Acked-by: James Morse <james.morse@arm.com>
    Link: https://lore.kernel.org/r/20200618171254.1596055-1-alexandru.elisei@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b956ec9afc2ee50986f3804a80fddf8755480f54
Author: Andrew Scull <ascull@google.com>
Date:   Mon Jul 6 10:52:59 2020 +0100

    KVM: arm64: Stop clobbering x0 for HVC_SOFT_RESTART
    
    commit b9e10d4a6c9f5cbe6369ce2c17ebc67d2e5a4be5 upstream.
    
    HVC_SOFT_RESTART is given values for x0-2 that it should installed
    before exiting to the new address so should not set x0 to stub HVC
    success or failure code.
    
    Fixes: af42f20480bf1 ("arm64: hyp-stub: Zero x0 on successful stub handling")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andrew Scull <ascull@google.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200706095259.1338221-1-ascull@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a20aa35b839aaf55247f85937508ba1b94cf1733
Author: Will Deacon <will@kernel.org>
Date:   Wed Jul 8 17:25:46 2020 +0100

    KVM: arm64: Fix definition of PAGE_HYP_DEVICE
    
    commit 68cf617309b5f6f3a651165f49f20af1494753ae upstream.
    
    PAGE_HYP_DEVICE is intended to encode attribute bits for an EL2 stage-1
    pte mapping a device. Unfortunately, it includes PROT_DEVICE_nGnRE which
    encodes attributes for EL1 stage-1 mappings such as UXN and nG, which are
    RES0 for EL2, and DBM which is meaningless as TCR_EL2.HD is not set.
    
    Fix the definition of PAGE_HYP_DEVICE so that it doesn't set RES0 bits
    at EL2.
    
    Acked-by: Marc Zyngier <maz@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200708162546.26176-1-will@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b742b6a3b78b3d25ac145b283766d4b077c82ba
Author: Jian-Hong Pan <jian-hong@endlessm.com>
Date:   Mon Jul 6 15:18:29 2020 +0800

    ALSA: hda/realtek: Enable headset mic of Acer Veriton N4660G with ALC269VC
    
    commit 781c90c034d994c6a4e2badf189128a95ed864c2 upstream.
    
    The Acer Veriton N4660G desktop's audio (1025:1248) with ALC269VC cannot
    detect the headset microphone until ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE
    quirk maps the NID 0x18 as the headset mic pin.
    
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200706071826.39726-3-jian-hong@endlessm.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8254cddab9a4d28c167732a8118799ac3da3d9c5
Author: Jian-Hong Pan <jian-hong@endlessm.com>
Date:   Mon Jul 6 15:18:27 2020 +0800

    ALSA: hda/realtek: Enable headset mic of Acer C20-820 with ALC269VC
    
    commit 6e15d1261d522d1d222f8f89b23c6966905e9049 upstream.
    
    The Acer Aspire C20-820 AIO's audio (1025:1065) with ALC269VC can't
    detect the headset microphone until ALC269VC_FIXUP_ACER_HEADSET_MIC
    quirk maps the NID 0x18 as the headset mic pin.
    
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200706071826.39726-2-jian-hong@endlessm.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6fbfa6dd96b48bb8347b39640673fa9bc90f195
Author: Jian-Hong Pan <jian-hong@endlessm.com>
Date:   Mon Jul 6 15:18:25 2020 +0800

    ALSA: hda/realtek - Enable audio jacks of Acer vCopperbox with ALC269VC
    
    commit 8eae7e9b3967f08efaa4d70403aec513cbe45ad0 upstream.
    
    The Acer desktop vCopperbox with ALC269VC cannot detect the MIC of
    headset, the line out and internal speaker until
    ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS quirk applied.
    
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Signed-off-by: Chris Chiu <chiu@endlessm.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200706071826.39726-1-jian-hong@endlessm.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 615313fe4294da783aaa1ecc946f75175c928f95
Author: Benjamin Poirier <benjamin.poirier@gmail.com>
Date:   Fri Jul 3 17:00:04 2020 +0900

    ALSA: hda/realtek - Fix Lenovo Thinkpad X1 Carbon 7th quirk subdevice id
    
    commit 9774dc218bb628974dcbc76412f970e9258e5f27 upstream.
    
    1)
    In snd_hda_pick_fixup(), quirks are first matched by PCI SSID and then, if
    there is no match, by codec SSID. The Lenovo "ThinkPad X1 Carbon 7th" has
    an audio chip with PCI SSID 0x2292 and codec SSID 0x2293[1]. Therefore, fix
    the quirk meant for that device to match on .subdevice == 0x2292.
    
    2)
    The "Thinkpad X1 Yoga 7th" does not exist. The companion product to the
    Carbon 7th is the Yoga 4th. That device has an audio chip with PCI SSID
    0x2292 and codec SSID 0x2292[2]. Given the behavior of
    snd_hda_pick_fixup(), it is not possible to have a separate quirk for the
    Yoga based on SSID. Therefore, merge the quirks meant for the Carbon and
    Yoga. This preserves the current behavior for the Yoga.
    
    [1] This is the case on my own machine and can also be checked here
    https://github.com/linuxhw/LsPCI/tree/master/Notebook/Lenovo/ThinkPad
    https://gist.github.com/hamidzr/dd81e429dc86f4327ded7a2030e7d7d9#gistcomment-3225701
    [2]
    https://github.com/linuxhw/LsPCI/tree/master/Convertible/Lenovo/ThinkPad
    https://gist.github.com/hamidzr/dd81e429dc86f4327ded7a2030e7d7d9#gistcomment-3176355
    
    Fixes: d2cd795c4ece ("ALSA: hda - fixup for the bass speaker on Lenovo Carbon X1 7th gen")
    Fixes: 54a6a7dc107d ("ALSA: hda/realtek - Add quirk for the bass speaker on Lenovo Yoga X1 7th gen")
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Kailang Yang <kailang@realtek.com>
    Tested-by: Vincent Bernat <vincent@bernat.ch>
    Tested-by: Even Brenden <evenbrenden@gmail.com>
    Signed-off-by: Benjamin Poirier <benjamin.poirier@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200703080005.8942-2-benjamin.poirier@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92b598132eec6db4eb3c22bdfe3dde6369f684f1
Author: Pavel Hofman <pavel.hofman@ivitera.com>
Date:   Fri Jul 3 12:04:33 2020 +0200

    ALSA: usb-audio: Add implicit feedback quirk for RTX6001
    
    commit b6a1e78b96a5d7f312f08b3a470eb911ab5feec0 upstream.
    
    USB Audio analyzer RTX6001 uses the same implicit feedback quirk
    as other XMOS-based devices.
    
    Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Tested-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/822f0f20-1886-6884-a6b2-d11c685cbafa@ivitera.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caead988fe61f3dba0b7d6a19133b4b912111a1b
Author: Hector Martin <marcan@marcan.st>
Date:   Thu Jul 2 16:14:33 2020 +0900

    ALSA: usb-audio: add quirk for MacroSilicon MS2109
    
    commit e337bf19f6af38d5c3fa6d06cd594e0f890ca1ac upstream.
    
    These devices claim to be 96kHz mono, but actually are 48kHz stereo with
    swapped channels and unaligned transfers.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Link: https://lore.kernel.org/r/20200702071433.237843-1-marcan@marcan.st
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02b2f10e5c9f5854d4ad888a93e4c60886271074
Author: Hui Wang <hui.wang@canonical.com>
Date:   Thu Jun 25 16:38:33 2020 +0800

    ALSA: hda - let hs_mic be picked ahead of hp_mic
    
    commit 6a6ca7881b1ab1c13fe0d70bae29211a65dd90de upstream.
    
    We have a Dell AIO, there is neither internal speaker nor internal
    mic, only a multi-function audio jack on it.
    
    Users reported that after freshly installing the OS and plug
    a headset to the audio jack, the headset can't output sound. I
    reproduced this bug, at that moment, the Input Source is as below:
    Simple mixer control 'Input Source',0
      Capabilities: cenum
      Items: 'Headphone Mic' 'Headset Mic'
      Item0: 'Headphone Mic'
    
    That is because the patch_realtek will set this audio jack as mic_in
    mode if Input Source's value is hp_mic.
    
    If it is not fresh installing, this issue will not happen since the
    systemd will run alsactl restore -f /var/lib/alsa/asound.state, this
    will set the 'Input Source' according to history value.
    
    If there is internal speaker or internal mic, this issue will not
    happen since there is valid sink/source in the pulseaudio, the PA will
    set the 'Input Source' according to active_port.
    
    To fix this issue, change the parser function to let the hs_mic be
    stored ahead of hp_mic.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20200625083833.11264-1-hui.wang@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3496a18a1c3b19c18226a9ae02781113de3b472e
Author: xidongwang <wangxidong_97@163.com>
Date:   Sun Jul 5 20:27:38 2020 -0700

    ALSA: opl3: fix infoleak in opl3
    
    commit ad155712bb1ea2151944cf06a0e08c315c70c1e3 upstream.
    
    The stack object “info” in snd_opl3_ioctl() has a leaking problem.
    It has 2 padding bytes which are not initialized and leaked via
    “copy_to_user”.
    
    Signed-off-by: xidongwang <wangxidong_97@163.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1594006058-30362-1-git-send-email-wangxidong_97@163.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a215725dec7da679ab448294935125fb364f2ba
Author: Kaike Wan <kaike.wan@intel.com>
Date:   Tue Jun 23 16:40:53 2020 -0400

    IB/hfi1: Do not destroy link_wq when the device is shut down
    
    commit 2315ec12ee8e8257bb335654c62e0cae71dc278d upstream.
    
    The workqueue link_wq should only be destroyed when the hfi1 driver is
    unloaded, not when the device is shut down.
    
    Fixes: 71d47008ca1b ("IB/hfi1: Create workqueue for link events")
    Link: https://lore.kernel.org/r/20200623204053.107638.70315.stgit@awfm-01.aw.intel.com
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Kaike Wan <kaike.wan@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 607fbc27d75fbe31d8c65f4a2bcdabbabc71f691
Author: Kaike Wan <kaike.wan@intel.com>
Date:   Tue Jun 23 16:40:47 2020 -0400

    IB/hfi1: Do not destroy hfi1_wq when the device is shut down
    
    commit 28b70cd9236563e1a88a6094673fef3c08db0d51 upstream.
    
    The workqueue hfi1_wq is destroyed in function shutdown_device(), which is
    called by either shutdown_one() or remove_one(). The function
    shutdown_one() is called when the kernel is rebooted while remove_one() is
    called when the hfi1 driver is unloaded. When the kernel is rebooted,
    hfi1_wq is destroyed while all qps are still active, leading to a kernel
    crash:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000102
      IP: [<ffffffff94cb7b02>] __queue_work+0x32/0x3e0
      PGD 0
      Oops: 0000 [#1] SMP
      Modules linked in: dm_round_robin nvme_rdma(OE) nvme_fabrics(OE) nvme_core(OE) ib_isert iscsi_target_mod target_core_mod ib_ucm mlx4_ib iTCO_wdt iTCO_vendor_support mxm_wmi sb_edac intel_powerclamp coretemp intel_rapl iosf_mbi kvm rpcrdma sunrpc irqbypass crc32_pclmul ghash_clmulni_intel rdma_ucm aesni_intel ib_uverbs lrw gf128mul opa_vnic glue_helper ablk_helper ib_iser cryptd ib_umad rdma_cm iw_cm ses enclosure libiscsi scsi_transport_sas pcspkr joydev ib_ipoib(OE) scsi_transport_iscsi ib_cm sg ipmi_ssif mei_me lpc_ich i2c_i801 mei ioatdma ipmi_si dm_multipath ipmi_devintf ipmi_msghandler wmi acpi_pad acpi_power_meter hangcheck_timer ip_tables ext4 mbcache jbd2 mlx4_en sd_mod crc_t10dif crct10dif_generic mgag200 drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm hfi1(OE)
      crct10dif_pclmul crct10dif_common crc32c_intel drm ahci mlx4_core libahci rdmavt(OE) igb megaraid_sas ib_core libata drm_panel_orientation_quirks ptp pps_core devlink dca i2c_algo_bit dm_mirror dm_region_hash dm_log dm_mod
      CPU: 19 PID: 0 Comm: swapper/19 Kdump: loaded Tainted: G OE ------------ 3.10.0-957.el7.x86_64 #1
      Hardware name: Phegda X2226A/S2600CW, BIOS SE5C610.86B.01.01.0024.021320181901 02/13/2018
      task: ffff8a799ba0d140 ti: ffff8a799bad8000 task.ti: ffff8a799bad8000
      RIP: 0010:[<ffffffff94cb7b02>] [<ffffffff94cb7b02>] __queue_work+0x32/0x3e0
      RSP: 0018:ffff8a90dde43d80 EFLAGS: 00010046
      RAX: 0000000000000082 RBX: 0000000000000086 RCX: 0000000000000000
      RDX: ffff8a90b924fcb8 RSI: 0000000000000000 RDI: 000000000000001b
      RBP: ffff8a90dde43db8 R08: ffff8a799ba0d6d8 R09: ffff8a90dde53900
      R10: 0000000000000002 R11: ffff8a90dde43de8 R12: ffff8a90b924fcb8
      R13: 000000000000001b R14: 0000000000000000 R15: ffff8a90d2890000
      FS: 0000000000000000(0000) GS:ffff8a90dde40000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000102 CR3: 0000001a70410000 CR4: 00000000001607e0
      Call Trace:
      [<ffffffff94cb8105>] queue_work_on+0x45/0x50
      [<ffffffffc03f781e>] _hfi1_schedule_send+0x6e/0xc0 [hfi1]
      [<ffffffffc03f78a2>] hfi1_schedule_send+0x32/0x70 [hfi1]
      [<ffffffffc02cf2d9>] rvt_rc_timeout+0xe9/0x130 [rdmavt]
      [<ffffffff94ce563a>] ? trigger_load_balance+0x6a/0x280
      [<ffffffffc02cf1f0>] ? rvt_free_qpn+0x40/0x40 [rdmavt]
      [<ffffffff94ca7f58>] call_timer_fn+0x38/0x110
      [<ffffffffc02cf1f0>] ? rvt_free_qpn+0x40/0x40 [rdmavt]
      [<ffffffff94caa3bd>] run_timer_softirq+0x24d/0x300
      [<ffffffff94ca0f05>] __do_softirq+0xf5/0x280
      [<ffffffff9537832c>] call_softirq+0x1c/0x30
      [<ffffffff94c2e675>] do_softirq+0x65/0xa0
      [<ffffffff94ca1285>] irq_exit+0x105/0x110
      [<ffffffff953796c8>] smp_apic_timer_interrupt+0x48/0x60
      [<ffffffff95375df2>] apic_timer_interrupt+0x162/0x170
      <EOI>
      [<ffffffff951adfb7>] ? cpuidle_enter_state+0x57/0xd0
      [<ffffffff951ae10e>] cpuidle_idle_call+0xde/0x230
      [<ffffffff94c366de>] arch_cpu_idle+0xe/0xc0
      [<ffffffff94cfc3ba>] cpu_startup_entry+0x14a/0x1e0
      [<ffffffff94c57db7>] start_secondary+0x1f7/0x270
      [<ffffffff94c000d5>] start_cpu+0x5/0x14
    
    The solution is to destroy the workqueue only when the hfi1 driver is
    unloaded, not when the device is shut down. In addition, when the device
    is shut down, no more work should be scheduled on the workqueues and the
    workqueues are flushed.
    
    Fixes: 8d3e71136a08 ("IB/{hfi1, qib}: Add handling of kernel restart")
    Link: https://lore.kernel.org/r/20200623204047.107638.77646.stgit@awfm-01.aw.intel.com
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Kaike Wan <kaike.wan@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a882fb7232dbe4ba6b90489322ee956272dc8dc
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Fri Jul 10 16:41:39 2020 +0300

    mlxsw: pci: Fix use-after-free in case of failed devlink reload
    
    [ Upstream commit c4317b11675b99af6641662ebcbd3c6010600e64 ]
    
    In case devlink reload failed, it is possible to trigger a
    use-after-free when querying the kernel for device info via 'devlink dev
    info' [1].
    
    This happens because as part of the reload error path the PCI command
    interface is de-initialized and its mailboxes are freed. When the
    devlink '->info_get()' callback is invoked the device is queried via the
    command interface and the freed mailboxes are accessed.
    
    Fix this by initializing the command interface once during probe and not
    during every reload.
    
    This is consistent with the other bus used by mlxsw (i.e., 'mlxsw_i2c')
    and also allows user space to query the running firmware version (for
    example) from the device after a failed reload.
    
    [1]
    BUG: KASAN: use-after-free in memcpy include/linux/string.h:406 [inline]
    BUG: KASAN: use-after-free in mlxsw_pci_cmd_exec+0x177/0xa60 drivers/net/ethernet/mellanox/mlxsw/pci.c:1675
    Write of size 4096 at addr ffff88810ae32000 by task syz-executor.1/2355
    
    CPU: 1 PID: 2355 Comm: syz-executor.1 Not tainted 5.8.0-rc2+ #29
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xf6/0x16e lib/dump_stack.c:118
     print_address_description.constprop.0+0x1c/0x250 mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
     check_memory_region_inline mm/kasan/generic.c:186 [inline]
     check_memory_region+0x14e/0x1b0 mm/kasan/generic.c:192
     memcpy+0x39/0x60 mm/kasan/common.c:106
     memcpy include/linux/string.h:406 [inline]
     mlxsw_pci_cmd_exec+0x177/0xa60 drivers/net/ethernet/mellanox/mlxsw/pci.c:1675
     mlxsw_cmd_exec+0x249/0x550 drivers/net/ethernet/mellanox/mlxsw/core.c:2335
     mlxsw_cmd_access_reg drivers/net/ethernet/mellanox/mlxsw/cmd.h:859 [inline]
     mlxsw_core_reg_access_cmd drivers/net/ethernet/mellanox/mlxsw/core.c:1938 [inline]
     mlxsw_core_reg_access+0x2f6/0x540 drivers/net/ethernet/mellanox/mlxsw/core.c:1985
     mlxsw_reg_query drivers/net/ethernet/mellanox/mlxsw/core.c:2000 [inline]
     mlxsw_devlink_info_get+0x17f/0x6e0 drivers/net/ethernet/mellanox/mlxsw/core.c:1090
     devlink_nl_info_fill.constprop.0+0x13c/0x2d0 net/core/devlink.c:4588
     devlink_nl_cmd_info_get_dumpit+0x246/0x460 net/core/devlink.c:4648
     genl_lock_dumpit+0x85/0xc0 net/netlink/genetlink.c:575
     netlink_dump+0x515/0xe50 net/netlink/af_netlink.c:2245
     __netlink_dump_start+0x53d/0x830 net/netlink/af_netlink.c:2353
     genl_family_rcv_msg_dumpit.isra.0+0x296/0x300 net/netlink/genetlink.c:638
     genl_family_rcv_msg net/netlink/genetlink.c:733 [inline]
     genl_rcv_msg+0x78d/0x9d0 net/netlink/genetlink.c:753
     netlink_rcv_skb+0x152/0x440 net/netlink/af_netlink.c:2469
     genl_rcv+0x24/0x40 net/netlink/genetlink.c:764
     netlink_unicast_kernel net/netlink/af_netlink.c:1303 [inline]
     netlink_unicast+0x53a/0x750 net/netlink/af_netlink.c:1329
     netlink_sendmsg+0x850/0xd90 net/netlink/af_netlink.c:1918
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg+0x150/0x190 net/socket.c:672
     ____sys_sendmsg+0x6d8/0x840 net/socket.c:2363
     ___sys_sendmsg+0xff/0x170 net/socket.c:2417
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2450
     do_syscall_64+0x56/0xa0 arch/x86/entry/common.c:359
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: a9c8336f6544 ("mlxsw: core: Add support for devlink info command")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c9dcb4929ce2ecce1551d76ba0f090e95144b7e0
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Fri Jul 10 16:41:38 2020 +0300

    mlxsw: spectrum_router: Remove inappropriate usage of WARN_ON()
    
    [ Upstream commit d9d5420273997664a1c09151ca86ac993f2f89c1 ]
    
    We should not trigger a warning when a memory allocation fails. Remove
    the WARN_ON().
    
    The warning is constantly triggered by syzkaller when it is injecting
    faults:
    
    [ 2230.758664] FAULT_INJECTION: forcing a failure.
    [ 2230.758664] name failslab, interval 1, probability 0, space 0, times 0
    [ 2230.762329] CPU: 3 PID: 1407 Comm: syz-executor.0 Not tainted 5.8.0-rc2+ #28
    ...
    [ 2230.898175] WARNING: CPU: 3 PID: 1407 at drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c:6265 mlxsw_sp_router_fib_event+0xfad/0x13e0
    [ 2230.898179] Kernel panic - not syncing: panic_on_warn set ...
    [ 2230.898183] CPU: 3 PID: 1407 Comm: syz-executor.0 Not tainted 5.8.0-rc2+ #28
    [ 2230.898190] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    
    Fixes: 3057224e014c ("mlxsw: spectrum_router: Implement FIB offload in deferred work")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f62f896a56a2ef8468d18462a0e7447f8cca9a7e
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Fri Jul 10 14:46:45 2020 +0200

    net: macb: fix call to pm_runtime in the suspend/resume functions
    
    [ Upstream commit 6c8f85cac98a4c6b767c4c4f6af7283724c32b47 ]
    
    The calls to pm_runtime_force_suspend/resume() functions are only
    relevant if the device is not configured to act as a WoL wakeup source.
    Add the device_may_wakeup() test before calling them.
    
    Fixes: 3e2a5e153906 ("net: macb: add wake-on-lan support via magic packet")
    Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
    Cc: Harini Katakam <harini.katakam@xilinx.com>
    Cc: Sergio Prado <sergio.prado@e-labworks.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad396c483dd5fe3e3509200fa31d47b4f1689bc1
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Fri Jul 10 14:46:42 2020 +0200

    net: macb: mark device wake capable when "magic-packet" property present
    
    [ Upstream commit ced4799d06375929e013eea04ba6908207afabbe ]
    
    Change the way the "magic-packet" DT property is handled in the
    macb_probe() function, matching DT binding documentation.
    Now we mark the device as "wakeup capable" instead of calling the
    device_init_wakeup() function that would enable the wakeup source.
    
    For Ethernet WoL, enabling the wakeup_source is done by
    using ethtool and associated macb_set_wol() function that
    already calls device_set_wakeup_enable() for this purpose.
    
    That would reduce power consumption by cutting more clocks if
    "magic-packet" property is set but WoL is not configured by ethtool.
    
    Fixes: 3e2a5e153906 ("net: macb: add wake-on-lan support via magic packet")
    Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
    Cc: Harini Katakam <harini.katakam@xilinx.com>
    Cc: Sergio Prado <sergio.prado@e-labworks.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d744ee94b49515abbf7a5760a7287a311c73646
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Fri Jul 10 14:46:41 2020 +0200

    net: macb: fix wakeup test in runtime suspend/resume routines
    
    [ Upstream commit 515a10a701d570e26dfbe6ee373f77c8bf11053f ]
    
    Use the proper struct device pointer to check if the wakeup flag
    and wakeup source are positioned.
    Use the one passed by function call which is equivalent to
    &bp->dev->dev.parent.
    
    It's preventing the trigger of a spurious interrupt in case the
    Wake-on-Lan feature is used.
    
    Fixes: d54f89af6cc4 ("net: macb: Add pm runtime support")
    Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
    Cc: Harini Katakam <harini.katakam@xilinx.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15442ef56405787b7fe68a66531004251d898e95
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Jul 10 12:55:08 2020 +0200

    bnxt_en: fix NULL dereference in case SR-IOV configuration fails
    
    [ Upstream commit c8b1d7436045d3599bae56aef1682813ecccaad7 ]
    
    we need to set 'active_vfs' back to 0, if something goes wrong during the
    allocation of SR-IOV resources: otherwise, further VF configurations will
    wrongly assume that bp->pf.vf[x] are valid memory locations, and commands
    like the ones in the following sequence:
    
     # echo 2 >/sys/bus/pci/devices/${ADDR}/sriov_numvfs
     # ip link set dev ens1f0np0 up
     # ip link set dev ens1f0np0 vf 0 trust on
    
    will cause a kernel crash similar to this:
    
     bnxt_en 0000:3b:00.0: not enough MMIO resources for SR-IOV
     BUG: kernel NULL pointer dereference, address: 0000000000000014
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 0 P4D 0
     Oops: 0000 [#1] SMP PTI
     CPU: 43 PID: 2059 Comm: ip Tainted: G          I       5.8.0-rc2.upstream+ #871
     Hardware name: Dell Inc. PowerEdge R740/08D89F, BIOS 2.2.11 06/13/2019
     RIP: 0010:bnxt_set_vf_trust+0x5b/0x110 [bnxt_en]
     Code: 44 24 58 31 c0 e8 f5 fb ff ff 85 c0 0f 85 b6 00 00 00 48 8d 1c 5b 41 89 c6 b9 0b 00 00 00 48 c1 e3 04 49 03 9c 24 f0 0e 00 00 <8b> 43 14 89 c2 83 c8 10 83 e2 ef 45 84 ed 49 89 e5 0f 44 c2 4c 89
     RSP: 0018:ffffac6246a1f570 EFLAGS: 00010246
     RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000000000000b
     RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff98b28f538900
     RBP: ffff98b28f538900 R08: 0000000000000000 R09: 0000000000000008
     R10: ffffffffb9515be0 R11: ffffac6246a1f678 R12: ffff98b28f538000
     R13: 0000000000000001 R14: 0000000000000000 R15: ffffffffc05451e0
     FS:  00007fde0f688800(0000) GS:ffff98baffd40000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000014 CR3: 000000104bb0a003 CR4: 00000000007606e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     PKRU: 55555554
     Call Trace:
      do_setlink+0x994/0xfe0
      __rtnl_newlink+0x544/0x8d0
      rtnl_newlink+0x47/0x70
      rtnetlink_rcv_msg+0x29f/0x350
      netlink_rcv_skb+0x4a/0x110
      netlink_unicast+0x21d/0x300
      netlink_sendmsg+0x329/0x450
      sock_sendmsg+0x5b/0x60
      ____sys_sendmsg+0x204/0x280
      ___sys_sendmsg+0x88/0xd0
      __sys_sendmsg+0x5e/0xa0
      do_syscall_64+0x47/0x80
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: c0c050c58d840 ("bnxt_en: New Broadcom ethernet driver.")
    Reported-by: Fei Liu <feliu@redhat.com>
    CC: Jonathan Toppins <jtoppins@redhat.com>
    CC: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Acked-by: Jonathan Toppins <jtoppins@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65fb9bbee61167c710f1d396d0a2ea3f17b5d2a5
Author: Aya Levin <ayal@mellanox.com>
Date:   Mon Jun 15 12:48:47 2020 +0300

    net/mlx5e: Fix 50G per lane indication
    
    [ Upstream commit 6a1cf4e443a3b0a4d690d3c93b84b1e9cbfcb1bd ]
    
    Some released FW versions mistakenly don't set the capability that 50G
    per lane link-modes are supported for VFs (ptys_extended_ethernet
    capability bit). When the capability is unset, read
    PTYS.ext_eth_proto_capability (always reliable).
    If PTYS.ext_eth_proto_capability is valid (has a non-zero value)
    conclude that the HCA supports 50G per lane. Otherwise, conclude that
    the HCA doesn't support 50G per lane.
    
    Fixes: a08b4ed1373d ("net/mlx5: Add support to ext_* fields introduced in Port Type and Speed register")
    Signed-off-by: Aya Levin <ayal@mellanox.com>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce27893535cad265cb314fd14f0173aa7f82e881
Author: Eran Ben Elisha <eranbe@mellanox.com>
Date:   Sun Jun 14 17:31:26 2020 +0300

    net/mlx5: Fix eeprom support for SFP module
    
    [ Upstream commit 47afbdd2fa4c5775c383ba376a3d1da7d7f694dc ]
    
    Fix eeprom SFP query support by setting i2c_addr, offset and page number
    correctly. Unlike QSFP modules, SFP eeprom params are as follow:
    - i2c_addr is 0x50 for offset 0 - 255 and 0x51 for offset 256 - 511.
    - Page number is always zero.
    - Page offset is always relative to zero.
    
    As part of eeprom query, query the module ID (SFP / QSFP*) via helper
    function to set the params accordingly.
    
    In addition, change mlx5_qsfp_eeprom_page() input type to be u16 to avoid
    unnecessary casting.
    
    Fixes: a708fb7b1f8d ("net/mlx5e: ethtool, Add support for EEPROM high pages query")
    Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f277e0be69d4a9cb3f9b58d70327d026139567a1
Author: Sudarsana Reddy Kalluru <skalluru@marvell.com>
Date:   Wed Jul 8 20:14:29 2020 -0700

    qed: Populate nvm-file attributes while reading nvm config partition.
    
    [ Upstream commit 13cf8aab7425a253070433b5a55b4209ceac8b19 ]
    
    NVM config file address will be modified when the MBI image is upgraded.
    Driver would return stale config values if user reads the nvm-config
    (via ethtool -d) in this state. The fix is to re-populate nvm attribute
    info while reading the nvm config values/partition.
    
    Changes from previous version:
    -------------------------------
    v3: Corrected the formatting in 'Fixes' tag.
    v2: Added 'Fixes' tag.
    
    Fixes: 1ac4329a1cff ("qed: Add configuration information to register dump and debug data")
    Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e89b828ae357eafa3a78591ed0410fd9078034f5
Author: Aya Levin <ayal@mellanox.com>
Date:   Tue Jul 7 14:06:11 2020 +0300

    IB/mlx5: Fix 50G per lane indication
    
    [ Upstream commit 530c8632b547ff72f11ff83654b22462a73f1f7b ]
    
    Some released FW versions mistakenly don't set the capability that 50G per
    lane link-modes are supported for VFs (ptys_extended_ethernet capability
    bit).
    
    Use PTYS.ext_eth_proto_capability instead, as this indication is always
    accurate. If PTYS.ext_eth_proto_capability is valid
    (has a non-zero value) conclude that the HCA supports 50G per lane.
    
    Otherwise, conclude that the HCA doesn't support 50G per lane.
    
    Fixes: 08e8676f1607 ("IB/mlx5: Add support for 50Gbps per lane link modes")
    Link: https://lore.kernel.org/r/20200707110612.882962-3-leon@kernel.org
    Signed-off-by: Aya Levin <ayal@mellanox.com>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Reviewed-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97d6855ac57ded0b35530037b607fa780f00b80a
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Thu Jul 9 03:14:27 2020 +0530

    cxgb4: fix all-mask IP address comparison
    
    [ Upstream commit 76c4d85c9260c3d741cbd194c30c61983d0a4303 ]
    
    Convert all-mask IP address to Big Endian, instead, for comparison.
    
    Fixes: f286dd8eaad5 ("cxgb4: use correct type for all-mask IP address comparison")
    Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a4c5ff12f427b6046f025f138010f91002b99ea
Author: Zheng Bin <zhengbin13@huawei.com>
Date:   Mon Jun 29 09:23:49 2020 +0800

    nbd: Fix memory leak in nbd_add_socket
    
    [ Upstream commit 579dd91ab3a5446b148e7f179b6596b270dace46 ]
    
    When adding first socket to nbd, if nsock's allocation failed, the data
    structure member "config->socks" was reallocated, but the data structure
    member "config->num_connections" was not updated. A memory leak will occur
    then because the function "nbd_config_put" will free "config->socks" only
    when "config->num_connections" is not zero.
    
    Fixes: 03bf73c315ed ("nbd: prevent memory leak")
    Reported-by: syzbot+934037347002901b8d2a@syzkaller.appspotmail.com
    Signed-off-by: Zheng Bin <zhengbin13@huawei.com>
    Reviewed-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06cee3572ed544974c39a81e4d756b053f1ccdad
Author: Wei Li <liwei391@huawei.com>
Date:   Sun May 10 05:41:56 2020 +0800

    arm64: kgdb: Fix single-step exception handling oops
    
    [ Upstream commit 8523c006264df65aac7d77284cc69aac46a6f842 ]
    
    After entering kdb due to breakpoint, when we execute 'ss' or 'go' (will
    delay installing breakpoints, do single-step first), it won't work
    correctly, and it will enter kdb due to oops.
    
    It's because the reason gotten in kdb_stub() is not as expected, and it
    seems that the ex_vector for single-step should be 0, like what arch
    powerpc/sh/parisc has implemented.
    
    Before the patch:
    Entering kdb (current=0xffff8000119e2dc0, pid 0) on processor 0 due to Keyboard Entry
    [0]kdb> bp printk
    Instruction(i) BP #0 at 0xffff8000101486cc (printk)
        is enabled   addr at ffff8000101486cc, hardtype=0 installed=0
    
    [0]kdb> g
    
    / # echo h > /proc/sysrq-trigger
    
    Entering kdb (current=0xffff0000fa878040, pid 266) on processor 3 due to Breakpoint @ 0xffff8000101486cc
    [3]kdb> ss
    
    Entering kdb (current=0xffff0000fa878040, pid 266) on processor 3 Oops: (null)
    due to oops @ 0xffff800010082ab8
    CPU: 3 PID: 266 Comm: sh Not tainted 5.7.0-rc4-13839-gf0e5ad491718 #6
    Hardware name: linux,dummy-virt (DT)
    pstate: 00000085 (nzcv daIf -PAN -UAO)
    pc : el1_irq+0x78/0x180
    lr : __handle_sysrq+0x80/0x190
    sp : ffff800015003bf0
    x29: ffff800015003d20 x28: ffff0000fa878040
    x27: 0000000000000000 x26: ffff80001126b1f0
    x25: ffff800011b6a0d8 x24: 0000000000000000
    x23: 0000000080200005 x22: ffff8000101486cc
    x21: ffff800015003d30 x20: 0000ffffffffffff
    x19: ffff8000119f2000 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000
    x15: 0000000000000000 x14: 0000000000000000
    x13: 0000000000000000 x12: 0000000000000000
    x11: 0000000000000000 x10: 0000000000000000
    x9 : 0000000000000000 x8 : ffff800015003e50
    x7 : 0000000000000002 x6 : 00000000380b9990
    x5 : ffff8000106e99e8 x4 : ffff0000fadd83c0
    x3 : 0000ffffffffffff x2 : ffff800011b6a0d8
    x1 : ffff800011b6a000 x0 : ffff80001130c9d8
    Call trace:
     el1_irq+0x78/0x180
     printk+0x0/0x84
     write_sysrq_trigger+0xb0/0x118
     proc_reg_write+0xb4/0xe0
     __vfs_write+0x18/0x40
     vfs_write+0xb0/0x1b8
     ksys_write+0x64/0xf0
     __arm64_sys_write+0x14/0x20
     el0_svc_common.constprop.2+0xb0/0x168
     do_el0_svc+0x20/0x98
     el0_sync_handler+0xec/0x1a8
     el0_sync+0x140/0x180
    
    [3]kdb>
    
    After the patch:
    Entering kdb (current=0xffff8000119e2dc0, pid 0) on processor 0 due to Keyboard Entry
    [0]kdb> bp printk
    Instruction(i) BP #0 at 0xffff8000101486cc (printk)
        is enabled   addr at ffff8000101486cc, hardtype=0 installed=0
    
    [0]kdb> g
    
    / # echo h > /proc/sysrq-trigger
    
    Entering kdb (current=0xffff0000fa852bc0, pid 268) on processor 0 due to Breakpoint @ 0xffff8000101486cc
    [0]kdb> g
    
    Entering kdb (current=0xffff0000fa852bc0, pid 268) on processor 0 due to Breakpoint @ 0xffff8000101486cc
    [0]kdb> ss
    
    Entering kdb (current=0xffff0000fa852bc0, pid 268) on processor 0 due to SS trap @ 0xffff800010082ab8
    [0]kdb>
    
    Fixes: 44679a4f142b ("arm64: KGDB: Add step debugging support")
    Signed-off-by: Wei Li <liwei391@huawei.com>
    Tested-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20200509214159.19680-2-liwei391@huawei.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e8f4623e29286649273197b89ca5524f0d98ce8
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Tue Jul 7 16:09:31 2020 +0300

    RDMA/siw: Fix reporting vendor_part_id
    
    [ Upstream commit 04340645f69ab7abb6f9052688a60f0213b3f79c ]
    
    Move the initialization of the vendor_part_id to be before calling
    ib_register_device(), this is needed because the query_device() callback
    is called from the context of ib_register_device() before initializing the
    vendor_part_id, so the reported value is wrong.
    
    Fixes: bdcf26bf9b3a ("rdma/siw: network and RDMA core interface")
    Link: https://lore.kernel.org/r/20200707130931.444724-1-kamalheib1@gmail.com
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Reviewed-by: Bernard Metzler <bmt@zurich.ibm.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c54d0d9c4e6a9b40fa4faa0f23b8901a265b3d5
Author: Vinod Koul <vkoul@kernel.org>
Date:   Mon Jun 29 19:17:37 2020 +0530

    ALSA: compress: fix partial_drain completion state
    
    [ Upstream commit f79a732a8325dfbd570d87f1435019d7e5501c6d ]
    
    On partial_drain completion we should be in SNDRV_PCM_STATE_RUNNING
    state, so set that for partially draining streams in
    snd_compr_drain_notify() and use a flag for partially draining streams
    
    While at it, add locks for stream state change in
    snd_compr_drain_notify() as well.
    
    Fixes: f44f2a5417b2 ("ALSA: compress: fix drain calls blocking other compress functions (v6)")
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Link: https://lore.kernel.org/r/20200629134737.105993-4-vkoul@kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 175b5aa7b9649f08752c55823f3a44db09423ab8
Author: Yonglong Liu <liuyonglong@huawei.com>
Date:   Mon Jul 6 19:26:02 2020 +0800

    net: hns3: fix use-after-free when doing self test
    
    [ Upstream commit a06656211304fec653c1931c2ca6d644013b5bbb ]
    
    Enable promisc mode of PF, set VF link state to enable, and
    run iperf of the VF, then do self test of the PF. The self test
    will fail with a low frequency, and may cause a use-after-free
    problem.
    
    [   87.142126] selftest:000004a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    [   87.159722] ==================================================================
    [   87.174187] BUG: KASAN: use-after-free in hex_dump_to_buffer+0x140/0x608
    [   87.187600] Read of size 1 at addr ffff003b22828000 by task ethtool/1186
    [   87.201012]
    [   87.203978] CPU: 7 PID: 1186 Comm: ethtool Not tainted 5.5.0-rc4-gfd51c473-dirty #4
    [   87.219306] Hardware name: Huawei TaiShan 2280 V2/BC82AMDA, BIOS TA BIOS 2280-A CS V2.B160.01 01/15/2020
    [   87.238292] Call trace:
    [   87.243173]  dump_backtrace+0x0/0x280
    [   87.250491]  show_stack+0x24/0x30
    [   87.257114]  dump_stack+0xe8/0x140
    [   87.263911]  print_address_description.isra.8+0x70/0x380
    [   87.274538]  __kasan_report+0x12c/0x230
    [   87.282203]  kasan_report+0xc/0x18
    [   87.288999]  __asan_load1+0x60/0x68
    [   87.295969]  hex_dump_to_buffer+0x140/0x608
    [   87.304332]  print_hex_dump+0x140/0x1e0
    [   87.312000]  hns3_lb_check_skb_data+0x168/0x170
    [   87.321060]  hns3_clean_rx_ring+0xa94/0xfe0
    [   87.329422]  hns3_self_test+0x708/0x8c0
    
    The length of packet sent by the selftest process is only
    128 + 14 bytes, and the min buffer size of a BD is 256 bytes,
    and the receive process will make sure the packet sent by
    the selftest process is in the linear part, so only check
    the linear part in hns3_lb_check_skb_data().
    
    So fix this use-after-free by using skb_headlen() to dump
    skb->data instead of skb->len.
    
    Fixes: c39c4d98dc65 ("net: hns3: Add mac loopback selftest support in hns3 driver")
    Signed-off-by: Yonglong Liu <liuyonglong@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab8c4fd863f4151d814f94000661734b3c717af1
Author: Huazhong Tan <tanhuazhong@huawei.com>
Date:   Mon Jul 6 19:26:01 2020 +0800

    net: hns3: add a missing uninit debugfs when unload driver
    
    [ Upstream commit e22b5e728bbb179b912d3a3cd5c25894a89a26a2 ]
    
    When unloading driver, if flag HNS3_NIC_STATE_INITED has been
    already cleared, the debugfs will not be uninitialized, so fix it.
    
    Fixes: b2292360bb2a ("net: hns3: Add debugfs framework registration")
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c0192d28513aa3d2b5690d91c4776dfe5f2e49d
Author: Andre Edich <andre.edich@microchip.com>
Date:   Mon Jul 6 10:39:35 2020 +0200

    smsc95xx: avoid memory leak in smsc95xx_bind
    
    [ Upstream commit 3ed58f96a70b85ef646d5427258f677f1395b62f ]
    
    In a case where the ID_REV register read is failed, the memory for a
    private data structure has to be freed before returning error from the
    function smsc95xx_bind.
    
    Fixes: bbd9f9ee69242 ("smsc95xx: add wol support for more frame types")
    Signed-off-by: Andre Edich <andre.edich@microchip.com>
    Signed-off-by: Parthiban Veerasooran <Parthiban.Veerasooran@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 81ed1f9fd0b3f589ae0ded0efdcd73b1886c9e87
Author: Andre Edich <andre.edich@microchip.com>
Date:   Mon Jul 6 10:39:34 2020 +0200

    smsc95xx: check return value of smsc95xx_reset
    
    [ Upstream commit 7c8b1e855f94f88a0c569be6309fc8d5c8844cd1 ]
    
    The return value of the function smsc95xx_reset() must be checked
    to avoid returning false success from the function smsc95xx_bind().
    
    Fixes: 2f7ca802bdae2 ("net: Add SMSC LAN9500 USB2.0 10/100 ethernet adapter driver")
    Signed-off-by: Andre Edich <andre.edich@microchip.com>
    Signed-off-by: Parthiban Veerasooran <Parthiban.Veerasooran@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3959bf65fe4850db20ba8f46d877112551b04727
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue Jun 30 16:39:35 2020 +0300

    perf intel-pt: Fix PEBS sample for XMM registers
    
    [ Upstream commit 4c95ad261cfac120dd66238fcae222766754c219 ]
    
    The condition to add XMM registers was missing, the regs array needed to
    be in the outer scope, and the size of the regs array was too small.
    
    Fixes: 143d34a6b387b ("perf intel-pt: Add XMM registers to synthesized PEBS sample")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Luwei Kang <luwei.kang@intel.com>
    Link: http://lore.kernel.org/lkml/20200630133935.11150-4-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da4b6eff382be96168a879ba8f1b619ea766f529
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue Jun 30 16:39:33 2020 +0300

    perf intel-pt: Fix recording PEBS-via-PT with registers
    
    [ Upstream commit 75bcb8776dc987538f267ba4ba05ca43fc2b1676 ]
    
    When recording PEBS-via-PT, the kernel will not accept the intel_pt
    event with register sampling e.g.
    
     # perf record --kcore -c 10000 -e '{intel_pt/branch=0/,branch-loads/aux-output/ppp}' -I -- ls -l
     Error:
     intel_pt/branch=0/: PMU Hardware doesn't support sampling/overflow-interrupts. Try 'perf stat'
    
    Fix by suppressing register sampling on the intel_pt evsel.
    
    Committer notes:
    
    Adrian informed that this is only available from Tremont onwards, so on
    older processors the error continues the same as before.
    
    Fixes: 9e64cefe4335b ("perf intel-pt: Process options for PEBS event synthesis")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Luwei Kang <luwei.kang@intel.com>
    Link: http://lore.kernel.org/lkml/20200630133935.11150-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ca67a453273aa6ada0598703095b01c0c0f4475
Author: Wei Li <liwei391@huawei.com>
Date:   Fri Jun 12 17:43:22 2020 +0800

    perf report TUI: Fix segmentation fault in perf_evsel__hists_browse()
    
    [ Upstream commit d61cbb859b45fdb6b4997f2d51834fae41af0e94 ]
    
    The segmentation fault can be reproduced as following steps:
    
    1) Executing perf report in tui.
    
    2) Typing '/xxxxx' to filter the symbol to get nothing matched.
    
    3) Pressing enter with no entry selected.
    
    Then it will report a segmentation fault.
    
    It is caused by the lack of check of browser->he_selection when
    accessing it's member res_samples in perf_evsel__hists_browse().
    
    These processes are meaningful for specified samples, so we can skip
    these when nothing is selected.
    
    Fixes: 4968ac8fb7c3 ("perf report: Implement browsing of individual samples")
    Signed-off-by: Wei Li <liwei391@huawei.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Hanjun Guo <guohanjun@huawei.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Link: http://lore.kernel.org/lkml/20200612094322.39565-1-liwei391@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d15663304f563debeef6a4d0ac1a8295d5f261b
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Jul 1 13:17:40 2020 +0200

    netfilter: conntrack: refetch conntrack after nf_conntrack_update()
    
    [ Upstream commit d005fbb855d3b5660d62ee5a6bd2d99c13ff8cf3 ]
    
    __nf_conntrack_update() might refresh the conntrack object that is
    attached to the skbuff. Otherwise, this triggers UAF.
    
    [  633.200434] ==================================================================
    [  633.200472] BUG: KASAN: use-after-free in nf_conntrack_update+0x34e/0x770 [nf_conntrack]
    [  633.200478] Read of size 1 at addr ffff888370804c00 by task nfqnl_test/6769
    
    [  633.200487] CPU: 1 PID: 6769 Comm: nfqnl_test Not tainted 5.8.0-rc2+ #388
    [  633.200490] Hardware name: LENOVO 23259H1/23259H1, BIOS G2ET32WW (1.12 ) 05/30/2012
    [  633.200491] Call Trace:
    [  633.200499]  dump_stack+0x7c/0xb0
    [  633.200526]  ? nf_conntrack_update+0x34e/0x770 [nf_conntrack]
    [  633.200532]  print_address_description.constprop.6+0x1a/0x200
    [  633.200539]  ? _raw_write_lock_irqsave+0xc0/0xc0
    [  633.200568]  ? nf_conntrack_update+0x34e/0x770 [nf_conntrack]
    [  633.200594]  ? nf_conntrack_update+0x34e/0x770 [nf_conntrack]
    [  633.200598]  kasan_report.cold.9+0x1f/0x42
    [  633.200604]  ? call_rcu+0x2c0/0x390
    [  633.200633]  ? nf_conntrack_update+0x34e/0x770 [nf_conntrack]
    [  633.200659]  nf_conntrack_update+0x34e/0x770 [nf_conntrack]
    [  633.200687]  ? nf_conntrack_find_get+0x30/0x30 [nf_conntrack]
    
    Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1436
    Fixes: ee04805ff54a ("netfilter: conntrack: make conntrack userspace helpers work again")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9b8206e5323ae3c9b5b4177478a1224108642f7
Author: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Date:   Thu Jul 2 12:44:50 2020 +0300

    net: dsa: microchip: set the correct number of ports
    
    [ Upstream commit af199a1a9cb02ec0194804bd46c174b6db262075 ]
    
    The number of ports is incorrectly set to the maximum available for a DSA
    switch. Even if the extra ports are not used, this causes some functions
    to be called later, like port_disable() and port_stp_state_set(). If the
    driver doesn't check the port index, it will end up modifying unknown
    registers.
    
    Fixes: b987e98e50ab ("dsa: add DSA switch driver for Microchip KSZ9477")
    Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd3a612d9828bbe705bcba52eb6adaffba10dc1f
Author: Divya Indi <divya.indi@oracle.com>
Date:   Tue Jun 23 19:13:09 2020 -0700

    IB/sa: Resolv use-after-free in ib_nl_make_request()
    
    [ Upstream commit f427f4d6214c183c474eeb46212d38e6c7223d6a ]
    
    There is a race condition where ib_nl_make_request() inserts the request
    data into the linked list but the timer in ib_nl_request_timeout() can see
    it and destroy it before ib_nl_send_msg() is done touching it. This could
    happen, for instance, if there is a long delay allocating memory during
    nlmsg_new()
    
    This causes a use-after-free in the send_mad() thread:
    
      [<ffffffffa02f43cb>] ? ib_pack+0x17b/0x240 [ib_core]
      [ <ffffffffa032aef1>] ib_sa_path_rec_get+0x181/0x200 [ib_sa]
      [<ffffffffa0379db0>] rdma_resolve_route+0x3c0/0x8d0 [rdma_cm]
      [<ffffffffa0374450>] ? cma_bind_port+0xa0/0xa0 [rdma_cm]
      [<ffffffffa040f850>] ? rds_rdma_cm_event_handler_cmn+0x850/0x850 [rds_rdma]
      [<ffffffffa040f22c>] rds_rdma_cm_event_handler_cmn+0x22c/0x850 [rds_rdma]
      [<ffffffffa040f860>] rds_rdma_cm_event_handler+0x10/0x20 [rds_rdma]
      [<ffffffffa037778e>] addr_handler+0x9e/0x140 [rdma_cm]
      [<ffffffffa026cdb4>] process_req+0x134/0x190 [ib_addr]
      [<ffffffff810a02f9>] process_one_work+0x169/0x4a0
      [<ffffffff810a0b2b>] worker_thread+0x5b/0x560
      [<ffffffff810a0ad0>] ? flush_delayed_work+0x50/0x50
      [<ffffffff810a68fb>] kthread+0xcb/0xf0
      [<ffffffff816ec49a>] ? __schedule+0x24a/0x810
      [<ffffffff816ec49a>] ? __schedule+0x24a/0x810
      [<ffffffff810a6830>] ? kthread_create_on_node+0x180/0x180
      [<ffffffff816f25a7>] ret_from_fork+0x47/0x90
      [<ffffffff810a6830>] ? kthread_create_on_node+0x180/0x180
    
    The ownership rule is once the request is on the list, ownership transfers
    to the list and the local thread can't touch it any more, just like for
    the normal MAD case in send_mad().
    
    Thus, instead of adding before send and then trying to delete after on
    errors, move the entire thing under the spinlock so that the send and
    update of the lists are atomic to the conurrent threads. Lightly reoganize
    things so spinlock safe memory allocations are done in the final NL send
    path and the rest of the setup work is done before and outside the lock.
    
    Fixes: 3ebd2fd0d011 ("IB/sa: Put netlink request into the request list before sending")
    Link: https://lore.kernel.org/r/1592964789-14533-1-git-send-email-divya.indi@oracle.com
    Signed-off-by: Divya Indi <divya.indi@oracle.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0259e7056b141757815fb13dd74c6951aa5319f
Author: Li Heng <liheng40@huawei.com>
Date:   Mon Jun 29 18:49:51 2020 +0800

    net: cxgb4: fix return error value in t4_prep_fw
    
    [ Upstream commit 8a259e6b73ad8181b0b2ef338b35043433db1075 ]
    
    t4_prep_fw goto bye tag with positive return value when something
    bad happened and which can not free resource in adap_init0.
    so fix it to return negative value.
    
    Fixes: 16e47624e76b ("cxgb4: Add new scheme to update T4/T5 firmware")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Li Heng <liheng40@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92002d59eceeb713a6ebfe6024e1ea11ec19bf24
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Jun 30 11:04:40 2020 +0100

    net: mvneta: fix use of state->speed
    
    [ Upstream commit f2ca673d2cd5df9a76247b670e9ffd4d63682b3f ]
    
    When support for short preambles was added, it incorrectly keyed its
    decision off state->speed instead of state->interface.  state->speed
    is not guaranteed to be correct for in-band modes, which can lead to
    short preambles being unexpectedly disabled.
    
    Fix this by keying off the interface mode, which is the only way that
    mvneta can operate at 2.5Gbps.
    
    Fixes: da58a931f248 ("net: mvneta: Add support for 2500Mbps SGMII")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f412ae89e7828b1d0a8a5814ead712862c7b1e9
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jun 29 17:04:17 2020 -0700

    netfilter: ipset: call ip_set_free() instead of kfree()
    
    [ Upstream commit c4e8fa9074ad94f80e5c0dcaa16b313e50e958c5 ]
    
    Whenever ip_set_alloc() is used, allocated memory can either
    use kmalloc() or vmalloc(). We should call kvfree() or
    ip_set_free()
    
    invalid opcode: 0000 [#1] PREEMPT SMP KASAN
    CPU: 0 PID: 21935 Comm: syz-executor.3 Not tainted 5.8.0-rc2-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__phys_addr+0xa7/0x110 arch/x86/mm/physaddr.c:28
    Code: 1d 7a 09 4c 89 e3 31 ff 48 d3 eb 48 89 de e8 d0 58 3f 00 48 85 db 75 0d e8 26 5c 3f 00 4c 89 e0 5b 5d 41 5c c3 e8 19 5c 3f 00 <0f> 0b e8 12 5c 3f 00 48 c7 c0 10 10 a8 89 48 ba 00 00 00 00 00 fc
    RSP: 0000:ffffc900018572c0 EFLAGS: 00010046
    RAX: 0000000000040000 RBX: 0000000000000001 RCX: ffffc9000fac3000
    RDX: 0000000000040000 RSI: ffffffff8133f437 RDI: 0000000000000007
    RBP: ffffc90098aff000 R08: 0000000000000000 R09: ffff8880ae636cdb
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000408018aff000
    R13: 0000000000080000 R14: 000000000000001d R15: ffffc900018573d8
    FS:  00007fc540c66700(0000) GS:ffff8880ae600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fc9dcd67200 CR3: 0000000059411000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     virt_to_head_page include/linux/mm.h:841 [inline]
     virt_to_cache mm/slab.h:474 [inline]
     kfree+0x77/0x2c0 mm/slab.c:3749
     hash_net_create+0xbb2/0xd70 net/netfilter/ipset/ip_set_hash_gen.h:1536
     ip_set_create+0x6a2/0x13c0 net/netfilter/ipset/ip_set_core.c:1128
     nfnetlink_rcv_msg+0xbe8/0xea0 net/netfilter/nfnetlink.c:230
     netlink_rcv_skb+0x15a/0x430 net/netlink/af_netlink.c:2469
     nfnetlink_rcv+0x1ac/0x420 net/netfilter/nfnetlink.c:564
     netlink_unicast_kernel net/netlink/af_netlink.c:1303 [inline]
     netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1329
     netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1918
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:672
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2352
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2406
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2439
     do_syscall_64+0x60/0xe0 arch/x86/entry/common.c:359
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45cb19
    Code: Bad RIP value.
    RSP: 002b:00007fc540c65c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00000000004fed80 RCX: 000000000045cb19
    RDX: 0000000000000000 RSI: 0000000020001080 RDI: 0000000000000003
    RBP: 000000000078bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 000000000000095e R14: 00000000004cc295 R15: 00007fc540c666d4
    
    Fixes: f66ee0410b1c ("netfilter: ipset: Fix "INFO: rcu detected stall in hash_xxx" reports")
    Fixes: 03c8b234e61a ("netfilter: ipset: Generalize extensions support")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b709a08bc4d7e39f9a5a370142ba41c02af09c44
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Thu Jun 25 16:13:18 2020 -0700

    bpf, sockmap: RCU dereferenced psock may be used outside RCU block
    
    [ Upstream commit 8025751d4d55a2f32be6bdf825b6a80c299875f5 ]
    
    If an ingress verdict program specifies message sizes greater than
    skb->len and there is an ENOMEM error due to memory pressure we
    may call the rcv_msg handler outside the strp_data_ready() caller
    context. This is because on an ENOMEM error the strparser will
    retry from a workqueue. The caller currently protects the use of
    psock by calling the strp_data_ready() inside a rcu_read_lock/unlock
    block.
    
    But, in above workqueue error case the psock is accessed outside
    the read_lock/unlock block of the caller. So instead of using
    psock directly we must do a look up against the sk again to
    ensure the psock is available.
    
    There is an an ugly piece here where we must handle
    the case where we paused the strp and removed the psock. On
    psock removal we first pause the strparser and then remove
    the psock. If the strparser is paused while an skb is
    scheduled on the workqueue the skb will be dropped on the
    flow and kfree_skb() is called. If the workqueue manages
    to get called before we pause the strparser but runs the rcvmsg
    callback after the psock is removed we will hit the unlikely
    case where we run the sockmap rcvmsg handler but do not have
    a psock. For now we will follow strparser logic and drop the
    skb on the floor with skb_kfree(). This is ugly because the
    data is dropped. To date this has not caused problems in practice
    because either the application controlling the sockmap is
    coordinating with the datapath so that skbs are "flushed"
    before removal or we simply wait for the sock to be closed before
    removing it.
    
    This patch fixes the describe RCU bug and dropping the skb doesn't
    make things worse. Future patches will improve this by allowing
    the normal case where skbs are not merged to skip the strparser
    altogether. In practice many (most?) use cases have no need to
    merge skbs so its both a code complexity hit as seen above and
    a performance issue. For example, in the Cilium case we always
    set the strparser up to return sbks 1:1 without any merging and
    have avoided above issues.
    
    Fixes: e91de6afa81c1 ("bpf: Fix running sk_skb program types with ktls")
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Link: https://lore.kernel.org/bpf/159312679888.18340.15248924071966273998.stgit@john-XPS-13-9370
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2000bb546525890584a3cf0ce4787270250b582c
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Thu Jun 25 16:12:59 2020 -0700

    bpf, sockmap: RCU splat with redirect and strparser error or TLS
    
    [ Upstream commit 93dd5f185916b05e931cffae636596f21f98546e ]
    
    There are two paths to generate the below RCU splat the first and
    most obvious is the result of the BPF verdict program issuing a
    redirect on a TLS socket (This is the splat shown below). Unlike
    the non-TLS case the caller of the *strp_read() hooks does not
    wrap the call in a rcu_read_lock/unlock. Then if the BPF program
    issues a redirect action we hit the RCU splat.
    
    However, in the non-TLS socket case the splat appears to be
    relatively rare, because the skmsg caller into the strp_data_ready()
    is wrapped in a rcu_read_lock/unlock. Shown here,
    
     static void sk_psock_strp_data_ready(struct sock *sk)
     {
            struct sk_psock *psock;
    
            rcu_read_lock();
            psock = sk_psock(sk);
            if (likely(psock)) {
                    if (tls_sw_has_ctx_rx(sk)) {
                            psock->parser.saved_data_ready(sk);
                    } else {
                            write_lock_bh(&sk->sk_callback_lock);
                            strp_data_ready(&psock->parser.strp);
                            write_unlock_bh(&sk->sk_callback_lock);
                    }
            }
            rcu_read_unlock();
     }
    
    If the above was the only way to run the verdict program we
    would be safe. But, there is a case where the strparser may throw an
    ENOMEM error while parsing the skb. This is a result of a failed
    skb_clone, or alloc_skb_for_msg while building a new merged skb when
    the msg length needed spans multiple skbs. This will in turn put the
    skb on the strp_wrk workqueue in the strparser code. The skb will
    later be dequeued and verdict programs run, but now from a
    different context without the rcu_read_lock()/unlock() critical
    section in sk_psock_strp_data_ready() shown above. In practice
    I have not seen this yet, because as far as I know most users of the
    verdict programs are also only working on single skbs. In this case no
    merge happens which could trigger the above ENOMEM errors. In addition
    the system would need to be under memory pressure. For example, we
    can't hit the above case in selftests because we missed having tests
    to merge skbs. (Added in later patch)
    
    To fix the below splat extend the rcu_read_lock/unnlock block to
    include the call to sk_psock_tls_verdict_apply(). This will fix both
    TLS redirect case and non-TLS redirect+error case. Also remove
    psock from the sk_psock_tls_verdict_apply() function signature its
    not used there.
    
    [ 1095.937597] WARNING: suspicious RCU usage
    [ 1095.940964] 5.7.0-rc7-02911-g463bac5f1ca79 #1 Tainted: G        W
    [ 1095.944363] -----------------------------
    [ 1095.947384] include/linux/skmsg.h:284 suspicious rcu_dereference_check() usage!
    [ 1095.950866]
    [ 1095.950866] other info that might help us debug this:
    [ 1095.950866]
    [ 1095.957146]
    [ 1095.957146] rcu_scheduler_active = 2, debug_locks = 1
    [ 1095.961482] 1 lock held by test_sockmap/15970:
    [ 1095.964501]  #0: ffff9ea6b25de660 (sk_lock-AF_INET){+.+.}-{0:0}, at: tls_sw_recvmsg+0x13a/0x840 [tls]
    [ 1095.968568]
    [ 1095.968568] stack backtrace:
    [ 1095.975001] CPU: 1 PID: 15970 Comm: test_sockmap Tainted: G        W         5.7.0-rc7-02911-g463bac5f1ca79 #1
    [ 1095.977883] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    [ 1095.980519] Call Trace:
    [ 1095.982191]  dump_stack+0x8f/0xd0
    [ 1095.984040]  sk_psock_skb_redirect+0xa6/0xf0
    [ 1095.986073]  sk_psock_tls_strp_read+0x1d8/0x250
    [ 1095.988095]  tls_sw_recvmsg+0x714/0x840 [tls]
    
    v2: Improve commit message to identify non-TLS redirect plus error case
        condition as well as more common TLS case. In the process I decided
        doing the rcu_read_unlock followed by the lock/unlock inside branches
        was unnecessarily complex. We can just extend the current rcu block
        and get the same effeective without the shuffling and branching.
        Thanks Martin!
    
    Fixes: e91de6afa81c1 ("bpf: Fix running sk_skb program types with ktls")
    Reported-by: Jakub Sitnicki <jakub@cloudflare.com>
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
    Link: https://lore.kernel.org/bpf/159312677907.18340.11064813152758406626.stgit@john-XPS-13-9370
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4625f4d5e4bf9b79c75e2294fd93ad097df034c0
Author: Hsin-Yi Wang <hsinyi@chromium.org>
Date:   Mon Jun 22 23:57:53 2020 +0800

    drm/mediatek: Check plane visibility in atomic_update
    
    [ Upstream commit c0b8892e2461b5fa740e47efbb1269a487b04020 ]
    
    Disable the plane if it's not visible. Otherwise mtk_ovl_layer_config()
    would proceed with invalid plane and we may see vblank timeout.
    
    Fixes: 119f5173628a ("drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.")
    Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
    Reviewed-by: Tomasz Figa <tfiga@chromium.org>
    Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a062088e675ffa3b6ed8369bc379e64e7f5a8baa
Author: Luca Coelho <luciano.coelho@intel.com>
Date:   Fri Jun 26 12:49:39 2020 +0300

    nl80211: don't return err unconditionally in nl80211_start_ap()
    
    [ Upstream commit bc7a39b4272b9672d806d422b6850e8c1a09914c ]
    
    When a memory leak was fixed, a return err was changed to goto err,
    but, accidentally, the if (err) was removed, so now we always exit at
    this point.
    
    Fix it by adding if (err) back.
    
    Fixes: 9951ebfcdf2b ("nl80211: fix potential leak in AP start")
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20200626124931.871ba5b31eee.I97340172d92164ee92f3c803fe20a8a6e97714e1@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d63806c30706f53b65ef5b27b6f8ac0e89b22a92
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Jun 18 14:49:06 2020 +0300

    gpio: pca953x: Fix GPIO resource leak on Intel Galileo Gen 2
    
    [ Upstream commit 5d8913504ccfeea6120df5ae1c6f4479ff09b931 ]
    
    When adding a quirk for IRQ on Intel Galileo Gen 2 the commit ba8c90c61847
    ("gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2")
    missed GPIO resource release. We can safely do this in the same quirk, since
    IRQ will be locked by GPIO framework when requested and unlocked on freeing.
    
    Fixes: ba8c90c61847 ("gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 137e7782bddd28bbc7baa47548b441484d97cf25
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Jun 5 16:40:34 2020 +0300

    gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2
    
    [ Upstream commit ba8c90c6184784b397807b72403656085ac2f8c1 ]
    
    ACPI table on Intel Galileo Gen 2 has wrong pin number for IRQ resource
    of one of the I²C GPIO expanders. Since we know what that number is and
    luckily have GPIO bases fixed for SoC's controllers, we may use a simple
    DMI quirk to match the platform and retrieve GpioInt() pin on it for
    the expander in question.
    
    Mika suggested the way to avoid a quirk in the GPIO ACPI library and
    here is the second, almost rewritten version of it.
    
    Fixes: f32517bf1ae0 ("gpio: pca953x: support ACPI devices found on Galileo Gen2")
    Depends-on: 25e3ef894eef ("gpio: acpi: Split out acpi_gpio_get_irq_resource() helper")
    Suggested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91f8d05b4b56455dedd4539235428eb8ce10b6b6
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jun 30 14:46:15 2020 +0300

    net: qrtr: Fix an out of bounds read qrtr_endpoint_post()
    
    commit 8ff41cc21714704ef0158a546c3c4d07fae2c952 upstream.
    
    This code assumes that the user passed in enough data for a
    qrtr_hdr_v1 or qrtr_hdr_v2 struct, but it's not necessarily true.  If
    the buffer is too small then it will read beyond the end.
    
    Reported-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reported-by: syzbot+b8fe393f999a291a9ea6@syzkaller.appspotmail.com
    Fixes: 194ccc88297a ("net: qrtr: Support decoding incoming v2 packets")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1128ed7e1dd0f3d9eec6a9ae41ca903b150ef454
Author: Scott Wood <swood@redhat.com>
Date:   Wed Jun 17 14:17:42 2020 +0200

    sched/core: Check cpus_mask, not cpus_ptr in __set_cpus_allowed_ptr(), to fix mask corruption
    
    [ Upstream commit fd844ba9ae59b51e34e77105d79f8eca780b3bd6 ]
    
    This function is concerned with the long-term CPU mask, not the
    transitory mask the task might have while migrate disabled.  Before
    this patch, if a task was migrate-disabled at the time
    __set_cpus_allowed_ptr() was called, and the new mask happened to be
    equal to the CPU that the task was running on, then the mask update
    would be lost.
    
    Signed-off-by: Scott Wood <swood@redhat.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lkml.kernel.org/r/20200617121742.cpxppyi7twxmpin7@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e9631a90830e675d756eed83219cf163a983340
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Jun 17 18:25:57 2020 +0200

    x86/entry: Increase entry_stack size to a full page
    
    [ Upstream commit c7aadc09321d8f9a1d3bd1e6d8a47222ecddf6c5 ]
    
    Marco crashed in bad_iret with a Clang11/KCSAN build due to
    overflowing the stack. Now that we run C code on it, expand it to a
    full page.
    
    Suggested-by: Andy Lutomirski <luto@amacapital.net>
    Reported-by: Marco Elver <elver@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
    Tested-by: Marco Elver <elver@google.com>
    Link: https://lkml.kernel.org/r/20200618144801.819246178@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 010f93079a260a8de14d2a58167bdaf3f322419c
Author: Max Gurtovoy <maxg@mellanox.com>
Date:   Tue Jun 23 17:55:25 2020 +0300

    nvme-rdma: assign completion vector correctly
    
    [ Upstream commit 032a9966a22a3596addf81dacf0c1736dfedc32a ]
    
    The completion vector index that is given during CQ creation can't
    exceed the number of support vectors by the underlying RDMA device. This
    violation currently can accure, for example, in case one will try to
    connect with N regular read/write queues and M poll queues and the sum
    of N + M > num_supported_vectors. This will lead to failure in establish
    a connection to remote target. Instead, in that case, share a completion
    vector between queues.
    
    Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 074ae0cd8407a423053bd33feb602108fa3cf4f1
Author: Chengguang Xu <cgxu519@mykernel.net>
Date:   Wed Jun 24 18:21:39 2020 +0800

    block: release bip in a right way in error path
    
    [ Upstream commit 0b8eb629a700c0ef15a437758db8255f8444e76c ]
    
    Release bip using kfree() in error path when that was allocated
    by kmalloc().
    
    Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1b252d8d9c599054bea1c501faf14da9dd873fe
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Sat Jun 13 22:15:25 2020 -0500

    usb: dwc3: pci: Fix reference count leak in dwc3_pci_resume_work
    
    [ Upstream commit 2655971ad4b34e97dd921df16bb0b08db9449df7 ]
    
    dwc3_pci_resume_work() calls pm_runtime_get_sync() that increments
    the reference counter. In case of failure, decrement the reference
    before returning.
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2485b6afadd7f8863c4970b13706db3af83c1135
Author: Tomas Henzl <thenzl@redhat.com>
Date:   Tue Jun 16 17:04:46 2020 +0200

    scsi: mptscsih: Fix read sense data size
    
    [ Upstream commit afe89f115e84edbc76d316759e206580a06c6973 ]
    
    The sense data buffer in sense_buf_pool is allocated with size of
    MPT_SENSE_BUFFER_ALLOC(64) (multiplied by req_depth) while SNS_LEN(sc)(96)
    is used when reading the data.  That may lead to a read from unallocated
    area, sometimes from another (unallocated) page.  To fix this, limit the
    read size to MPT_SENSE_BUFFER_ALLOC.
    
    Link: https://lore.kernel.org/r/20200616150446.4840-1-thenzl@redhat.com
    Co-developed-by: Stanislav Saner <ssaner@redhat.com>
    Signed-off-by: Stanislav Saner <ssaner@redhat.com>
    Signed-off-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10533390da7cf1e2750c63dae44cacfa5964dce1
Author: yu kuai <yukuai3@huawei.com>
Date:   Thu Jun 4 20:54:49 2020 +0800

    ARM: imx6: add missing put_device() call in imx6q_suspend_init()
    
    [ Upstream commit 4845446036fc9c13f43b54a65c9b757c14f5141b ]
    
    if of_find_device_by_node() succeed, imx6q_suspend_init() doesn't have a
    corresponding put_device(). Thus add a jump target to fix the exception
    handling for this function implementation.
    
    Signed-off-by: yu kuai <yukuai3@huawei.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15fa5dfaa4e8003a10957fe1a3644d1cf7cc00b9
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Fri Jun 19 22:51:29 2020 -0400

    cifs: update ctime and mtime during truncate
    
    [ Upstream commit 5618303d8516f8ac5ecfe53ee8e8bc9a40eaf066 ]
    
    As the man description of the truncate, if the size changed,
    then the st_ctime and st_mtime fields should be updated. But
    in cifs, we doesn't do it.
    
    It lead the xfstests generic/313 failed.
    
    So, add the ATTR_MTIME|ATTR_CTIME flags on attrs when change
    the file size
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c732cccb04ba0ee587ba0b3d7e7ebdaafe188ab
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Wed Jun 17 15:05:49 2020 +0200

    s390/kasan: fix early pgm check handler execution
    
    [ Upstream commit 998f5bbe3dbdab81c1cfb1aef7c3892f5d24f6c7 ]
    
    Currently if early_pgm_check_handler is called it ends up in pgm check
    loop. The problem is that early_pgm_check_handler is instrumented by
    KASAN but executed without DAT flag enabled which leads to addressing
    exception when KASAN checks try to access shadow memory.
    
    Fix that by executing early handlers with DAT flag on under KASAN as
    expected.
    
    Reported-and-tested-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a9c816494dc2044d8cf3d866ddcf61835c4d00dd
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun May 31 11:30:25 2020 +0200

    drm: panel-orientation-quirks: Use generic orientation-data for Acer S1003
    
    [ Upstream commit a05caf9e62a85d12da27e814ac13195f4683f21c ]
    
    The Acer S1003 has proper DMI strings for sys-vendor and product-name,
    so we do not need to match by BIOS-date.
    
    This means that the Acer S1003 can use the generic lcd800x1280_rightside_up
    drm_dmi_panel_orientation_data struct which is also used by other quirks.
    
    Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200531093025.28050-2-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fcab0d2f1b9181de0a5f727c3c5ee387d7c96840
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun May 31 11:30:24 2020 +0200

    drm: panel-orientation-quirks: Add quirk for Asus T101HA panel
    
    [ Upstream commit 6c22bc18a3b93a38018844636557ad02e588e055 ]
    
    Like the Asus T100HA the Asus T101HA also uses a panel which has been
    mounted 90 degrees rotated, albeit in the opposite direction.
    Add a quirk for this.
    
    Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200531093025.28050-1-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b7556e7ca381586242c40a89293d9c978ddc6cfe
Author: Rajat Jain <rajatja@google.com>
Date:   Tue Jun 23 07:13:42 2020 +0800

    iommu/vt-d: Don't apply gfx quirks to untrusted devices
    
    [ Upstream commit 67e8a5b18d41af9298db5c17193f671f235cce01 ]
    
    Currently, an external malicious PCI device can masquerade the VID:PID
    of faulty gfx devices, and thus apply iommu quirks to effectively
    disable the IOMMU restrictions for itself.
    
    Thus we need to ensure that the device we are applying quirks to, is
    indeed an internal trusted device.
    
    Signed-off-by: Rajat Jain <rajatja@google.com>
    Reviewed-by: Ashok Raj <ashok.raj@intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20200622231345.29722-4-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a570b8faea4c912c1b9cbb4ca58dc2ddf81d550
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Thu Jun 11 17:31:59 2020 +0530

    powerpc/kvm/book3s64: Fix kernel crash with nested kvm & DEBUG_VIRTUAL
    
    [ Upstream commit c1ed1754f271f6b7acb1bfdc8cfb62220fbed423 ]
    
    With CONFIG_DEBUG_VIRTUAL=y, __pa() checks for addr value and if it's
    less than PAGE_OFFSET it leads to a BUG().
    
      #define __pa(x)
      ({
            VIRTUAL_BUG_ON((unsigned long)(x) < PAGE_OFFSET);
            (unsigned long)(x) & 0x0fffffffffffffffUL;
      })
    
      kernel BUG at arch/powerpc/kvm/book3s_64_mmu_radix.c:43!
      cpu 0x70: Vector: 700 (Program Check) at [c0000018a2187360]
          pc: c000000000161b30: __kvmhv_copy_tofrom_guest_radix+0x130/0x1f0
          lr: c000000000161d5c: kvmhv_copy_from_guest_radix+0x3c/0x80
      ...
      kvmhv_copy_from_guest_radix+0x3c/0x80
      kvmhv_load_from_eaddr+0x48/0xc0
      kvmppc_ld+0x98/0x1e0
      kvmppc_load_last_inst+0x50/0x90
      kvmppc_hv_emulate_mmio+0x288/0x2b0
      kvmppc_book3s_radix_page_fault+0xd8/0x2b0
      kvmppc_book3s_hv_page_fault+0x37c/0x1050
      kvmppc_vcpu_run_hv+0xbb8/0x1080
      kvmppc_vcpu_run+0x34/0x50
      kvm_arch_vcpu_ioctl_run+0x2fc/0x410
      kvm_vcpu_ioctl+0x2b4/0x8f0
      ksys_ioctl+0xf4/0x150
      sys_ioctl+0x28/0x80
      system_call_exception+0x104/0x1d0
      system_call_common+0xe8/0x214
    
    kvmhv_copy_tofrom_guest_radix() uses a NULL value for to/from to
    indicate direction of copy.
    
    Avoid calling __pa() if the value is NULL to avoid the BUG().
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    [mpe: Massage change log a bit to mention CONFIG_DEBUG_VIRTUAL]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200611120159.680284-1-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e4ddeee7affd4b8e10a9dc80337e04b747a8eee
Author: Dany Madden <drt@linux.ibm.com>
Date:   Thu Jun 18 15:24:13 2020 -0400

    ibmvnic: continue to init in CRQ reset returns H_CLOSED
    
    [ Upstream commit 8b40eb73509f5704a0e8cd25de0163876299f1a7 ]
    
    Continue the reset path when partner adapter is not ready or H_CLOSED is
    returned from reset crq. This patch allows the CRQ init to proceed to
    establish a valid CRQ for traffic to flow after reset.
    
    Signed-off-by: Dany Madden <drt@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce4a93b9e6077905f562f1c457636d7586e43ec9
Author: Ciara Loftus <ciara.loftus@intel.com>
Date:   Tue Jun 9 13:19:44 2020 +0000

    i40e: protect ring accesses with READ- and WRITE_ONCE
    
    [ Upstream commit d59e267912cd90b0adf33b4659050d831e746317 ]
    
    READ_ONCE should be used when reading rings prior to accessing the
    statistics pointer. Introduce this as well as the corresponding WRITE_ONCE
    usage when allocating and freeing the rings, to ensure protected access.
    
    Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e5a3586ca27e2b17ec2d24d2c975b563044830e
Author: Ciara Loftus <ciara.loftus@intel.com>
Date:   Tue Jun 9 13:19:43 2020 +0000

    ixgbe: protect ring accesses with READ- and WRITE_ONCE
    
    [ Upstream commit f140ad9fe2ae16f385f8fe4dc9cf67bb4c51d794 ]
    
    READ_ONCE should be used when reading rings prior to accessing the
    statistics pointer. Introduce this as well as the corresponding WRITE_ONCE
    usage when allocating and freeing the rings, to ensure protected access.
    
    Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 203cfe694e9dfc665ec198678e84531c6b8bdfbf
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Tue Jun 16 10:31:40 2020 +0200

    net: ethernet: mvneta: Add 2500BaseX support for SoCs without comphy
    
    [ Upstream commit 1a642ca7f38992b086101fe204a1ae3c90ed8016 ]
    
    The older SoCs like Armada XP support a 2500BaseX mode in the datasheets
    referred to as DR-SGMII (Double rated SGMII) or HS-SGMII (High Speed
    SGMII). This is an upclocked 1000BaseX mode, thus
    PHY_INTERFACE_MODE_2500BASEX is the appropriate mode define for it.
    adding support for it merely means writing the correct magic value into
    the MVNETA_SERDES_CFG register.
    
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 996bd0778a37ed0aee8807d5824101eadc1061ce
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Tue Jun 16 10:31:39 2020 +0200

    net: ethernet: mvneta: Fix Serdes configuration for SoCs without comphy
    
    [ Upstream commit b4748553f53f2971e07d2619f13d461daac0f3bb ]
    
    The MVNETA_SERDES_CFG register is only available on older SoCs like the
    Armada XP. On newer SoCs like the Armada 38x the fields are moved to
    comphy. This patch moves the writes to this register next to the comphy
    initialization, so that depending on the SoC either comphy or
    MVNETA_SERDES_CFG is configured.
    With this we no longer write to the MVNETA_SERDES_CFG on SoCs where it
    doesn't exist.
    
    Suggested-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f23c0dcd0962a5c45f30b3b10101f6fde8b3300
Author: Zhenzhong Duan <zhenzhong.duan@gmail.com>
Date:   Thu Jun 18 11:21:25 2020 +0800

    spi: spidev: fix a potential use-after-free in spidev_release()
    
    [ Upstream commit 06096cc6c5a84ced929634b0d79376b94c65a4bd ]
    
    If an spi device is unbounded from the driver before the release
    process, there will be an NULL pointer reference when it's
    referenced in spi_slave_abort().
    
    Fix it by checking it's already freed before reference.
    
    Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>
    Link: https://lore.kernel.org/r/20200618032125.4650-2-zhenzhong.duan@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 010de57181623ecf1ec5c7251ec7ef9f8b45df97
Author: Zhenzhong Duan <zhenzhong.duan@gmail.com>
Date:   Thu Jun 18 11:21:24 2020 +0800

    spi: spidev: fix a race between spidev_release and spidev_remove
    
    [ Upstream commit abd42781c3d2155868821f1b947ae45bbc33330d ]
    
    Imagine below scene, spidev is referenced after it's freed.
    
    spidev_release()                spidev_remove()
    ...
                                    spin_lock_irq(&spidev->spi_lock);
                                        spidev->spi = NULL;
                                    spin_unlock_irq(&spidev->spi_lock);
    mutex_lock(&device_list_lock);
    dofree = (spidev->spi == NULL);
    if (dofree)
        kfree(spidev);
    mutex_unlock(&device_list_lock);
                                    mutex_lock(&device_list_lock);
                                    list_del(&spidev->device_entry);
                                    device_destroy(spidev_class, spidev->devt);
                                    clear_bit(MINOR(spidev->devt), minors);
                                    if (spidev->users == 0)
                                        kfree(spidev);
                                    mutex_unlock(&device_list_lock);
    
    Fix it by resetting spidev->spi in device_list_lock's protection.
    
    Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>
    Link: https://lore.kernel.org/r/20200618032125.4650-1-zhenzhong.duan@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 44b6e192e05ffce8627a7276505bbb748ddbdc52
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Wed Jun 17 11:49:09 2020 -0500

    ALSA: hda: Intel: add missing PCI IDs for ICL-H, TGL-H and EKL
    
    [ Upstream commit d50313a5a0d803bcf55121a2b82086633060d05e ]
    
    Mirror PCI ids used for SOF.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20200617164909.18225-1-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04197a8184e7e16e0b24b0198ecbdf2d4faabd57
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Wed Jun 17 11:47:54 2020 -0500

    ASoC: SOF: Intel: add PCI ID for CometLake-S
    
    [ Upstream commit 258fb4f4c34a0db9d3834aba6784d7b322176bb9 ]
    
    Mirror ID added for legacy HDaudio
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20200617164755.18104-3-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1589bb5b04e3d58f14362d22ff0806299a83838
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Sun Jun 14 00:30:26 2020 +0200

    drm: mcde: Fix display initialization problem
    
    [ Upstream commit b984b6d8b52372b98cce0a6ff6c2787f50665b87 ]
    
    The following bug appeared in the MCDE driver/display
    initialization during the recent merge window.
    
    First the place we call drm_fbdev_generic_setup() in the
    wrong place: this needs to be called AFTER calling
    drm_dev_register() else we get this splat:
    
     ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 1 at ../drivers/gpu/drm/drm_fb_helper.c:2198 drm_fbdev_generic_setup+0x164/0x1a8
    mcde a0350000.mcde: Device has not been registered.
    Modules linked in:
    Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support)
    [<c010e704>] (unwind_backtrace) from [<c010a86c>] (show_stack+0x10/0x14)
    [<c010a86c>] (show_stack) from [<c0414f38>] (dump_stack+0x9c/0xb0)
    [<c0414f38>] (dump_stack) from [<c0121c8c>] (__warn+0xb8/0xd0)
    [<c0121c8c>] (__warn) from [<c0121d18>] (warn_slowpath_fmt+0x74/0xb8)
    [<c0121d18>] (warn_slowpath_fmt) from [<c04b154c>] (drm_fbdev_generic_setup+0x164/0x1a8)
    [<c04b154c>] (drm_fbdev_generic_setup) from [<c04ed278>] (mcde_drm_bind+0xc4/0x160)
    [<c04ed278>] (mcde_drm_bind) from [<c04f06b8>] (try_to_bring_up_master+0x15c/0x1a4)
    (...)
    
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-1-linus.walleij@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 408ddca5c737430a086fb155b4dc246c741ee76d
Author: Thierry Reding <treding@nvidia.com>
Date:   Wed Apr 8 19:38:02 2020 +0200

    gpu: host1x: Detach driver on unregister
    
    [ Upstream commit d9a0a05bf8c76e6dc79230669a8b5d685b168c30 ]
    
    Currently when a host1x device driver is unregistered, it is not
    detached from the host1x controller, which means that the device
    will stay around and when the driver is registered again, it may
    bind to the old, stale device rather than the new one that was
    created from scratch upon driver registration. This in turn can
    cause various weird crashes within the driver core because it is
    confronted with a device that was already deleted.
    
    Fix this by detaching the driver from the host1x controller when
    it is unregistered. This ensures that the deleted device also is
    no longer present in the device list that drivers will bind to.
    
    Reported-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Tested-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d78a975525f3f537dddf60c7bde9586e629e5262
Author: Nicolin Chen <nicoleotsuka@gmail.com>
Date:   Tue May 19 02:03:01 2020 -0700

    drm/tegra: hub: Do not enable orphaned window group
    
    [ Upstream commit ef4e417eb3ec7fe657928f10ac1d2154d8a5fb38 ]
    
    Though the unconditional enable/disable code is not a final solution,
    we don't want to run into a NULL pointer situation when window group
    doesn't link to its DC parent if the DC is disabled in Device Tree.
    
    So this patch simply adds a check to make sure that window group has
    a valid parent before running into tegra_windowgroup_enable/disable.
    
    Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbe5fef1c2b14465f85f047723196e4f6b57cdf6
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Sat Jun 13 20:30:25 2020 +0800

    drm/ttm: Fix dma_fence refcnt leak when adding move fence
    
    [ Upstream commit 11425c4519e2c974a100fc984867046d905b9380 ]
    
    ttm_bo_add_move_fence() invokes dma_fence_get(), which returns a
    reference of the specified dma_fence object to "fence" with increased
    refcnt.
    
    When ttm_bo_add_move_fence() returns, local variable "fence" becomes
    invalid, so the refcount should be decreased to keep refcount balanced.
    
    The reference counting issue happens in one exception handling path of
    ttm_bo_add_move_fence(). When no_wait_gpu flag is equals to true, the
    function forgets to decrease the refcnt increased by dma_fence_get(),
    causing a refcnt leak.
    
    Fix this issue by calling dma_fence_put() when no_wait_gpu flag is
    equals to true.
    
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Link: https://patchwork.freedesktop.org/patch/370221/
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bfa3b616c526d455c3e60b5e40c051135f4e5b3
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon Jun 1 17:18:56 2020 -0700

    ARM: dts: omap4-droid4: Fix spi configuration and increase rate
    
    [ Upstream commit 0df12a01f4857495816b05f048c4c31439446e35 ]
    
    We can currently sometimes get "RXS timed out" errors and "EOT timed out"
    errors with spi transfers.
    
    These errors can be made easy to reproduce by reading the cpcap iio
    values in a loop while keeping the CPUs busy by also reading /dev/urandom.
    
    The "RXS timed out" errors we can fix by adding spi-cpol and spi-cpha
    in addition to the spi-cs-high property we already have.
    
    The "EOT timed out" errors we can fix by increasing the spi clock rate
    to 9.6 MHz. Looks similar MC13783 PMIC says it works at spi clock rates
    up to 20 MHz, so let's assume we can pick any rate up to 20 MHz also
    for cpcap.
    
    Cc: maemo-leste@lists.dyne.org
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3965fe7c0a778f4eb061ee77ca3e2bec1ea17c0a
Author: Stephane Eranian <eranian@google.com>
Date:   Thu May 28 13:16:14 2020 -0700

    perf/x86/rapl: Fix RAPL config variable bug
    
    [ Upstream commit 16accae3d97f97d7f61c4ee5d0002bccdef59088 ]
    
    This patch fixes a bug introduced by:
    
      fd3ae1e1587d6 ("perf/x86/rapl: Move RAPL support to common x86 code")
    
    The Kconfig variable name was wrong. It was missing the CONFIG_ prefix.
    
    Signed-off-by: Stephane Eranian <eraniangoogle.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Kim Phillips <kim.phillips@amd.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20200528201614.250182-1-eranian@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f121ba6b625f470fef73475a08081ec52ab38d7
Author: Stephane Eranian <eranian@google.com>
Date:   Wed May 27 15:46:55 2020 -0700

    perf/x86/rapl: Move RAPL support to common x86 code
    
    [ Upstream commit fd3ae1e1587d64ef8cc8e361903d33625458073e ]
    
    To prepare for support of both Intel and AMD RAPL.
    
    As per the AMD PPR, Fam17h support Package RAPL counters to monitor power usage.
    The RAPL counter operates as with Intel RAPL, and as such it is beneficial
    to share the code.
    
    No change in functionality.
    
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20200527224659.206129-2-eranian@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14e8708fffee08a2e36933c74e87bc95665cdb0f
Author: Jens Thoms Toerring <jt@toerring.de>
Date:   Sun May 31 11:53:00 2020 +0200

    regmap: fix alignment issue
    
    [ Upstream commit 53d860952c8215cf9ae1ea33409c8cb71ad6ad3d ]
    
    The assembly and disassembly of data to be sent to or received from
    a device invoke functions regmap_format_XX() and regmap_parse_XX()
    that extract or insert data items from or into a buffer, using
    assignments. In some cases the functions are called with a buffer
    pointer with an odd address. On architectures with strict alignment
    requirements this can result in a kernel crash. The assignments
    have been replaced by functions that take alignment into account.
    
    Signed-off-by: Jens Thoms Toerring <jt@toerring.de>
    Link: https://lore.kernel.org/r/20200531095300.GA27570@toerring.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ec3c8329acad222eefb44f2aa6c7938b10e506b
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Mon Jun 22 13:05:40 2020 +0200

    spi: spi-fsl-dspi: Fix lockup if device is removed during SPI transfer
    
    [ Upstream commit 7684580d45bd3d84ed9b453a4cadf7a9a5605a3f ]
    
    During device removal, the driver should unregister the SPI controller
    and stop the hardware.  Otherwise the dspi_transfer_one_message() could
    wait on completion infinitely.
    
    Additionally, calling spi_unregister_controller() first in device
    removal reverse-matches the probe function, where SPI controller is
    registered at the end.
    
    Fixes: 05209f457069 ("spi: fsl-dspi: add missing clk_disable_unprepare() in dspi_remove()")
    Reported-by: Vladimir Oltean <olteanv@gmail.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200622110543.5035-1-krzk@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b64220baf4aa7c58eb7feea8a781c439409e317
Author: Peng Ma <peng.ma@nxp.com>
Date:   Fri Apr 24 14:12:16 2020 +0800

    spi: spi-fsl-dspi: Adding shutdown hook
    
    [ Upstream commit dc234825997ec6ff05980ca9e2204f4ac3f8d695 ]
    
    We need to ensure dspi controller could be stopped in order for kexec
    to start the next kernel.
    So add the shutdown operation support.
    
    Signed-off-by: Peng Ma <peng.ma@nxp.com>
    Link: https://lore.kernel.org/r/20200424061216.27445-1-peng.ma@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb676bef0224c5b7316bfced45a523a230d7fa8c
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Wed Jun 17 10:36:20 2020 +0200

    KVM: s390: reduce number of IO pins to 1
    
    [ Upstream commit 774911290c589e98e3638e73b24b0a4d4530e97c ]
    
    The current number of KVM_IRQCHIP_NUM_PINS results in an order 3
    allocation (32kb) for each guest start/restart. This can result in OOM
    killer activity even with free swap when the memory is fragmented
    enough:
    
    kernel: qemu-system-s39 invoked oom-killer: gfp_mask=0x440dc0(GFP_KERNEL_ACCOUNT|__GFP_COMP|__GFP_ZERO), order=3, oom_score_adj=0
    kernel: CPU: 1 PID: 357274 Comm: qemu-system-s39 Kdump: loaded Not tainted 5.4.0-29-generic #33-Ubuntu
    kernel: Hardware name: IBM 8562 T02 Z06 (LPAR)
    kernel: Call Trace:
    kernel: ([<00000001f848fe2a>] show_stack+0x7a/0xc0)
    kernel:  [<00000001f8d3437a>] dump_stack+0x8a/0xc0
    kernel:  [<00000001f8687032>] dump_header+0x62/0x258
    kernel:  [<00000001f8686122>] oom_kill_process+0x172/0x180
    kernel:  [<00000001f8686abe>] out_of_memory+0xee/0x580
    kernel:  [<00000001f86e66b8>] __alloc_pages_slowpath+0xd18/0xe90
    kernel:  [<00000001f86e6ad4>] __alloc_pages_nodemask+0x2a4/0x320
    kernel:  [<00000001f86b1ab4>] kmalloc_order+0x34/0xb0
    kernel:  [<00000001f86b1b62>] kmalloc_order_trace+0x32/0xe0
    kernel:  [<00000001f84bb806>] kvm_set_irq_routing+0xa6/0x2e0
    kernel:  [<00000001f84c99a4>] kvm_arch_vm_ioctl+0x544/0x9e0
    kernel:  [<00000001f84b8936>] kvm_vm_ioctl+0x396/0x760
    kernel:  [<00000001f875df66>] do_vfs_ioctl+0x376/0x690
    kernel:  [<00000001f875e304>] ksys_ioctl+0x84/0xb0
    kernel:  [<00000001f875e39a>] __s390x_sys_ioctl+0x2a/0x40
    kernel:  [<00000001f8d55424>] system_call+0xd8/0x2c8
    
    As far as I can tell s390x does not use the iopins as we bail our for
    anything other than KVM_IRQ_ROUTING_S390_ADAPTER and the chip/pin is
    only used for KVM_IRQ_ROUTING_IRQCHIP. So let us use a small number to
    reduce the memory footprint.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20200617083620.5409-1-borntraeger@de.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>