commit 0df445b0f0daa57b57571edb1386edc622938276
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Nov 22 10:00:25 2020 +0100

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

commit 45594dbd642e3c6cd8040e72f2d8dcbfa76687fe
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Sat Nov 7 00:49:39 2020 -0800

    ACPI: GED: fix -Wformat
    
    commit 9debfb81e7654fe7388a49f45bc4d789b94c1103 upstream.
    
    Clang is more aggressive about -Wformat warnings when the format flag
    specifies a type smaller than the parameter. It turns out that gsi is an
    int. Fixes:
    
    drivers/acpi/evged.c:105:48: warning: format specifies type 'unsigned
    char' but the argument has type 'unsigned int' [-Wformat]
    trigger == ACPI_EDGE_SENSITIVE ? 'E' : 'L', gsi);
                                                ^~~
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/378
    Fixes: ea6f3af4c5e6 ("ACPI: GED: add support for _Exx / _Lxx handler methods")
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b7307fe1430cb0017821a15aabc2073fa3bcbef
Author: David Edmondson <david.edmondson@oracle.com>
Date:   Tue Nov 3 12:04:00 2020 +0000

    KVM: x86: clflushopt should be treated as a no-op by emulation
    
    commit 51b958e5aeb1e18c00332e0b37c5d4e95a3eff84 upstream.
    
    The instruction emulator ignores clflush instructions, yet fails to
    support clflushopt. Treat both similarly.
    
    Fixes: 13e457e0eebf ("KVM: x86: Emulator does not decode clflush well")
    Signed-off-by: David Edmondson <david.edmondson@oracle.com>
    Message-Id: <20201103120400.240882-1-david.edmondson@oracle.com>
    Reviewed-by: Joao Martins <joao.m.martins@oracle.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b215e416909e6f37c403d0b48b1057967bdc76e9
Author: Zhang Changzhong <zhangchangzhong@huawei.com>
Date:   Tue Jul 14 14:44:50 2020 +0800

    can: proc: can_remove_proc(): silence remove_proc_entry warning
    
    commit 3accbfdc36130282f5ae9e6eecfdf820169fedce upstream.
    
    If can_init_proc() fail to create /proc/net/can directory, can_remove_proc()
    will trigger a warning:
    
    WARNING: CPU: 6 PID: 7133 at fs/proc/generic.c:672 remove_proc_entry+0x17b0
    Kernel panic - not syncing: panic_on_warn set ...
    
    Fix to return early from can_remove_proc() if can proc_dir does not exists.
    
    Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
    Link: https://lore.kernel.org/r/1594709090-3203-1-git-send-email-zhangchangzhong@huawei.com
    Fixes: 8e8cda6d737d ("can: initial support for network namespaces")
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bf413a4c0c8add596754257c9847cf37bde57f3
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Oct 9 14:17:11 2020 +0200

    mac80211: always wind down STA state
    
    commit dcd479e10a0510522a5d88b29b8f79ea3467d501 upstream.
    
    When (for example) an IBSS station is pre-moved to AUTHORIZED
    before it's inserted, and then the insertion fails, we don't
    clean up the fast RX/TX states that might already have been
    created, since we don't go through all the state transitions
    again on the way down.
    
    Do that, if it hasn't been done already, when the station is
    freed. I considered only freeing the fast TX/RX state there,
    but we might add more state so it's more robust to wind down
    the state properly.
    
    Note that we warn if the station was ever inserted, it should
    have been properly cleaned up in that case, and the driver
    will probably not like things happening out of order.
    
    Reported-by: syzbot+2e293dbd67de2836ba42@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20201009141710.7223b322a955.I95bd08b9ad0e039c034927cce0b75beea38e059b@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 436aff975718106d8e168fde69a3786962ca356e
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Oct 26 13:36:17 2020 -0700

    Input: sunkbd - avoid use-after-free in teardown paths
    
    commit 77e70d351db7de07a46ac49b87a6c3c7a60fca7e upstream.
    
    We need to make sure we cancel the reinit work before we tear down the
    driver structures.
    
    Reported-by: Bodong Zhao <nopitydays@gmail.com>
    Tested-by: Bodong Zhao <nopitydays@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32e82728741f127474b264e5f6af0d90287033cb
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Mon Oct 12 08:54:31 2020 +0000

    powerpc/8xx: Always fault when _PAGE_ACCESSED is not set
    
    commit 29daf869cbab69088fe1755d9dd224e99ba78b56 upstream.
    
    The kernel expects pte_young() to work regardless of CONFIG_SWAP.
    
    Make sure a minor fault is taken to set _PAGE_ACCESSED when it
    is not already set, regardless of the selection of CONFIG_SWAP.
    
    This adds at least 3 instructions to the TLB miss exception
    handlers fast path. Following patch will reduce this overhead.
    
    Also update the rotation instruction to the correct number of bits
    to reflect all changes done to _PAGE_ACCESSED over time.
    
    Fixes: d069cb4373fe ("powerpc/8xx: Don't touch ACCESSED when no SWAP.")
    Fixes: 5f356497c384 ("powerpc/8xx: remove unused _PAGE_WRITETHRU")
    Fixes: e0a8e0d90a9f ("powerpc/8xx: Handle PAGE_USER via APG bits")
    Fixes: 5b2753fc3e8a ("powerpc/8xx: Implementation of PAGE_EXEC")
    Fixes: a891c43b97d3 ("powerpc/8xx: Prepare handlers for _PAGE_HUGE for 512k pages.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/af834e8a0f1fa97bfae65664950f0984a70c4750.1602492856.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85a56167784e52a5c99cd8ef0b14b01aec453f54
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Tue Sep 8 15:07:49 2020 +0200

    gpio: mockup: fix resource leak in error path
    
    commit 1b02d9e770cd7087f34c743f85ccf5ea8372b047 upstream
    
    If the module init function fails after creating the debugs directory,
    it's never removed. Add proper cleanup calls to avoid this resource
    leak.
    
    Fixes: 9202ba2397d1 ("gpio: mockup: implement event injecting over debugfs")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dd0051f6b85ce19140c64b130d6eb89f1830749
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Sun Sep 20 23:12:38 2020 +0200

    i2c: imx: Fix external abort on interrupt in exit paths
    
    commit e50e4f0b85be308a01b830c5fbdffc657e1a6dd0 upstream
    
    If interrupt comes late, during probe error path or device remove (could
    be triggered with CONFIG_DEBUG_SHIRQ), the interrupt handler
    i2c_imx_isr() will access registers with the clock being disabled.  This
    leads to external abort on non-linefetch on Toradex Colibri VF50 module
    (with Vybrid VF5xx):
    
        Unhandled fault: external abort on non-linefetch (0x1008) at 0x8882d003
        Internal error: : 1008 [#1] ARM
        Modules linked in:
        CPU: 0 PID: 1 Comm: swapper Not tainted 5.7.0 #607
        Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
          (i2c_imx_isr) from [<8017009c>] (free_irq+0x25c/0x3b0)
          (free_irq) from [<805844ec>] (release_nodes+0x178/0x284)
          (release_nodes) from [<80580030>] (really_probe+0x10c/0x348)
          (really_probe) from [<80580380>] (driver_probe_device+0x60/0x170)
          (driver_probe_device) from [<80580630>] (device_driver_attach+0x58/0x60)
          (device_driver_attach) from [<805806bc>] (__driver_attach+0x84/0xc0)
          (__driver_attach) from [<8057e228>] (bus_for_each_dev+0x68/0xb4)
          (bus_for_each_dev) from [<8057f3ec>] (bus_add_driver+0x144/0x1ec)
          (bus_add_driver) from [<80581320>] (driver_register+0x78/0x110)
          (driver_register) from [<8010213c>] (do_one_initcall+0xa8/0x2f4)
          (do_one_initcall) from [<80c0100c>] (kernel_init_freeable+0x178/0x1dc)
          (kernel_init_freeable) from [<80807048>] (kernel_init+0x8/0x110)
          (kernel_init) from [<80100114>] (ret_from_fork+0x14/0x20)
    
    Additionally, the i2c_imx_isr() could wake up the wait queue
    (imx_i2c_struct->queue) before its initialization happens.
    
    The resource-managed framework should not be used for interrupt handling,
    because the resource will be released too late - after disabling clocks.
    The interrupt handler is not prepared for such case.
    
    Fixes: 1c4b6c3bcf30 ("i2c: imx: implement bus recovery")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d63ef79a92de6c541f6794fa66e4530e6501ae5
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Thu Mar 8 14:25:17 2018 +0100

    i2c: imx: use clk notifier for rate changes
    
    commit 90ad2cbe88c22d0215225ab9594eeead0eb24fde upstream
    
    Instead of repeatedly calling clk_get_rate for each transfer, register
    a clock notifier to update the cached divider value each time the clock
    rate actually changes.
    
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1fe39636e6fb60c8fe7e3b87a32cb561585399f
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Nov 20 10:52:44 2020 +1100

    powerpc/64s: flush L1D after user accesses
    
    commit 9a32a7e78bd0cd9a9b6332cbdc345ee5ffd0c5de upstream.
    
    IBM Power9 processors can speculatively operate on data in the L1 cache before
    it has been completely validated, via a way-prediction mechanism. It is not possible
    for an attacker to determine the contents of impermissible memory using this method,
    since these systems implement a combination of hardware and software security measures
    to prevent scenarios where protected data could be leaked.
    
    However these measures don't address the scenario where an attacker induces
    the operating system to speculatively execute instructions using data that the
    attacker controls. This can be used for example to speculatively bypass "kernel
    user access prevention" techniques, as discovered by Anthony Steinhauser of
    Google's Safeside Project. This is not an attack by itself, but there is a possibility
    it could be used in conjunction with side-channels or other weaknesses in the
    privileged code to construct an attack.
    
    This issue can be mitigated by flushing the L1 cache between privilege boundaries
    of concern. This patch flushes the L1 cache after user accesses.
    
    This is part of the fix for CVE-2020-4788.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ad53f1d6ccfb8afbdfc772fbd3cf0deec3be95a
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Nov 20 10:52:43 2020 +1100

    powerpc/uaccess: Evaluate macro arguments once, before user access is allowed
    
    commit d02f6b7dab8228487268298ea1f21081c0b4b3eb upstream.
    
    get/put_user() can be called with nontrivial arguments. fs/proc/page.c
    has a good example:
    
        if (put_user(stable_page_flags(ppage), out)) {
    
    stable_page_flags() is quite a lot of code, including spin locks in
    the page allocator.
    
    Ensure these arguments are evaluated before user access is allowed.
    
    This improves security by reducing code with access to userspace, but
    it also fixes a PREEMPT bug with KUAP on powerpc/64s:
    stable_page_flags() is currently called with AMR set to allow writes,
    it ends up calling spin_unlock(), which can call preempt_schedule. But
    the task switch code can not be called with AMR set (it relies on
    interrupts saving the register), so this blows up.
    
    It's fine if the code inside allow_user_access() is preemptible,
    because a timer or IPI will save the AMR, but it's not okay to
    explicitly cause a reschedule.
    
    Fixes: de78a9c42a79 ("powerpc: Add a framework for Kernel Userspace Access Protection")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200407041245.600651-1-npiggin@gmail.com
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f830a304bf5fb768395642e49fb4e9375469e48
Author: Andrew Donnellan <ajd@linux.ibm.com>
Date:   Fri Nov 20 10:52:42 2020 +1100

    powerpc: Fix __clear_user() with KUAP enabled
    
    commit 61e3acd8c693a14fc69b824cb5b08d02cb90a6e7 upstream.
    
    The KUAP implementation adds calls in clear_user() to enable and
    disable access to userspace memory. However, it doesn't add these to
    __clear_user(), which is used in the ptrace regset code.
    
    As there's only one direct user of __clear_user() (the regset code),
    and the time taken to set the AMR for KUAP purposes is going to
    dominate the cost of a quick access_ok(), there's not much point
    having a separate path.
    
    Rename __clear_user() to __arch_clear_user(), and make __clear_user()
    just call clear_user().
    
    Reported-by: syzbot+f25ecf4b2982d8c7a640@syzkaller-ppc64.appspotmail.com
    Reported-by: Daniel Axtens <dja@axtens.net>
    Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
    Fixes: de78a9c42a79 ("powerpc: Add a framework for Kernel Userspace Access Protection")
    Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com>
    [mpe: Use __arch_clear_user() for the asm version like arm64 & nds32]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191209132221.15328-1-ajd@linux.ibm.com
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24ed3d53a4bd16144cb319b3d5f406be15a1e3fa
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri Nov 20 10:52:41 2020 +1100

    powerpc: Implement user_access_begin and friends
    
    commit 5cd623333e7cf4e3a334c70529268b65f2a6c2c7 upstream.
    
    Today, when a function like strncpy_from_user() is called,
    the userspace access protection is de-activated and re-activated
    for every word read.
    
    By implementing user_access_begin and friends, the protection
    is de-activated at the beginning of the copy and re-activated at the
    end.
    
    Implement user_access_begin(), user_access_end() and
    unsafe_get_user(), unsafe_put_user() and unsafe_copy_to_user()
    
    For the time being, we keep user_access_save() and
    user_access_restore() as nops.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/36d4fbf9e56a75994aca4ee2214c77b26a5a8d35.1579866752.git.christophe.leroy@c-s.fr
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b07673623d407aa89bb1f5b24339afe30871e35d
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri Nov 20 10:52:40 2020 +1100

    powerpc: Add a framework for user access tracking
    
    Backported from commit de78a9c42a79 ("powerpc: Add a framework
    for Kernel Userspace Access Protection"). Here we don't try to
    add the KUAP framework, we just want the helper functions
    because we want to put uaccess flush helpers in them.
    
    In terms of fixes, we don't need commit 1d8f739b07bd ("powerpc/kuap:
    Fix set direction in allow/prevent_user_access()") as we don't have
    real KUAP. Likewise as all our allows are noops and all our prevents
    are just flushes, we don't need commit 9dc086f1e9ef ("powerpc/futex:
    Fix incorrect user access blocking") The other 2 fixes we do need.
    
    The original description is:
    
    This patch implements a framework for Kernel Userspace Access
    Protection.
    
    Then subarches will have the possibility to provide their own
    implementation by providing setup_kuap() and
    allow/prevent_user_access().
    
    Some platforms will need to know the area accessed and whether it is
    accessed from read, write or both. Therefore source, destination and
    size and handed over to the two functions.
    
    mpe: Rename to allow/prevent rather than unlock/lock, and add
    read/write wrappers. Drop the 32-bit code for now until we have an
    implementation for it. Add kuap to pt_regs for 64-bit as well as
    32-bit. Don't split strings, use pr_crit_ratelimited().
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Russell Currey <ruscur@russell.cc>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db01cad9efe3c3838a6b3a3f68affd295c4b92d6
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Nov 20 10:52:39 2020 +1100

    powerpc/64s: flush L1D on kernel entry
    
    commit f79643787e0a0762d2409b7b8334e83f22d85695 upstream.
    
    IBM Power9 processors can speculatively operate on data in the L1 cache before
    it has been completely validated, via a way-prediction mechanism. It is not possible
    for an attacker to determine the contents of impermissible memory using this method,
    since these systems implement a combination of hardware and software security measures
    to prevent scenarios where protected data could be leaked.
    
    However these measures don't address the scenario where an attacker induces
    the operating system to speculatively execute instructions using data that the
    attacker controls. This can be used for example to speculatively bypass "kernel
    user access prevention" techniques, as discovered by Anthony Steinhauser of
    Google's Safeside Project. This is not an attack by itself, but there is a possibility
    it could be used in conjunction with side-channels or other weaknesses in the
    privileged code to construct an attack.
    
    This issue can be mitigated by flushing the L1 cache between privilege boundaries
    of concern. This patch flushes the L1 cache on kernel entry.
    
    This is part of the fix for CVE-2020-4788.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39885f4d7c24a61e46c2bf531deef7ac849fcd00
Author: Daniel Axtens <dja@axtens.net>
Date:   Fri Nov 20 10:52:38 2020 +1100

    powerpc/64s: move some exception handlers out of line
    
    (backport only)
    
    We're about to grow the exception handlers, which will make a bunch of them
    no longer fit within the space available. We move them out of line.
    
    This is a fiddly and error-prone business, so in the interests of reviewability
    I haven't merged this in with the addition of the entry flush.
    
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68c8ea597d0048b93ff56fe1fb98f8f8dbb42266
Author: Daniel Axtens <dja@axtens.net>
Date:   Fri Nov 20 10:52:37 2020 +1100

    powerpc/64s: Define MASKABLE_RELON_EXCEPTION_PSERIES_OOL
    
    Commit da2bc4644c75 ("powerpc/64s: Add new exception vector macros")
    adds:
    
    +#define __TRAMP_REAL_VIRT_OOL_MASKABLE(name, realvec)          \
    +       TRAMP_REAL_BEGIN(tramp_virt_##name);                            \
    +       MASKABLE_RELON_EXCEPTION_PSERIES_OOL(realvec, name##_common);   \
    
    However there's no reference there or anywhere else to
    MASKABLE_RELON_EXCEPTION_PSERIES_OOL and an attempt to use it
    unsurprisingly doesn't work.
    
    Add a definition provided by mpe.
    
    Fixes: da2bc4644c75 ("powerpc/64s: Add new exception vector macros")
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>