commit 76e5c6fd6d163f1aa63969cc982e79be1fee87a7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Feb 14 16:30:02 2020 -0500

    Linux 4.4.214

commit 354fc8ad0c0094d22481f6272294a226476ac19c
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Mon Jan 27 14:07:23 2020 -0500

    dm: fix potential for q->make_request_fn NULL pointer
    
    commit 47ace7e012b9f7ad71d43ac9063d335ea3d6820b upstream.
    
    Move blk_queue_make_request() to dm.c:alloc_dev() so that
    q->make_request_fn is never NULL during the lifetime of a DM device
    (even one that is created without a DM table).
    
    Otherwise generic_make_request() will crash simply by doing:
      dmsetup create -n test
      mount /dev/dm-N /mnt
    
    While at it, move ->congested_data initialization out of
    dm.c:alloc_dev() and into the bio-based specific init method.
    
    Reported-by: Stefan Bader <stefan.bader@canonical.com>
    BugLink: https://bugs.launchpad.net/bugs/1860231
    Fixes: ff36ab34583a ("dm: remove request-based logic from make_request_fn wrapper")
    Depends-on: c12c9a3c3860c ("dm: various cleanups to md->queue initialization code")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    [smb: adjusted for context and dm_init_md_queue() exitsting in older
          kernels, and congested_data embedded in backing_dev_info, and
          dm_init_normal_md_queue() was called dm_init_old_md_queue()]
    Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bd751f1c30f6a2a870169c0501875f1ca2d9416
Author: Nicolai Stange <nstange@suse.de>
Date:   Tue Jan 14 11:39:03 2020 +0100

    libertas: make lbs_ibss_join_existing() return error code on rates overflow
    
    [ Upstream commit 1754c4f60aaf1e17d886afefee97e94d7f27b4cb ]
    
    Commit e5e884b42639 ("libertas: Fix two buffer overflows at parsing bss
    descriptor") introduced a bounds check on the number of supplied rates to
    lbs_ibss_join_existing() and made it to return on overflow.
    
    However, the aforementioned commit doesn't set the return value accordingly
    and thus, lbs_ibss_join_existing() would return with zero even though it
    failed.
    
    Make lbs_ibss_join_existing return -EINVAL in case the bounds check on the
    number of supplied rates fails.
    
    Fixes: e5e884b42639 ("libertas: Fix two buffer overflows at parsing bss descriptor")
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03b4aeda9b6f455d81d1147f0900f1320bc48a44
Author: Nicolai Stange <nstange@suse.de>
Date:   Tue Jan 14 11:39:02 2020 +0100

    libertas: don't exit from lbs_ibss_join_existing() with RCU read lock held
    
    [ Upstream commit c7bf1fb7ddca331780b9a733ae308737b39f1ad4 ]
    
    Commit e5e884b42639 ("libertas: Fix two buffer overflows at parsing bss
    descriptor") introduced a bounds check on the number of supplied rates to
    lbs_ibss_join_existing().
    
    Unfortunately, it introduced a return path from within a RCU read side
    critical section without a corresponding rcu_read_unlock(). Fix this.
    
    Fixes: e5e884b42639 ("libertas: Fix two buffer overflows at parsing bss descriptor")
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4dd90d14f902074f18238dc104868debbd3cd250
Author: Qing Xu <m1s5p6688@gmail.com>
Date:   Thu Jan 2 10:39:27 2020 +0800

    mwifiex: Fix possible buffer overflows in mwifiex_cmd_append_vsie_tlv()
    
    [ Upstream commit b70261a288ea4d2f4ac7cd04be08a9f0f2de4f4d ]
    
    mwifiex_cmd_append_vsie_tlv() calls memcpy() without checking
    the destination size may trigger a buffer overflower,
    which a local user could use to cause denial of service
    or the execution of arbitrary code.
    Fix it by putting the length check before calling memcpy().
    
    Signed-off-by: Qing Xu <m1s5p6688@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91b836b01c788932d86a448d26561740d22e7c9b
Author: Qing Xu <m1s5p6688@gmail.com>
Date:   Thu Jan 2 10:39:26 2020 +0800

    mwifiex: Fix possible buffer overflows in mwifiex_ret_wmm_get_status()
    
    [ Upstream commit 3a9b153c5591548612c3955c9600a98150c81875 ]
    
    mwifiex_ret_wmm_get_status() calls memcpy() without checking the
    destination size.Since the source is given from remote AP which
    contains illegal wmm elements , this may trigger a heap buffer
    overflow.
    Fix it by putting the length check before calling memcpy().
    
    Signed-off-by: Qing Xu <m1s5p6688@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c6d00f4ce816263a293337bfea34570f61dd2c6b
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Dec 18 20:48:07 2019 +0100

    pinctrl: sh-pfc: r8a7778: Fix duplicate SDSELF_B and SD1_CLK_B
    
    commit 805f635703b2562b5ddd822c62fc9124087e5dd5 upstream.
    
    The FN_SDSELF_B and FN_SD1_CLK_B enum IDs are used twice, which means
    one set of users must be wrong.  Replace them by the correct enum IDs.
    
    Fixes: 87f8c988636db0d4 ("sh-pfc: Add r8a7778 pinmux support")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20191218194812.12741-2-geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 266eb2252a0bb6d05dc5f1f02f60f325cd303b5c
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Mon Dec 16 15:19:22 2019 +1100

    powerpc/pseries: Allow not having ibm, hypertas-functions::hcall-multi-tce for DDW
    
    commit 7559d3d295f3365ea7ac0c0274c05e633fe4f594 upstream.
    
    By default a pseries guest supports a H_PUT_TCE hypercall which maps
    a single IOMMU page in a DMA window. Additionally the hypervisor may
    support H_PUT_TCE_INDIRECT/H_STUFF_TCE which update multiple TCEs at once;
    this is advertised via the device tree /rtas/ibm,hypertas-functions
    property which Linux converts to FW_FEATURE_MULTITCE.
    
    FW_FEATURE_MULTITCE is checked when dma_iommu_ops is used; however
    the code managing the huge DMA window (DDW) ignores it and calls
    H_PUT_TCE_INDIRECT even if it is explicitly disabled via
    the "multitce=off" kernel command line parameter.
    
    This adds FW_FEATURE_MULTITCE checking to the DDW code path.
    
    This changes tce_build_pSeriesLP to take liobn and page size as
    the huge window does not have iommu_table descriptor which usually
    the place to store these numbers.
    
    Fixes: 4e8b0cf46b25 ("powerpc/pseries: Add support for dynamic dma windows")
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
    Tested-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191216041924.42318-3-aik@ozlabs.ru
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca3821fda68545b74d79d27d652f67151defe6d8
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Fri Jan 10 18:20:07 2020 +0100

    ARM: dts: at91: sama5d3: define clock rate range for tcb1
    
    commit a7e0f3fc01df4b1b7077df777c37feae8c9e8b6d upstream.
    
    The clock rate range for the TCB1 clock is missing. define it in the device
    tree.
    
    Reported-by: Karl Rudbæk Olsen <karl@micro-technic.com>
    Fixes: d2e8190b7916 ("ARM: at91/dt: define sama5d3 clocks")
    Link: https://lore.kernel.org/r/20200110172007.1253659-2-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49846ecd134b04295d86d70abbac1f489a31a94c
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Fri Jan 10 18:20:06 2020 +0100

    ARM: dts: at91: sama5d3: fix maximum peripheral clock rates
    
    commit ee0aa926ddb0bd8ba59e33e3803b3b5804e3f5da upstream.
    
    Currently the maximum rate for peripheral clock is calculated based on a
    typical 133MHz MCK. The maximum frequency is defined in the datasheet as a
    ratio to MCK. Some sama5d3 platforms are using a 166MHz MCK. Update the
    device trees to match the maximum rate based on 166MHz.
    
    Reported-by: Karl Rudbæk Olsen <karl@micro-technic.com>
    Fixes: d2e8190b7916 ("ARM: at91/dt: define sama5d3 clocks")
    Link: https://lore.kernel.org/r/20200110172007.1253659-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 319c123818b8e49759d7bf8555f8e2b8cdf2b92d
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Tue Jan 14 17:09:24 2020 +0100

    ARC: [plat-axs10x]: Add missing multicast filter number to GMAC node
    
    commit 7980dff398f86a618f502378fa27cf7e77449afa upstream.
    
    Add a missing property to GMAC node so that multicast filtering works
    correctly.
    
    Fixes: 556cc1c5f528 ("ARC: [axs101] Add support for AXS101 SDP (software development platform)")
    Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 998863d414f50f482669de436cfdd96cfd913f0e
Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Date:   Thu Dec 12 16:31:10 2019 +0100

    rtc: hym8563: Return -EINVAL if the time is known to be invalid
    
    commit f236a2a2ebabad0848ad0995af7ad1dc7029e895 upstream.
    
    The current code returns -EPERM when the voltage loss bit is set.
    Since the bit indicates that the time value is not valid, return
    -EINVAL instead, which is the appropriate error code for this
    situation.
    
    Fixes: dcaf03849352 ("rtc: add hym8563 rtc-driver")
    Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
    Link: https://lore.kernel.org/r/20191212153111.966923-1-paul.kocialkowski@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 600f91c32c89fe126f16be0e61dc13389baa6eda
Author: Bean Huo <beanhuo@micron.com>
Date:   Mon Jan 20 14:08:13 2020 +0100

    scsi: ufs: Fix ufshcd_probe_hba() reture value in case ufshcd_scsi_add_wlus() fails
    
    commit b9fc5320212efdfb4e08b825aaa007815fd11d16 upstream.
    
    A non-zero error value likely being returned by ufshcd_scsi_add_wlus() in
    case of failure of adding the WLs, but ufshcd_probe_hba() doesn't use this
    value, and doesn't report this failure to upper caller.  This patch is to
    fix this issue.
    
    Fixes: 2a8fa600445c ("ufs: manually add well known logical units")
    Link: https://lore.kernel.org/r/20200120130820.1737-2-huobean@gmail.com
    Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
    Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
    Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
    Signed-off-by: Bean Huo <beanhuo@micron.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 726cd52506151dffb883c39d4989f371e7e4ab2f
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Date:   Mon Nov 4 14:48:11 2019 -0800

    ASoC: pcm: update FE/BE trigger order based on the command
    
    [ Upstream commit acbf27746ecfa96b290b54cc7f05273482ea128a ]
    
    Currently, the trigger orders SND_SOC_DPCM_TRIGGER_PRE/POST
    determine the order in which FE DAI and BE DAI are triggered.
    In the case of SND_SOC_DPCM_TRIGGER_PRE, the FE DAI is
    triggered before the BE DAI and in the case of
    SND_SOC_DPCM_TRIGGER_POST, the BE DAI is triggered before
    the FE DAI. And this order remains the same irrespective of the
    trigger command.
    
    In the case of the SOF driver, during playback, the FW
    expects the BE DAI to be triggered before the FE DAI during
    the START trigger. The BE DAI trigger handles the starting of
    Link DMA and so it must be started before the FE DAI is started
    to prevent xruns during pause/release. This can be addressed
    by setting the trigger order for the FE dai link to
    SND_SOC_DPCM_TRIGGER_POST. But during the STOP trigger,
    the FW expects the FE DAI to be triggered before the BE DAI.
    Retaining the same order during the START and STOP commands,
    results in FW error as the DAI component in the FW is still
    active.
    
    The issue can be fixed by mirroring the trigger order of
    FE and BE DAI's during the START and STOP trigger. So, with the
    trigger order set to SND_SOC_DPCM_TRIGGER_PRE, the FE DAI will be
    trigger first during SNDRV_PCM_TRIGGER_START/STOP/RESUME
    and the BE DAI will be triggered first during the
    STOP/SUSPEND/PAUSE commands. Conversely, with the trigger order
    set to SND_SOC_DPCM_TRIGGER_POST, the BE DAI will be triggered
    first during the SNDRV_PCM_TRIGGER_START/STOP/RESUME commands
    and the FE DAI will be triggered first during the
    SNDRV_PCM_TRIGGER_STOP/SUSPEND/PAUSE commands.
    
    Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20191104224812.3393-2-ranjani.sridharan@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 501f377377ad439735ce1b73c19247ca08aff290
Author: Song Liu <songliubraving@fb.com>
Date:   Thu Jan 23 10:11:46 2020 -0800

    perf/core: Fix mlock accounting in perf_mmap()
    
    commit 003461559ef7a9bd0239bae35a22ad8924d6e9ad upstream.
    
    Decreasing sysctl_perf_event_mlock between two consecutive perf_mmap()s of
    a perf ring buffer may lead to an integer underflow in locked memory
    accounting. This may lead to the undesired behaviors, such as failures in
    BPF map creation.
    
    Address this by adjusting the accounting logic to take into account the
    possibility that the amount of already locked memory may exceed the
    current limit.
    
    Fixes: c4b75479741c ("perf/core: Make the mlock accounting simple again")
    Suggested-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: <stable@vger.kernel.org>
    Acked-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Link: https://lkml.kernel.org/r/20200123181146.2238074-1-songliubraving@fb.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d663366beefb8fa80e168af11820e1fd73532623
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Fri Jan 31 19:08:59 2020 +0300

    clocksource: Prevent double add_timer_on() for watchdog_timer
    
    commit febac332a819f0e764aa4da62757ba21d18c182b upstream.
    
    Kernel crashes inside QEMU/KVM are observed:
    
      kernel BUG at kernel/time/timer.c:1154!
      BUG_ON(timer_pending(timer) || !timer->function) in add_timer_on().
    
    At the same time another cpu got:
    
      general protection fault: 0000 [#1] SMP PTI of poinson pointer 0xdead000000000200 in:
    
      __hlist_del at include/linux/list.h:681
      (inlined by) detach_timer at kernel/time/timer.c:818
      (inlined by) expire_timers at kernel/time/timer.c:1355
      (inlined by) __run_timers at kernel/time/timer.c:1686
      (inlined by) run_timer_softirq at kernel/time/timer.c:1699
    
    Unfortunately kernel logs are badly scrambled, stacktraces are lost.
    
    Printing the timer->function before the BUG_ON() pointed to
    clocksource_watchdog().
    
    The execution of clocksource_watchdog() can race with a sequence of
    clocksource_stop_watchdog() .. clocksource_start_watchdog():
    
    expire_timers()
     detach_timer(timer, true);
      timer->entry.pprev = NULL;
     raw_spin_unlock_irq(&base->lock);
     call_timer_fn
      clocksource_watchdog()
    
                                            clocksource_watchdog_kthread() or
                                            clocksource_unbind()
    
                                            spin_lock_irqsave(&watchdog_lock, flags);
                                            clocksource_stop_watchdog();
                                             del_timer(&watchdog_timer);
                                             watchdog_running = 0;
                                            spin_unlock_irqrestore(&watchdog_lock, flags);
    
                                            spin_lock_irqsave(&watchdog_lock, flags);
                                            clocksource_start_watchdog();
                                             add_timer_on(&watchdog_timer, ...);
                                             watchdog_running = 1;
                                            spin_unlock_irqrestore(&watchdog_lock, flags);
    
      spin_lock(&watchdog_lock);
      add_timer_on(&watchdog_timer, ...);
       BUG_ON(timer_pending(timer) || !timer->function);
        timer_pending() -> true
        BUG()
    
    I.e. inside clocksource_watchdog() watchdog_timer could be already armed.
    
    Check timer_pending() before calling add_timer_on(). This is sufficient as
    all operations are synchronized by watchdog_lock.
    
    Fixes: 75c5158f70c0 ("timekeeping: Update clocksource with stop_machine")
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/158048693917.4378.13823603769948933793.stgit@buzz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34cee9ad4f369a8a934e35ac9e2275ff2be2ef0c
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Wed Feb 5 11:08:01 2020 +1000

    cifs: fail i/o on soft mounts if sessionsetup errors out
    
    commit b0dd940e582b6a60296b9847a54012a4b080dc72 upstream.
    
    RHBZ: 1579050
    
    If we have a soft mount we should fail commands for session-setup
    failures (such as the password having changed/ account being deleted/ ...)
    and return an error back to the application.
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01c87ab1c6c1ac1c938f8b91efce55ecb808e30b
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Sat Dec 28 14:25:24 2019 +0800

    KVM: nVMX: vmread should not set rflags to specify success in case of #PF
    
    [ Upstream commit a4d956b9390418623ae5d07933e2679c68b6f83c ]
    
    In case writing to vmread destination operand result in a #PF, vmread
    should not call nested_vmx_succeed() to set rflags to specify success.
    Similar to as done in VMPTRST (See handle_vmptrst()).
    
    Reviewed-by: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f6e5b0409e186a15cced212580f55799c557d00d
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Dec 10 15:24:32 2019 -0800

    KVM: VMX: Add non-canonical check on writes to RTIT address MSRs
    
    [ Upstream commit fe6ed369fca98e99df55c932b85782a5687526b5 ]
    
    Reject writes to RTIT address MSRs if the data being written is a
    non-canonical address as the MSRs are subject to canonical checks, e.g.
    KVM will trigger an unchecked #GP when loading the values to hardware
    during pt_guest_enter().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6694249470b31b6dcebcef5f4b0acdd2219ee1f3
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Jan 7 16:12:10 2020 -0800

    KVM: x86/mmu: Apply max PA check for MMIO sptes to 32-bit KVM
    
    [ Upstream commit e30a7d623dccdb3f880fbcad980b0cb589a1da45 ]
    
    Remove the bogus 64-bit only condition from the check that disables MMIO
    spte optimization when the system supports the max PA, i.e. doesn't have
    any reserved PA bits.  32-bit KVM always uses PAE paging for the shadow
    MMU, and per Intel's SDM:
    
      PAE paging translates 32-bit linear addresses to 52-bit physical
      addresses.
    
    The kernel's restrictions on max physical addresses are limits on how
    much memory the kernel can reasonably use, not what physical addresses
    are supported by hardware.
    
    Fixes: ce88decffd17 ("KVM: MMU: mmio page fault support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 380a82b24cfee71b864c07e0d95e3ccc8b1e19f7
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Thu Jan 23 15:33:02 2020 -0500

    btrfs: flush write bio if we loop in extent_write_cache_pages
    
    [ Upstream commit 42ffb0bf584ae5b6b38f72259af1e0ee417ac77f ]
    
    There exists a deadlock with range_cyclic that has existed forever.  If
    we loop around with a bio already built we could deadlock with a writer
    who has the page locked that we're attempting to write but is waiting on
    a page in our bio to be written out.  The task traces are as follows
    
      PID: 1329874  TASK: ffff889ebcdf3800  CPU: 33  COMMAND: "kworker/u113:5"
       #0 [ffffc900297bb658] __schedule at ffffffff81a4c33f
       #1 [ffffc900297bb6e0] schedule at ffffffff81a4c6e3
       #2 [ffffc900297bb6f8] io_schedule at ffffffff81a4ca42
       #3 [ffffc900297bb708] __lock_page at ffffffff811f145b
       #4 [ffffc900297bb798] __process_pages_contig at ffffffff814bc502
       #5 [ffffc900297bb8c8] lock_delalloc_pages at ffffffff814bc684
       #6 [ffffc900297bb900] find_lock_delalloc_range at ffffffff814be9ff
       #7 [ffffc900297bb9a0] writepage_delalloc at ffffffff814bebd0
       #8 [ffffc900297bba18] __extent_writepage at ffffffff814bfbf2
       #9 [ffffc900297bba98] extent_write_cache_pages at ffffffff814bffbd
    
      PID: 2167901  TASK: ffff889dc6a59c00  CPU: 14  COMMAND:
      "aio-dio-invalid"
       #0 [ffffc9003b50bb18] __schedule at ffffffff81a4c33f
       #1 [ffffc9003b50bba0] schedule at ffffffff81a4c6e3
       #2 [ffffc9003b50bbb8] io_schedule at ffffffff81a4ca42
       #3 [ffffc9003b50bbc8] wait_on_page_bit at ffffffff811f24d6
       #4 [ffffc9003b50bc60] prepare_pages at ffffffff814b05a7
       #5 [ffffc9003b50bcd8] btrfs_buffered_write at ffffffff814b1359
       #6 [ffffc9003b50bdb0] btrfs_file_write_iter at ffffffff814b5933
       #7 [ffffc9003b50be38] new_sync_write at ffffffff8128f6a8
       #8 [ffffc9003b50bec8] vfs_write at ffffffff81292b9d
       #9 [ffffc9003b50bf00] ksys_pwrite64 at ffffffff81293032
    
    I used drgn to find the respective pages we were stuck on
    
    page_entry.page 0xffffea00fbfc7500 index 8148 bit 15 pid 2167901
    page_entry.page 0xffffea00f9bb7400 index 7680 bit 0 pid 1329874
    
    As you can see the kworker is waiting for bit 0 (PG_locked) on index
    7680, and aio-dio-invalid is waiting for bit 15 (PG_writeback) on index
    8148.  aio-dio-invalid has 7680, and the kworker epd looks like the
    following
    
      crash> struct extent_page_data ffffc900297bbbb0
      struct extent_page_data {
        bio = 0xffff889f747ed830,
        tree = 0xffff889eed6ba448,
        extent_locked = 0,
        sync_io = 0
      }
    
    Probably worth mentioning as well that it waits for writeback of the
    page to complete while holding a lock on it (at prepare_pages()).
    
    Using drgn I walked the bio pages looking for page
    0xffffea00fbfc7500 which is the one we're waiting for writeback on
    
      bio = Object(prog, 'struct bio', address=0xffff889f747ed830)
      for i in range(0, bio.bi_vcnt.value_()):
          bv = bio.bi_io_vec[i]
          if bv.bv_page.value_() == 0xffffea00fbfc7500:
              print("FOUND IT")
    
    which validated what I suspected.
    
    The fix for this is simple, flush the epd before we loop back around to
    the beginning of the file during writeout.
    
    Fixes: b293f02e1423 ("Btrfs: Add writepages support")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7cbb0333aed407c32be635bcd5802caa538466a5
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:46 2019 -0800

    KVM: x86: Protect kvm_lapic_reg_write() from Spectre-v1/L1TF attacks
    
    [ Upstream commit 4bf79cb089f6b1c6c632492c0271054ce52ad766 ]
    
    This fixes a Spectre-v1/L1TF vulnerability in kvm_lapic_reg_write().
    This function contains index computations based on the
    (attacker-controlled) MSR number.
    
    Fixes: 0105d1a52640 ("KVM: x2apic interface to lapic")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3ccf2fdfc89871042659ae1463fd1d9665fdfef
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:53 2019 -0800

    KVM: x86: Protect pmu_intel.c from Spectre-v1/L1TF attacks
    
    [ Upstream commit 66061740f1a487f4ed54fde75e724709f805da53 ]
    
    This fixes Spectre-v1/L1TF vulnerabilities in intel_find_fixed_event()
    and intel_rdpmc_ecx_to_pmc().
    kvm_rdpmc() (ancestor of intel_find_fixed_event()) and
    reprogram_fixed_counter() (ancestor of intel_rdpmc_ecx_to_pmc()) are
    exported symbols so KVM should treat them conservatively from a security
    perspective.
    
    Fixes: 25462f7f5295 ("KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 784258aaf66a4018dc277ecfa9f82e551e5abc49
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:43 2019 -0800

    KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks
    
    [ Upstream commit 14e32321f3606e4b0970200b6e5e47ee6f1e6410 ]
    
    This fixes a Spectre-v1/L1TF vulnerability in picdev_write().
    It replaces index computations based on the (attacked-controlled) port
    number with constants through a minor refactoring.
    
    Fixes: 85f455f7ddbe ("KVM: Add support for in-kernel PIC emulation")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5372b007fa8a4930163c7aa997750f6288540ba6
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Apr 7 10:50:38 2017 +0200

    KVM: x86: drop picdev_in_range()
    
    [ Upstream commit 9fecaa9e32ae7370878e5967d8874b6f58360b10 ]
    
    We already have the exact same checks a couple of lines below.
    
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92950b29290b90e01064ecbc502b57a1e277a818
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Wed Dec 18 14:28:25 2019 +0200

    drm: atmel-hlcdc: enable clock before configuring timing engine
    
    [ Upstream commit 2c1fb9d86f6820abbfaa38a6836157c76ccb4e7b ]
    
    Changing pixel clock source without having this clock source enabled
    will block the timing engine and the next operations after (in this case
    setting ATMEL_HLCDC_CFG(5) settings in atmel_hlcdc_crtc_mode_set_nofb()
    will fail). It is recomended (although in datasheet this is not present)
    to actually enabled pixel clock source before doing any changes on timing
    enginge (only SAM9X60 datasheet specifies that the peripheral clock and
    pixel clock must be enabled before using LCD controller).
    
    Fixes: 1a396789f65a ("drm: add Atmel HLCDC Display Controller support")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
    Cc: <stable@vger.kernel.org> # v4.0+
    Link: https://patchwork.freedesktop.org/patch/msgid/1576672109-22707-3-git-send-email-claudiu.beznea@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cf49df48e5e47b8d19e3dc3212170559c7904add
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Jan 22 12:23:20 2020 +0000

    Btrfs: fix race between adding and putting tree mod seq elements and nodes
    
    [ Upstream commit 7227ff4de55d931bbdc156c8ef0ce4f100c78a5b ]
    
    There is a race between adding and removing elements to the tree mod log
    list and rbtree that can lead to use-after-free problems.
    
    Consider the following example that explains how/why the problems happens:
    
    1) Task A has mod log element with sequence number 200. It currently is
       the only element in the mod log list;
    
    2) Task A calls btrfs_put_tree_mod_seq() because it no longer needs to
       access the tree mod log. When it enters the function, it initializes
       'min_seq' to (u64)-1. Then it acquires the lock 'tree_mod_seq_lock'
       before checking if there are other elements in the mod seq list.
       Since the list it empty, 'min_seq' remains set to (u64)-1. Then it
       unlocks the lock 'tree_mod_seq_lock';
    
    3) Before task A acquires the lock 'tree_mod_log_lock', task B adds
       itself to the mod seq list through btrfs_get_tree_mod_seq() and gets a
       sequence number of 201;
    
    4) Some other task, name it task C, modifies a btree and because there
       elements in the mod seq list, it adds a tree mod elem to the tree
       mod log rbtree. That node added to the mod log rbtree is assigned
       a sequence number of 202;
    
    5) Task B, which is doing fiemap and resolving indirect back references,
       calls btrfs get_old_root(), with 'time_seq' == 201, which in turn
       calls tree_mod_log_search() - the search returns the mod log node
       from the rbtree with sequence number 202, created by task C;
    
    6) Task A now acquires the lock 'tree_mod_log_lock', starts iterating
       the mod log rbtree and finds the node with sequence number 202. Since
       202 is less than the previously computed 'min_seq', (u64)-1, it
       removes the node and frees it;
    
    7) Task B still has a pointer to the node with sequence number 202, and
       it dereferences the pointer itself and through the call to
       __tree_mod_log_rewind(), resulting in a use-after-free problem.
    
    This issue can be triggered sporadically with the test case generic/561
    from fstests, and it happens more frequently with a higher number of
    duperemove processes. When it happens to me, it either freezes the VM or
    it produces a trace like the following before crashing:
    
      [ 1245.321140] general protection fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC PTI
      [ 1245.321200] CPU: 1 PID: 26997 Comm: pool Not tainted 5.5.0-rc6-btrfs-next-52 #1
      [ 1245.321235] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
      [ 1245.321287] RIP: 0010:rb_next+0x16/0x50
      [ 1245.321307] Code: ....
      [ 1245.321372] RSP: 0018:ffffa151c4d039b0 EFLAGS: 00010202
      [ 1245.321388] RAX: 6b6b6b6b6b6b6b6b RBX: ffff8ae221363c80 RCX: 6b6b6b6b6b6b6b6b
      [ 1245.321409] RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff8ae221363c80
      [ 1245.321439] RBP: ffff8ae20fcc4688 R08: 0000000000000002 R09: 0000000000000000
      [ 1245.321475] R10: ffff8ae20b120910 R11: 00000000243f8bb1 R12: 0000000000000038
      [ 1245.321506] R13: ffff8ae221363c80 R14: 000000000000075f R15: ffff8ae223f762b8
      [ 1245.321539] FS:  00007fdee1ec7700(0000) GS:ffff8ae236c80000(0000) knlGS:0000000000000000
      [ 1245.321591] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 1245.321614] CR2: 00007fded4030c48 CR3: 000000021da16003 CR4: 00000000003606e0
      [ 1245.321642] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 1245.321668] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [ 1245.321706] Call Trace:
      [ 1245.321798]  __tree_mod_log_rewind+0xbf/0x280 [btrfs]
      [ 1245.321841]  btrfs_search_old_slot+0x105/0xd00 [btrfs]
      [ 1245.321877]  resolve_indirect_refs+0x1eb/0xc60 [btrfs]
      [ 1245.321912]  find_parent_nodes+0x3dc/0x11b0 [btrfs]
      [ 1245.321947]  btrfs_check_shared+0x115/0x1c0 [btrfs]
      [ 1245.321980]  ? extent_fiemap+0x59d/0x6d0 [btrfs]
      [ 1245.322029]  extent_fiemap+0x59d/0x6d0 [btrfs]
      [ 1245.322066]  do_vfs_ioctl+0x45a/0x750
      [ 1245.322081]  ksys_ioctl+0x70/0x80
      [ 1245.322092]  ? trace_hardirqs_off_thunk+0x1a/0x1c
      [ 1245.322113]  __x64_sys_ioctl+0x16/0x20
      [ 1245.322126]  do_syscall_64+0x5c/0x280
      [ 1245.322139]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
      [ 1245.322155] RIP: 0033:0x7fdee3942dd7
      [ 1245.322177] Code: ....
      [ 1245.322258] RSP: 002b:00007fdee1ec6c88 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      [ 1245.322294] RAX: ffffffffffffffda RBX: 00007fded40210d8 RCX: 00007fdee3942dd7
      [ 1245.322314] RDX: 00007fded40210d8 RSI: 00000000c020660b RDI: 0000000000000004
      [ 1245.322337] RBP: 0000562aa89e7510 R08: 0000000000000000 R09: 00007fdee1ec6d44
      [ 1245.322369] R10: 0000000000000073 R11: 0000000000000246 R12: 00007fdee1ec6d48
      [ 1245.322390] R13: 00007fdee1ec6d40 R14: 00007fded40210d0 R15: 00007fdee1ec6d50
      [ 1245.322423] Modules linked in: ....
      [ 1245.323443] ---[ end trace 01de1e9ec5dff3cd ]---
    
    Fix this by ensuring that btrfs_put_tree_mod_seq() computes the minimum
    sequence number and iterates the rbtree while holding the lock
    'tree_mod_log_lock' in write mode. Also get rid of the 'tree_mod_seq_lock'
    lock, since it is now redundant.
    
    Fixes: bd989ba359f2ac ("Btrfs: add tree modification log functions")
    Fixes: 097b8a7c9e48e2 ("Btrfs: join tree mod log code with the code holding back delayed refs")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f81feffdbf54563dfa0becdd688e9d074cb99c49
Author: David Sterba <dsterba@suse.com>
Date:   Mon Mar 5 15:43:41 2018 +0100

    btrfs: remove trivial locking wrappers of tree mod log
    
    [ Upstream commit b1a09f1ec540408abf3a50d15dff5d9506932693 ]
    
    The wrappers are trivial and do not bring any extra value on top of the
    plain locking primitives.
    
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd79489af5bfb12ec2051863c361d18e599e74a0
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Mar 19 17:18:13 2019 +0000

    Btrfs: fix assertion failure on fsync with NO_HOLES enabled
    
    [ Upstream commit 0ccc3876e4b2a1559a4dbe3126dda4459d38a83b ]
    
    Back in commit a89ca6f24ffe4 ("Btrfs: fix fsync after truncate when
    no_holes feature is enabled") I added an assertion that is triggered when
    an inline extent is found to assert that the length of the (uncompressed)
    data the extent represents is the same as the i_size of the inode, since
    that is true most of the time I couldn't find or didn't remembered about
    any exception at that time. Later on the assertion was expanded twice to
    deal with a case of a compressed inline extent representing a range that
    matches the sector size followed by an expanding truncate, and another
    case where fallocate can update the i_size of the inode without adding
    or updating existing extents (if the fallocate range falls entirely within
    the first block of the file). These two expansion/fixes of the assertion
    were done by commit 7ed586d0a8241 ("Btrfs: fix assertion on fsync of
    regular file when using no-holes feature") and commit 6399fb5a0b69a
    ("Btrfs: fix assertion failure during fsync in no-holes mode").
    These however missed the case where an falloc expands the i_size of an
    inode to exactly the sector size and inline extent exists, for example:
    
     $ mkfs.btrfs -f -O no-holes /dev/sdc
     $ mount /dev/sdc /mnt
    
     $ xfs_io -f -c "pwrite -S 0xab 0 1096" /mnt/foobar
     wrote 1096/1096 bytes at offset 0
     1 KiB, 1 ops; 0.0002 sec (4.448 MiB/sec and 4255.3191 ops/sec)
    
     $ xfs_io -c "falloc 1096 3000" /mnt/foobar
     $ xfs_io -c "fsync" /mnt/foobar
     Segmentation fault
    
     $ dmesg
     [701253.602385] assertion failed: len == i_size || (len == fs_info->sectorsize && btrfs_file_extent_compression(leaf, extent) != BTRFS_COMPRESS_NONE) || (len < i_size && i_size < fs_info->sectorsize), file: fs/btrfs/tree-log.c, line: 4727
     [701253.602962] ------------[ cut here ]------------
     [701253.603224] kernel BUG at fs/btrfs/ctree.h:3533!
     [701253.603503] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
     [701253.603774] CPU: 2 PID: 7192 Comm: xfs_io Tainted: G        W         5.0.0-rc8-btrfs-next-45 #1
     [701253.604054] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.2-0-gf9626ccb91-prebuilt.qemu-project.org 04/01/2014
     [701253.604650] RIP: 0010:assfail.constprop.23+0x18/0x1a [btrfs]
     (...)
     [701253.605591] RSP: 0018:ffffbb48c186bc48 EFLAGS: 00010286
     [701253.605914] RAX: 00000000000000de RBX: ffff921d0a7afc08 RCX: 0000000000000000
     [701253.606244] RDX: 0000000000000000 RSI: ffff921d36b16868 RDI: ffff921d36b16868
     [701253.606580] RBP: ffffbb48c186bcf0 R08: 0000000000000000 R09: 0000000000000000
     [701253.606913] R10: 0000000000000003 R11: 0000000000000000 R12: ffff921d05d2de18
     [701253.607247] R13: ffff921d03b54000 R14: 0000000000000448 R15: ffff921d059ecf80
     [701253.607769] FS:  00007f14da906700(0000) GS:ffff921d36b00000(0000) knlGS:0000000000000000
     [701253.608163] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [701253.608516] CR2: 000056087ea9f278 CR3: 00000002268e8001 CR4: 00000000003606e0
     [701253.608880] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     [701253.609250] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     [701253.609608] Call Trace:
     [701253.609994]  btrfs_log_inode+0xdfb/0xe40 [btrfs]
     [701253.610383]  btrfs_log_inode_parent+0x2be/0xa60 [btrfs]
     [701253.610770]  ? do_raw_spin_unlock+0x49/0xc0
     [701253.611150]  btrfs_log_dentry_safe+0x4a/0x70 [btrfs]
     [701253.611537]  btrfs_sync_file+0x3b2/0x440 [btrfs]
     [701253.612010]  ? do_sysinfo+0xb0/0xf0
     [701253.612552]  do_fsync+0x38/0x60
     [701253.612988]  __x64_sys_fsync+0x10/0x20
     [701253.613360]  do_syscall_64+0x60/0x1b0
     [701253.613733]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
     [701253.614103] RIP: 0033:0x7f14da4e66d0
     (...)
     [701253.615250] RSP: 002b:00007fffa670fdb8 EFLAGS: 00000246 ORIG_RAX: 000000000000004a
     [701253.615647] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f14da4e66d0
     [701253.616047] RDX: 000056087ea9c260 RSI: 000056087ea9c260 RDI: 0000000000000003
     [701253.616450] RBP: 0000000000000001 R08: 0000000000000020 R09: 0000000000000010
     [701253.616854] R10: 000000000000009b R11: 0000000000000246 R12: 000056087ea9c260
     [701253.617257] R13: 000056087ea9c240 R14: 0000000000000000 R15: 000056087ea9dd10
     (...)
     [701253.619941] ---[ end trace e088d74f132b6da5 ]---
    
    Updating the assertion again to allow for this particular case would result
    in a meaningless assertion, plus there is currently no risk of logging
    content that would result in any corruption after a log replay if the size
    of the data encoded in an inline extent is greater than the inode's i_size
    (which is not currently possibe either with or without compression),
    therefore just remove the assertion.
    
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a93b2fce19d7331f9f19d1abb9a534ffa94e3476
Author: Trond Myklebust <trondmy@gmail.com>
Date:   Sun Feb 2 17:53:54 2020 -0500

    NFS: Directory page cache pages need to be locked when read
    
    [ Upstream commit 114de38225d9b300f027e2aec9afbb6e0def154b ]
    
    When a NFS directory page cache page is removed from the page cache,
    its contents are freed through a call to nfs_readdir_clear_array().
    To prevent the removal of the page cache entry until after we've
    finished reading it, we must take the page lock.
    
    Fixes: 11de3b11e08c ("NFS: Fix a memory leak in nfs_readdir")
    Cc: stable@vger.kernel.org # v2.6.37+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9818f3668fa1ee489c921966d4fd61e5ef2213bd
Author: Thomas Meyer <thomas@m3y3r.de>
Date:   Sat Oct 7 16:02:21 2017 +0200

    NFS: Fix bool initialization/comparison
    
    [ Upstream commit 6089dd0d731028531fb1148be9fd33274ff90da4 ]
    
    Bool initializations should use true and false. Bool tests don't need
    comparisons.
    
    Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b0223f9c3a82bec63a41f2b85029ef2bdae76d4
Author: Trond Myklebust <trondmy@gmail.com>
Date:   Sun Feb 2 17:53:53 2020 -0500

    NFS: Fix memory leaks and corruption in readdir
    
    [ Upstream commit 4b310319c6a8ce708f1033d57145e2aa027a883c ]
    
    nfs_readdir_xdr_to_array() must not exit without having initialised
    the array, so that the page cache deletion routines can safely
    call nfs_readdir_clear_array().
    Furthermore, we should ensure that if we exit nfs_readdir_filler()
    with an error, we free up any page contents to prevent a leak
    if we try to fill the page again.
    
    Fixes: 11de3b11e08c ("NFS: Fix a memory leak in nfs_readdir")
    Cc: stable@vger.kernel.org # v2.6.37+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5fb06a8a2334b68085cde119637a680050a6687
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 4 19:26:05 2020 -0800

    bonding/alb: properly access headers in bond_alb_xmit()
    
    [ Upstream commit 38f88c45404293bbc027b956def6c10cbd45c616 ]
    
    syzbot managed to send an IPX packet through bond_alb_xmit()
    and af_packet and triggered a use-after-free.
    
    First, bond_alb_xmit() was using ipx_hdr() helper to reach
    the IPX header, but ipx_hdr() was using the transport offset
    instead of the network offset. In the particular syzbot
    report transport offset was 0xFFFF
    
    This patch removes ipx_hdr() since it was only (mis)used from bonding.
    
    Then we need to make sure IPv4/IPv6/IPX headers are pulled
    in skb->head before dereferencing anything.
    
    BUG: KASAN: use-after-free in bond_alb_xmit+0x153a/0x1590 drivers/net/bonding/bond_alb.c:1452
    Read of size 2 at addr ffff8801ce56dfff by task syz-executor.2/18108
     (if (ipx_hdr(skb)->ipx_checksum != IPX_NO_CHECKSUM) ...)
    
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     [<ffffffff8441fc42>] __dump_stack lib/dump_stack.c:17 [inline]
     [<ffffffff8441fc42>] dump_stack+0x14d/0x20b lib/dump_stack.c:53
     [<ffffffff81a7dec4>] print_address_description+0x6f/0x20b mm/kasan/report.c:282
     [<ffffffff81a7e0ec>] kasan_report_error mm/kasan/report.c:380 [inline]
     [<ffffffff81a7e0ec>] kasan_report mm/kasan/report.c:438 [inline]
     [<ffffffff81a7e0ec>] kasan_report.cold+0x8c/0x2a0 mm/kasan/report.c:422
     [<ffffffff81a7dc4f>] __asan_report_load_n_noabort+0xf/0x20 mm/kasan/report.c:469
     [<ffffffff82c8c00a>] bond_alb_xmit+0x153a/0x1590 drivers/net/bonding/bond_alb.c:1452
     [<ffffffff82c60c74>] __bond_start_xmit drivers/net/bonding/bond_main.c:4199 [inline]
     [<ffffffff82c60c74>] bond_start_xmit+0x4f4/0x1570 drivers/net/bonding/bond_main.c:4224
     [<ffffffff83baa558>] __netdev_start_xmit include/linux/netdevice.h:4525 [inline]
     [<ffffffff83baa558>] netdev_start_xmit include/linux/netdevice.h:4539 [inline]
     [<ffffffff83baa558>] xmit_one net/core/dev.c:3611 [inline]
     [<ffffffff83baa558>] dev_hard_start_xmit+0x168/0x910 net/core/dev.c:3627
     [<ffffffff83bacf35>] __dev_queue_xmit+0x1f55/0x33b0 net/core/dev.c:4238
     [<ffffffff83bae3a8>] dev_queue_xmit+0x18/0x20 net/core/dev.c:4278
     [<ffffffff84339189>] packet_snd net/packet/af_packet.c:3226 [inline]
     [<ffffffff84339189>] packet_sendmsg+0x4919/0x70b0 net/packet/af_packet.c:3252
     [<ffffffff83b1ac0c>] sock_sendmsg_nosec net/socket.c:673 [inline]
     [<ffffffff83b1ac0c>] sock_sendmsg+0x12c/0x160 net/socket.c:684
     [<ffffffff83b1f5a2>] __sys_sendto+0x262/0x380 net/socket.c:1996
     [<ffffffff83b1f700>] SYSC_sendto net/socket.c:2008 [inline]
     [<ffffffff83b1f700>] SyS_sendto+0x40/0x60 net/socket.c:2004
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a043002ab40a204da54ea38d7224b3f9e2fd31cf
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Feb 5 12:32:04 2020 -0800

    net: systemport: Avoid RBUF stuck in Wake-on-LAN mode
    
    [ Upstream commit 263a425a482fc495d6d3f9a29b9103a664c38b69 ]
    
    After a number of suspend and resume cycles, it is possible for the RBUF
    to be stuck in Wake-on-LAN mode, despite the MPD enable bit being
    cleared which instructed the RBUF to exit that mode.
    
    Avoid creating that problematic condition by clearing the RX_EN and
    TX_EN bits in the UniMAC prior to disable the Magic Packet Detector
    logic which is guaranteed to make the RBUF exit Wake-on-LAN mode.
    
    Fixes: 83e82f4c706b ("net: systemport: add Wake-on-LAN support")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04c77a029f02ce6e73550bdb32efbee29769c9af
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Fri Jan 17 22:59:22 2020 +0100

    mfd: rn5t618: Mark ADC control register volatile
    
    commit 2f3dc25c0118de03a00ddc88b61f7216854f534d upstream.
    
    There is a bit which gets cleared after conversion.
    
    Fixes: 9bb9e29c78f8 ("mfd: Add Ricoh RN5T618 PMIC core driver")
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac47d815bf585e5ae33a3face9a6dd00ef2283dd
Author: Marco Felsch <m.felsch@pengutronix.de>
Date:   Wed Jan 8 10:57:02 2020 +0100

    mfd: da9062: Fix watchdog compatible string
    
    commit 1112ba02ff1190ca9c15a912f9269e54b46d2d82 upstream.
    
    The watchdog driver compatible is "dlg,da9062-watchdog" and not
    "dlg,da9062-wdt". Therefore the mfd-core can't populate the of_node and
    fwnode. As result the watchdog driver can't parse the devicetree.
    
    Fixes: 9b40b030c4ad ("mfd: da9062: Supply core driver")
    Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
    Acked-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6b9ef03918192ef14967ab91a736ff0411b6419
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Dec 9 14:16:23 2019 -0700

    net: tulip: Adjust indentation in {dmfe, uli526x}_init_module
    
    commit fe06bf3d83ef0d92f35a24e03297172e92ce9ce3 upstream.
    
    Clang warns:
    
    ../drivers/net/ethernet/dec/tulip/uli526x.c:1812:3: warning: misleading
    indentation; statement is not part of the previous 'if'
    [-Wmisleading-indentation]
            switch (mode) {
            ^
    ../drivers/net/ethernet/dec/tulip/uli526x.c:1809:2: note: previous
    statement is here
            if (cr6set)
            ^
    1 warning generated.
    
    ../drivers/net/ethernet/dec/tulip/dmfe.c:2217:3: warning: misleading
    indentation; statement is not part of the previous 'if'
    [-Wmisleading-indentation]
            switch(mode) {
            ^
    ../drivers/net/ethernet/dec/tulip/dmfe.c:2214:2: note: previous
    statement is here
            if (cr6set)
            ^
    1 warning generated.
    
    This warning occurs because there is a space before the tab on these
    lines. Remove them so that the indentation is consistent with the Linux
    kernel coding style and clang no longer warns.
    
    While we are here, adjust the default block in dmfe_init_module to have
    a proper break between the label and assignment and add a space between
    the switch and opening parentheses to avoid a checkpatch warning.
    
    Fixes: e1c3e5014040 ("[PATCH] initialisation cleanup for ULI526x-net-driver")
    Link: https://github.com/ClangBuiltLinux/linux/issues/795
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d858b06152e9c389ac2938b7fdf255708197a15
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Dec 9 14:50:27 2019 -0700

    net: smc911x: Adjust indentation in smc911x_phy_configure
    
    commit 5c61e223004b3b5c3f1dd25718e979bc17a3b12d upstream.
    
    Clang warns:
    
    ../drivers/net/ethernet/smsc/smc911x.c:939:3: warning: misleading
    indentation; statement is not part of the previous 'if'
    [-Wmisleading-indentation]
             if (!lp->ctl_rfduplx)
             ^
    ../drivers/net/ethernet/smsc/smc911x.c:936:2: note: previous statement
    is here
            if (lp->ctl_rspeed != 100)
            ^
    1 warning generated.
    
    This warning occurs because there is a space after the tab on this line.
    Remove it so that the indentation is consistent with the Linux kernel
    coding style and clang no longer warns.
    
    Fixes: 0a0c72c9118c ("[PATCH] RE: [PATCH 1/1] net driver: Add support for SMSC LAN911x line of ethernet chips")
    Link: https://github.com/ClangBuiltLinux/linux/issues/796
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4a73cb96d41b0a725f06521d57923a66ec15f28
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Dec 9 15:38:59 2019 -0700

    ppp: Adjust indentation into ppp_async_input
    
    commit 08cbc75f96029d3092664213a844a5e25523aa35 upstream.
    
    Clang warns:
    
    ../drivers/net/ppp/ppp_async.c:877:6: warning: misleading indentation;
    statement is not part of the previous 'if' [-Wmisleading-indentation]
                                    ap->rpkt = skb;
                                    ^
    ../drivers/net/ppp/ppp_async.c:875:5: note: previous statement is here
                                    if (!skb)
                                    ^
    1 warning generated.
    
    This warning occurs because there is a space before the tab on this
    line. Clean up this entire block's indentation so that it is consistent
    with the Linux kernel coding style and clang no longer warns.
    
    Fixes: 6722e78c9005 ("[PPP]: handle misaligned accesses")
    Link: https://github.com/ClangBuiltLinux/linux/issues/800
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe73a53340afe097293c7a9e1104c20c250e657d
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Dec 17 18:21:52 2019 -0700

    NFC: pn544: Adjust indentation in pn544_hci_check_presence
    
    commit 5080832627b65e3772a35d1dced68c64e2b24442 upstream.
    
    Clang warns
    
    ../drivers/nfc/pn544/pn544.c:696:4: warning: misleading indentation;
    statement is not part of the previous 'if' [-Wmisleading-indentation]
                     return nfc_hci_send_cmd(hdev, NFC_HCI_RF_READER_A_GATE,
                     ^
    ../drivers/nfc/pn544/pn544.c:692:3: note: previous statement is here
                    if (target->nfcid1_len != 4 && target->nfcid1_len != 7 &&
                    ^
    1 warning generated.
    
    This warning occurs because there is a space after the tab on this line.
    Remove it so that the indentation is consistent with the Linux kernel
    coding style and clang no longer warns.
    
    Fixes: da052850b911 ("NFC: Add pn544 presence check for different targets")
    Link: https://github.com/ClangBuiltLinux/linux/issues/814
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cae3c51b341e89d92480e51e4f8314d60b0b5d38
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Dec 9 13:03:38 2019 -0700

    powerpc/44x: Adjust indentation in ibm4xx_denali_fixup_memsize
    
    commit c3aae14e5d468d18dbb5d7c0c8c7e2968cc14aad upstream.
    
    Clang warns:
    
    ../arch/powerpc/boot/4xx.c:231:3: warning: misleading indentation;
    statement is not part of the previous 'else' [-Wmisleading-indentation]
            val = SDRAM0_READ(DDR0_42);
            ^
    ../arch/powerpc/boot/4xx.c:227:2: note: previous statement is here
            else
            ^
    
    This is because there is a space at the beginning of this line; remove
    it so that the indentation is consistent according to the Linux kernel
    coding style and clang no longer warns.
    
    Fixes: d23f5099297c ("[POWERPC] 4xx: Adds decoding of 440SPE memory size to boot wrapper library")
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://github.com/ClangBuiltLinux/linux/issues/780
    Link: https://lore.kernel.org/r/20191209200338.12546-1-natechancellor@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 607f79ef499e46d13169a89049177a2a49a401dc
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Dec 17 20:19:31 2019 -0700

    ext2: Adjust indentation in ext2_fill_super
    
    commit d9e9866803f7b6c3fdd35d345e97fb0b2908bbbc upstream.
    
    Clang warns:
    
    ../fs/ext2/super.c:1076:3: warning: misleading indentation; statement is
    not part of the previous 'if' [-Wmisleading-indentation]
            sbi->s_groups_count = ((le32_to_cpu(es->s_blocks_count) -
            ^
    ../fs/ext2/super.c:1074:2: note: previous statement is here
            if (EXT2_BLOCKS_PER_GROUP(sb) == 0)
            ^
    1 warning generated.
    
    This warning occurs because there is a space before the tab on this
    line. Remove it so that the indentation is consistent with the Linux
    kernel coding style and clang no longer warns.
    
    Fixes: 41f04d852e35 ("[PATCH] ext2: fix mounts at 16T")
    Link: https://github.com/ClangBuiltLinux/linux/issues/827
    Link: https://lore.kernel.org/r/20191218031930.31393-1-natechancellor@gmail.com
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 889ab8591489dd89f507d605b8f5bed6b19812b2
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Dec 17 18:52:52 2019 -0700

    scsi: qla4xxx: Adjust indentation in qla4xxx_mem_free
    
    commit aa8679736a82386551eb9f3ea0e6ebe2c0e99104 upstream.
    
    Clang warns:
    
    ../drivers/scsi/qla4xxx/ql4_os.c:4148:3: warning: misleading
    indentation; statement is not part of the previous 'if'
    [-Wmisleading-indentation]
             if (ha->fw_dump)
             ^
    ../drivers/scsi/qla4xxx/ql4_os.c:4144:2: note: previous statement is
    here
            if (ha->queues)
            ^
    1 warning generated.
    
    This warning occurs because there is a space after the tab on this
    line.  Remove it so that the indentation is consistent with the Linux
    kernel coding style and clang no longer warns.
    
    Fixes: 068237c87c64 ("[SCSI] qla4xxx: Capture minidump for ISP82XX on firmware failure")
    Link: https://github.com/ClangBuiltLinux/linux/issues/819
    Link: https://lore.kernel.org/r/20191218015252.20890-1-natechancellor@gmail.com
    Acked-by: Manish Rangankar <mrangankar@marvell.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6dc22aa93e85ae961716e1aa1413d94e8af981a
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Dec 17 18:47:26 2019 -0700

    scsi: csiostor: Adjust indentation in csio_device_reset
    
    commit a808a04c861782e31fc30e342a619c144aaee14a upstream.
    
    Clang warns:
    
    ../drivers/scsi/csiostor/csio_scsi.c:1386:3: warning: misleading
    indentation; statement is not part of the previous 'if'
    [-Wmisleading-indentation]
             csio_lnodes_exit(hw, 1);
             ^
    ../drivers/scsi/csiostor/csio_scsi.c:1382:2: note: previous statement is
    here
            if (*buf != '1')
            ^
    1 warning generated.
    
    This warning occurs because there is a space after the tab on this
    line.  Remove it so that the indentation is consistent with the Linux
    kernel coding style and clang no longer warns.
    
    Fixes: a3667aaed569 ("[SCSI] csiostor: Chelsio FCoE offload driver")
    Link: https://github.com/ClangBuiltLinux/linux/issues/818
    Link: https://lore.kernel.org/r/20191218014726.8455-1-natechancellor@gmail.com
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60e76bb25bf1244c67523fdc17ddfa10a352f272
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Wed Dec 18 16:49:05 2019 -0800

    scsi: qla2xxx: Fix the endianness of the qla82xx_get_fw_size() return type
    
    commit 3f5f7335e5e234e340b48ecb24c2aba98a61f934 upstream.
    
    Since qla82xx_get_fw_size() returns a number in CPU-endian format, change
    its return type from __le32 into u32. This patch does not change any
    functionality.
    
    Fixes: 9c2b297572bf ("[SCSI] qla2xxx: Support for loading Unified ROM Image (URI) format firmware file.")
    Cc: Himanshu Madhani <hmadhani@marvell.com>
    Cc: Quinn Tran <qutran@marvell.com>
    Cc: Martin Wilck <mwilck@suse.com>
    Cc: Daniel Wagner <dwagner@suse.de>
    Cc: Roman Bolshakov <r.bolshakov@yadro.com>
    Link: https://lore.kernel.org/r/20191219004905.39586-1-bvanassche@acm.org
    Reviewed-by: Daniel Wagner <dwagner@suse.de>
    Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a109582f5e10cfcc6b0cc9561403a3c1cc343d2f
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Wed Dec 18 13:54:48 2019 -0800

    KVM: x86: Free wbinvd_dirty_mask if vCPU creation fails
    
    commit 16be9ddea268ad841457a59109963fff8c9de38d upstream.
    
    Free the vCPU's wbinvd_dirty_mask if vCPU creation fails after
    kvm_arch_vcpu_init(), e.g. when installing the vCPU's file descriptor.
    Do the freeing by calling kvm_arch_vcpu_free() instead of open coding
    the freeing.  This adds a likely superfluous, but ultimately harmless,
    call to kvmclock_reset(), which only clears vcpu->arch.pv_time_enabled.
    Using kvm_arch_vcpu_free() allows for additional cleanup in the future.
    
    Fixes: f5f48ee15c2ee ("KVM: VMX: Execute WBINVD to keep data consistency with assigned devices")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2babdb7e020191379588707593be2de0835ec0a
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Wed Dec 18 13:54:47 2019 -0800

    KVM: PPC: Book3S PR: Free shared page if mmu initialization fails
    
    commit cb10bf9194f4d2c5d830eddca861f7ca0fecdbb4 upstream.
    
    Explicitly free the shared page if kvmppc_mmu_init() fails during
    kvmppc_core_vcpu_create(), as the page is freed only in
    kvmppc_core_vcpu_free(), which is not reached via kvm_vcpu_uninit().
    
    Fixes: 96bc451a15329 ("KVM: PPC: Introduce shared page")
    Cc: stable@vger.kernel.org
    Reviewed-by: Greg Kurz <groug@kaod.org>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c30c3cc99498312f8dac5a3efbc6cf8d7cda6b6
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Wed Dec 18 13:54:46 2019 -0800

    KVM: PPC: Book3S HV: Uninit vCPU if vcore creation fails
    
    commit 1a978d9d3e72ddfa40ac60d26301b154247ee0bc upstream.
    
    Call kvm_vcpu_uninit() if vcore creation fails to avoid leaking any
    resources allocated by kvm_vcpu_init(), i.e. the vcpu->run page.
    
    Fixes: 371fefd6f2dc4 ("KVM: PPC: Allow book3s_hv guests to use SMT processor modes")
    Cc: stable@vger.kernel.org
    Reviewed-by: Greg Kurz <groug@kaod.org>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1510279e2a0ca4c870123b066e83135f2a3ac5c1
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:47 2019 -0800

    KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks
    
    commit 25a5edea71b7c154b6a0b8cec14c711cafa31d26 upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in fixed_msr_to_seg_unit().
    This function contains index computations based on the
    (attacker-controlled) MSR number.
    
    Fixes: de9aef5e1ad6 ("KVM: MTRR: introduce fixed_mtrr_segment table")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d216f65c74ddf8ae6547f8a9325f9ad15f688c97
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:41 2019 -0800

    KVM: x86: Protect x86_decode_insn from Spectre-v1/L1TF attacks
    
    commit 3c9053a2cae7ba2ba73766a34cea41baa70f57f7 upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in x86_decode_insn().
    kvm_emulate_instruction() (an ancestor of x86_decode_insn()) is an exported
    symbol, so KVM should treat it conservatively from a security perspective.
    
    Fixes: 045a282ca415 ("KVM: emulator: implement fninit, fnstsw, fnstcw")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0126c3ef8a3ff657bdd34c220111fdf3a365e655
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:49 2019 -0800

    KVM: x86: Protect MSR-based index computations from Spectre-v1/L1TF attacks in x86.c
    
    commit 6ec4c5eee1750d5d17951c4e1960d953376a0dda upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in set_msr_mce() and
    get_msr_mce().
    Both functions contain index computations based on the
    (attacker-controlled) MSR number.
    
    Fixes: 890ca9aefa78 ("KVM: Add MCE support")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd40357d695071fcaa4e34d3e3cb2e3004aed233
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:44 2019 -0800

    KVM: x86: Protect ioapic_read_indirect() from Spectre-v1/L1TF attacks
    
    commit 8c86405f606ca8508b8d9280680166ca26723695 upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in ioapic_read_indirect().
    This function contains index computations based on the
    (attacker-controlled) IOREGSEL register.
    
    Fixes: a2c118bfab8b ("KVM: Fix bounds checking in ioapic indirect register reads (CVE-2013-1798)")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a329907b3926edb3917b21d5cfef3ba653ff52c
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:48 2019 -0800

    KVM: x86: Protect MSR-based index computations in pmu.h from Spectre-v1/L1TF attacks
    
    commit 13c5183a4e643cc2b03a22d0e582c8e17bb7457d upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in the get_gp_pmc() and
    get_fixed_pmc() functions.
    They both contain index computations based on the (attacker-controlled)
    MSR number.
    
    Fixes: 25462f7f5295 ("KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ad5477d0e496bc28c947d2671c2d166c3d2f91f
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:45 2019 -0800

    KVM: x86: Protect ioapic_write_indirect() from Spectre-v1/L1TF attacks
    
    commit 670564559ca35b439c8d8861fc399451ddf95137 upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in ioapic_write_indirect().
    This function contains index computations based on the
    (attacker-controlled) IOREGSEL register.
    
    This patch depends on patch
    "KVM: x86: Protect ioapic_read_indirect() from Spectre-v1/L1TF attacks".
    
    Fixes: 70f93dae32ac ("KVM: Use temporary variable to shorten lines.")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32779dea5a835c3a904030507a08944dce9e51a9
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:42 2019 -0800

    KVM: x86: Protect kvm_hv_msr_[get|set]_crash_data() from Spectre-v1/L1TF attacks
    
    commit 8618793750071d66028584a83ed0b4fa7eb4f607 upstream.
    
    This fixes Spectre-v1/L1TF vulnerabilities in kvm_hv_msr_get_crash_data()
    and kvm_hv_msr_set_crash_data().
    These functions contain index computations that use the
    (attacker-controlled) MSR number.
    
    Fixes: e7d9513b60e8 ("kvm/x86: added hyper-v crash msrs into kvm hyperv context")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90dcf223d1f191a9d0c0b39226018834bf45695c
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:52 2019 -0800

    KVM: x86: Protect DR-based index computations from Spectre-v1/L1TF attacks
    
    commit ea740059ecb37807ba47b84b33d1447435a8d868 upstream.
    
    This fixes a Spectre-v1/L1TF vulnerability in __kvm_set_dr() and
    kvm_get_dr().
    Both kvm_get_dr() and kvm_set_dr() (a wrapper of __kvm_set_dr()) are
    exported symbols so KVM should tream them conservatively from a security
    perspective.
    
    Fixes: 020df0794f57 ("KVM: move DR register access handling into generic code")
    
    Signed-off-by: Nick Finco <nifi@google.com>
    Signed-off-by: Marios Pomonis <pomonis@google.com>
    Reviewed-by: Andrew Honig <ahonig@google.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b158e93c85fbc5880351e4082a1d1dcbfa6f183
Author: Marios Pomonis <pomonis@google.com>
Date:   Wed Dec 11 12:47:50 2019 -0800

    KVM: x86: Refactor prefix decoding to prevent Spectre-v1/L1TF attacks
    
    commit 125ffc5e0a56a3eded608dc51e09d5ebf72cf652 upstream.
    
    This fixes Spectre-v1/L1TF vulnerabilities in
    vmx_read_guest_seg_selector(), vmx_read_guest_seg_base(),
    vmx_read_guest_seg_limit() and vmx_read_guest_seg_ar().  When
    invoked from emulation, these functions contain index computations
    based on the (attacker-influenced) segment value.  Using constants
    prevents the attack.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9112b448e4e1069c16e4f57474dd4ba1f62ec79
Author: Roberto Bergantinos Corpas <rbergant@redhat.com>
Date:   Tue Feb 4 11:32:56 2020 +0100

    sunrpc: expiry_time should be seconds not timeval
    
    commit 3d96208c30f84d6edf9ab4fac813306ac0d20c10 upstream.
    
    When upcalling gssproxy, cache_head.expiry_time is set as a
    timeval, not seconds since boot. As such, RPC cache expiry
    logic will not clean expired objects created under
    auth.rpcsec.context cache.
    
    This has proven to cause kernel memory leaks on field. Using
    64 bit variants of getboottime/timespec
    
    Expiration times have worked this way since 2010's c5b29f885afe "sunrpc:
    use seconds since boot in expiry cache".  The gssproxy code introduced
    in 2012 added gss_proxy_save_rsc and introduced the bug.  That's a while
    for this to lurk, but it required a bit of an extreme case to make it
    obvious.
    
    Signed-off-by: Roberto Bergantinos Corpas <rbergant@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 030d794bf498 "SUNRPC: Use gssproxy upcall for server..."
    Tested-By: Frank Sorenson <sorenson@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c31a8186c195116d8f9b8628bb2650c051015613
Author: Brian Norris <briannorris@chromium.org>
Date:   Mon Jan 6 14:42:12 2020 -0800

    mwifiex: fix unbalanced locking in mwifiex_process_country_ie()
    
    commit 65b1aae0d9d5962faccc06bdb8e91a2a0b09451c upstream.
    
    We called rcu_read_lock(), so we need to call rcu_read_unlock() before
    we return.
    
    Fixes: 3d94a4a8373b ("mwifiex: fix possible heap overflow in mwifiex_process_country_ie()")
    Cc: stable@vger.kernel.org
    Cc: huangwen <huangwenabc@gmail.com>
    Cc: Ganapathi Bhat <ganapathi.bhat@nxp.com>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Acked-by: Ganapathi Bhat <ganapathi.bhat@nxp.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c921a74eda87ab4144e897a848ab2ff49f5fc6d5
Author: Stephen Warren <swarren@nvidia.com>
Date:   Thu Oct 3 14:50:31 2019 -0600

    ARM: tegra: Enable PLLP bypass during Tegra124 LP1
    
    commit 1a3388d506bf5b45bb283e6a4c4706cfb4897333 upstream.
    
    For a little over a year, U-Boot has configured the flow controller to
    perform automatic RAM re-repair on off->on power transitions of the CPU
    rail[1]. This is mandatory for correct operation of Tegra124. However,
    RAM re-repair relies on certain clocks, which the kernel must enable and
    leave running. PLLP is one of those clocks. This clock is shut down
    during LP1 in order to save power. Enable bypass (which I believe routes
    osc_div_clk, essentially the crystal clock, to the PLL output) so that
    this clock signal toggles even though the PLL is not active. This is
    required so that LP1 power mode (system suspend) operates correctly.
    
    The bypass configuration must then be undone when resuming from LP1, so
    that all peripheral clocks run at the expected rate. Without this, many
    peripherals won't work correctly; for example, the UART baud rate would
    be incorrect.
    
    NVIDIA's downstream kernel code only does this if not compiled for
    Tegra30, so the added code is made conditional upon the chip ID.
    NVIDIA's downstream code makes this change conditional upon the active
    CPU cluster. The upstream kernel currently doesn't support cluster
    switching, so this patch doesn't test the active CPU cluster ID.
    
    [1] 3cc7942a4ae5 ARM: tegra: implement RAM repair
    
    Reported-by: Jonathan Hunter <jonathanh@nvidia.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Stephen Warren <swarren@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 881e7db9ed43172753cddb22fc5dc287f43319cf
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Jan 17 08:57:51 2020 -0500

    btrfs: set trans->drity in btrfs_commit_transaction
    
    commit d62b23c94952e78211a383b7d90ef0afbd9a3717 upstream.
    
    If we abort a transaction we have the following sequence
    
    if (!trans->dirty && list_empty(&trans->new_bgs))
            return;
    WRITE_ONCE(trans->transaction->aborted, err);
    
    The idea being if we didn't modify anything with our trans handle then
    we don't really need to abort the whole transaction, maybe the other
    trans handles are fine and we can carry on.
    
    However in the case of create_snapshot we add a pending_snapshot object
    to our transaction and then commit the transaction.  We don't actually
    modify anything.  sync() behaves the same way, attach to an existing
    transaction and commit it.  This means that if we have an IO error in
    the right places we could abort the committing transaction with our
    trans->dirty being not set and thus not set transaction->aborted.
    
    This is a problem because in the create_snapshot() case we depend on
    pending->error being set to something, or btrfs_commit_transaction
    returning an error.
    
    If we are not the trans handle that gets to commit the transaction, and
    we're waiting on the commit to happen we get our return value from
    cur_trans->aborted.  If this was not set to anything because sync() hit
    an error in the transaction commit before it could modify anything then
    cur_trans->aborted would be 0.  Thus we'd return 0 from
    btrfs_commit_transaction() in create_snapshot.
    
    This is a problem because we then try to do things with
    pending_snapshot->snap, which will be NULL because we didn't create the
    snapshot, and then we'll get a NULL pointer dereference like the
    following
    
    "BUG: kernel NULL pointer dereference, address: 00000000000001f0"
    RIP: 0010:btrfs_orphan_cleanup+0x2d/0x330
    Call Trace:
     ? btrfs_mksubvol.isra.31+0x3f2/0x510
     btrfs_mksubvol.isra.31+0x4bc/0x510
     ? __sb_start_write+0xfa/0x200
     ? mnt_want_write_file+0x24/0x50
     btrfs_ioctl_snap_create_transid+0x16c/0x1a0
     btrfs_ioctl_snap_create_v2+0x11e/0x1a0
     btrfs_ioctl+0x1534/0x2c10
     ? free_debug_processing+0x262/0x2a3
     do_vfs_ioctl+0xa6/0x6b0
     ? do_sys_open+0x188/0x220
     ? syscall_trace_enter+0x1f8/0x330
     ksys_ioctl+0x60/0x90
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x4a/0x1b0
    
    In order to fix this we need to make sure anybody who calls
    commit_transaction has trans->dirty set so that they properly set the
    trans->transaction->aborted value properly so any waiters know bad
    things happened.
    
    This was found while I was running generic/475 with my modified
    fsstress, it reproduced within a few runs.  I ran with this patch all
    night and didn't see the problem again.
    
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f98c063f1c0e5ece216715f3ff3d84e8b8cfc80c
Author: Chuhong Yuan <hslester96@gmail.com>
Date:   Tue Dec 10 00:21:44 2019 +0800

    crypto: picoxcell - adjust the position of tasklet_init and fix missed tasklet_kill
    
    commit 7f8c36fe9be46862c4f3c5302f769378028a34fa upstream.
    
    Since tasklet is needed to be initialized before registering IRQ
    handler, adjust the position of tasklet_init to fix the wrong order.
    
    Besides, to fix the missed tasklet_kill, this patch adds a helper
    function and uses devm_add_action to kill the tasklet automatically.
    
    Fixes: ce92136843cb ("crypto: picoxcell - add support for the picoxcell crypto engines")
    Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa2862a427df19ada9b182cc86bedd74cdd83815
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Sat Dec 7 22:15:15 2019 +0800

    crypto: api - Fix race condition in crypto_spawn_alg
    
    commit 73669cc556462f4e50376538d77ee312142e8a8a upstream.
    
    The function crypto_spawn_alg is racy because it drops the lock
    before shooting the dying algorithm.  The algorithm could disappear
    altogether before we shoot it.
    
    This patch fixes it by moving the shooting into the locked section.
    
    Fixes: 6bfd48096ff8 ("[CRYPTO] api: Added spawns")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87bfd2f124d8cd3191dc3810b040c3a931f31399
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Nov 29 16:40:24 2019 +0800

    crypto: pcrypt - Do not clear MAY_SLEEP flag in original request
    
    commit e8d998264bffade3cfe0536559f712ab9058d654 upstream.
    
    We should not be modifying the original request's MAY_SLEEP flag
    upon completion.  It makes no sense to do so anyway.
    
    Reported-by: Eric Biggers <ebiggers@kernel.org>
    Fixes: 5068c7a883d1 ("crypto: pcrypt - Add pcrypt crypto...")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Tested-by: Eric Biggers <ebiggers@kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c3816edfbad2be6c8df08f2925c3487197aa850
Author: Joe Thornber <ejt@redhat.com>
Date:   Tue Jan 7 11:58:42 2020 +0000

    dm space map common: fix to ensure new block isn't already in use
    
    commit 4feaef830de7ffdd8352e1fe14ad3bf13c9688f8 upstream.
    
    The space-maps track the reference counts for disk blocks allocated by
    both the thin-provisioning and cache targets.  There are variants for
    tracking metadata blocks and data blocks.
    
    Transactionality is implemented by never touching blocks from the
    previous transaction, so we can rollback in the event of a crash.
    
    When allocating a new block we need to ensure the block is free (has
    reference count of 0) in both the current and previous transaction.
    Prior to this fix we were doing this by searching for a free block in
    the previous transaction, and relying on a 'begin' counter to track
    where the last allocation in the current transaction was.  This
    'begin' field was not being updated in all code paths (eg, increment
    of a data block reference count due to breaking sharing of a neighbour
    block in the same btree leaf).
    
    This fix keeps the 'begin' field, but now it's just a hint to speed up
    the search.  Instead the current transaction is searched for a free
    block, and then the old transaction is double checked to ensure it's
    free.  Much simpler.
    
    This fixes reports of sm_disk_new_block()'s BUG_ON() triggering when
    DM thin-provisioning's snapshots are heavily used.
    
    Reported-by: Eric Wheeler <dm-devel@lists.ewheeler.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 809f1863e83e31e3c3cc259fd2cc1470fc772aa5
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Sun Jan 26 22:52:47 2020 +1100

    of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc
    
    commit dabf6b36b83a18d57e3d4b9d50544ed040d86255 upstream.
    
    There's an OF helper called of_dma_is_coherent(), which checks if a
    device has a "dma-coherent" property to see if the device is coherent
    for DMA.
    
    But on some platforms devices are coherent by default, and on some
    platforms it's not possible to update existing device trees to add the
    "dma-coherent" property.
    
    So add a Kconfig symbol to allow arch code to tell
    of_dma_is_coherent() that devices are coherent by default, regardless
    of the presence of the property.
    
    Select that symbol on powerpc when NOT_COHERENT_CACHE is not set, ie.
    when the system has a coherent cache.
    
    Fixes: 92ea637edea3 ("of: introduce of_dma_is_coherent() helper")
    Cc: stable@vger.kernel.org # v3.16+
    Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
    Tested-by: Christian Zigotzky <chzigotzky@xenosoft.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c0e18da4a089a278b025637bfdbf0ff759a742f
Author: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
Date:   Tue Feb 4 18:49:58 2020 +0000

    Revert "ovl: modify ovl_permission() to do checks on two inodes"
    
    This reverts commit b24be4acd17a8963a29b2a92e1d80b9ddf759c95 which is commit
    c0ca3d70e8d3cf81e2255a217f7ca402f5ed0862 upstream.
    
    Commit b24be4acd17a ("ovl: modify ovl_permission() to do checks on two
    inodes") (stable kernel  id) breaks r/w access in overlayfs when setting
    ACL to files, in 4.4 stable kernel. There is an available reproducer in
    [1].
    
    To reproduce the issue :
    $./make-overlay.sh
    $./test.sh
    st_mode is 100644
    open failed: -1
    cat: /tmp/overlay/animal: Permission denied <---- Breaks access
    -rw-r--r-- 1 jo jo 0 Oct 11 09:57 /tmp/overlay/animal
    
    There are two options to fix this; (a) backport commit ce31513a9114
    ("ovl: copyattr after setting POSIX ACL") to 4.4 or (b) revert offending
    commit b24be4acd17a ("ovl: modify ovl_permission() to do checks on two
    inodes"). Following option (a) entails high risk of regression since
    commit ce31513a9114 ("ovl: copyattr after setting POSIX ACL") has many
    dependencies on other commits that need to be backported too (~18
    commits).
    
    This patch proceeds with reverting commit b24be4acd17a ("ovl: modify
    ovl_permission() to do checks on two inodes").  The reverted commit is
    associated with CVE-2018-16597, however the test-script provided in [3]
    shows that 4.4 kernel is  NOT affected by this cve and therefore it's
    safe to revert it.
    
    The offending commit was introduced upstream in v4.8-rc1. At this point
    had nothing to do with any CVE.  It was related with CVE-2018-16597 as
    it was the fix for bug [2]. Later on it was backported to stable 4.4.
    
    The test-script [3] tests whether 4.4 kernel is affected by
    CVE-2018-16597. It tests the reproducer found in [2] plus a few more
    cases. The correct output of the script is failure with "Permission
    denied" when a normal user tries to overwrite root owned files.  For
    more details please refer to [4].
    
    [1] https://gist.github.com/thomas-holmes/711bcdb28e2b8e6d1c39c1d99d292af7
    [2] https://bugzilla.suse.com/show_bug.cgi?id=1106512#c0
    [3] https://launchpadlibrarian.net/459694705/test_overlay_permission.sh
    [4] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1851243
    
    Signed-off-by: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd97ed8c874dc479d868ad33311ad227ff0c98ee
Author: Sven Van Asbroeck <thesven73@gmail.com>
Date:   Thu Sep 19 11:11:37 2019 -0400

    power: supply: ltc2941-battery-gauge: fix use-after-free
    
    commit a60ec78d306c6548d4adbc7918b587a723c555cc upstream.
    
    This driver's remove path calls cancel_delayed_work().
    However, that function does not wait until the work function
    finishes. This could mean that the work function is still
    running after the driver's remove function has finished,
    which would result in a use-after-free.
    
    Fix by calling cancel_delayed_work_sync(), which ensures that
    that the work is properly cancelled, no longer running, and
    unable to re-schedule itself.
    
    This issue was detected with the help of Coccinelle.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8885e4fb7ac511b56778549fbaeff22b72b1d7c2
Author: Quinn Tran <qutran@marvell.com>
Date:   Tue Dec 17 14:06:16 2019 -0800

    scsi: qla2xxx: Fix mtcp dump collection failure
    
    commit 641e0efddcbde52461e017136acd3ce7f2ef0c14 upstream.
    
    MTCP dump failed due to MB Reg 10 was picking garbage data from stack
    memory.
    
    Fixes: 81178772b636a ("[SCSI] qla2xxx: Implemetation of mctp.")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20191217220617.28084-14-hmadhani@marvell.com
    Signed-off-by: Quinn Tran <qutran@marvell.com>
    Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63e05d4bee9efe087f4ad5f06a99d3a4f0739777
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Dec 6 13:55:17 2019 +0800

    crypto: api - Check spawn->alg under lock in crypto_drop_spawn
    
    commit 7db3b61b6bba4310f454588c2ca6faf2958ad79f upstream.
    
    We need to check whether spawn->alg is NULL under lock as otherwise
    the algorithm could be removed from under us after we have checked
    it and found it to be non-NULL.  This could cause us to remove the
    spawn from a non-existent list.
    
    Fixes: 7ede5a5ba55a ("crypto: api - Fix crypto_drop_spawn crash...")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5f396a6ce2a5fcf93e34acd5dd4585e0bfc18c8
Author: Yurii Monakov <monakov.y@gmail.com>
Date:   Tue Dec 17 14:38:36 2019 +0300

    PCI: keystone: Fix link training retries initiation
    
    [ Upstream commit 6df19872d881641e6394f93ef2938cffcbdae5bb ]
    
    ks_pcie_stop_link() function does not clear LTSSM_EN_VAL bit so
    link training was not triggered more than once after startup.
    In configurations where link can be unstable during early boot,
    for example, under low temperature, it will never be established.
    
    Fixes: 0c4ffcfe1fbc ("PCI: keystone: Add TI Keystone PCIe driver")
    Signed-off-by: Yurii Monakov <monakov.y@gmail.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Andrew Murray <andrew.murray@arm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d8da4736ca2fff3494e5f5332de7776dd417e82
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Dec 4 16:27:49 2019 +0100

    mmc: spi: Toggle SPI polarity, do not hardcode it
    
    commit af3ed119329cf9690598c5a562d95dfd128e91d6 upstream.
    
    The code in mmc_spi_initsequence() tries to send a burst with
    high chipselect and for this reason hardcodes the device into
    SPI_CS_HIGH.
    
    This is not good because the SPI_CS_HIGH flag indicates
    logical "asserted" CS not always the physical level. In
    some cases the signal is inverted in the GPIO library and
    in that case SPI_CS_HIGH is already set, and enforcing
    SPI_CS_HIGH again will actually drive it low.
    
    Instead of hard-coding this, toggle the polarity so if the
    default is LOW it goes high to assert chipselect but if it
    is already high then toggle it low instead.
    
    Cc: Phil Elwell <phil@raspberrypi.org>
    Reported-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20191204152749.12652-1-linus.walleij@linaro.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65c576e72db2fe3810721015e78a277475bda24a
Author: Pingfan Liu <kernelfans@gmail.com>
Date:   Fri Jan 10 12:54:02 2020 +0800

    powerpc/pseries: Advance pfn if section is not present in lmb_is_removable()
    
    commit fbee6ba2dca30d302efe6bddb3a886f5e964a257 upstream.
    
    In lmb_is_removable(), if a section is not present, it should continue
    to test the rest of the sections in the block. But the current code
    fails to do so.
    
    Fixes: 51925fb3c5c9 ("powerpc/pseries: Implement memory hotplug remove in the kernel")
    Cc: stable@vger.kernel.org # v4.1+
    Signed-off-by: Pingfan Liu <kernelfans@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/1578632042-12415-1-git-send-email-kernelfans@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09937b5744ef814a9153bd3d8de54b188a699775
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu Jan 30 22:13:51 2020 -0800

    lib/test_kasan.c: fix memory leak in kmalloc_oob_krealloc_more()
    
    commit 3e21d9a501bf99aee2e5835d7f34d8c823f115b5 upstream.
    
    In case memory resources for _ptr2_ were allocated, release them before
    return.
    
    Notice that in case _ptr1_ happens to be NULL, krealloc() behaves
    exactly like kmalloc().
    
    Addresses-Coverity-ID: 1490594 ("Resource leak")
    Link: http://lkml.kernel.org/r/20200123160115.GA4202@embeddedor
    Fixes: 3f15801cdc23 ("lib: add kasan test module")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4daec55c62aee308bf265a557369d7fcdad60b77
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Feb 1 09:05:30 2020 +0100

    ALSA: dummy: Fix PCM format loop in proc output
    
    commit 2acf25f13ebe8beb40e97a1bbe76f36277c64f1e upstream.
    
    The loop termination for iterating over all formats should contain
    SNDRV_PCM_FORMAT_LAST, not less than it.
    
    Fixes: 9b151fec139d ("ALSA: dummy - Add debug proc file")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200201080530.22390-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5288d1379b56aa1b92972cebb7011255e4cd145
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Thu Jan 9 13:17:22 2020 +0000

    usb: gadget: f_ecm: Use atomic_t to track in-flight request
    
    commit d710562e01c48d59be3f60d58b7a85958b39aeda upstream.
    
    Currently ecm->notify_req is used to flag when a request is in-flight.
    ecm->notify_req is set to NULL and when a request completes it is
    subsequently reset.
    
    This is fundamentally buggy in that the unbind logic of the ECM driver will
    unconditionally free ecm->notify_req leading to a NULL pointer dereference.
    
    Fixes: da741b8c56d6 ("usb ethernet gadget: split CDC Ethernet function")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2e19c795f58b0a516a5d7524407fb2a2c82cba1
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Thu Jan 9 13:17:21 2020 +0000

    usb: gadget: f_ncm: Use atomic_t to track in-flight request
    
    commit 5b24c28cfe136597dc3913e1c00b119307a20c7e upstream.
    
    Currently ncm->notify_req is used to flag when a request is in-flight.
    ncm->notify_req is set to NULL and when a request completes it is
    subsequently reset.
    
    This is fundamentally buggy in that the unbind logic of the NCM driver will
    unconditionally free ncm->notify_req leading to a NULL pointer dereference.
    
    Fixes: 40d133d7f542 ("usb: gadget: f_ncm: convert to new function interface with backward compatibility")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1057e28b674e24ecfbce8821625d98d6298b1a3
Author: Roger Quadros <rogerq@ti.com>
Date:   Mon Dec 23 08:47:35 2019 +0200

    usb: gadget: legacy: set max_speed to super-speed
    
    commit 463f67aec2837f981b0a0ce8617721ff59685c00 upstream.
    
    These interfaces do support super-speed so let's not
    limit maximum speed to high-speed.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea564d0b59ba8717b0cb874e997da2b259d5795c
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Sat Dec 14 19:51:14 2019 -0600

    brcmfmac: Fix memory leak in brcmf_usbdev_qinit
    
    commit 4282dc057d750c6a7dd92953564b15c26b54c22c upstream.
    
    In the implementation of brcmf_usbdev_qinit() the allocated memory for
    reqs is leaking if usb_alloc_urb() fails. Release reqs in the error
    handling path.
    
    Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0d7c0d9173fe781a3aa5dba6c7503db4e4c0ebe
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Nov 21 11:28:10 2019 +0100

    mfd: dln2: More sanity checking for endpoints
    
    commit 2b8bd606b1e60ca28c765f69c1eedd7d2a2e9dca upstream.
    
    It is not enough to check for the number of endpoints.
    The types must also be correct.
    
    Reported-and-tested-by: syzbot+48a2851be24583b864dc@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f941047b5e5abd73be6c058a67a06533728c3422
Author: Will Deacon <will@kernel.org>
Date:   Fri Nov 8 16:48:38 2019 +0100

    media: uvcvideo: Avoid cyclic entity chains due to malformed USB descriptors
    
    commit 68035c80e129c4cfec659aac4180354530b26527 upstream.
    
    Way back in 2017, fuzzing the 4.14-rc2 USB stack with syzkaller kicked
    up the following WARNING from the UVC chain scanning code:
    
      | list_add double add: new=ffff880069084010, prev=ffff880069084010,
      | next=ffff880067d22298.
      | ------------[ cut here ]------------
      | WARNING: CPU: 1 PID: 1846 at lib/list_debug.c:31 __list_add_valid+0xbd/0xf0
      | Modules linked in:
      | CPU: 1 PID: 1846 Comm: kworker/1:2 Not tainted
      | 4.14.0-rc2-42613-g1488251d1a98 #238
      | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      | Workqueue: usb_hub_wq hub_event
      | task: ffff88006b01ca40 task.stack: ffff880064358000
      | RIP: 0010:__list_add_valid+0xbd/0xf0 lib/list_debug.c:29
      | RSP: 0018:ffff88006435ddd0 EFLAGS: 00010286
      | RAX: 0000000000000058 RBX: ffff880067d22298 RCX: 0000000000000000
      | RDX: 0000000000000058 RSI: ffffffff85a58800 RDI: ffffed000c86bbac
      | RBP: ffff88006435dde8 R08: 1ffff1000c86ba52 R09: 0000000000000000
      | R10: 0000000000000002 R11: 0000000000000000 R12: ffff880069084010
      | R13: ffff880067d22298 R14: ffff880069084010 R15: ffff880067d222a0
      | FS:  0000000000000000(0000) GS:ffff88006c900000(0000) knlGS:0000000000000000
      | CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      | CR2: 0000000020004ff2 CR3: 000000006b447000 CR4: 00000000000006e0
      | Call Trace:
      |  __list_add ./include/linux/list.h:59
      |  list_add_tail+0x8c/0x1b0 ./include/linux/list.h:92
      |  uvc_scan_chain_forward.isra.8+0x373/0x416
      | drivers/media/usb/uvc/uvc_driver.c:1471
      |  uvc_scan_chain drivers/media/usb/uvc/uvc_driver.c:1585
      |  uvc_scan_device drivers/media/usb/uvc/uvc_driver.c:1769
      |  uvc_probe+0x77f2/0x8f00 drivers/media/usb/uvc/uvc_driver.c:2104
    
    Looking into the output from usbmon, the interesting part is the
    following data packet:
    
      ffff880069c63e00 30710169 C Ci:1:002:0 0 143 = 09028f00 01030080
      00090403 00000e01 00000924 03000103 7c003328 010204db
    
    If we drop the lead configuration and interface descriptors, we're left
    with an output terminal descriptor describing a generic display:
    
      /* Output terminal descriptor */
      buf[0]        09
      buf[1]        24
      buf[2]        03      /* UVC_VC_OUTPUT_TERMINAL */
      buf[3]        00      /* ID */
      buf[4]        01      /* type == 0x0301 (UVC_OTT_DISPLAY) */
      buf[5]        03
      buf[6]        7c
      buf[7]        00      /* source ID refers to self! */
      buf[8]        33
    
    The problem with this descriptor is that it is self-referential: the
    source ID of 0 matches itself! This causes the 'struct uvc_entity'
    representing the display to be added to its chain list twice during
    'uvc_scan_chain()': once via 'uvc_scan_chain_entity()' when it is
    processed directly from the 'dev->entities' list and then again
    immediately afterwards when trying to follow the source ID in
    'uvc_scan_chain_forward()'
    
    Add a check before adding an entity to a chain list to ensure that the
    entity is not already part of a chain.
    
    Link: https://lore.kernel.org/linux-media/CAAeHK+z+Si69jUR+N-SjN9q4O+o5KFiNManqEa-PjUta7EOb7A@mail.gmail.com/
    
    Cc: <stable@vger.kernel.org>
    Fixes: c0efd232929c ("V4L/DVB (8145a): USB Video Class driver")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 864497ee205867313b6c201cea616724266902a5
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 31 10:44:50 2020 -0800

    tcp: clear tp->segs_{in|out} in tcp_disconnect()
    
    [ Upstream commit 784f8344de750a41344f4bbbebb8507a730fc99c ]
    
    tp->segs_in and tp->segs_out need to be cleared in tcp_disconnect().
    
    tcp_disconnect() is rarely used, but it is worth fixing it.
    
    Fixes: 2efd055c53c0 ("tcp: add tcpi_segs_in and tcpi_segs_out to tcp_info")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Marcelo Ricardo Leitner <mleitner@redhat.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad871646b0c2bf9acd3c5238319487f95d3df771
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 31 09:14:47 2020 -0800

    tcp: clear tp->total_retrans in tcp_disconnect()
    
    [ Upstream commit c13c48c00a6bc1febc73902505bdec0967bd7095 ]
    
    total_retrans needs to be cleared in tcp_disconnect().
    
    tcp_disconnect() is rarely used, but it is worth fixing it.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: SeongJae Park <sjpark@amazon.de>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73c29d2f6f8ae731b1e09051b69ed3ba2319482b
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sun Feb 2 21:14:35 2020 -0800

    net_sched: fix an OOB access in cls_tcindex
    
    [ Upstream commit 599be01ee567b61f4471ee8078870847d0a11e8e ]
    
    As Eric noticed, tcindex_alloc_perfect_hash() uses cp->hash
    to compute the size of memory allocation, but cp->hash is
    set again after the allocation, this caused an out-of-bound
    access.
    
    So we have to move all cp->hash initialization and computation
    before the memory allocation. Move cp->mask and cp->shift together
    as cp->hash may need them for computation too.
    
    Reported-and-tested-by: syzbot+35d4dea36c387813ed31@syzkaller.appspotmail.com
    Fixes: 331b72922c5f ("net: sched: RCU cls_tcindex")
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b39c2f9600cc3b1d008ef7c1795c5de150d34a7
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Feb 3 10:15:07 2020 -0800

    net: hsr: fix possible NULL deref in hsr_handle_frame()
    
    [ Upstream commit 2b5b8251bc9fe2f9118411f037862ee17cf81e97 ]
    
    hsr_port_get_rcu() can return NULL, so we need to be careful.
    
    general protection fault, probably for non-canonical address 0xdffffc0000000006: 0000 [#1] PREEMPT SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000030-0x0000000000000037]
    CPU: 1 PID: 10249 Comm: syz-executor.5 Not tainted 5.5.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__read_once_size include/linux/compiler.h:199 [inline]
    RIP: 0010:hsr_addr_is_self+0x86/0x330 net/hsr/hsr_framereg.c:44
    Code: 04 00 f3 f3 f3 65 48 8b 04 25 28 00 00 00 48 89 45 d0 31 c0 e8 6b ff 94 f9 4c 89 f2 48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 <80> 3c 02 00 0f 85 75 02 00 00 48 8b 43 30 49 39 c6 49 89 47 c0 0f
    RSP: 0018:ffffc90000da8a90 EFLAGS: 00010206
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff87e0cc33
    RDX: 0000000000000006 RSI: ffffffff87e035d5 RDI: 0000000000000000
    RBP: ffffc90000da8b20 R08: ffff88808e7de040 R09: ffffed1015d2707c
    R10: ffffed1015d2707b R11: ffff8880ae9383db R12: ffff8880a689bc5e
    R13: 1ffff920001b5153 R14: 0000000000000030 R15: ffffc90000da8af8
    FS:  00007fd7a42be700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b32338000 CR3: 00000000a928c000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <IRQ>
     hsr_handle_frame+0x1c5/0x630 net/hsr/hsr_slave.c:31
     __netif_receive_skb_core+0xfbc/0x30b0 net/core/dev.c:5099
     __netif_receive_skb_one_core+0xa8/0x1a0 net/core/dev.c:5196
     __netif_receive_skb+0x2c/0x1d0 net/core/dev.c:5312
     process_backlog+0x206/0x750 net/core/dev.c:6144
     napi_poll net/core/dev.c:6582 [inline]
     net_rx_action+0x508/0x1120 net/core/dev.c:6650
     __do_softirq+0x262/0x98c kernel/softirq.c:292
     do_softirq_own_stack+0x2a/0x40 arch/x86/entry/entry_64.S:1082
     </IRQ>
    
    Fixes: c5a759117210 ("net/hsr: Use list_head (and rcu) instead of array for slave devices.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 249edb9bcb41aaaedd944b84042dd64355e059fd
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 31 15:27:04 2020 -0800

    cls_rsvp: fix rsvp_policy
    
    [ Upstream commit cb3c0e6bdf64d0d124e94ce43cbe4ccbb9b37f51 ]
    
    NLA_BINARY can be confusing, since .len value represents
    the max size of the blob.
    
    cls_rsvp really wants user space to provide long enough data
    for TCA_RSVP_DST and TCA_RSVP_SRC attributes.
    
    BUG: KMSAN: uninit-value in rsvp_get net/sched/cls_rsvp.h:258 [inline]
    BUG: KMSAN: uninit-value in gen_handle net/sched/cls_rsvp.h:402 [inline]
    BUG: KMSAN: uninit-value in rsvp_change+0x1ae9/0x4220 net/sched/cls_rsvp.h:572
    CPU: 1 PID: 13228 Comm: syz-executor.1 Not tainted 5.5.0-rc5-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1c9/0x220 lib/dump_stack.c:118
     kmsan_report+0xf7/0x1e0 mm/kmsan/kmsan_report.c:118
     __msan_warning+0x58/0xa0 mm/kmsan/kmsan_instr.c:215
     rsvp_get net/sched/cls_rsvp.h:258 [inline]
     gen_handle net/sched/cls_rsvp.h:402 [inline]
     rsvp_change+0x1ae9/0x4220 net/sched/cls_rsvp.h:572
     tc_new_tfilter+0x31fe/0x5010 net/sched/cls_api.c:2104
     rtnetlink_rcv_msg+0xcb7/0x1570 net/core/rtnetlink.c:5415
     netlink_rcv_skb+0x451/0x650 net/netlink/af_netlink.c:2477
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:5442
     netlink_unicast_kernel net/netlink/af_netlink.c:1302 [inline]
     netlink_unicast+0xf9e/0x1100 net/netlink/af_netlink.c:1328
     netlink_sendmsg+0x1248/0x14d0 net/netlink/af_netlink.c:1917
     sock_sendmsg_nosec net/socket.c:639 [inline]
     sock_sendmsg net/socket.c:659 [inline]
     ____sys_sendmsg+0x12b6/0x1350 net/socket.c:2330
     ___sys_sendmsg net/socket.c:2384 [inline]
     __sys_sendmsg+0x451/0x5f0 net/socket.c:2417
     __do_sys_sendmsg net/socket.c:2426 [inline]
     __se_sys_sendmsg+0x97/0xb0 net/socket.c:2424
     __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2424
     do_syscall_64+0xb8/0x160 arch/x86/entry/common.c:296
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45b349
    Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f269d43dc78 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f269d43e6d4 RCX: 000000000045b349
    RDX: 0000000000000000 RSI: 00000000200001c0 RDI: 0000000000000003
    RBP: 000000000075bfc8 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000009c2 R14: 00000000004cb338 R15: 000000000075bfd4
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:144 [inline]
     kmsan_internal_poison_shadow+0x66/0xd0 mm/kmsan/kmsan.c:127
     kmsan_slab_alloc+0x8a/0xe0 mm/kmsan/kmsan_hooks.c:82
     slab_alloc_node mm/slub.c:2774 [inline]
     __kmalloc_node_track_caller+0xb40/0x1200 mm/slub.c:4382
     __kmalloc_reserve net/core/skbuff.c:141 [inline]
     __alloc_skb+0x2fd/0xac0 net/core/skbuff.c:209
     alloc_skb include/linux/skbuff.h:1049 [inline]
     netlink_alloc_large_skb net/netlink/af_netlink.c:1174 [inline]
     netlink_sendmsg+0x7d3/0x14d0 net/netlink/af_netlink.c:1892
     sock_sendmsg_nosec net/socket.c:639 [inline]
     sock_sendmsg net/socket.c:659 [inline]
     ____sys_sendmsg+0x12b6/0x1350 net/socket.c:2330
     ___sys_sendmsg net/socket.c:2384 [inline]
     __sys_sendmsg+0x451/0x5f0 net/socket.c:2417
     __do_sys_sendmsg net/socket.c:2426 [inline]
     __se_sys_sendmsg+0x97/0xb0 net/socket.c:2424
     __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2424
     do_syscall_64+0xb8/0x160 arch/x86/entry/common.c:296
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 6fa8c0144b77 ("[NET_SCHED]: Use nla_policy for attribute validation in classifiers")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e5801391f9ab6f21a6e7be3c97491e6d0758d0a
Author: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
Date:   Thu Feb 6 12:36:11 2020 +0900

    ASoC: qcom: Fix of-node refcount unbalance to link->codec_of_node
    
    [ This is a fix specific to 4.4.y and 4.9.y stable trees;
      4.14.y and older are not affected ]
    
    The of-node refcount fixes were made in commit 8d1667200850 ("ASoC: qcom:
    Fix of-node refcount unbalance in apq8016_sbc_parse_of()"), but not enough
    in 4.4.y and 4.9.y. The modification of link->codec_of_node is missing.
    This fixes of-node refcount unbalance to link->codec_of_node.
    
    Fixes: 8d1667200850 ("ASoC: qcom: Fix of-node refcount unbalance in apq8016_sbc_parse_of()")
    Cc: Patrick Lai <plai@codeaurora.org>
    Cc: Banajit Goswami <bgoswami@codeaurora.org>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45b2903f96f3fa4c3c70fa0e86599ae5981d69e6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 14 14:26:14 2020 +0100

    sparc32: fix struct ipc64_perm type definition
    
    [ Upstream commit 34ca70ef7d3a9fa7e89151597db5e37ae1d429b4 ]
    
    As discussed in the strace issue tracker, it appears that the sparc32
    sysvipc support has been broken for the past 11 years. It was however
    working in compat mode, which is how it must have escaped most of the
    regular testing.
    
    The problem is that a cleanup patch inadvertently changed the uid/gid
    fields in struct ipc64_perm from 32-bit types to 16-bit types in uapi
    headers.
    
    Both glibc and uclibc-ng still use the original types, so they should
    work fine with compat mode, but not natively.  Change the definitions
    to use __kernel_uid32_t and __kernel_gid32_t again.
    
    Fixes: 83c86984bff2 ("sparc: unify ipcbuf.h")
    Link: https://github.com/strace/strace/issues/116
    Cc: <stable@vger.kernel.org> # v2.6.29
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: "Dmitry V . Levin" <ldv@altlinux.org>
    Cc: Rich Felker <dalias@libc.org>
    Cc: libc-alpha@sourceware.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a4487479c7594c36e5f91727dc84c475777e34c
Author: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Date:   Fri Jan 10 14:50:54 2020 -0800

    x86/cpu: Update cached HLE state on write to TSX_CTRL_CPUID_CLEAR
    
    [ Upstream commit 5efc6fa9044c3356d6046c6e1da6d02572dbed6b ]
    
    /proc/cpuinfo currently reports Hardware Lock Elision (HLE) feature to
    be present on boot cpu even if it was disabled during the bootup. This
    is because cpuinfo_x86->x86_capability HLE bit is not updated after TSX
    state is changed via the new MSR IA32_TSX_CTRL.
    
    Update the cached HLE bit also since it is expected to change after an
    update to CPUID_CLEAR bit in MSR IA32_TSX_CTRL.
    
    Fixes: 95c5824f75f3 ("x86/cpu: Add a "tsx=" cmdline option with TSX disabled by default")
    Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Neelima Krishnan <neelima.krishnan@intel.com>
    Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/2529b99546294c893dfa1c89e2b3e46da3369a59.1578685425.git.pawan.kumar.gupta@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f58d2183d8fe5ab31f6a7c2d388ea508f085aa31
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 3 17:35:13 2020 +0100

    media: iguanair: fix endpoint sanity check
    
    [ Upstream commit 1b257870a78b0a9ce98fdfb052c58542022ffb5b ]
    
    Make sure to use the current alternate setting, which need not be the
    first one by index, when verifying the endpoint descriptors and
    initialising the URBs.
    
    Failing to do so could cause the driver to misbehave or trigger a WARN()
    in usb_submit_urb() that kernels with panic_on_warn set would choke on.
    
    Fixes: 26ff63137c45 ("[media] Add support for the IguanaWorks USB IR Transceiver")
    Fixes: ab1cbdf159be ("media: iguanair: add sanity checks")
    Cc: stable <stable@vger.kernel.org>     # 3.6
    Cc: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>