commit d18b78abc0c6e7d3119367c931c583e02d466495
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Aug 21 11:05:39 2020 +0200

    Linux 4.19.141
    
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c1684171564a7e91afce2897469c81bf7d6085a
Author: Sandeep Raghuraman <sandy.8925@gmail.com>
Date:   Thu Aug 6 22:52:20 2020 +0530

    drm/amdgpu: Fix bug where DPM is not enabled after hibernate and resume
    
    commit f87812284172a9809820d10143b573d833cd3f75 upstream.
    
    Reproducing bug report here:
    After hibernating and resuming, DPM is not enabled. This remains the case
    even if you test hibernate using the steps here:
    https://www.kernel.org/doc/html/latest/power/basic-pm-debugging.html
    
    I debugged the problem, and figured out that in the file hardwaremanager.c,
    in the function, phm_enable_dynamic_state_management(), the check
    'if (!hwmgr->pp_one_vf && smum_is_dpm_running(hwmgr) && !amdgpu_passthrough(adev) && adev->in_suspend)'
    returns true for the hibernate case, and false for the suspend case.
    
    This means that for the hibernate case, the AMDGPU driver doesn't enable DPM
    (even though it should) and simply returns from that function.
    In the suspend case, it goes ahead and enables DPM, even though it doesn't need to.
    
    I debugged further, and found out that in the case of suspend, for the
    CIK/Hawaii GPUs, smum_is_dpm_running(hwmgr) returns false, while in the case of
    hibernate, smum_is_dpm_running(hwmgr) returns true.
    
    For CIK, the ci_is_dpm_running() function calls the ci_is_smc_ram_running() function,
    which is ultimately used to determine if DPM is currently enabled or not,
    and this seems to provide the wrong answer.
    
    I've changed the ci_is_dpm_running() function to instead use the same method that
    some other AMD GPU chips do (e.g Fiji), which seems to read the voltage controller.
    I've tested on my R9 390 and it seems to work correctly for both suspend and
    hibernate use cases, and has been stable so far.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=208839
    Signed-off-by: Sandeep Raghuraman <sandy.8925@gmail.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 bfdd8596994870126a62e673b82e6208f96727cd
Author: Marius Iacob <themariusus@gmail.com>
Date:   Sat Aug 1 15:34:46 2020 +0300

    drm: Added orientation quirk for ASUS tablet model T103HAF
    
    commit b5ac98cbb8e5e30c34ebc837d1e5a3982d2b5f5c upstream.
    
    Signed-off-by: Marius Iacob <themariusus@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200801123445.1514567-1-themariusus@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4368ab3ef78880ea27f5400e84e424184e8cee6
Author: Tomasz Maciej Nowak <tmn505@gmail.com>
Date:   Thu Feb 27 17:52:32 2020 +0100

    arm64: dts: marvell: espressobin: add ethernet alias
    
    commit 5253cb8c00a6f4356760efb38bca0e0393aa06de upstream.
    
    The maker of this board and its variants, stores MAC address in U-Boot
    environment. Add alias for bootloader to recognise, to which ethernet
    node inject the factory MAC address.
    
    Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    [pali: Backported to 5.4 and older versions]
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2406c45db3de8da8052eccb1dcfde69ea5988b19
Author: Hugh Dickins <hughd@google.com>
Date:   Thu Aug 6 23:26:22 2020 -0700

    khugepaged: retract_page_tables() remember to test exit
    
    commit 18e77600f7a1ed69f8ce46c9e11cad0985712dfa upstream.
    
    Only once have I seen this scenario (and forgot even to notice what forced
    the eventual crash): a sequence of "BUG: Bad page map" alerts from
    vm_normal_page(), from zap_pte_range() servicing exit_mmap();
    pmd:00000000, pte values corresponding to data in physical page 0.
    
    The pte mappings being zapped in this case were supposed to be from a huge
    page of ext4 text (but could as well have been shmem): my belief is that
    it was racing with collapse_file()'s retract_page_tables(), found *pmd
    pointing to a page table, locked it, but *pmd had become 0 by the time
    start_pte was decided.
    
    In most cases, that possibility is excluded by holding mmap lock; but
    exit_mmap() proceeds without mmap lock.  Most of what's run by khugepaged
    checks khugepaged_test_exit() after acquiring mmap lock:
    khugepaged_collapse_pte_mapped_thps() and hugepage_vma_revalidate() do so,
    for example.  But retract_page_tables() did not: fix that.
    
    The fix is for retract_page_tables() to check khugepaged_test_exit(),
    after acquiring mmap lock, before doing anything to the page table.
    Getting the mmap lock serializes with __mmput(), which briefly takes and
    drops it in __khugepaged_exit(); then the khugepaged_test_exit() check on
    mm_users makes sure we don't touch the page table once exit_mmap() might
    reach it, since exit_mmap() will be proceeding without mmap lock, not
    expecting anyone to be racing with it.
    
    Fixes: f3f0e1d2150b ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.2008021215400.27773@eggly.anvils
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 014ec97717f4794a1c085aa4fdc924018c4fd999
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Aug 14 14:42:45 2020 +0200

    sh: landisk: Add missing initialization of sh_io_port_base
    
    [ Upstream commit 0c64a0dce51faa9c706fdf1f957d6f19878f4b81 ]
    
    The Landisk setup code maps the CF IDE area using ioremap_prot(), and
    passes the resulting virtual addresses to the pata_platform driver,
    disguising them as I/O port addresses.  Hence the pata_platform driver
    translates them again using ioport_map().
    As CONFIG_GENERIC_IOMAP=n, and CONFIG_HAS_IOPORT_MAP=y, the
    SuperH-specific mapping code in arch/sh/kernel/ioport.c translates
    I/O port addresses to virtual addresses by adding sh_io_port_base, which
    defaults to -1, thus breaking the assumption of an identity mapping.
    
    Fix this by setting sh_io_port_base to zero.
    
    Fixes: 37b7a97884ba64bf ("sh: machvec IO death.")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df8caaf9ef87cbc050bff4d9569d2c1c87d23389
Author: Daniel Díaz <daniel.diaz@linaro.org>
Date:   Wed Aug 12 17:15:17 2020 -0500

    tools build feature: Quote CC and CXX for their arguments
    
    [ Upstream commit fa5c893181ed2ca2f96552f50073786d2cfce6c0 ]
    
    When using a cross-compilation environment, such as OpenEmbedded,
    the CC an CXX variables are set to something more than just a
    command: there are arguments (such as --sysroot) that need to be
    passed on to the compiler so that the right set of headers and
    libraries are used.
    
    For the particular case that our systems detected, CC is set to
    the following:
    
      export CC="aarch64-linaro-linux-gcc  --sysroot=/oe/build/tmp/work/machine/perf/1.0-r9/recipe-sysroot"
    
    Without quotes, detection is as follows:
    
      Auto-detecting system features:
      ...                         dwarf: [ OFF ]
      ...            dwarf_getlocations: [ OFF ]
      ...                         glibc: [ OFF ]
      ...                          gtk2: [ OFF ]
      ...                        libbfd: [ OFF ]
      ...                        libcap: [ OFF ]
      ...                        libelf: [ OFF ]
      ...                       libnuma: [ OFF ]
      ...        numa_num_possible_cpus: [ OFF ]
      ...                       libperl: [ OFF ]
      ...                     libpython: [ OFF ]
      ...                     libcrypto: [ OFF ]
      ...                     libunwind: [ OFF ]
      ...            libdw-dwarf-unwind: [ OFF ]
      ...                          zlib: [ OFF ]
      ...                          lzma: [ OFF ]
      ...                     get_cpuid: [ OFF ]
      ...                           bpf: [ OFF ]
      ...                        libaio: [ OFF ]
      ...                       libzstd: [ OFF ]
      ...        disassembler-four-args: [ OFF ]
    
      Makefile.config:414: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.
      Makefile.perf:230: recipe for target 'sub-make' failed
      make[1]: *** [sub-make] Error 2
      Makefile:69: recipe for target 'all' failed
      make: *** [all] Error 2
    
    With CC and CXX quoted, some of those features are now detected.
    
    Fixes: e3232c2f39ac ("tools build feature: Use CC and CXX from parent")
    Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
    Reviewed-by: Thomas Hebb <tommyhebb@gmail.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andriin@fb.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: KP Singh <kpsingh@chromium.org>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Yonghong Song <yhs@fb.com>
    Link: http://lore.kernel.org/lkml/20200812221518.2869003-1-daniel.diaz@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b87dc3e0ba624cc2a9df08a14d1653122d383f9
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Mon Aug 10 15:34:04 2020 +0200

    perf bench mem: Always memset source before memcpy
    
    [ Upstream commit 1beaef29c34154ccdcb3f1ae557f6883eda18840 ]
    
    For memcpy, the source pages are memset to zero only when --cycles is
    used.  This leads to wildly different results with or without --cycles,
    since all sources pages are likely to be mapped to the same zero page
    without explicit writes.
    
    Before this fix:
    
    $ export cmd="./perf stat -e LLC-loads -- ./perf bench \
      mem memcpy -s 1024MB -l 100 -f default"
    $ $cmd
    
             2,935,826      LLC-loads
           3.821677452 seconds time elapsed
    
    $ $cmd --cycles
    
           217,533,436      LLC-loads
           8.616725985 seconds time elapsed
    
    After this fix:
    
    $ $cmd
    
           214,459,686      LLC-loads
           8.674301124 seconds time elapsed
    
    $ $cmd --cycles
    
           214,758,651      LLC-loads
           8.644480006 seconds time elapsed
    
    Fixes: 47b5757bac03c338 ("perf bench mem: Move boilerplate memory allocation to the infrastructure")
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel@axis.com
    Link: http://lore.kernel.org/lkml/20200810133404.30829-1-vincent.whitchurch@axis.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a1b7ced0fd9305d25708ff7fd9d7d4fb794f7a1
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Thu Aug 13 15:46:30 2020 +0800

    ALSA: echoaudio: Fix potential Oops in snd_echo_resume()
    
    [ Upstream commit 5a25de6df789cc805a9b8ba7ab5deef5067af47e ]
    
    Freeing chip on error may lead to an Oops at the next time
    the system goes to resume. Fix this by removing all
    snd_echo_free() calls on error.
    
    Fixes: 47b5d028fdce8 ("ALSA: Echoaudio - Add suspend support #2")
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Link: https://lore.kernel.org/r/20200813074632.17022-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59547851489e5168b7291eac5ecc5bb24a71d7f5
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Jul 23 16:02:46 2020 +0300

    mfd: dln2: Run event handler loop under spinlock
    
    [ Upstream commit 3d858942250820b9adc35f963a257481d6d4c81d ]
    
    The event handler loop must be run with interrupts disabled.
    Otherwise we will have a warning:
    
    [ 1970.785649] irq 31 handler lineevent_irq_handler+0x0/0x20 enabled interrupts
    [ 1970.792739] WARNING: CPU: 0 PID: 0 at kernel/irq/handle.c:159 __handle_irq_event_percpu+0x162/0x170
    [ 1970.860732] RIP: 0010:__handle_irq_event_percpu+0x162/0x170
    ...
    [ 1970.946994] Call Trace:
    [ 1970.949446]  <IRQ>
    [ 1970.951471]  handle_irq_event_percpu+0x2c/0x80
    [ 1970.955921]  handle_irq_event+0x23/0x43
    [ 1970.959766]  handle_simple_irq+0x57/0x70
    [ 1970.963695]  generic_handle_irq+0x42/0x50
    [ 1970.967717]  dln2_rx+0xc1/0x210 [dln2]
    [ 1970.971479]  ? usb_hcd_unmap_urb_for_dma+0xa6/0x1c0
    [ 1970.976362]  __usb_hcd_giveback_urb+0x77/0xe0
    [ 1970.980727]  usb_giveback_urb_bh+0x8e/0xe0
    [ 1970.984837]  tasklet_action_common.isra.0+0x4a/0xe0
    ...
    
    Recently xHCI driver switched to tasklets in the commit 36dc01657b49
    ("usb: host: xhci: Support running urb giveback in tasklet context").
    
    The handle_irq_event_* functions are expected to be called with interrupts
    disabled and they rightfully complain here because we run in tasklet context
    with interrupts enabled.
    
    Use a event spinlock to protect event handler from being interrupted.
    
    Note, that there are only two users of this GPIO and ADC drivers and both of
    them are using generic_handle_irq() which makes above happen.
    
    Fixes: 338a12814297 ("mfd: Add support for Diolan DLN-2 devices")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e69ac04403c0f3d721a552d7987fd8cd1daa517
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Tue Aug 11 18:36:16 2020 -0700

    test_kmod: avoid potential double free in trigger_config_run_type()
    
    [ Upstream commit 0776d1231bec0c7ab43baf440a3f5ef5f49dd795 ]
    
    Reset the member "test_fs" of the test configuration after a call of the
    function "kfree_const" to a null pointer so that a double memory release
    will not be performed.
    
    Fixes: d9c6a72d6fa2 ("kmod: add test driver to stress test the module loader")
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Chuck Lever <chuck.lever@oracle.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: James Morris <jmorris@namei.org>
    Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Cc: J. Bruce Fields <bfields@fieldses.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Lars Ellenberg <lars.ellenberg@linbit.com>
    Cc: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Cc: Philipp Reisner <philipp.reisner@linbit.com>
    Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
    Cc: "Serge E. Hallyn" <serge@hallyn.com>
    Cc: Sergei Trofimovich <slyfox@gentoo.org>
    Cc: Sergey Kvachonok <ravenexp@gmail.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Tony Vroon <chainsaw@gentoo.org>
    Cc: Christoph Hellwig <hch@infradead.org>
    Link: http://lkml.kernel.org/r/20200610154923.27510-4-mcgrof@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aefe207d95d02a1b4711bee17cde0014d7b8223f
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Aug 11 18:35:53 2020 -0700

    fs/ufs: avoid potential u32 multiplication overflow
    
    [ Upstream commit 88b2e9b06381551b707d980627ad0591191f7a2d ]
    
    The 64 bit ino is being compared to the product of two u32 values,
    however, the multiplication is being performed using a 32 bit multiply so
    there is a potential of an overflow.  To be fully safe, cast uspi->s_ncg
    to a u64 to ensure a 64 bit multiplication occurs to avoid any chance of
    overflow.
    
    Fixes: f3e2a520f5fb ("ufs: NFS support")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Evgeniy Dushistov <dushistov@mail.ru>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Link: http://lkml.kernel.org/r/20200715170355.1081713-1-colin.king@canonical.com
    Addresses-Coverity: ("Unintentional integer overflow")
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f3fb90d30db4969c41cc22d72c0f6ca2f29954c
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Aug 11 18:35:39 2020 -0700

    fs/minix: remove expected error message in block_to_path()
    
    [ Upstream commit f666f9fb9a36f1c833b9d18923572f0e4d304754 ]
    
    When truncating a file to a size within the last allowed logical block,
    block_to_path() is called with the *next* block.  This exceeds the limit,
    causing the "block %ld too big" error message to be printed.
    
    This case isn't actually an error; there are just no more blocks past that
    point.  So, remove this error message.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Qiujun Huang <anenbupt@gmail.com>
    Link: http://lkml.kernel.org/r/20200628060846.682158-7-ebiggers@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7ac366be04e49147498f0837bca5c020c3fb994
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Aug 11 18:35:36 2020 -0700

    fs/minix: fix block limit check for V1 filesystems
    
    [ Upstream commit 0a12c4a8069607247cb8edc3b035a664e636fd9a ]
    
    The minix filesystem reads its maximum file size from its on-disk
    superblock.  This value isn't necessarily a multiple of the block size.
    When it's not, the V1 block mapping code doesn't allow mapping the last
    possible block.  Commit 6ed6a722f9ab ("minixfs: fix block limit check")
    fixed this in the V2 mapping code.  Fix it in the V1 mapping code too.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Qiujun Huang <anenbupt@gmail.com>
    Link: http://lkml.kernel.org/r/20200628060846.682158-6-ebiggers@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 95fc841ea8b681eea44e766c182c18f17818acbf
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Aug 11 18:35:33 2020 -0700

    fs/minix: set s_maxbytes correctly
    
    [ Upstream commit 32ac86efff91a3e4ef8c3d1cadd4559e23c8e73a ]
    
    The minix filesystem leaves super_block::s_maxbytes at MAX_NON_LFS rather
    than setting it to the actual filesystem-specific limit.  This is broken
    because it means userspace doesn't see the standard behavior like getting
    EFBIG and SIGXFSZ when exceeding the maximum file size.
    
    Fix this by setting s_maxbytes correctly.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Qiujun Huang <anenbupt@gmail.com>
    Link: http://lkml.kernel.org/r/20200628060846.682158-5-ebiggers@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a906b868953a9c9bba44649a8fe760e818dd7224
Author: Jeffrey Mitchell <jeffrey.mitchell@starlab.io>
Date:   Wed Aug 5 12:23:19 2020 -0500

    nfs: Fix getxattr kernel panic and memory overflow
    
    [ Upstream commit b4487b93545214a9db8cbf32e86411677b0cca21 ]
    
    Move the buffer size check to decode_attr_security_label() before memcpy()
    Only call memcpy() if the buffer is large enough
    
    Fixes: aa9c2669626c ("NFS: Client implementation of Labeled-NFS")
    Signed-off-by: Jeffrey Mitchell <jeffrey.mitchell@starlab.io>
    [Trond: clean up duplicate test of label->len != 0]
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c08be09b2c1c5389f1d24677b595822ac7a75a21
Author: Wang Hai <wanghai38@huawei.com>
Date:   Mon Aug 10 10:57:05 2020 +0800

    net: qcom/emac: add missed clk_disable_unprepare in error path of emac_clks_phase1_init
    
    [ Upstream commit 50caa777a3a24d7027748e96265728ce748b41ef ]
    
    Fix the missing clk_disable_unprepare() before return
    from emac_clks_phase1_init() in the error handling case.
    
    Fixes: b9b17debc69d ("net: emac: emac gigabit ethernet controller driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Acked-by: Timur Tabi <timur@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae71f731f061272806651be14f355cafd9560462
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jun 26 13:39:59 2020 +0300

    drm/vmwgfx: Fix two list_for_each loop exit tests
    
    [ Upstream commit 4437c1152ce0e57ab8f401aa696ea6291cc07ab1 ]
    
    These if statements are supposed to be true if we ended the
    list_for_each_entry() loops without hitting a break statement but they
    don't work.
    
    In the first loop, we increment "i" after the "if (i == unit)" condition
    so we don't necessarily know that "i" is not equal to unit at the end of
    the loop.
    
    In the second loop we exit when mode is not pointing to a valid
    drm_display_mode struct so it doesn't make sense to check "mode->type".
    
    Fixes: a278724aa23c ("drm/vmwgfx: Implement fbdev on kms v2")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3cfd94ed90ee1eb4854aef1a4f9d8a3334654671
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jun 26 13:34:37 2020 +0300

    drm/vmwgfx: Use correct vmw_legacy_display_unit pointer
    
    [ Upstream commit 1d2c0c565bc0da25f5e899a862fb58e612b222df ]
    
    The "entry" pointer is an offset from the list head and it doesn't
    point to a valid vmw_legacy_display_unit struct.  Presumably the
    intent was to point to the last entry.
    
    Also the "i++" wasn't used so I have removed that as well.
    
    Fixes: d7e1958dbe4a ("drm/vmwgfx: Support older hardware.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27a545d597ddecc87cf20e1e4809985fd32736c7
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Aug 6 15:35:34 2020 -0700

    Input: sentelic - fix error return when fsp_reg_write fails
    
    [ Upstream commit ea38f06e0291986eb93beb6d61fd413607a30ca4 ]
    
    Currently when the call to fsp_reg_write fails -EIO is not being returned
    because the count is being returned instead of the return value in retval.
    Fix this by returning the value in retval instead of count.
    
    Addresses-Coverity: ("Unused value")
    Fixes: fc69f4a6af49 ("Input: add new driver for Sentelic Finger Sensing Pad")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Link: https://lore.kernel.org/r/20200603141218.131663-1-colin.king@canonical.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ddf2b7891323fe30bfac761d2e12d3378a0d7eb2
Author: Krzysztof Sobota <krzysztof.sobota@nokia.com>
Date:   Fri Jul 17 12:31:09 2020 +0200

    watchdog: initialize device before misc_register
    
    [ Upstream commit cb36e29bb0e4b0c33c3d5866a0a4aebace4c99b7 ]
    
    When watchdog device is being registered, it calls misc_register that
    makes watchdog available for systemd to open. This is a data race
    scenario, because when device is open it may still have device struct
    not initialized - this in turn causes a crash. This patch moves
    device initialization before misc_register call and it solves the
    problem printed below.
    
    ------------[ cut here ]------------
    WARNING: CPU: 3 PID: 1 at lib/kobject.c:612 kobject_get+0x50/0x54
    kobject: '(null)' ((ptrval)): is not initialized, yet kobject_get() is being called.
    Modules linked in: k2_reset_status(O) davinci_wdt(+) sfn_platform_hwbcn(O) fsmddg_sfn(O) clk_misc_mmap(O) clk_sw_bcn(O) fsp_reset(O) cma_mod(O) slave_sup_notif(O) fpga_master(O) latency(O+) evnotify(O) enable_arm_pmu(O) xge(O) rio_mport_cdev br_netfilter bridge stp llc nvrd_checksum(O) ipv6
    CPU: 3 PID: 1 Comm: systemd Tainted: G           O      4.19.113-g2579778-fsm4_k2 #1
    Hardware name: Keystone
    [<c02126c4>] (unwind_backtrace) from [<c020da94>] (show_stack+0x18/0x1c)
    [<c020da94>] (show_stack) from [<c07f87d8>] (dump_stack+0xb4/0xe8)
    [<c07f87d8>] (dump_stack) from [<c0221f70>] (__warn+0xfc/0x114)
    [<c0221f70>] (__warn) from [<c0221fd8>] (warn_slowpath_fmt+0x50/0x74)
    [<c0221fd8>] (warn_slowpath_fmt) from [<c07fd394>] (kobject_get+0x50/0x54)
    [<c07fd394>] (kobject_get) from [<c0602ce8>] (get_device+0x1c/0x24)
    [<c0602ce8>] (get_device) from [<c06961e0>] (watchdog_open+0x90/0xf0)
    [<c06961e0>] (watchdog_open) from [<c06001dc>] (misc_open+0x130/0x17c)
    [<c06001dc>] (misc_open) from [<c0388228>] (chrdev_open+0xec/0x1a8)
    [<c0388228>] (chrdev_open) from [<c037fa98>] (do_dentry_open+0x204/0x3cc)
    [<c037fa98>] (do_dentry_open) from [<c0391e2c>] (path_openat+0x330/0x1148)
    [<c0391e2c>] (path_openat) from [<c0394518>] (do_filp_open+0x78/0xec)
    [<c0394518>] (do_filp_open) from [<c0381100>] (do_sys_open+0x130/0x1f4)
    [<c0381100>] (do_sys_open) from [<c0201000>] (ret_fast_syscall+0x0/0x28)
    Exception stack(0xd2ceffa8 to 0xd2cefff0)
    ffa0:                   b6f69968 00000000 ffffff9c b6ebd210 000a0001 00000000
    ffc0: b6f69968 00000000 00000000 00000142 fffffffd ffffffff 00b65530 bed7bb78
    ffe0: 00000142 bed7ba70 b6cc2503 b6cc41d6
    ---[ end trace 7b16eb105513974f ]---
    
    ------------[ cut here ]------------
    WARNING: CPU: 3 PID: 1 at lib/refcount.c:153 kobject_get+0x24/0x54
    refcount_t: increment on 0; use-after-free.
    Modules linked in: k2_reset_status(O) davinci_wdt(+) sfn_platform_hwbcn(O) fsmddg_sfn(O) clk_misc_mmap(O) clk_sw_bcn(O) fsp_reset(O) cma_mod(O) slave_sup_notif(O) fpga_master(O) latency(O+) evnotify(O) enable_arm_pmu(O) xge(O) rio_mport_cdev br_netfilter bridge stp llc nvrd_checksum(O) ipv6
    CPU: 3 PID: 1 Comm: systemd Tainted: G        W  O      4.19.113-g2579778-fsm4_k2 #1
    Hardware name: Keystone
    [<c02126c4>] (unwind_backtrace) from [<c020da94>] (show_stack+0x18/0x1c)
    [<c020da94>] (show_stack) from [<c07f87d8>] (dump_stack+0xb4/0xe8)
    [<c07f87d8>] (dump_stack) from [<c0221f70>] (__warn+0xfc/0x114)
    [<c0221f70>] (__warn) from [<c0221fd8>] (warn_slowpath_fmt+0x50/0x74)
    [<c0221fd8>] (warn_slowpath_fmt) from [<c07fd368>] (kobject_get+0x24/0x54)
    [<c07fd368>] (kobject_get) from [<c0602ce8>] (get_device+0x1c/0x24)
    [<c0602ce8>] (get_device) from [<c06961e0>] (watchdog_open+0x90/0xf0)
    [<c06961e0>] (watchdog_open) from [<c06001dc>] (misc_open+0x130/0x17c)
    [<c06001dc>] (misc_open) from [<c0388228>] (chrdev_open+0xec/0x1a8)
    [<c0388228>] (chrdev_open) from [<c037fa98>] (do_dentry_open+0x204/0x3cc)
    [<c037fa98>] (do_dentry_open) from [<c0391e2c>] (path_openat+0x330/0x1148)
    [<c0391e2c>] (path_openat) from [<c0394518>] (do_filp_open+0x78/0xec)
    [<c0394518>] (do_filp_open) from [<c0381100>] (do_sys_open+0x130/0x1f4)
    [<c0381100>] (do_sys_open) from [<c0201000>] (ret_fast_syscall+0x0/0x28)
    Exception stack(0xd2ceffa8 to 0xd2cefff0)
    ffa0:                   b6f69968 00000000 ffffff9c b6ebd210 000a0001 00000000
    ffc0: b6f69968 00000000 00000000 00000142 fffffffd ffffffff 00b65530 bed7bb78
    ffe0: 00000142 bed7ba70 b6cc2503 b6cc41d6
    ---[ end trace 7b16eb1055139750 ]---
    
    Fixes: 72139dfa2464 ("watchdog: Fix the race between the release of watchdog_core_data and cdev")
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: Krzysztof Sobota <krzysztof.sobota@nokia.com>
    Link: https://lore.kernel.org/r/20200717103109.14660-1-krzysztof.sobota@nokia.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe9a71128e3dfb4f0fdd6edb7a0ef1d980dfcf1d
Author: Ewan D. Milne <emilne@redhat.com>
Date:   Wed Jul 29 19:10:11 2020 -0400

    scsi: lpfc: nvmet: Avoid hang / use-after-free again when destroying targetport
    
    [ Upstream commit af6de8c60fe9433afa73cea6fcccdccd98ad3e5e ]
    
    We cannot wait on a completion object in the lpfc_nvme_targetport structure
    in the _destroy_targetport() code path because the NVMe/fc transport will
    free that structure immediately after the .targetport_delete() callback.
    This results in a use-after-free, and a crash if slub_debug=FZPU is
    enabled.
    
    An earlier fix put put the completion on the stack, but commit 2a0fb340fcc8
    ("scsi: lpfc: Correct localport timeout duration error") subsequently
    changed the code to reference the completion through a pointer in the
    object rather than the local stack variable.  Fix this by using the stack
    variable directly.
    
    Link: https://lore.kernel.org/r/20200729231011.13240-1-emilne@redhat.com
    Fixes: 2a0fb340fcc8 ("scsi: lpfc: Correct localport timeout duration error")
    Reviewed-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff62a41403720bccbdfa7dc681410d68548621b7
Author: Stafford Horne <shorne@gmail.com>
Date:   Tue Jun 16 06:19:46 2020 +0900

    openrisc: Fix oops caused when dumping stack
    
    [ Upstream commit 57b8e277c33620e115633cdf700a260b55095460 ]
    
    When dumping a stack with 'cat /proc/#/stack' the kernel would oops.
    For example:
    
        # cat /proc/690/stack
        Unable to handle kernel access
         at virtual address 0x7fc60f58
    
        Oops#: 0000
        CPU #: 0
           PC: c00097fc    SR: 0000807f    SP: d6f09b9c
        GPR00: 00000000 GPR01: d6f09b9c GPR02: d6f09bb8 GPR03: d6f09bc4
        GPR04: 7fc60f5c GPR05: c00099b4 GPR06: 00000000 GPR07: d6f09ba3
        GPR08: ffffff00 GPR09: c0009804 GPR10: d6f08000 GPR11: 00000000
        GPR12: ffffe000 GPR13: dbb86000 GPR14: 00000001 GPR15: dbb86250
        GPR16: 7fc60f63 GPR17: 00000f5c GPR18: d6f09bc4 GPR19: 00000000
        GPR20: c00099b4 GPR21: ffffffc0 GPR22: 00000000 GPR23: 00000000
        GPR24: 00000001 GPR25: 000002c6 GPR26: d78b6850 GPR27: 00000001
        GPR28: 00000000 GPR29: dbb86000 GPR30: ffffffff GPR31: dbb862fc
          RES: 00000000 oGPR11: ffffffff
        Process cat (pid: 702, stackpage=d79d6000)
    
        Stack:
        Call trace:
        [<598977f2>] save_stack_trace_tsk+0x40/0x74
        [<95063f0e>] stack_trace_save_tsk+0x44/0x58
        [<b557bfdd>] proc_pid_stack+0xd0/0x13c
        [<a2df8eda>] proc_single_show+0x6c/0xf0
        [<e5a737b7>] seq_read+0x1b4/0x688
        [<2d6c7480>] do_iter_read+0x208/0x248
        [<2182a2fb>] vfs_readv+0x64/0x90
    
    This was caused by the stack trace code in save_stack_trace_tsk using
    the wrong stack pointer.  It was using the user stack pointer instead of
    the kernel stack pointer.  Fix this by using the right stack.
    
    Also for good measure we add try_get_task_stack/put_task_stack to ensure
    the task is not lost while we are walking it's stack.
    
    Fixes: eecac38b0423a ("openrisc: support framepointers and STACKTRACE_SUPPORT")
    Signed-off-by: Stafford Horne <shorne@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 49b30a64d320b23d7c3a3a67f2501a6ab5518a29
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Sun Jul 26 18:16:06 2020 +0200

    i2c: rcar: avoid race when unregistering slave
    
    [ Upstream commit c7c9e914f9a0478fba4dc6f227cfd69cf84a4063 ]
    
    Due to the lockless design of the driver, it is theoretically possible
    to access a NULL pointer, if a slave interrupt was running while we were
    unregistering the slave. To make this rock solid, disable the interrupt
    for a short time while we are clearing the interrupt_enable register.
    This patch is purely based on code inspection. The OOPS is super-hard to
    trigger because clearing SAR (the address) makes interrupts even more
    unlikely to happen as well. While here, reinit SCR to SDBS because this
    bit should always be set according to documentation. There is no effect,
    though, because the interface is disabled.
    
    Fixes: 7b814d852af6 ("i2c: rcar: avoid race when unregistering slave client")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb1da23aa45bbe1edb74379d5b541c62f0d2836a
Author: Thomas Hebb <tommyhebb@gmail.com>
Date:   Sun Jul 26 21:08:14 2020 -0700

    tools build feature: Use CC and CXX from parent
    
    [ Upstream commit e3232c2f39acafd5a29128425bc30b9884642cfa ]
    
    commit c8c188679ccf ("tools build: Use the same CC for feature detection
    and actual build") changed these assignments from unconditional (:=) to
    conditional (?=) so that they wouldn't clobber values from the
    environment. However, conditional assignment does not work properly for
    variables that Make implicitly sets, among which are CC and CXX. To
    quote tools/scripts/Makefile.include, which handles this properly:
    
      # Makefiles suck: This macro sets a default value of $(2) for the
      # variable named by $(1), unless the variable has been set by
      # environment or command line. This is necessary for CC and AR
      # because make sets default values, so the simpler ?= approach
      # won't work as expected.
    
    In other words, the conditional assignments will not run even if the
    variables are not overridden in the environment; Make will set CC to
    "cc" and CXX to "g++" when it starts[1], meaning the variables are not
    empty by the time the conditional assignments are evaluated. This breaks
    cross-compilation when CROSS_COMPILE is set but CC isn't, since "cc"
    gets used for feature detection instead of the cross compiler (and
    likewise for CXX).
    
    To fix the issue, just pass down the values of CC and CXX computed by
    the parent Makefile, which gets included by the Makefile that actually
    builds whatever we're detecting features for and so is guaranteed to
    have good values. This is a better solution anyway, since it means we
    aren't trying to replicate the logic of the parent build system and so
    don't risk it getting out of sync.
    
    Leave PKG_CONFIG alone, since 1) there's no common logic to compute it
    in Makefile.include, and 2) it's not an implicit variable, so
    conditional assignment works properly.
    
    [1] https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
    
    Fixes: c8c188679ccf ("tools build: Use the same CC for feature detection and actual build")
    Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: David Carrillo-Cisneros <davidcc@google.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Igor Lubashev <ilubashe@akamai.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Quentin Monnet <quentin@isovalent.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: thomas hebb <tommyhebb@gmail.com>
    Link: http://lore.kernel.org/lkml/0a6e69d1736b0fa231a648f50b0cce5d8a6734ef.1595822871.git.tommyhebb@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17dc3213fbc0e7f9fd962ba9dd4ca6d215f53fa7
Author: Rayagonda Kokatanur <rayagonda.kokatanur@broadcom.com>
Date:   Fri Jul 17 21:46:06 2020 -0700

    pwm: bcm-iproc: handle clk_get_rate() return
    
    [ Upstream commit 6ced5ff0be8e94871ba846dfbddf69d21363f3d7 ]
    
    Handle clk_get_rate() returning 0 to avoid possible division by zero.
    
    Fixes: daa5abc41c80 ("pwm: Add support for Broadcom iProc PWM controller")
    Signed-off-by: Rayagonda Kokatanur <rayagonda.kokatanur@broadcom.com>
    Signed-off-by: Scott Branden <scott.branden@broadcom.com>
    Reviewed-by: Ray Jui <ray.jui@broadcom.com>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0b9f54f4763091d4616d4fcf104d65967820f93
Author: Xu Wang <vulab@iscas.ac.cn>
Date:   Mon Jul 13 03:21:43 2020 +0000

    clk: clk-atlas6: fix return value check in atlas6_clk_init()
    
    [ Upstream commit 12b90b40854a8461a02ef19f6f4474cc88d64b66 ]
    
    In case of error, the function clk_register() returns ERR_PTR()
    and never returns NULL. The NULL test in the return value check
    should be replaced with IS_ERR().
    
    Signed-off-by: Xu Wang <vulab@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20200713032143.21362-1-vulab@iscas.ac.cn
    Acked-by: Barry Song <baohua@kernel.org>
    Fixes: 7bf21bc81f28 ("clk: sirf: re-arch to make the codes support both prima2 and atlas6")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7fc9f681fad28ac720acbb157445810fe0b3bf3c
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Mon Jun 29 17:38:07 2020 +0200

    i2c: rcar: slave: only send STOP event when we have been addressed
    
    [ Upstream commit 314139f9f0abdba61ed9a8463bbcb0bf900ac5a2 ]
    
    When the SSR interrupt is activated, it will detect every STOP condition
    on the bus, not only the ones after we have been addressed. So, enable
    this interrupt only after we have been addressed, and disable it
    otherwise.
    
    Fixes: de20d1857dd6 ("i2c: rcar: add slave support")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5040830b48953d89ec5254e65e6c5b161165762
Author: Liu Yi L <yi.l.liu@intel.com>
Date:   Fri Jul 24 09:49:14 2020 +0800

    iommu/vt-d: Enforce PASID devTLB field mask
    
    [ Upstream commit 5f77d6ca5ca74e4b4a5e2e010f7ff50c45dea326 ]
    
    Set proper masks to avoid invalid input spillover to reserved bits.
    
    Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Link: https://lore.kernel.org/r/20200724014925.15523-2-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b9b2092af3c1ac84fa30f72b767a5a50cab2ba04
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jul 14 20:22:11 2020 +0100

    iommu/omap: Check for failure of a call to omap_iommu_dump_ctx
    
    [ Upstream commit dee9d154f40c58d02f69acdaa5cfd1eae6ebc28b ]
    
    It is possible for the call to omap_iommu_dump_ctx to return
    a negative error number, so check for the failure and return
    the error number rather than pass the negative value to
    simple_read_from_buffer.
    
    Fixes: 14e0e6796a0d ("OMAP: iommu: add initial debugfs support")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Link: https://lore.kernel.org/r/20200714192211.744776-1-colin.king@canonical.com
    Addresses-Coverity: ("Improper use of negative value")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b80d3cdb0fe028ecb63ea9d330d8fba1cecf294
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Thu Jul 9 08:59:45 2020 +0530

    selftests/powerpc: ptrace-pkey: Don't update expected UAMOR value
    
    [ Upstream commit 3563b9bea0ca7f53e4218b5e268550341a49f333 ]
    
    With commit 4a4a5e5d2aad ("powerpc/pkeys: key allocation/deallocation
    must not change pkey registers") we are not updating UAMOR on key
    allocation. So don't update the expected uamor value in the test.
    
    Fixes: 4a4a5e5d2aad ("powerpc/pkeys: key allocation/deallocation must not change pkey registers")
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200709032946.881753-23-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a075f690c28eaea5616fad4fd8c698ee8b23e2d9
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Thu Jul 9 08:59:44 2020 +0530

    selftests/powerpc: ptrace-pkey: Update the test to mark an invalid pkey correctly
    
    [ Upstream commit 0eaa3b5ca7b5a76e3783639c828498343be66a01 ]
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200709032946.881753-22-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f00bbb7a21ac7f695aa449981330d706ab46fb9
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Thu Jul 9 08:59:43 2020 +0530

    selftests/powerpc: ptrace-pkey: Rename variables to make it easier to follow code
    
    [ Upstream commit 9a11f12e0a6c374b3ef1ce81e32ce477d28eb1b8 ]
    
    Rename variable to indicate that they are invalid values which we will
    use to test ptrace update of pkeys.
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200709032946.881753-21-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a24e10abad8ff9df527fc3ceed74c0d361f68230
Author: Ming Lei <ming.lei@redhat.com>
Date:   Fri Jun 19 16:42:14 2020 +0800

    dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue()
    
    [ Upstream commit e766668c6cd49d741cfb49eaeb38998ba34d27bc ]
    
    dm_stop_queue() only uses blk_mq_quiesce_queue() so it doesn't
    formally stop the blk-mq queue; therefore there is no point making the
    blk_mq_queue_stopped() check -- it will never be stopped.
    
    In addition, even though dm_stop_queue() actually tries to quiesce hw
    queues via blk_mq_quiesce_queue(), checking with blk_queue_quiesced()
    to avoid unnecessary queue quiesce isn't reliable because: the
    QUEUE_FLAG_QUIESCED flag is set before synchronize_rcu() and
    dm_stop_queue() may be called when synchronize_rcu() from another
    blk_mq_quiesce_queue() is in-progress.
    
    Fixes: 7b17c2f7292ba ("dm: Fix a race condition related to stopping and starting queues")
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c00c5131441cbc1775bb1c3164217aa52358396d
Author: Steve Longerbeam <slongerbeam@gmail.com>
Date:   Wed Jun 17 15:40:37 2020 -0700

    gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers
    
    [ Upstream commit 0f6245f42ce9b7e4d20f2cda8d5f12b55a44d7d1 ]
    
    Combine the rotate_irq() and norotate_irq() handlers into a single
    eof_irq() handler.
    
    Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 388a802632cf66c2d0a447110b87bae2ed90b1e2
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu May 21 16:01:05 2020 +0900

    mmc: renesas_sdhi_internal_dmac: clean up the code for dma complete
    
    [ Upstream commit 2b26e34e9af3fa24fa1266e9ea2d66a1f7d62dc0 ]
    
    To add end() operation in the future, clean the code of
    renesas_sdhi_internal_dmac_complete_tasklet_fn(). No behavior change.
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://lore.kernel.org/r/1590044466-28372-3-git-send-email-yoshihiro.shimoda.uh@renesas.com
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9bca40189aec751786c44dfc89fe14a960a4a88
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jul 8 14:49:52 2020 +0200

    USB: serial: ftdi_sio: clean up receive processing
    
    [ Upstream commit ce054039ba5e47b75a3be02a00274e52b06a6456 ]
    
    Clean up receive processing by dropping the character pointer and
    keeping the length argument unchanged throughout the function.
    
    Also make it more apparent that sysrq processing can consume a
    characters by adding an explicit continue.
    
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe34945c7898deb4cae866ae0330b781abdff5ac
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jul 8 14:49:51 2020 +0200

    USB: serial: ftdi_sio: make process-packet buffer unsigned
    
    [ Upstream commit ab4cc4ef6724ea588e835fc1e764c4b4407a70b7 ]
    
    Use an unsigned type for the process-packet buffer argument and give it
    a more apt name.
    
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d7ee731744d7c6396116aa93b776ed2ce9afa912
Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Date:   Thu Apr 30 18:42:45 2020 +0200

    media: rockchip: rga: Only set output CSC mode for RGB input
    
    [ Upstream commit 0f879bab72f47e8ba2421a984e7acfa763d3e84e ]
    
    Setting the output CSC mode is required for a YUV output, but must not
    be set when the input is also YUV. Doing this (as tested with a YUV420P
    to YUV420P conversion) results in wrong colors.
    
    Adapt the logic to only set the output CSC mode when the output is YUV and
    the input is RGB. Also add a comment to clarify the rationale.
    
    Fixes: f7e7b48e6d79 ("[media] rockchip/rga: v4l2 m2m support")
    Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
    Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a676d83b8f87ec1e4f4bd5540ff8c17a27deede8
Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Date:   Thu Apr 30 18:42:44 2020 +0200

    media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic
    
    [ Upstream commit ded874ece29d3fe2abd3775810a06056067eb68c ]
    
    This introduces two macros: RGA_COLOR_FMT_IS_YUV and RGA_COLOR_FMT_IS_RGB
    which allow quick checking of the colorspace familily of a RGA color format.
    
    These macros are then used to refactor the logic for CSC mode selection.
    The two nested tests for input colorspace are simplified into a single one,
    with a logical and, making the whole more readable.
    
    Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
    Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cb3b14eb6b2af74ec146289f86963194c834eb8
Author: Jason Gunthorpe <jgg@nvidia.com>
Date:   Thu Jun 25 20:42:19 2020 +0300

    RDMA/ipoib: Fix ABBA deadlock with ipoib_reap_ah()
    
    [ Upstream commit 65936bf25f90fe440bb2d11624c7d10fab266639 ]
    
    ipoib_mcast_carrier_on_task() insanely open codes a rtnl_lock() such that
    the only time flush_workqueue() can be called is if it also clears
    IPOIB_FLAG_OPER_UP.
    
    Thus the flush inside ipoib_flush_ah() will deadlock if it gets unlucky
    enough, and lockdep doesn't help us to find it early:
    
              CPU0               CPU1          CPU2
       __ipoib_ib_dev_flush()
          down_read(vlan_rwsem)
    
                             ipoib_vlan_add()
                               rtnl_trylock()
                               down_write(vlan_rwsem)
    
                                          ipoib_mcast_carrier_on_task()
                                             while (!rtnl_trylock())
                                                  msleep(20);
    
          ipoib_flush_ah()
            flush_workqueue(priv->wq)
    
    Clean up the ah_reaper related functions and lifecycle to make sense:
    
     - Start/Stop of the reaper should only be done in open/stop NDOs, not in
       any other places
    
     - cancel and flush of the reaper should only happen in the stop NDO.
       cancel is only functional when combined with IPOIB_STOP_REAPER.
    
     - Non-stop places were flushing the AH's just need to flush out dead AH's
       synchronously and ignore the background task completely. It is fully
       locked and harmless to leave running.
    
    Which ultimately fixes the ABBA deadlock by removing the unnecessary
    flush_workqueue() from the problematic place under the vlan_rwsem.
    
    Fixes: efc82eeeae4e ("IB/ipoib: No longer use flush as a parameter")
    Link: https://lore.kernel.org/r/20200625174219.290842-1-kamalheib1@gmail.com
    Reported-by: Kamal Heib <kheib@redhat.com>
    Tested-by: Kamal Heib <kheib@redhat.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0bcab21cf6eecdcc63fc9210447e0925a3100eb0
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Tue Jun 23 13:52:36 2020 +0300

    RDMA/ipoib: Return void from ipoib_ib_dev_stop()
    
    [ Upstream commit 95a5631f6c9f3045f26245e6045244652204dfdb ]
    
    The return value from ipoib_ib_dev_stop() is always 0 - change it to be
    void.
    
    Link: https://lore.kernel.org/r/20200623105236.18683-1-kamalheib1@gmail.com
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d12296621cf98b0e9820a28ec077e599d37a7193
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jun 15 14:53:21 2020 +0100

    mfd: arizona: Ensure 32k clock is put on driver unbind and error
    
    [ Upstream commit ddff6c45b21d0437ce0c85f8ac35d7b5480513d7 ]
    
    Whilst it doesn't matter if the internal 32k clock register settings
    are cleaned up on exit, as the part will be turned off losing any
    settings, hence the driver hasn't historially bothered. The external
    clock should however be cleaned up, as it could cause clocks to be
    left on, and will at best generate a warning on unbind.
    
    Add clean up on both the probe error path and unbind for the 32k
    clock.
    
    Fixes: cdd8da8cc66b ("mfd: arizona: Add gating of external MCLKn clocks")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87a56a59ad2427afc358fe1d50fedcbb8a21c31f
Author: Liu Ying <victor.liu@nxp.com>
Date:   Thu Jul 9 10:28:52 2020 +0800

    drm/imx: imx-ldb: Disable both channels for split mode in enc->disable()
    
    commit 3b2a999582c467d1883716b37ffcc00178a13713 upstream.
    
    Both of the two LVDS channels should be disabled for split mode
    in the encoder's ->disable() callback, because they are enabled
    in the encoder's ->enable() callback.
    
    Fixes: 6556f7f82b9c ("drm: imx: Move imx-drm driver out of staging")
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Liu Ying <victor.liu@nxp.com>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d3146f3b1b75e45599e270c63fc88a6ce9ff644
Author: Sibi Sankar <sibis@codeaurora.org>
Date:   Tue Jun 2 22:02:56 2020 +0530

    remoteproc: qcom: q6v5: Update running state before requesting stop
    
    commit 5b7be880074c73540948f8fc597e0407b98fabfa upstream.
    
    Sometimes the stop triggers a watchdog rather than a stop-ack. Update
    the running state to false on requesting stop to skip the watchdog
    instead.
    
    Error Logs:
    $ echo stop > /sys/class/remoteproc/remoteproc0/state
    ipa 1e40000.ipa: received modem stopping event
    remoteproc-modem: watchdog received: sys_m_smsm_mpss.c:291:APPS force stop
    qcom-q6v5-mss 4080000.remoteproc-modem: port failed halt
    ipa 1e40000.ipa: received modem offline event
    remoteproc0: stopped remote processor 4080000.remoteproc-modem
    
    Reviewed-by: Evan Green <evgreen@chromium.org>
    Fixes: 3b415c8fb263 ("remoteproc: q6v5: Extract common resource handling")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
    Link: https://lore.kernel.org/r/20200602163257.26978-1-sibis@codeaurora.org
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 721df98627dc8add25252e59535f548e3a6f7d96
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Jul 10 18:10:53 2020 +0300

    perf intel-pt: Fix FUP packet state
    
    commit 401136bb084fd021acd9f8c51b52fe0a25e326b2 upstream.
    
    While walking code towards a FUP ip, the packet state is
    INTEL_PT_STATE_FUP or INTEL_PT_STATE_FUP_NO_TIP. That was mishandled
    resulting in the state becoming INTEL_PT_STATE_IN_SYNC prematurely.  The
    result was an occasional lost EXSTOP event.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200710151104.15137-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 cec9fbfe39594e9fae46b17f6b0d8283ffcf1942
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Aug 6 14:15:23 2020 -0700

    module: Correctly truncate sysfs sections output
    
    commit 11990a5bd7e558e9203c1070fc52fb6f0488e75b upstream.
    
    The only-root-readable /sys/module/$module/sections/$section files
    did not truncate their output to the available buffer size. While most
    paths into the kernfs read handlers end up using PAGE_SIZE buffers,
    it's possible to get there through other paths (e.g. splice, sendfile).
    Actually limit the output to the "count" passed into the read function,
    and report it back correctly. *sigh*
    
    Reported-by: kernel test robot <lkp@intel.com>
    Link: https://lore.kernel.org/lkml/20200805002015.GE23458@shao2-debian
    Fixes: ed66f991bb19 ("module: Refactor section attr into bin attribute")
    Cc: stable@vger.kernel.org
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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 73f74fc311d4d7fc94b9e130e3eb108c67314178
Author: Anton Blanchard <anton@ozlabs.org>
Date:   Wed Jul 15 10:08:20 2020 +1000

    pseries: Fix 64 bit logical memory block panic
    
    commit 89c140bbaeee7a55ed0360a88f294ead2b95201b upstream.
    
    Booting with a 4GB LMB size causes us to panic:
    
      qemu-system-ppc64: OS terminated: OS panic:
          Memory block size not suitable: 0x0
    
    Fix pseries_memory_block_size() to handle 64 bit LMBs.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Anton Blanchard <anton@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200715000820.1255764-1-anton@ozlabs.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1462b5e6a052221d06d064d28a2f16c4e1782f6
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Thu Jun 11 21:17:45 2020 +0200

    watchdog: f71808e_wdt: clear watchdog timeout occurred flag
    
    commit 4f39d575844148fbf3081571a1f3b4ae04150958 upstream.
    
    The flag indicating a watchdog timeout having occurred normally persists
    till Power-On Reset of the Fintek Super I/O chip. The user can clear it
    by writing a `1' to the bit.
    
    The driver doesn't offer a restart method, so regular system reboot
    might not reset the Super I/O and if the watchdog isn't enabled, we
    won't touch the register containing the bit on the next boot.
    In this case all subsequent regular reboots will be wrongly flagged
    by the driver as being caused by the watchdog.
    
    Fix this by having the flag cleared after read. This is also done by
    other drivers like those for the i6300esb and mpc8xxx_wdt.
    
    Fixes: b97cb21a4634 ("watchdog: f71808e_wdt: Fix WDTMOUT_STS register read")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200611191750.28096-5-a.fatoum@pengutronix.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49d0707efdad02d15c627ba19629c81a367748b1
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Thu Jun 11 21:17:44 2020 +0200

    watchdog: f71808e_wdt: remove use of wrong watchdog_info option
    
    commit 802141462d844f2e6a4d63a12260d79b7afc4c34 upstream.
    
    The flags that should be or-ed into the watchdog_info.options by drivers
    all start with WDIOF_, e.g. WDIOF_SETTIMEOUT, which indicates that the
    driver's watchdog_ops has a usable set_timeout.
    
    WDIOC_SETTIMEOUT was used instead, which expands to 0xc0045706, which
    equals:
    
       WDIOF_FANFAULT | WDIOF_EXTERN1 | WDIOF_PRETIMEOUT | WDIOF_ALARMONLY |
       WDIOF_MAGICCLOSE | 0xc0045000
    
    These were so far indicated to userspace on WDIOC_GETSUPPORT.
    As the driver has not yet been migrated to the new watchdog kernel API,
    the constant can just be dropped without substitute.
    
    Fixes: 96cb4eb019ce ("watchdog: f71808e_wdt: new watchdog driver for Fintek F71808E and F71882FG")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200611191750.28096-4-a.fatoum@pengutronix.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 203dbe7cda02b85d22f093617f0330cd03870161
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Thu Jun 11 21:17:43 2020 +0200

    watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in watchdog_info.options
    
    commit e871e93fb08a619dfc015974a05768ed6880fd82 upstream.
    
    The driver supports populating bootstatus with WDIOF_CARDRESET, but so
    far userspace couldn't portably determine whether absence of this flag
    meant no watchdog reset or no driver support. Or-in the bit to fix this.
    
    Fixes: b97cb21a4634 ("watchdog: f71808e_wdt: Fix WDTMOUT_STS register read")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200611191750.28096-3-a.fatoum@pengutronix.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c98c4a0c35117926dcb0b0ec4d5034c64415149
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Aug 4 20:00:02 2020 -0400

    tracing: Use trace_sched_process_free() instead of exit() for pid tracing
    
    commit afcab636657421f7ebfa0783a91f90256bba0091 upstream.
    
    On exit, if a process is preempted after the trace_sched_process_exit()
    tracepoint but before the process is done exiting, then when it gets
    scheduled in, the function tracers will not filter it properly against the
    function tracing pid filters.
    
    That is because the function tracing pid filters hooks to the
    sched_process_exit() tracepoint to remove the exiting task's pid from the
    filter list. Because the filtering happens at the sched_switch tracepoint,
    when the exiting task schedules back in to finish up the exit, it will no
    longer be in the function pid filtering tables.
    
    This was noticeable in the notrace self tests on a preemptable kernel, as
    the tests would fail as it exits and preempted after being taken off the
    notrace filter table and on scheduling back in it would not be in the
    notrace list, and then the ending of the exit function would trace. The test
    detected this and would fail.
    
    Cc: stable@vger.kernel.org
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: 1e10486ffee0a ("ftrace: Add 'function-fork' trace option")
    Fixes: c37775d57830a ("tracing: Add infrastructure to allow set_event_pid to follow children"
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3b77736dd517ce1f03364486d88c375e0060679
Author: Kevin Hao <haokexin@gmail.com>
Date:   Thu Jul 30 16:23:18 2020 +0800

    tracing/hwlat: Honor the tracing_cpumask
    
    commit 96b4833b6827a62c295b149213c68b559514c929 upstream.
    
    In calculation of the cpu mask for the hwlat kernel thread, the wrong
    cpu mask is used instead of the tracing_cpumask, this causes the
    tracing/tracing_cpumask useless for hwlat tracer. Fixes it.
    
    Link: https://lkml.kernel.org/r/20200730082318.42584-2-haokexin@gmail.com
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 0330f7aa8ee6 ("tracing: Have hwlat trace migrate across tracing_cpumask CPUs")
    Signed-off-by: Kevin Hao <haokexin@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46c9d3925ab0ceb4d19cee4be1a061b87faf1e11
Author: Muchun Song <songmuchun@bytedance.com>
Date:   Tue Jul 28 14:45:36 2020 +0800

    kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler
    
    commit 0cb2f1372baa60af8456388a574af6133edd7d80 upstream.
    
    We found a case of kernel panic on our server. The stack trace is as
    follows(omit some irrelevant information):
    
      BUG: kernel NULL pointer dereference, address: 0000000000000080
      RIP: 0010:kprobe_ftrace_handler+0x5e/0xe0
      RSP: 0018:ffffb512c6550998 EFLAGS: 00010282
      RAX: 0000000000000000 RBX: ffff8e9d16eea018 RCX: 0000000000000000
      RDX: ffffffffbe1179c0 RSI: ffffffffc0535564 RDI: ffffffffc0534ec0
      RBP: ffffffffc0534ec1 R08: ffff8e9d1bbb0f00 R09: 0000000000000004
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: ffff8e9d1f797060 R14: 000000000000bacc R15: ffff8e9ce13eca00
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000080 CR3: 00000008453d0005 CR4: 00000000003606e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <IRQ>
       ftrace_ops_assist_func+0x56/0xe0
       ftrace_call+0x5/0x34
       tcpa_statistic_send+0x5/0x130 [ttcp_engine]
    
    The tcpa_statistic_send is the function being kprobed. After analysis,
    the root cause is that the fourth parameter regs of kprobe_ftrace_handler
    is NULL. Why regs is NULL? We use the crash tool to analyze the kdump.
    
      crash> dis tcpa_statistic_send -r
             <tcpa_statistic_send>: callq 0xffffffffbd8018c0 <ftrace_caller>
    
    The tcpa_statistic_send calls ftrace_caller instead of ftrace_regs_caller.
    So it is reasonable that the fourth parameter regs of kprobe_ftrace_handler
    is NULL. In theory, we should call the ftrace_regs_caller instead of the
    ftrace_caller. After in-depth analysis, we found a reproducible path.
    
      Writing a simple kernel module which starts a periodic timer. The
      timer's handler is named 'kprobe_test_timer_handler'. The module
      name is kprobe_test.ko.
    
      1) insmod kprobe_test.ko
      2) bpftrace -e 'kretprobe:kprobe_test_timer_handler {}'
      3) echo 0 > /proc/sys/kernel/ftrace_enabled
      4) rmmod kprobe_test
      5) stop step 2) kprobe
      6) insmod kprobe_test.ko
      7) bpftrace -e 'kretprobe:kprobe_test_timer_handler {}'
    
    We mark the kprobe as GONE but not disarm the kprobe in the step 4).
    The step 5) also do not disarm the kprobe when unregister kprobe. So
    we do not remove the ip from the filter. In this case, when the module
    loads again in the step 6), we will replace the code to ftrace_caller
    via the ftrace_module_enable(). When we register kprobe again, we will
    not replace ftrace_caller to ftrace_regs_caller because the ftrace is
    disabled in the step 3). So the step 7) will trigger kernel panic. Fix
    this problem by disarming the kprobe when the module is going away.
    
    Link: https://lkml.kernel.org/r/20200728064536.24405-1-songmuchun@bytedance.com
    
    Cc: stable@vger.kernel.org
    Fixes: ae6aa16fdc16 ("kprobes: introduce ftrace based optimization")
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Co-developed-by: Chengming Zhou <zhouchengming@bytedance.com>
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 892fd3637a2c0c29d3dd7402bbb0802eb231b69d
Author: Chengming Zhou <zhouchengming@bytedance.com>
Date:   Wed Jul 29 02:05:53 2020 +0800

    ftrace: Setup correct FTRACE_FL_REGS flags for module
    
    commit 8a224ffb3f52b0027f6b7279854c71a31c48fc97 upstream.
    
    When module loaded and enabled, we will use __ftrace_replace_code
    for module if any ftrace_ops referenced it found. But we will get
    wrong ftrace_addr for module rec in ftrace_get_addr_new, because
    rec->flags has not been setup correctly. It can cause the callback
    function of a ftrace_ops has FTRACE_OPS_FL_SAVE_REGS to be called
    with pt_regs set to NULL.
    So setup correct FTRACE_FL_REGS flags for rec when we call
    referenced_filters to find ftrace_ops references it.
    
    Link: https://lkml.kernel.org/r/20200728180554.65203-1-zhouchengming@bytedance.com
    
    Cc: stable@vger.kernel.org
    Fixes: 8c4f3c3fa9681 ("ftrace: Check module functions being traced on reload")
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e88a72e86bd0c0c19ba00865ed68dce22824aac6
Author: Michal Koutný <mkoutny@suse.com>
Date:   Thu Aug 6 23:22:18 2020 -0700

    mm/page_counter.c: fix protection usage propagation
    
    commit a6f23d14ec7d7d02220ad8bb2774be3322b9aeec upstream.
    
    When workload runs in cgroups that aren't directly below root cgroup and
    their parent specifies reclaim protection, it may end up ineffective.
    
    The reason is that propagate_protected_usage() is not called in all
    hierarchy up.  All the protected usage is incorrectly accumulated in the
    workload's parent.  This means that siblings_low_usage is overestimated
    and effective protection underestimated.  Even though it is transitional
    phenomenon (uncharge path does correct propagation and fixes the wrong
    children_low_usage), it can undermine the intended protection
    unexpectedly.
    
    We have noticed this problem while seeing a swap out in a descendant of a
    protected memcg (intermediate node) while the parent was conveniently
    under its protection limit and the memory pressure was external to that
    hierarchy.  Michal has pinpointed this down to the wrong
    siblings_low_usage which led to the unwanted reclaim.
    
    The fix is simply updating children_low_usage in respective ancestors also
    in the charging path.
    
    Fixes: 230671533d64 ("mm: memory.low hierarchical behavior")
    Signed-off-by: Michal Koutný <mkoutny@suse.com>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>    [4.18+]
    Link: http://lkml.kernel.org/r/20200803153231.15477-1-mhocko@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73cbb8af7e8a80715e79b78dba1057b966849a37
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Aug 6 23:18:02 2020 -0700

    ocfs2: change slot number type s16 to u16
    
    commit 38d51b2dd171ad973afc1f5faab825ed05a2d5e9 upstream.
    
    Dan Carpenter reported the following static checker warning.
    
            fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
            fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
            fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'
    
    That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be
    never negative, so change s16 to u16.
    
    Fixes: 9277f8334ffc ("ocfs2: fix value of OCFS2_INVALID_SLOT")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reviewed-by: Gang He <ghe@suse.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200627001259.19757-1-junxiao.bi@oracle.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41d71ef2e791506bc3a8c5db155bb75daf623ce6
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Apr 20 16:02:21 2020 -0400

    ext2: fix missing percpu_counter_inc
    
    commit bc2fbaa4d3808aef82dd1064a8e61c16549fe956 upstream.
    
    sbi->s_freeinodes_counter is only decreased by the ext2 code, it is never
    increased. This patch fixes it.
    
    Note that sbi->s_freeinodes_counter is only used in the algorithm that
    tries to find the group for new allocations, so this bug is not easily
    visible (the only visibility is that the group finding algorithm selects
    inoptinal result).
    
    Link: https://lore.kernel.org/r/alpine.LRH.2.02.2004201538300.19436@file01.intranet.prod.int.rdu2.redhat.com
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baa5bd366835ceb752e5f75ba993042a5b872dbf
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Jul 16 18:40:23 2020 +0800

    MIPS: CPU#0 is not hotpluggable
    
    commit 9cce844abf07b683cff5f0273977d5f8d0af94c7 upstream.
    
    Now CPU#0 is not hotpluggable on MIPS, so prevent to create /sys/devices
    /system/cpu/cpu0/online which confuses some user-space tools.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 706695d477fb16a5920098535380ee39337e7ea8
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Jul 8 15:27:01 2020 +0200

    driver core: Avoid binding drivers to dead devices
    
    commit 654888327e9f655a9d55ad477a9583e90e8c9b5c upstream.
    
    Commit 3451a495ef24 ("driver core: Establish order of operations for
    device_add and device_del via bitflag") sought to prevent asynchronous
    driver binding to a device which is being removed.  It added a
    per-device "dead" flag which is checked in the following code paths:
    
    * asynchronous binding in __driver_attach_async_helper()
    *  synchronous binding in device_driver_attach()
    * asynchronous binding in __device_attach_async_helper()
    
    It did *not* check the flag upon:
    
    *  synchronous binding in __device_attach()
    
    However __device_attach() may also be called asynchronously from:
    
    deferred_probe_work_func()
      bus_probe_device()
        device_initial_probe()
          __device_attach()
    
    So if the commit's intention was to check the "dead" flag in all
    asynchronous code paths, then a check is also necessary in
    __device_attach().  Add the missing check.
    
    Fixes: 3451a495ef24 ("driver core: Establish order of operations for device_add and device_del via bitflag")
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: stable@vger.kernel.org # v5.1+
    Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Link: https://lore.kernel.org/r/de88a23a6fe0ef70f7cfd13c8aea9ab51b4edab6.1594214103.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cf1d191f77f8b81d0ed1cea344ca73c0d4cb2bc
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Aug 3 11:02:10 2020 +0200

    mac80211: fix misplaced while instead of if
    
    commit 5981fe5b0529ba25d95f37d7faa434183ad618c5 upstream.
    
    This never was intended to be a 'while' loop, it should've
    just been an 'if' instead of 'while'. Fix this.
    
    I noticed this while applying another patch from Ben that
    intended to fix a busy loop at this spot.
    
    Cc: stable@vger.kernel.org
    Fixes: b16798f5b907 ("mac80211: mark station unauthorized before key removal")
    Reported-by: Ben Greear <greearb@candelatech.com>
    Link: https://lore.kernel.org/r/20200803110209.253009ae41ff.I3522aad099392b31d5cf2dcca34cbac7e5832dde@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a72c283319c2be9b4667630d8d0c98b59371930
Author: Coly Li <colyli@suse.de>
Date:   Sat Jul 25 20:00:22 2020 +0800

    bcache: fix overflow in offset_to_stripe()
    
    commit 7a1481267999c02abf4a624515c1b5c7c1fccbd6 upstream.
    
    offset_to_stripe() returns the stripe number (in type unsigned int) from
    an offset (in type uint64_t) by the following calculation,
            do_div(offset, d->stripe_size);
    For large capacity backing device (e.g. 18TB) with small stripe size
    (e.g. 4KB), the result is 4831838208 and exceeds UINT_MAX. The actual
    returned value which caller receives is 536870912, due to the overflow.
    
    Indeed in bcache_device_init(), bcache_device->nr_stripes is limited in
    range [1, INT_MAX]. Therefore all valid stripe numbers in bcache are
    in range [0, bcache_dev->nr_stripes - 1].
    
    This patch adds a upper limition check in offset_to_stripe(): the max
    valid stripe number should be less than bcache_device->nr_stripes. If
    the calculated stripe number from do_div() is equal to or larger than
    bcache_device->nr_stripe, -EINVAL will be returned. (Normally nr_stripes
    is less than INT_MAX, exceeding upper limitation doesn't mean overflow,
    therefore -EOVERFLOW is not used as error code.)
    
    This patch also changes nr_stripes' type of struct bcache_device from
    'unsigned int' to 'int', and return value type of offset_to_stripe()
    from 'unsigned int' to 'int', to match their exact data ranges.
    
    All locations where bcache_device->nr_stripes and offset_to_stripe() are
    referenced also get updated for the above type change.
    
    Reported-and-tested-by: Ken Raeburn <raeburn@redhat.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1783075
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6e2394ce6c9554a78a88fab2a779e3168088a47
Author: Coly Li <colyli@suse.de>
Date:   Sat Jul 25 20:00:16 2020 +0800

    bcache: allocate meta data pages as compound pages
    
    commit 5fe48867856367142d91a82f2cbf7a57a24cbb70 upstream.
    
    There are some meta data of bcache are allocated by multiple pages,
    and they are used as bio bv_page for I/Os to the cache device. for
    example cache_set->uuids, cache->disk_buckets, journal_write->data,
    bset_tree->data.
    
    For such meta data memory, all the allocated pages should be treated
    as a single memory block. Then the memory management and underlying I/O
    code can treat them more clearly.
    
    This patch adds __GFP_COMP flag to all the location allocating >0 order
    pages for the above mentioned meta data. Then their pages are treated
    as compound pages now.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 566cba3c7d1fe14fdc9c43931035e9ae4320f973
Author: ChangSyun Peng <allenpeng@synology.com>
Date:   Fri Jul 31 17:50:17 2020 +0800

    md/raid5: Fix Force reconstruct-write io stuck in degraded raid5
    
    commit a1c6ae3d9f3dd6aa5981a332a6f700cf1c25edef upstream.
    
    In degraded raid5, we need to read parity to do reconstruct-write when
    data disks fail. However, we can not read parity from
    handle_stripe_dirtying() in force reconstruct-write mode.
    
    Reproducible Steps:
    
    1. Create degraded raid5
    mdadm -C /dev/md2 --assume-clean -l5 -n3 /dev/sda2 /dev/sdb2 missing
    2. Set rmw_level to 0
    echo 0 > /sys/block/md2/md/rmw_level
    3. IO to raid5
    
    Now some io may be stuck in raid5. We can use handle_stripe_fill() to read
    the parity in this situation.
    
    Cc: <stable@vger.kernel.org> # v4.4+
    Reviewed-by: Alex Wu <alexwu@synology.com>
    Reviewed-by: BingJing Chang <bingjingc@synology.com>
    Reviewed-by: Danny Shih <dannyshih@synology.com>
    Signed-off-by: ChangSyun Peng <allenpeng@synology.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f90339a4eccf1768f044ac98ec6d2a8afeeab58d
Author: Kees Cook <keescook@chromium.org>
Date:   Tue Jun 9 16:11:29 2020 -0700

    net/compat: Add missing sock updates for SCM_RIGHTS
    
    commit d9539752d23283db4692384a634034f451261e29 upstream.
    
    Add missed sock updates to compat path via a new helper, which will be
    used more in coming patches. (The net/core/scm.c code is left as-is here
    to assist with -stable backports for the compat path.)
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 48a87cc26c13 ("net: netprio: fd passed in SCM_RIGHTS datagram not set correctly")
    Fixes: d84295067fc7 ("net: net_cls: fd passed in SCM_RIGHTS datagram not set correctly")
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c334db67ebb3b5af540481f22b2d1b4f837c0992
Author: Jonathan McDowell <noodles@earth.li>
Date:   Wed Aug 12 20:37:01 2020 +0100

    net: stmmac: dwmac1000: provide multicast filter fallback
    
    commit 592d751c1e174df5ff219946908b005eb48934b3 upstream.
    
    If we don't have a hardware multicast filter available then instead of
    silently failing to listen for the requested ethernet broadcast
    addresses fall back to receiving all multicast packets, in a similar
    fashion to other drivers with no multicast filter.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonathan McDowell <noodles@earth.li>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26f0092f35e239e072276aa6c33e7d90bf0ac66e
Author: Jonathan McDowell <noodles@earth.li>
Date:   Wed Aug 12 20:37:23 2020 +0100

    net: ethernet: stmmac: Disable hardware multicast filter
    
    commit df43dd526e6609769ae513a81443c7aa727c8ca3 upstream.
    
    The IPQ806x does not appear to have a functional multicast ethernet
    address filter. This was observed as a failure to correctly receive IPv6
    packets on a LAN to the all stations address. Checking the vendor driver
    shows that it does not attempt to enable the multicast filter and
    instead falls back to receiving all multicast packets, internally
    setting ALLMULTI.
    
    Use the new fallback support in the dwmac1000 driver to correctly
    achieve the same with the mainline IPQ806x driver. Confirmed to fix IPv6
    functionality on an RB3011 router.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonathan McDowell <noodles@earth.li>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62f8d71408990bc26690e02370c1ae7973625d2b
Author: Eugeniu Rosca <erosca@de.adit-jv.com>
Date:   Tue Jun 2 21:50:16 2020 +0200

    media: vsp1: dl: Fix NULL pointer dereference on unbind
    
    commit c92d30e4b78dc331909f8c6056c2792aa14e2166 upstream.
    
    In commit f3b98e3c4d2e16 ("media: vsp1: Provide support for extended
    command pools"), the vsp pointer used for referencing the VSP1 device
    structure from a command pool during vsp1_dl_ext_cmd_pool_destroy() was
    not populated.
    
    Correctly assign the pointer to prevent the following
    null-pointer-dereference when removing the device:
    
    [*] h3ulcb-kf #>
    echo fea28000.vsp > /sys/bus/platform/devices/fea28000.vsp/driver/unbind
     Unable to handle kernel NULL pointer dereference at virtual address 0000000000000028
     Mem abort info:
       ESR = 0x96000006
       EC = 0x25: DABT (current EL), IL = 32 bits
       SET = 0, FnV = 0
       EA = 0, S1PTW = 0
     Data abort info:
       ISV = 0, ISS = 0x00000006
       CM = 0, WnR = 0
     user pgtable: 4k pages, 48-bit VAs, pgdp=00000007318be000
     [0000000000000028] pgd=00000007333a1003, pud=00000007333a6003, pmd=0000000000000000
     Internal error: Oops: 96000006 [#1] PREEMPT SMP
     Modules linked in:
     CPU: 1 PID: 486 Comm: sh Not tainted 5.7.0-rc6-arm64-renesas-00118-ge644645abf47 #185
     Hardware name: Renesas H3ULCB Kingfisher board based on r8a77951 (DT)
     pstate: 40000005 (nZcv daif -PAN -UAO)
     pc : vsp1_dlm_destroy+0xe4/0x11c
     lr : vsp1_dlm_destroy+0xc8/0x11c
     sp : ffff800012963b60
     x29: ffff800012963b60 x28: ffff0006f83fc440
     x27: 0000000000000000 x26: ffff0006f5e13e80
     x25: ffff0006f5e13ed0 x24: ffff0006f5e13ed0
     x23: ffff0006f5e13ed0 x22: dead000000000122
     x21: ffff0006f5e3a080 x20: ffff0006f5df2938
     x19: ffff0006f5df2980 x18: 0000000000000003
     x17: 0000000000000000 x16: 0000000000000016
     x15: 0000000000000003 x14: 00000000000393c0
     x13: ffff800011a5ec18 x12: ffff800011d8d000
     x11: ffff0006f83fcc68 x10: ffff800011a53d70
     x9 : ffff8000111f3000 x8 : 0000000000000000
     x7 : 0000000000210d00 x6 : 0000000000000000
     x5 : ffff800010872e60 x4 : 0000000000000004
     x3 : 0000000078068000 x2 : ffff800012781000
     x1 : 0000000000002c00 x0 : 0000000000000000
     Call trace:
      vsp1_dlm_destroy+0xe4/0x11c
      vsp1_wpf_destroy+0x10/0x20
      vsp1_entity_destroy+0x24/0x4c
      vsp1_destroy_entities+0x54/0x130
      vsp1_remove+0x1c/0x40
      platform_drv_remove+0x28/0x50
      __device_release_driver+0x178/0x220
      device_driver_detach+0x44/0xc0
      unbind_store+0xe0/0x104
      drv_attr_store+0x20/0x30
      sysfs_kf_write+0x48/0x70
      kernfs_fop_write+0x148/0x230
      __vfs_write+0x18/0x40
      vfs_write+0xdc/0x1c4
      ksys_write+0x68/0xf0
      __arm64_sys_write+0x18/0x20
      el0_svc_common.constprop.0+0x70/0x170
      do_el0_svc+0x20/0x80
      el0_sync_handler+0x134/0x1b0
      el0_sync+0x140/0x180
     Code: b40000c2 f9403a60 d2800084 a9400663 (f9401400)
     ---[ end trace 3875369841fb288a ]---
    
    Fixes: f3b98e3c4d2e16 ("media: vsp1: Provide support for extended command pools")
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Tested-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e83f99c428000d5e347b953da8d539ee67113134
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue Aug 4 22:44:06 2020 +1000

    powerpc: Fix circular dependency between percpu.h and mmu.h
    
    commit 0c83b277ada72b585e6a3e52b067669df15bcedb upstream.
    
    Recently random.h started including percpu.h (see commit
    f227e3ec3b5c ("random32: update the net random state on interrupt and
    activity")), which broke corenet64_smp_defconfig:
    
      In file included from /linux/arch/powerpc/include/asm/paca.h:18,
                       from /linux/arch/powerpc/include/asm/percpu.h:13,
                       from /linux/include/linux/random.h:14,
                       from /linux/lib/uuid.c:14:
      /linux/arch/powerpc/include/asm/mmu.h:139:22: error: unknown type name 'next_tlbcam_idx'
        139 | DECLARE_PER_CPU(int, next_tlbcam_idx);
    
    This is due to a circular header dependency:
      asm/mmu.h includes asm/percpu.h, which includes asm/paca.h, which
      includes asm/mmu.h
    
    Which means DECLARE_PER_CPU() isn't defined when mmu.h needs it.
    
    We can fix it by moving the include of paca.h below the include of
    asm-generic/percpu.h.
    
    This moves the include of paca.h out of the #ifdef __powerpc64__, but
    that is OK because paca.h is almost entirely inside #ifdef
    CONFIG_PPC64 anyway.
    
    It also moves the include of paca.h out of the #ifdef CONFIG_SMP,
    which could possibly break something, but seems to have no ill
    effects.
    
    Fixes: f227e3ec3b5c ("random32: update the net random state on interrupt and activity")
    Cc: stable@vger.kernel.org # v5.8
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200804130558.292328-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b11ac832808158b2df38482988aea703640127f5
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Jul 24 19:25:25 2020 +1000

    powerpc: Allow 4224 bytes of stack expansion for the signal frame
    
    commit 63dee5df43a31f3844efabc58972f0a206ca4534 upstream.
    
    We have powerpc specific logic in our page fault handling to decide if
    an access to an unmapped address below the stack pointer should expand
    the stack VMA.
    
    The code was originally added in 2004 "ported from 2.4". The rough
    logic is that the stack is allowed to grow to 1MB with no extra
    checking. Over 1MB the access must be within 2048 bytes of the stack
    pointer, or be from a user instruction that updates the stack pointer.
    
    The 2048 byte allowance below the stack pointer is there to cover the
    288 byte "red zone" as well as the "about 1.5kB" needed by the signal
    delivery code.
    
    Unfortunately since then the signal frame has expanded, and is now
    4224 bytes on 64-bit kernels with transactional memory enabled. This
    means if a process has consumed more than 1MB of stack, and its stack
    pointer lies less than 4224 bytes from the next page boundary, signal
    delivery will fault when trying to expand the stack and the process
    will see a SEGV.
    
    The total size of the signal frame is the size of struct rt_sigframe
    (which includes the red zone) plus __SIGNAL_FRAMESIZE (128 bytes on
    64-bit).
    
    The 2048 byte allowance was correct until 2008 as the signal frame
    was:
    
    struct rt_sigframe {
            struct ucontext    uc;                           /*     0  1440 */
            /* --- cacheline 11 boundary (1408 bytes) was 32 bytes ago --- */
            long unsigned int          _unused[2];           /*  1440    16 */
            unsigned int               tramp[6];             /*  1456    24 */
            struct siginfo *           pinfo;                /*  1480     8 */
            void *                     puc;                  /*  1488     8 */
            struct siginfo     info;                         /*  1496   128 */
            /* --- cacheline 12 boundary (1536 bytes) was 88 bytes ago --- */
            char                       abigap[288];          /*  1624   288 */
    
            /* size: 1920, cachelines: 15, members: 7 */
            /* padding: 8 */
    };
    
    1920 + 128 = 2048
    
    Then in commit ce48b2100785 ("powerpc: Add VSX context save/restore,
    ptrace and signal support") (Jul 2008) the signal frame expanded to
    2304 bytes:
    
    struct rt_sigframe {
            struct ucontext    uc;                           /*     0  1696 */      <--
            /* --- cacheline 13 boundary (1664 bytes) was 32 bytes ago --- */
            long unsigned int          _unused[2];           /*  1696    16 */
            unsigned int               tramp[6];             /*  1712    24 */
            struct siginfo *           pinfo;                /*  1736     8 */
            void *                     puc;                  /*  1744     8 */
            struct siginfo     info;                         /*  1752   128 */
            /* --- cacheline 14 boundary (1792 bytes) was 88 bytes ago --- */
            char                       abigap[288];          /*  1880   288 */
    
            /* size: 2176, cachelines: 17, members: 7 */
            /* padding: 8 */
    };
    
    2176 + 128 = 2304
    
    At this point we should have been exposed to the bug, though as far as
    I know it was never reported. I no longer have a system old enough to
    easily test on.
    
    Then in 2010 commit 320b2b8de126 ("mm: keep a guard page below a
    grow-down stack segment") caused our stack expansion code to never
    trigger, as there was always a VMA found for a write up to PAGE_SIZE
    below r1.
    
    That meant the bug was hidden as we continued to expand the signal
    frame in commit 2b0a576d15e0 ("powerpc: Add new transactional memory
    state to the signal context") (Feb 2013):
    
    struct rt_sigframe {
            struct ucontext    uc;                           /*     0  1696 */
            /* --- cacheline 13 boundary (1664 bytes) was 32 bytes ago --- */
            struct ucontext    uc_transact;                  /*  1696  1696 */      <--
            /* --- cacheline 26 boundary (3328 bytes) was 64 bytes ago --- */
            long unsigned int          _unused[2];           /*  3392    16 */
            unsigned int               tramp[6];             /*  3408    24 */
            struct siginfo *           pinfo;                /*  3432     8 */
            void *                     puc;                  /*  3440     8 */
            struct siginfo     info;                         /*  3448   128 */
            /* --- cacheline 27 boundary (3456 bytes) was 120 bytes ago --- */
            char                       abigap[288];          /*  3576   288 */
    
            /* size: 3872, cachelines: 31, members: 8 */
            /* padding: 8 */
            /* last cacheline: 32 bytes */
    };
    
    3872 + 128 = 4000
    
    And commit 573ebfa6601f ("powerpc: Increase stack redzone for 64-bit
    userspace to 512 bytes") (Feb 2014):
    
    struct rt_sigframe {
            struct ucontext    uc;                           /*     0  1696 */
            /* --- cacheline 13 boundary (1664 bytes) was 32 bytes ago --- */
            struct ucontext    uc_transact;                  /*  1696  1696 */
            /* --- cacheline 26 boundary (3328 bytes) was 64 bytes ago --- */
            long unsigned int          _unused[2];           /*  3392    16 */
            unsigned int               tramp[6];             /*  3408    24 */
            struct siginfo *           pinfo;                /*  3432     8 */
            void *                     puc;                  /*  3440     8 */
            struct siginfo     info;                         /*  3448   128 */
            /* --- cacheline 27 boundary (3456 bytes) was 120 bytes ago --- */
            char                       abigap[512];          /*  3576   512 */      <--
    
            /* size: 4096, cachelines: 32, members: 8 */
            /* padding: 8 */
    };
    
    4096 + 128 = 4224
    
    Then finally in 2017, commit 1be7107fbe18 ("mm: larger stack guard
    gap, between vmas") exposed us to the existing bug, because it changed
    the stack VMA to be the correct/real size, meaning our stack expansion
    code is now triggered.
    
    Fix it by increasing the allowance to 4224 bytes.
    
    Hard-coding 4224 is obviously unsafe against future expansions of the
    signal frame in the same way as the existing code. We can't easily use
    sizeof() because the signal frame structure is not in a header. We
    will either fix that, or rip out all the custom stack expansion
    checking logic entirely.
    
    Fixes: ce48b2100785 ("powerpc: Add VSX context save/restore, ptrace and signal support")
    Cc: stable@vger.kernel.org # v2.6.27+
    Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
    Tested-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200724092528.1578671-2-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9710cc6bd97679f5ab38918cb67c6641e962453
Author: Paul Aurich <paul@darkrain42.org>
Date:   Thu Jul 9 22:01:16 2020 -0700

    cifs: Fix leak when handling lease break for cached root fid
    
    commit baf57b56d3604880ccb3956ec6c62ea894f5de99 upstream.
    
    Handling a lease break for the cached root didn't free the
    smb2_lease_break_work allocation, resulting in a leak:
    
        unreferenced object 0xffff98383a5af480 (size 128):
          comm "cifsd", pid 684, jiffies 4294936606 (age 534.868s)
          hex dump (first 32 bytes):
            c0 ff ff ff 1f 00 00 00 88 f4 5a 3a 38 98 ff ff  ..........Z:8...
            88 f4 5a 3a 38 98 ff ff 80 88 d6 8a ff ff ff ff  ..Z:8...........
          backtrace:
            [<0000000068957336>] smb2_is_valid_oplock_break+0x1fa/0x8c0
            [<0000000073b70b9e>] cifs_demultiplex_thread+0x73d/0xcc0
            [<00000000905fa372>] kthread+0x11c/0x150
            [<0000000079378e4e>] ret_from_fork+0x22/0x30
    
    Avoid this leak by only allocating when necessary.
    
    Fixes: a93864d93977 ("cifs: add lease tracking to the cached root fid")
    Signed-off-by: Paul Aurich <paul@darkrain42.org>
    CC: Stable <stable@vger.kernel.org> # v4.18+
    Reviewed-by: Aurelien Aptel <aaptel@suse.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ffc89cadbd02b83f23e572bb7c43ad9638f441f
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Fri Jul 31 12:37:32 2020 -0700

    xtensa: fix xtensa_pmu_setup prototype
    
    commit 6d65d3769d1910379e1cfa61ebf387efc6bfb22c upstream.
    
    Fix the following build error in configurations with
    CONFIG_XTENSA_VARIANT_HAVE_PERF_EVENTS=y:
    
      arch/xtensa/kernel/perf_event.c:420:29: error: passing argument 3 of
      ‘cpuhp_setup_state’ from incompatible pointer type
    
    Cc: stable@vger.kernel.org
    Fixes: 25a77b55e74c ("xtensa/perf: Convert the hotplug notifier to state machine callbacks")
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b86f06e13cc6700ec38e6226f4d2f1e5bbfc96b5
Author: Alexandru Ardelean <alexandru.ardelean@analog.com>
Date:   Mon Jul 6 14:02:57 2020 +0300

    iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw()
    
    commit 65afb0932a81c1de719ceee0db0b276094b10ac8 upstream.
    
    There are 2 exit paths where the lock isn't held, but try to unlock the
    mutex when exiting. In these places we should just return from the
    function.
    
    A neater approach would be to cleanup the ad5592r_read_raw(), but that
    would make this patch more difficult to backport to stable versions.
    
    Fixes 56ca9db862bf3: ("iio: dac: Add support for the AD5592R/AD5593R ADCs/DACs")
    Reported-by: Charles Stanhope <charles.stanhope@gmail.com>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d4abc3512b0e79cd79c8d41dd3d7ed4a8bdbac1
Author: Christian Eggers <ceggers@arri.de>
Date:   Mon Jul 27 12:16:05 2020 +0200

    dt-bindings: iio: io-channel-mux: Fix compatible string in example code
    
    commit add48ba425192c6e04ce70549129cacd01e2a09e upstream.
    
    The correct compatible string is "gpio-mux" (see
    bindings/mux/gpio-mux.txt).
    
    Cc: stable@vger.kernel.org # v4.13+
    Reviewed-by: Peter Rosin <peda@axentia.se>
    Signed-off-by: Christian Eggers <ceggers@arri.de>
    Link: https://lore.kernel.org/r/20200727101605.24384-1-ceggers@arri.de
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a34b58b5b43be7df523188dd2fa639075658ed0b
Author: Pavel Machek <pavel@denx.de>
Date:   Mon Aug 3 11:35:06 2020 +0200

    btrfs: fix return value mixup in btrfs_get_extent
    
    commit 881a3a11c2b858fe9b69ef79ac5ee9978a266dc9 upstream.
    
    btrfs_get_extent() sets variable ret, but out: error path expect error
    to be in variable err so the error code is lost.
    
    Fixes: 6bf9e4bd6a27 ("btrfs: inode: Verify inode mode to avoid NULL pointer dereference")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Pavel Machek (CIP) <pavel@denx.de>
    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 183af2d27dfced3167a88c80a2df776cb28a1255
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Jul 29 10:17:50 2020 +0100

    btrfs: fix memory leaks after failure to lookup checksums during inode logging
    
    commit 4f26433e9b3eb7a55ed70d8f882ae9cd48ba448b upstream.
    
    While logging an inode, at copy_items(), if we fail to lookup the checksums
    for an extent we release the destination path, free the ins_data array and
    then return immediately. However a previous iteration of the for loop may
    have added checksums to the ordered_sums list, in which case we leak the
    memory used by them.
    
    So fix this by making sure we iterate the ordered_sums list and free all
    its checksums before returning.
    
    Fixes: 3650860b90cc2a ("Btrfs: remove almost all of the BUG()'s from tree-log.c")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 627fa9d8071daad6aa84316c1fcb114a62db914f
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Mon Jul 27 10:28:05 2020 -0400

    btrfs: only search for left_info if there is no right_info in try_merge_free_space
    
    commit bf53d4687b8f3f6b752f091eb85f62369a515dfd upstream.
    
    In try_to_merge_free_space we attempt to find entries to the left and
    right of the entry we are adding to see if they can be merged.  We
    search for an entry past our current info (saved into right_info), and
    then if right_info exists and it has a rb_prev() we save the rb_prev()
    into left_info.
    
    However there's a slight problem in the case that we have a right_info,
    but no entry previous to that entry.  At that point we will search for
    an entry just before the info we're attempting to insert.  This will
    simply find right_info again, and assign it to left_info, making them
    both the same pointer.
    
    Now if right_info _can_ be merged with the range we're inserting, we'll
    add it to the info and free right_info.  However further down we'll
    access left_info, which was right_info, and thus get a use-after-free.
    
    Fix this by only searching for the left entry if we don't find a right
    entry at all.
    
    The CVE referenced had a specially crafted file system that could
    trigger this use-after-free. However with the tree checker improvements
    we no longer trigger the conditions for the UAF.  But the original
    conditions still apply, hence this fix.
    
    Reference: CVE-2019-19448
    Fixes: 963030817060 ("Btrfs: use hybrid extents+bitmap rb tree for free space")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c1ddfc98703433b556b827ffc10dd3a133866e1
Author: David Sterba <dsterba@suse.com>
Date:   Thu Jul 23 19:08:55 2020 +0200

    btrfs: fix messages after changing compression level by remount
    
    commit 27942c9971cc405c60432eca9395e514a2ae9f5e upstream.
    
    Reported by Forza on IRC that remounting with compression options does
    not reflect the change in level, or at least it does not appear to do so
    according to the messages:
    
      mount -o compress=zstd:1 /dev/sda /mnt
      mount -o remount,compress=zstd:15 /mnt
    
    does not print the change to the level to syslog:
    
      [   41.366060] BTRFS info (device vda): use zstd compression, level 1
      [   41.368254] BTRFS info (device vda): disk space caching is enabled
      [   41.390429] BTRFS info (device vda): disk space caching is enabled
    
    What really happens is that the message is lost but the level is actualy
    changed.
    
    There's another weird output, if compression is reset to 'no':
    
      [   45.413776] BTRFS info (device vda): use no compression, level 4
    
    To fix that, save the previous compression level and print the message
    in that case too and use separate message for 'no' compression.
    
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35b4a28051b237a4e3f71f6778b1f536d6a82a5e
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Jul 17 15:12:27 2020 -0400

    btrfs: open device without device_list_mutex
    
    commit 18c850fdc5a801bad4977b0f1723761d42267e45 upstream.
    
    There's long existed a lockdep splat because we open our bdev's under
    the ->device_list_mutex at mount time, which acquires the bd_mutex.
    Usually this goes unnoticed, but if you do loopback devices at all
    suddenly the bd_mutex comes with a whole host of other dependencies,
    which results in the splat when you mount a btrfs file system.
    
    ======================================================
    WARNING: possible circular locking dependency detected
    5.8.0-0.rc3.1.fc33.x86_64+debug #1 Not tainted
    ------------------------------------------------------
    systemd-journal/509 is trying to acquire lock:
    ffff970831f84db0 (&fs_info->reloc_mutex){+.+.}-{3:3}, at: btrfs_record_root_in_trans+0x44/0x70 [btrfs]
    
    but task is already holding lock:
    ffff97083144d598 (sb_pagefaults){.+.+}-{0:0}, at: btrfs_page_mkwrite+0x59/0x560 [btrfs]
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
     -> #6 (sb_pagefaults){.+.+}-{0:0}:
           __sb_start_write+0x13e/0x220
           btrfs_page_mkwrite+0x59/0x560 [btrfs]
           do_page_mkwrite+0x4f/0x130
           do_wp_page+0x3b0/0x4f0
           handle_mm_fault+0xf47/0x1850
           do_user_addr_fault+0x1fc/0x4b0
           exc_page_fault+0x88/0x300
           asm_exc_page_fault+0x1e/0x30
    
     -> #5 (&mm->mmap_lock#2){++++}-{3:3}:
           __might_fault+0x60/0x80
           _copy_from_user+0x20/0xb0
           get_sg_io_hdr+0x9a/0xb0
           scsi_cmd_ioctl+0x1ea/0x2f0
           cdrom_ioctl+0x3c/0x12b4
           sr_block_ioctl+0xa4/0xd0
           block_ioctl+0x3f/0x50
           ksys_ioctl+0x82/0xc0
           __x64_sys_ioctl+0x16/0x20
           do_syscall_64+0x52/0xb0
           entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
     -> #4 (&cd->lock){+.+.}-{3:3}:
           __mutex_lock+0x7b/0x820
           sr_block_open+0xa2/0x180
           __blkdev_get+0xdd/0x550
           blkdev_get+0x38/0x150
           do_dentry_open+0x16b/0x3e0
           path_openat+0x3c9/0xa00
           do_filp_open+0x75/0x100
           do_sys_openat2+0x8a/0x140
           __x64_sys_openat+0x46/0x70
           do_syscall_64+0x52/0xb0
           entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
     -> #3 (&bdev->bd_mutex){+.+.}-{3:3}:
           __mutex_lock+0x7b/0x820
           __blkdev_get+0x6a/0x550
           blkdev_get+0x85/0x150
           blkdev_get_by_path+0x2c/0x70
           btrfs_get_bdev_and_sb+0x1b/0xb0 [btrfs]
           open_fs_devices+0x88/0x240 [btrfs]
           btrfs_open_devices+0x92/0xa0 [btrfs]
           btrfs_mount_root+0x250/0x490 [btrfs]
           legacy_get_tree+0x30/0x50
           vfs_get_tree+0x28/0xc0
           vfs_kern_mount.part.0+0x71/0xb0
           btrfs_mount+0x119/0x380 [btrfs]
           legacy_get_tree+0x30/0x50
           vfs_get_tree+0x28/0xc0
           do_mount+0x8c6/0xca0
           __x64_sys_mount+0x8e/0xd0
           do_syscall_64+0x52/0xb0
           entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
     -> #2 (&fs_devs->device_list_mutex){+.+.}-{3:3}:
           __mutex_lock+0x7b/0x820
           btrfs_run_dev_stats+0x36/0x420 [btrfs]
           commit_cowonly_roots+0x91/0x2d0 [btrfs]
           btrfs_commit_transaction+0x4e6/0x9f0 [btrfs]
           btrfs_sync_file+0x38a/0x480 [btrfs]
           __x64_sys_fdatasync+0x47/0x80
           do_syscall_64+0x52/0xb0
           entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
     -> #1 (&fs_info->tree_log_mutex){+.+.}-{3:3}:
           __mutex_lock+0x7b/0x820
           btrfs_commit_transaction+0x48e/0x9f0 [btrfs]
           btrfs_sync_file+0x38a/0x480 [btrfs]
           __x64_sys_fdatasync+0x47/0x80
           do_syscall_64+0x52/0xb0
           entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
     -> #0 (&fs_info->reloc_mutex){+.+.}-{3:3}:
           __lock_acquire+0x1241/0x20c0
           lock_acquire+0xb0/0x400
           __mutex_lock+0x7b/0x820
           btrfs_record_root_in_trans+0x44/0x70 [btrfs]
           start_transaction+0xd2/0x500 [btrfs]
           btrfs_dirty_inode+0x44/0xd0 [btrfs]
           file_update_time+0xc6/0x120
           btrfs_page_mkwrite+0xda/0x560 [btrfs]
           do_page_mkwrite+0x4f/0x130
           do_wp_page+0x3b0/0x4f0
           handle_mm_fault+0xf47/0x1850
           do_user_addr_fault+0x1fc/0x4b0
           exc_page_fault+0x88/0x300
           asm_exc_page_fault+0x1e/0x30
    
    other info that might help us debug this:
    
    Chain exists of:
      &fs_info->reloc_mutex --> &mm->mmap_lock#2 --> sb_pagefaults
    
    Possible unsafe locking scenario:
    
         CPU0                    CPU1
         ----                    ----
     lock(sb_pagefaults);
                                 lock(&mm->mmap_lock#2);
                                 lock(sb_pagefaults);
     lock(&fs_info->reloc_mutex);
    
     *** DEADLOCK ***
    
    3 locks held by systemd-journal/509:
     #0: ffff97083bdec8b8 (&mm->mmap_lock#2){++++}-{3:3}, at: do_user_addr_fault+0x12e/0x4b0
     #1: ffff97083144d598 (sb_pagefaults){.+.+}-{0:0}, at: btrfs_page_mkwrite+0x59/0x560 [btrfs]
     #2: ffff97083144d6a8 (sb_internal){.+.+}-{0:0}, at: start_transaction+0x3f8/0x500 [btrfs]
    
    stack backtrace:
    CPU: 0 PID: 509 Comm: systemd-journal Not tainted 5.8.0-0.rc3.1.fc33.x86_64+debug #1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    Call Trace:
     dump_stack+0x92/0xc8
     check_noncircular+0x134/0x150
     __lock_acquire+0x1241/0x20c0
     lock_acquire+0xb0/0x400
     ? btrfs_record_root_in_trans+0x44/0x70 [btrfs]
     ? lock_acquire+0xb0/0x400
     ? btrfs_record_root_in_trans+0x44/0x70 [btrfs]
     __mutex_lock+0x7b/0x820
     ? btrfs_record_root_in_trans+0x44/0x70 [btrfs]
     ? kvm_sched_clock_read+0x14/0x30
     ? sched_clock+0x5/0x10
     ? sched_clock_cpu+0xc/0xb0
     btrfs_record_root_in_trans+0x44/0x70 [btrfs]
     start_transaction+0xd2/0x500 [btrfs]
     btrfs_dirty_inode+0x44/0xd0 [btrfs]
     file_update_time+0xc6/0x120
     btrfs_page_mkwrite+0xda/0x560 [btrfs]
     ? sched_clock+0x5/0x10
     do_page_mkwrite+0x4f/0x130
     do_wp_page+0x3b0/0x4f0
     handle_mm_fault+0xf47/0x1850
     do_user_addr_fault+0x1fc/0x4b0
     exc_page_fault+0x88/0x300
     ? asm_exc_page_fault+0x8/0x30
     asm_exc_page_fault+0x1e/0x30
    RIP: 0033:0x7fa3972fdbfe
    Code: Bad RIP value.
    
    Fix this by not holding the ->device_list_mutex at this point.  The
    device_list_mutex exists to protect us from modifying the device list
    while the file system is running.
    
    However it can also be modified by doing a scan on a device.  But this
    action is specifically protected by the uuid_mutex, which we are holding
    here.  We cannot race with opening at this point because we have the
    ->s_mount lock held during the mount.  Not having the
    ->device_list_mutex here is perfectly safe as we're not going to change
    the devices at this point.
    
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ add some comments ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa511954694cbea4d0cb59c81c8670276920c08c
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Jul 10 14:37:38 2020 +0800

    btrfs: don't traverse into the seed devices in show_devname
    
    commit 4faf55b03823e96c44dc4e364520000ed3b12fdb upstream.
    
    ->show_devname currently shows the lowest devid in the list. As the seed
    devices have the lowest devid in the sprouted filesystem, the userland
    tool such as findmnt end up seeing seed device instead of the device from
    the read-writable sprouted filesystem. As shown below.
    
     mount /dev/sda /btrfs
     mount: /btrfs: WARNING: device write-protected, mounted read-only.
    
     findmnt --output SOURCE,TARGET,UUID /btrfs
     SOURCE   TARGET UUID
     /dev/sda /btrfs 899f7027-3e46-4626-93e7-7d4c9ad19111
    
     btrfs dev add -f /dev/sdb /btrfs
    
     umount /btrfs
     mount /dev/sdb /btrfs
    
     findmnt --output SOURCE,TARGET,UUID /btrfs
     SOURCE   TARGET UUID
     /dev/sda /btrfs 899f7027-3e46-4626-93e7-7d4c9ad19111
    
    All sprouts from a single seed will show the same seed device and the
    same fsid. That's confusing.
    This is causing problems in our prototype as there isn't any reference
    to the sprout file-system(s) which is being used for actual read and
    write.
    
    This was added in the patch which implemented the show_devname in btrfs
    commit 9c5085c14798 ("Btrfs: implement ->show_devname").
    I tried to look for any particular reason that we need to show the seed
    device, there isn't any.
    
    So instead, do not traverse through the seed devices, just show the
    lowest devid in the sprouted fsid.
    
    After the patch:
    
     mount /dev/sda /btrfs
     mount: /btrfs: WARNING: device write-protected, mounted read-only.
    
     findmnt --output SOURCE,TARGET,UUID /btrfs
     SOURCE   TARGET UUID
     /dev/sda /btrfs 899f7027-3e46-4626-93e7-7d4c9ad19111
    
     btrfs dev add -f /dev/sdb /btrfs
     mount -o rw,remount /dev/sdb /btrfs
    
     findmnt --output SOURCE,TARGET,UUID /btrfs
     SOURCE   TARGET UUID
     /dev/sdb /btrfs 595ca0e6-b82e-46b5-b9e2-c72a6928be48
    
     mount /dev/sda /btrfs1
     mount: /btrfs1: WARNING: device write-protected, mounted read-only.
    
     btrfs dev add -f /dev/sdc /btrfs1
    
     findmnt --output SOURCE,TARGET,UUID /btrfs1
     SOURCE   TARGET  UUID
     /dev/sdc /btrfs1 ca1dbb7a-8446-4f95-853c-a20f3f82bdbb
    
     cat /proc/self/mounts | grep btrfs
     /dev/sdb /btrfs btrfs rw,relatime,noacl,space_cache,subvolid=5,subvol=/ 0 0
     /dev/sdc /btrfs1 btrfs ro,relatime,noacl,space_cache,subvolid=5,subvol=/ 0 0
    
    Reported-by: Martin K. Petersen <martin.petersen@oracle.com>
    CC: stable@vger.kernel.org # 4.19+
    Tested-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.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 6bf983c8db01d69eb3eb0a1ee90e43ad3a7b8709
Author: Tom Rix <trix@redhat.com>
Date:   Tue Jul 7 06:29:08 2020 -0700

    btrfs: ref-verify: fix memory leak in add_block_entry
    
    commit d60ba8de1164e1b42e296ff270c622a070ef8fe7 upstream.
    
    clang static analysis flags this error
    
    fs/btrfs/ref-verify.c:290:3: warning: Potential leak of memory pointed to by 're' [unix.Malloc]
                    kfree(be);
                    ^~~~~
    
    The problem is in this block of code:
    
            if (root_objectid) {
                    struct root_entry *exist_re;
    
                    exist_re = insert_root_entry(&exist->roots, re);
                    if (exist_re)
                            kfree(re);
            }
    
    There is no 'else' block freeing when root_objectid is 0. Add the
    missing kfree to the else branch.
    
    Fixes: fd708b81d972 ("Btrfs: add a extent ref verify tool")
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Tom Rix <trix@redhat.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 8eadf67bc216537337655cb1d73af0b00861a022
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Jun 16 10:17:34 2020 +0800

    btrfs: don't allocate anonymous block device for user invisible roots
    
    commit 851fd730a743e072badaf67caf39883e32439431 upstream.
    
    [BUG]
    When a lot of subvolumes are created, there is a user report about
    transaction aborted:
    
      BTRFS: Transaction aborted (error -24)
      WARNING: CPU: 17 PID: 17041 at fs/btrfs/transaction.c:1576 create_pending_snapshot+0xbc4/0xd10 [btrfs]
      RIP: 0010:create_pending_snapshot+0xbc4/0xd10 [btrfs]
      Call Trace:
       create_pending_snapshots+0x82/0xa0 [btrfs]
       btrfs_commit_transaction+0x275/0x8c0 [btrfs]
       btrfs_mksubvol+0x4b9/0x500 [btrfs]
       btrfs_ioctl_snap_create_transid+0x174/0x180 [btrfs]
       btrfs_ioctl_snap_create_v2+0x11c/0x180 [btrfs]
       btrfs_ioctl+0x11a4/0x2da0 [btrfs]
       do_vfs_ioctl+0xa9/0x640
       ksys_ioctl+0x67/0x90
       __x64_sys_ioctl+0x1a/0x20
       do_syscall_64+0x5a/0x110
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      ---[ end trace 33f2f83f3d5250e9 ]---
      BTRFS: error (device sda1) in create_pending_snapshot:1576: errno=-24 unknown
      BTRFS info (device sda1): forced readonly
      BTRFS warning (device sda1): Skipping commit of aborted transaction.
      BTRFS: error (device sda1) in cleanup_transaction:1831: errno=-24 unknown
    
    [CAUSE]
    The error is EMFILE (Too many files open) and comes from the anonymous
    block device allocation. The ids are in a shared pool of size 1<<20.
    
    The ids are assigned to live subvolumes, ie. the root structure exists
    in memory (eg. after creation or after the root appears in some path).
    The pool could be exhausted if the numbers are not reclaimed fast
    enough, after subvolume deletion or if other system component uses the
    anon block devices.
    
    [WORKAROUND]
    Since it's not possible to completely solve the problem, we can only
    minimize the time the id is allocated to a subvolume root.
    
    Firstly, we can reduce the use of anon_dev by trees that are not
    subvolume roots, like data reloc tree.
    
    This patch will do extra check on root objectid, to skip roots that
    don't need anon_dev.  Currently it's only data reloc tree and orphan
    roots.
    
    Reported-by: Greed Rong <greedrong@gmail.com>
    Link: https://lore.kernel.org/linux-btrfs/CA+UqX+NTrZ6boGnWHhSeZmEY5J76CTqmYjO2S+=tHJX7nb9DPw@mail.gmail.com/
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b5318a963bddf2bb4e6a1a3d46f25ed7580c97f
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Jun 16 10:17:37 2020 +0800

    btrfs: free anon block device right after subvolume deletion
    
    commit 082b6c970f02fefd278c7833880cda29691a5f34 upstream.
    
    [BUG]
    When a lot of subvolumes are created, there is a user report about
    transaction aborted caused by slow anonymous block device reclaim:
    
      BTRFS: Transaction aborted (error -24)
      WARNING: CPU: 17 PID: 17041 at fs/btrfs/transaction.c:1576 create_pending_snapshot+0xbc4/0xd10 [btrfs]
      RIP: 0010:create_pending_snapshot+0xbc4/0xd10 [btrfs]
      Call Trace:
       create_pending_snapshots+0x82/0xa0 [btrfs]
       btrfs_commit_transaction+0x275/0x8c0 [btrfs]
       btrfs_mksubvol+0x4b9/0x500 [btrfs]
       btrfs_ioctl_snap_create_transid+0x174/0x180 [btrfs]
       btrfs_ioctl_snap_create_v2+0x11c/0x180 [btrfs]
       btrfs_ioctl+0x11a4/0x2da0 [btrfs]
       do_vfs_ioctl+0xa9/0x640
       ksys_ioctl+0x67/0x90
       __x64_sys_ioctl+0x1a/0x20
       do_syscall_64+0x5a/0x110
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      ---[ end trace 33f2f83f3d5250e9 ]---
      BTRFS: error (device sda1) in create_pending_snapshot:1576: errno=-24 unknown
      BTRFS info (device sda1): forced readonly
      BTRFS warning (device sda1): Skipping commit of aborted transaction.
      BTRFS: error (device sda1) in cleanup_transaction:1831: errno=-24 unknown
    
    [CAUSE]
    The anonymous device pool is shared and its size is 1M. It's possible to
    hit that limit if the subvolume deletion is not fast enough and the
    subvolumes to be cleaned keep the ids allocated.
    
    [WORKAROUND]
    We can't avoid the anon device pool exhaustion but we can shorten the
    time the id is attached to the subvolume root once the subvolume becomes
    invisible to the user.
    
    Reported-by: Greed Rong <greedrong@gmail.com>
    Link: https://lore.kernel.org/linux-btrfs/CA+UqX+NTrZ6boGnWHhSeZmEY5J76CTqmYjO2S+=tHJX7nb9DPw@mail.gmail.com/
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54a7a9d75c0727433feb634b1025c84589949e02
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Sat Jan 19 11:35:04 2019 -0600

    PCI: Probe bridge window attributes once at enumeration-time
    
    commit 51c48b310183ab6ba5419edfc6a8de889cc04521 upstream.
    
    pci_bridge_check_ranges() determines whether a bridge supports the optional
    I/O and prefetchable memory windows and sets the flag bits in the bridge
    resources.  This *could* be done once during enumeration except that the
    resource allocation code completely clears the flag bits, e.g., in the
    pci_assign_unassigned_bridge_resources() path.
    
    The problem with pci_bridge_check_ranges() in the resource allocation path
    is that we may allocate resources after devices have been claimed by
    drivers, and pci_bridge_check_ranges() *changes* the window registers to
    determine whether they're writable.  This may break concurrent accesses to
    devices behind the bridge.
    
    Add a new pci_read_bridge_windows() to determine whether a bridge supports
    the optional windows, call it once during enumeration, remember the
    results, and change pci_bridge_check_ranges() so it doesn't touch the
    bridge windows but sets the flag bits based on those remembered results.
    
    Link: https://lore.kernel.org/linux-pci/1506151482-113560-1-git-send-email-wangzhou1@hisilicon.com
    Link: https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg02082.html
    Reported-by: Yandong Xu <xuyandong2@huawei.com>
    Tested-by: Yandong Xu <xuyandong2@huawei.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Cc: Ofer Hayut <ofer@lightbitslabs.com>
    Cc: Roy Shterman <roys@lightbitslabs.com>
    Cc: Keith Busch <keith.busch@intel.com>
    Cc: Zhou Wang <wangzhou1@hisilicon.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=208371
    Signed-off-by: Dima Stepanov <dimastep@yandex-team.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd6dc2fd66824c2fc6bdf07ff44a00a9695636d2
Author: Ansuel Smith <ansuelsmth@gmail.com>
Date:   Mon Jun 15 23:06:04 2020 +0200

    PCI: qcom: Add support for tx term offset for rev 2.1.0
    
    commit de3c4bf648975ea0b1d344d811e9b0748907b47c upstream.
    
    Add tx term offset support to pcie qcom driver need in some revision of
    the ipq806x SoC. Ipq8064 needs tx term offset set to 7.
    
    Link: https://lore.kernel.org/r/20200615210608.21469-9-ansuelsmth@gmail.com
    Fixes: 82a823833f4e ("PCI: qcom: Add Qualcomm PCIe controller driver")
    Signed-off-by: Sham Muthayyan <smuthayy@codeaurora.org>
    Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Stanimir Varbanov <svarbanov@mm-sol.com>
    Cc: stable@vger.kernel.org # v4.5+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56e2a4456647942e5f3aca88da164f30dcbf95ad
Author: Ansuel Smith <ansuelsmth@gmail.com>
Date:   Mon Jun 15 23:06:03 2020 +0200

    PCI: qcom: Define some PARF params needed for ipq8064 SoC
    
    commit 5149901e9e6deca487c01cc434a3ac4125c7b00b upstream.
    
    Set some specific value for Tx De-Emphasis, Tx Swing and Rx equalization
    needed on some ipq8064 based device (Netgear R7800 for example). Without
    this the system locks on kernel load.
    
    Link: https://lore.kernel.org/r/20200615210608.21469-8-ansuelsmth@gmail.com
    Fixes: 82a823833f4e ("PCI: qcom: Add Qualcomm PCIe controller driver")
    Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Acked-by: Stanimir Varbanov <svarbanov@mm-sol.com>
    Cc: stable@vger.kernel.org # v4.5+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae33b1ebbce825c85dbabfdbbea7db72f51298d5
Author: Rajat Jain <rajatja@google.com>
Date:   Mon Jul 6 16:32:40 2020 -0700

    PCI: Add device even if driver attach failed
    
    commit 2194bc7c39610be7cabe7456c5f63a570604f015 upstream.
    
    device_attach() returning failure indicates a driver error while trying to
    probe the device. In such a scenario, the PCI device should still be added
    in the system and be visible to the user.
    
    When device_attach() fails, merely warn about it and keep the PCI device in
    the system.
    
    This partially reverts ab1a187bba5c ("PCI: Check device_attach() return
    value always").
    
    Link: https://lore.kernel.org/r/20200706233240.3245512-1-rajatja@google.com
    Signed-off-by: Rajat Jain <rajatja@google.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable@vger.kernel.org      # v4.6+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71c6716cb61a7f474a47186c459acf7fbc780b3d
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Jul 28 18:45:53 2020 +0800

    PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken
    
    commit 45beb31d3afb651bb5c41897e46bd4fa9980c51c upstream.
    
    We are seeing AMD Radeon Pro W5700 doesn't work when IOMMU is enabled:
    
      iommu ivhd0: AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=63:00.0 address=0x42b5b01a0]
      iommu ivhd0: AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=63:00.0 address=0x42b5b01c0]
    
    The error also makes graphics driver fail to probe the device.
    
    It appears to be the same issue as commit 5e89cd303e3a ("PCI: Mark AMD
    Navi14 GPU rev 0xc5 ATS as broken") addresses, and indeed the same ATS
    quirk can workaround the issue.
    
    See-also: 5e89cd303e3a ("PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken")
    See-also: d28ca864c493 ("PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken")
    See-also: 9b44b0b09dec ("PCI: Mark AMD Stoney GPU ATS as broken")
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=208725
    Link: https://lore.kernel.org/r/20200728104554.28927-1-kai.heng.feng@canonical.com
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c59ea9bde42ede641006940a339eabe6669cc1be
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Jun 26 19:42:34 2020 +0200

    PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context()
    
    commit dae68d7fd4930315389117e9da35b763f12238f9 upstream.
    
    If context is not NULL in acpiphp_grab_context(), but the
    is_going_away flag is set for the device's parent, the reference
    counter of the context needs to be decremented before returning
    NULL or the context will never be freed, so make that happen.
    
    Fixes: edf5bf34d408 ("ACPI / dock: Use callback pointers from devices' ACPI hotplug contexts")
    Reported-by: Vasily Averin <vvs@virtuozzo.com>
    Cc: 3.15+ <stable@vger.kernel.org> # 3.15+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c4d9eefd314e763dcb2a499797176c17ad6ab69
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jul 24 22:44:41 2020 +0200

    genirq/affinity: Make affinity setting if activated opt-in
    
    commit f0c7baca180046824e07fc5f1326e83a8fd150c7 upstream.
    
    John reported that on a RK3288 system the perf per CPU interrupts are all
    affine to CPU0 and provided the analysis:
    
     "It looks like what happens is that because the interrupts are not per-CPU
      in the hardware, armpmu_request_irq() calls irq_force_affinity() while
      the interrupt is deactivated and then request_irq() with IRQF_PERCPU |
      IRQF_NOBALANCING.
    
      Now when irq_startup() runs with IRQ_STARTUP_NORMAL, it calls
      irq_setup_affinity() which returns early because IRQF_PERCPU and
      IRQF_NOBALANCING are set, leaving the interrupt on its original CPU."
    
    This was broken by the recent commit which blocked interrupt affinity
    setting in hardware before activation of the interrupt. While this works in
    general, it does not work for this particular case. As contrary to the
    initial analysis not all interrupt chip drivers implement an activate
    callback, the safe cure is to make the deferred interrupt affinity setting
    at activation time opt-in.
    
    Implement the necessary core logic and make the two irqchip implementations
    for which this is required opt-in. In hindsight this would have been the
    right thing to do, but ...
    
    Fixes: baedb87d1b53 ("genirq/affinity: Handle affinity setting on inactive interrupts correctly")
    Reported-by: John Keeping <john@metanate.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Marc Zyngier <maz@kernel.org>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/87blk4tzgm.fsf@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4d84941832fca4b1939b1683dd1e40fdc59a32d
Author: Steve French <stfrench@microsoft.com>
Date:   Thu Jul 16 00:34:21 2020 -0500

    smb3: warn on confusing error scenario with sec=krb5
    
    commit 0a018944eee913962bce8ffebbb121960d5125d9 upstream.
    
    When mounting with Kerberos, users have been confused about the
    default error returned in scenarios in which either keyutils is
    not installed or the user did not properly acquire a krb5 ticket.
    Log a warning message in the case that "ENOKEY" is returned
    from the get_spnego_key upcall so that users can better understand
    why mount failed in those two cases.
    
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>