commit 7d6240f0fb85430ae4f490824fdf8d0a078dfcd2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue May 1 12:58:27 2018 -0700

    Linux 4.14.39

commit 7fddff51f245b01d1dab2a6461d706170ff5b519
Author: Michael Neuling <mikey@neuling.org>
Date:   Mon Mar 26 15:17:07 2018 +1100

    powerpc/eeh: Fix race with driver un/bind
    
    commit f0295e047fcf52ccb42561fb7de6942f5201b676 upstream.
    
    The current EEH callbacks can race with a driver unbind. This can
    result in a backtraces like this:
    
      EEH: Frozen PHB#0-PE#1fc detected
      EEH: PE location: S000009, PHB location: N/A
      CPU: 2 PID: 2312 Comm: kworker/u258:3 Not tainted 4.15.6-openpower1 #2
      Workqueue: nvme-wq nvme_reset_work [nvme]
      Call Trace:
        dump_stack+0x9c/0xd0 (unreliable)
        eeh_dev_check_failure+0x420/0x470
        eeh_check_failure+0xa0/0xa4
        nvme_reset_work+0x138/0x1414 [nvme]
        process_one_work+0x1ec/0x328
        worker_thread+0x2e4/0x3a8
        kthread+0x14c/0x154
        ret_from_kernel_thread+0x5c/0xc8
      nvme nvme1: Removing after probe failure status: -19
      <snip>
      cpu 0x23: Vector: 300 (Data Access) at [c000000ff50f3800]
          pc: c0080000089a0eb0: nvme_error_detected+0x4c/0x90 [nvme]
          lr: c000000000026564: eeh_report_error+0xe0/0x110
          sp: c000000ff50f3a80
         msr: 9000000000009033
         dar: 400
       dsisr: 40000000
        current = 0xc000000ff507c000
        paca    = 0xc00000000fdc9d80   softe: 0        irq_happened: 0x01
          pid   = 782, comm = eehd
      Linux version 4.15.6-openpower1 (smc@smc-desktop) (gcc version 6.4.0 (Buildroot 2017.11.2-00008-g4b6188e)) #2 SM                                             P Tue Feb 27 12:33:27 PST 2018
      enter ? for help
        eeh_report_error+0xe0/0x110
        eeh_pe_dev_traverse+0xc0/0xdc
        eeh_handle_normal_event+0x184/0x4c4
        eeh_handle_event+0x30/0x288
        eeh_event_handler+0x124/0x170
        kthread+0x14c/0x154
        ret_from_kernel_thread+0x5c/0xc8
    
    The first part is an EEH (on boot), the second half is the resulting
    crash. nvme probe starts the nvme_reset_work() worker thread. This
    worker thread starts touching the device which see a device error
    (EEH) and hence queues up an event in the powerpc EEH worker
    thread. nvme_reset_work() then continues and runs
    nvme_remove_dead_ctrl_work() which results in unbinding the driver
    from the device and hence releases all resources. At the same time,
    the EEH worker thread starts doing the EEH .error_detected() driver
    callback, which no longer works since the resources have been freed.
    
    This fixes the problem in the same way the generic PCIe AER code (in
    drivers/pci/pcie/aer/aerdrv_core.c) does. It makes the EEH code hold
    the device_lock() while performing the driver EEH callbacks and
    associated code. This ensures either the callbacks are no longer
    register, or if they are registered the driver will not be removed
    from underneath us.
    
    This has been broken forever. The EEH call backs were first introduced
    in 2005 (in 77bd7415610) but it's not clear if a lock was needed back
    then.
    
    Fixes: 77bd74156101 ("[PATCH] powerpc: PCI Error Recovery: PPC64 core recovery routines")
    Cc: stable@vger.kernel.org # v2.6.16+
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Reviewed-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5a290c4ff77c9fb3fcb1dee7cfb356969daeee2
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Sun Jan 21 16:42:56 2018 +0000

    arm/arm64: KVM: Add PSCI version selection API
    
    commit 85bd0ba1ff9875798fad94218b627ea9f768f3c3 upstream.
    
    Although we've implemented PSCI 0.1, 0.2 and 1.0, we expose either 0.1
    or 1.0 to a guest, defaulting to the latest version of the PSCI
    implementation that is compatible with the requested version. This is
    no different from doing a firmware upgrade on KVM.
    
    But in order to give a chance to hypothetical badly implemented guests
    that would have a fit by discovering something other than PSCI 0.2,
    let's provide a new API that allows userspace to pick one particular
    version of the API.
    
    This is implemented as a new class of "firmware" registers, where
    we expose the PSCI version. This allows the PSCI version to be
    save/restored as part of a guest migration, and also set to
    any supported version if the guest requires it.
    
    Cc: stable@vger.kernel.org #4.16
    Reviewed-by: Christoffer Dall <cdall@kernel.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2066aa76a7a487b93bc6135b6add2f0036d4ef6
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Apr 24 21:22:18 2018 +0200

    tick/sched: Do not mess with an enqueued hrtimer
    
    commit 1f71addd34f4c442bec7d7c749acc1beb58126f2 upstream.
    
    Kaike reported that in tests rdma hrtimers occasionaly stopped working. He
    did great debugging, which provided enough context to decode the problem.
    
    CPU 3                                        CPU 2
    
    idle
    start sched_timer expires = 712171000000
     queue->next = sched_timer
                                                start rdmavt timer. expires = 712172915662
                                                lock(baseof(CPU3))
    tick_nohz_stop_tick()
    tick = 716767000000                         timerqueue_add(tmr)
    
    hrtimer_set_expires(sched_timer, tick);
      sched_timer->expires = 716767000000  <---- FAIL
                                                 if (tmr->expires < queue->next->expires)
    hrtimer_start(sched_timer)                        queue->next = tmr;
    lock(baseof(CPU3))
                                                 unlock(baseof(CPU3))
    timerqueue_remove()
    timerqueue_add()
    
    ts->sched_timer is queued and queue->next is pointing to it, but then
    ts->sched_timer.expires is modified.
    
    This not only corrupts the ordering of the timerqueue RB tree, it also
    makes CPU2 see the new expiry time of timerqueue->next->expires when
    checking whether timerqueue->next needs to be updated. So CPU2 sees that
    the rdma timer is earlier than timerqueue->next and sets the rdma timer as
    new next.
    
    Depending on whether it had also seen the new time at RB tree enqueue, it
    might have queued the rdma timer at the wrong place and then after removing
    the sched_timer the RB tree is completely hosed.
    
    The problem was introduced with a commit which tried to solve inconsistency
    between the hrtimer in the tick_sched data and the underlying hardware
    clockevent. It split out hrtimer_set_expires() to store the new tick time
    in both the NOHZ and the NOHZ + HIGHRES case, but missed the fact that in
    the NOHZ + HIGHRES case the hrtimer might still be queued.
    
    Use hrtimer_start(timer, tick...) for the NOHZ + HIGHRES case which sets
    timer->expires after canceling the timer and move the hrtimer_set_expires()
    invocation into the NOHZ only code path which is not affected as it merily
    uses the hrtimer as next event storage so code pathes can be shared with
    the NOHZ + HIGHRES case.
    
    Fixes: d4af6d933ccf ("nohz: Fix spurious warning when hrtimer and clockevent get out of sync")
    Reported-by: "Wan Kaike" <kaike.wan@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Frederic Weisbecker <frederic@kernel.org>
    Cc: "Marciniszyn Mike" <mike.marciniszyn@intel.com>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Cc: linux-rdma@vger.kernel.org
    Cc: "Dalessandro Dennis" <dennis.dalessandro@intel.com>
    Cc: "Fleck John" <john.fleck@intel.com>
    Cc: stable@vger.kernel.org
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: "Weiny Ira" <ira.weiny@intel.com>
    Cc: "linux-rdma@vger.kernel.org"
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1804241637390.1679@nanos.tec.linutronix.de
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1804242119210.1597@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 922e5129eb011ebbc62c416bc1c423a20ae359d7
Author: Borislav Petkov <bp@suse.de>
Date:   Sat Apr 21 10:19:30 2018 +0200

    x86/microcode: Do not exit early from __reload_late()
    
    commit 09e182d17e8891dd73baba961a0f5a82e9274c97 upstream.
    
    Vitezslav reported a case where the
    
      "Timeout during microcode update!"
    
    panic would hit. After a deeper look, it turned out that his .config had
    CONFIG_HOTPLUG_CPU disabled which practically made save_mc_for_early() a
    no-op.
    
    When that happened, the discovered microcode patch wasn't saved into the
    cache and the late loading path wouldn't find any.
    
    This, then, lead to early exit from __reload_late() and thus CPUs waiting
    until the timeout is reached, leading to the panic.
    
    In hindsight, that function should have been written so it does not return
    before the post-synchronization. Oh well, I know better now...
    
    Fixes: bb8c13d61a62 ("x86/microcode: Fix CPU synchronization routine")
    Reported-by: Vitezslav Samel <vitezslav@samel.cz>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Vitezslav Samel <vitezslav@samel.cz>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180418081140.GA2439@pc11.op.pod.cz
    Link: https://lkml.kernel.org/r/20180421081930.15741-2-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c6bcaac737fa72dd8aef00cb38b9c96b9b04cd8
Author: Borislav Petkov <bp@suse.de>
Date:   Sat Apr 21 10:19:29 2018 +0200

    x86/microcode/intel: Save microcode patch unconditionally
    
    commit 84749d83758af6576552046b215b9b7f37f9556b upstream.
    
    save_mc_for_early() was a no-op on !CONFIG_HOTPLUG_CPU but the
    generic_load_microcode() path saves the microcode patches it has found into
    the cache of patches which is used for late loading too. Regardless of
    whether CPU hotplug is used or not.
    
    Make the saving unconditional so that late loading can find the proper
    patch.
    
    Reported-by: Vitezslav Samel <vitezslav@samel.cz>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Vitezslav Samel <vitezslav@samel.cz>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180418081140.GA2439@pc11.op.pod.cz
    Link: https://lkml.kernel.org/r/20180421081930.15741-1-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b319531024d9b3c4d63965efc92d8e04803f42ce
Author: Yazen Ghannam <yazen.ghannam@amd.com>
Date:   Tue Apr 3 09:02:28 2018 -0500

    x86/smpboot: Don't use mwait_play_dead() on AMD systems
    
    commit da6fa7ef67f07108a1b0cb9fd9e7fcaabd39c051 upstream.
    
    Recent AMD systems support using MWAIT for C1 state. However, MWAIT will
    not allow deeper cstates than C1 on current systems.
    
    play_dead() expects to use the deepest state available.  The deepest state
    available on AMD systems is reached through SystemIO or HALT. If MWAIT is
    available, it is preferred over the other methods, so the CPU never reaches
    the deepest possible state.
    
    Don't try to use MWAIT to play_dead() on AMD systems. Instead, use CPUIDLE
    to enter the deepest state advertised by firmware. If CPUIDLE is not
    available then fallback to HALT.
    
    Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: stable@vger.kernel.org
    Cc: Yazen Ghannam <Yazen.Ghannam@amd.com>
    Link: https://lkml.kernel.org/r/20180403140228.58540-1-Yazen.Ghannam@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce911a5b1fea9700f797c3bd5dc9d9d94c996ac3
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Apr 24 23:19:51 2018 +0200

    x86/ipc: Fix x32 version of shmid64_ds and msqid64_ds
    
    commit 1a512c0882bd311c5b5561840fcfbe4c25b8f319 upstream.
    
    A bugfix broke the x32 shmid64_ds and msqid64_ds data structure layout
    (as seen from user space)  a few years ago: Originally, __BITS_PER_LONG
    was defined as 64 on x32, so we did not have padding after the 64-bit
    __kernel_time_t fields, After __BITS_PER_LONG got changed to 32,
    applications would observe extra padding.
    
    In other parts of the uapi headers we seem to have a mix of those
    expecting either 32 or 64 on x32 applications, so we can't easily revert
    the path that broke these two structures.
    
    Instead, this patch decouples x32 from the other architectures and moves
    it back into arch specific headers, partially reverting the even older
    commit 73a2d096fdf2 ("x86: remove all now-duplicate header files").
    
    It's not clear whether this ever made any difference, since at least
    glibc carries its own (correct) copy of both of these header files,
    so possibly no application has ever observed the definitions here.
    
    Based on a suggestion from H.J. Lu, I tried out the tool from
    https://github.com/hjl-tools/linux-header to find other such
    bugs, which pointed out the same bug in statfs(), which also has
    a separate (correct) copy in glibc.
    
    Fixes: f4b4aae18288 ("x86/headers/uapi: Fix __BITS_PER_LONG value for x32 builds")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H . J . Lu" <hjl.tools@gmail.com>
    Cc: Jeffrey Walton <noloader@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Link: https://lkml.kernel.org/r/20180424212013.3967461-1-arnd@arndb.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e99c881e497e7f7528f693c563e204ae888a846
Author: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Date:   Tue Feb 6 15:37:52 2018 -0800

    tools/lib/subcmd/pager.c: do not alias select() params
    
    commit ad343a98e74e85aa91d844310e797f96fee6983b upstream.
    
    Use a separate fd set for select()-s exception fds param to fix the
    following gcc warning:
    
      pager.c:36:12: error: passing argument 2 to restrict-qualified parameter aliases with argument 4 [-Werror=restrict]
        select(1, &in, NULL, &in, NULL);
                  ^~~        ~~~
    
    Link: http://lkml.kernel.org/r/20180101105626.7168-1-sergey.senozhatsky@gmail.com
    Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Fredrik Schön <fredrikschon@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1f1f7771a6a5f81047ecf948c5a580c916f6c3d
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Thu Mar 15 22:11:54 2018 -0500

    objtool, perf: Fix GCC 8 -Wrestrict error
    
    commit 854e55ad289ef8888e7991f0ada85d5846f5afb9 upstream.
    
    Starting with recent GCC 8 builds, objtool and perf fail to build with
    the following error:
    
      ../str_error_r.c: In function ‘str_error_r’:
      ../str_error_r.c:25:3: error: passing argument 1 to restrict-qualified parameter aliases with argument 5 [-Werror=restrict]
         snprintf(buf, buflen, "INTERNAL ERROR: strerror_r(%d, %p, %zd)=%d", errnum, buf, buflen, err);
    
    The code seems harmless, but there's probably no benefit in printing the
    'buf' pointer in this situation anyway, so just remove it to make GCC
    happy.
    
    Reported-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Tested-by: Laura Abbott <labbott@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/20180316031154.juk2uncs7baffctp@treble
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Fredrik Schön <fredrikschon@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf1d7023c901324eac0f8bc813d8b7317b85af65
Author: Imre Deak <imre.deak@intel.com>
Date:   Thu Apr 19 18:51:09 2018 +0300

    drm/i915: Enable display WA#1183 from its correct spot
    
    commit ac315c621f01d4b8a53dec317c7ae322fd26ff38 upstream.
    
    The DMC FW specific part of display WA#1183 is supposed to be enabled
    whenever enabling DC5 or DC6, so move it to the DC6 enable function
    from the DC6 disable function.
    
    I noticed this after Daniel's patch to remove the unused
    skl_disable_dc6() function.
    
    Fixes: 53421c2fe99c ("drm/i915: Apply Display WA #1183 on skl, kbl, and cfl")
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180419155109.29451-1-imre.deak@intel.com
    (cherry picked from commit b49be6622f08187129561cff0409f7b06b33de57)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 559121f5a1657899f534cf78a3f90feb8fa573f6
Author: Nicolai Hähnle <nicolai.haehnle@amd.com>
Date:   Thu Apr 12 16:34:19 2018 +0200

    drm/amdgpu: set COMPUTE_PGM_RSRC1 for SGPR/VGPR clearing shaders
    
    commit 75569c182e4f65cd8826a5853dc9cbca703cbd0e upstream.
    
    Otherwise, the SQ may skip some of the register writes, or shader waves may
    be allocated where we don't expect them, so that as a result we don't actually
    reset all of the register SRAMs. This can lead to spurious ECC errors later on
    if a shader uses an uninitialized register.
    
    Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79340bda01ab2704b11bae18e592304e41948492
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Apr 10 21:49:32 2018 +1000

    rtc: opal: Fix OPAL RTC driver OPAL_BUSY loops
    
    commit 682e6b4da5cbe8e9a53f979a58c2a9d7dc997175 upstream.
    
    The OPAL RTC driver does not sleep in case it gets OPAL_BUSY or
    OPAL_BUSY_EVENT from firmware, which causes large scheduling
    latencies, up to 50 seconds have been observed here when RTC stops
    responding (BMC reboot can do it).
    
    Fix this by converting it to the standard form OPAL_BUSY loop that
    sleeps.
    
    Fixes: 628daa8d5abf ("powerpc/powernv: Add RTC and NVRAM support plus RTAS fallbacks")
    Cc: stable@vger.kernel.org # v3.2+
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20b0f757da3be5a7c5f14f95250b9c8efcaee02d
Author: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>
Date:   Wed Apr 25 16:29:31 2018 +0530

    cpufreq: powernv: Fix hardlockup due to synchronous smp_call in timer interrupt
    
    commit c0f7f5b6c69107ca92909512533e70258ee19188 upstream.
    
    gpstate_timer_handler() uses synchronous smp_call to set the pstate
    on the requested core. This causes the below hard lockup:
    
      smp_call_function_single+0x110/0x180 (unreliable)
      smp_call_function_any+0x180/0x250
      gpstate_timer_handler+0x1e8/0x580
      call_timer_fn+0x50/0x1c0
      expire_timers+0x138/0x1f0
      run_timer_softirq+0x1e8/0x270
      __do_softirq+0x158/0x3e4
      irq_exit+0xe8/0x120
      timer_interrupt+0x9c/0xe0
      decrementer_common+0x114/0x120
      -- interrupt: 901 at doorbell_global_ipi+0x34/0x50
      LR = arch_send_call_function_ipi_mask+0x120/0x130
      arch_send_call_function_ipi_mask+0x4c/0x130
      smp_call_function_many+0x340/0x450
      pmdp_invalidate+0x98/0xe0
      change_huge_pmd+0xe0/0x270
      change_protection_range+0xb88/0xe40
      mprotect_fixup+0x140/0x340
      SyS_mprotect+0x1b4/0x350
      system_call+0x58/0x6c
    
    One way to avoid this is removing the smp-call. We can ensure that the
    timer always runs on one of the policy-cpus. If the timer gets
    migrated to a cpu outside the policy then re-queue it back on the
    policy->cpus. This way we can get rid of the smp-call which was being
    used to set the pstate on the policy->cpus.
    
    Fixes: 7bc54b652f13 ("timers, cpufreq/powernv: Initialize the gpstate timer as pinned")
    Cc: stable@vger.kernel.org # v4.8+
    Reported-by: Nicholas Piggin <npiggin@gmail.com>
    Reported-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
    Signed-off-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>
    Acked-by: Nicholas Piggin <npiggin@gmail.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Acked-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a5465d0b61d91d9185570be027cf5e166af3d59
Author: Daniel Kurtz <djkurtz@chromium.org>
Date:   Fri Apr 6 17:21:53 2018 -0600

    earlycon: Use a pointer table to fix __earlycon_table stride
    
    commit dd709e72cb934eefd44de8d9969097173fbf45dc upstream.
    
    Commit 99492c39f39f ("earlycon: Fix __earlycon_table stride") tried to fix
    __earlycon_table stride by forcing the earlycon_id struct alignment to 32
    and asking the linker to 32-byte align the __earlycon_table symbol.  This
    fix was based on commit 07fca0e57fca92 ("tracing: Properly align linker
    defined symbols") which tried a similar fix for the tracing subsystem.
    
    However, this fix doesn't quite work because there is no guarantee that
    gcc will place structures packed into an array format.  In fact, gcc 4.9
    chooses to 64-byte align these structs by inserting additional padding
    between the entries because it has no clue that they are supposed to be in
    an array.  If we are unlucky, the linker will assign symbol
    "__earlycon_table" to a 32-byte aligned address which does not correspond
    to the 64-byte aligned contents of section "__earlycon_table".
    
    To address this same problem, the fix to the tracing system was
    subsequently re-implemented using a more robust table of pointers approach
    by commits:
     3d56e331b653 ("tracing: Replace syscall_meta_data struct array with pointer array")
     654986462939 ("tracepoints: Fix section alignment using pointer array")
     e4a9ea5ee7c8 ("tracing: Replace trace_event struct array with pointer array")
    
    Let's use this same "array of pointers to structs" approach for
    EARLYCON_TABLE.
    
    Fixes: 99492c39f39f ("earlycon: Fix __earlycon_table stride")
    Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
    Suggested-by: Aaron Durbin <adurbin@chromium.org>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Tested-by: Guenter Roeck <groeck@chromium.org>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9922fd0c681f4755422900c529290d393229d38d
Author: Anatolij Gustschin <agust@denx.de>
Date:   Sun Apr 15 11:33:08 2018 -0700

    fpga-manager: altera-ps-spi: preserve nCONFIG state
    
    commit 881c93c0fb73328845898344208fa0bf0d62cac6 upstream.
    
    If the driver module is loaded when FPGA is configured, the FPGA
    is reset because nconfig is pulled low (low-active gpio inited
    with GPIOD_OUT_HIGH activates the signal which means setting its
    value to low). Init nconfig with GPIOD_OUT_LOW to prevent this.
    
    Signed-off-by: Anatolij Gustschin <agust@denx.de>
    Acked-by: Alan Tull <atull@kernel.org>
    Signed-off-by: Moritz Fischer <mdf@kernel.org>
    Cc: stable <stable@vger.kernel.org> # 4.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7563d6f2be58010edecd145faa06bcd82251caa0
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Tue Apr 24 19:10:55 2018 +0200

    libceph: validate con->state at the top of try_write()
    
    commit 9c55ad1c214d9f8c4594ac2c3fa392c1c32431a7 upstream.
    
    ceph_con_workfn() validates con->state before calling try_read() and
    then try_write().  However, try_read() temporarily releases con->mutex,
    notably in process_message() and ceph_con_in_msg_alloc(), opening the
    window for ceph_con_close() to sneak in, close the connection and
    release con->sock.  When try_write() is called on the assumption that
    con->state is still valid (i.e. not STANDBY or CLOSED), a NULL sock
    gets passed to the networking stack:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      IP: selinux_socket_sendmsg+0x5/0x20
    
    Make sure con->state is valid at the top of try_write() and add an
    explicit BUG_ON for this, similar to try_read().
    
    Cc: stable@vger.kernel.org
    Link: https://tracker.ceph.com/issues/23706
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2bc3eb5599f945568106acca364d6f5f1ec1f37
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Mon Apr 23 15:25:10 2018 +0200

    libceph: reschedule a tick in finish_hunting()
    
    commit 7b4c443d139f1d2b5570da475f7a9cbcef86740c upstream.
    
    If we go without an established session for a while, backoff delay will
    climb to 30 seconds.  The keepalive timeout is also 30 seconds, so it's
    pretty easily hit after a prolonged hunting for a monitor: we don't get
    a chance to send out a keepalive in time, which means we never get back
    a keepalive ack in time, cutting an established session and attempting
    to connect to a different monitor every 30 seconds:
    
      [Sun Apr 1 23:37:05 2018] libceph: mon0 10.80.20.99:6789 session established
      [Sun Apr 1 23:37:36 2018] libceph: mon0 10.80.20.99:6789 session lost, hunting for new mon
      [Sun Apr 1 23:37:36 2018] libceph: mon2 10.80.20.103:6789 session established
      [Sun Apr 1 23:38:07 2018] libceph: mon2 10.80.20.103:6789 session lost, hunting for new mon
      [Sun Apr 1 23:38:07 2018] libceph: mon1 10.80.20.100:6789 session established
      [Sun Apr 1 23:38:37 2018] libceph: mon1 10.80.20.100:6789 session lost, hunting for new mon
      [Sun Apr 1 23:38:37 2018] libceph: mon2 10.80.20.103:6789 session established
      [Sun Apr 1 23:39:08 2018] libceph: mon2 10.80.20.103:6789 session lost, hunting for new mon
    
    The regular keepalive interval is 10 seconds.  After ->hunting is
    cleared in finish_hunting(), call __schedule_delayed() to ensure we
    send out a keepalive after 10 seconds.
    
    Cc: stable@vger.kernel.org # 4.7+
    Link: http://tracker.ceph.com/issues/23537
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76f7b52b5bf0b03dc1af1df3ecceb5384a4046ca
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Mon Apr 23 15:25:10 2018 +0200

    libceph: un-backoff on tick when we have a authenticated session
    
    commit facb9f6eba3df4e8027301cc0e514dc582a1b366 upstream.
    
    This means that if we do some backoff, then authenticate, and are
    healthy for an extended period of time, a subsequent failure won't
    leave us starting our hunting sequence with a large backoff.
    
    Mirrors ceph.git commit d466bc6e66abba9b464b0b69687cf45c9dccf383.
    
    Cc: stable@vger.kernel.org # 4.7+
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b02bbcce8ea3594b798ae57a7bb5e5dcf23f5e61
Author: Nicolin Chen <nicoleotsuka@gmail.com>
Date:   Sun Apr 8 16:57:35 2018 -0700

    ASoC: fsl_esai: Fix divisor calculation failure at lower ratio
    
    commit c656941df9bc80f7ec65b92ca73c42f8b0b62628 upstream.
    
    When the desired ratio is less than 256, the savesub (tolerance)
    in the calculation would become 0. This will then fail the loop-
    search immediately without reporting any errors.
    
    But if the ratio is smaller enough, there is no need to calculate
    the tolerance because PM divisor alone is enough to get the ratio.
    
    So a simple fix could be just to set PM directly instead of going
    into the loop-search.
    
    Reported-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 674d38ea185006d46a4022920aed29525e137a7e
Author: Stephan Mueller <smueller@chronox.de>
Date:   Thu Apr 12 08:40:55 2018 +0200

    crypto: drbg - set freed buffers to NULL
    
    commit eea0d3ea7546961f69f55b26714ac8fd71c7c020 upstream.
    
    During freeing of the internal buffers used by the DRBG, set the pointer
    to NULL. It is possible that the context with the freed buffers is
    reused. In case of an error during initialization where the pointers
    do not yet point to allocated memory, the NULL value prevents a double
    free.
    
    Cc: stable@vger.kernel.org
    Fixes: 3cfc3b9721123 ("crypto: drbg - use aligned buffers")
    Signed-off-by: Stephan Mueller <smueller@chronox.de>
    Reported-by: syzbot+75397ee3df5c70164154@syzkaller.appspotmail.com
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a32a944a60c854ab44cf873dfc1954828f50b046
Author: Alistair Popple <alistair@popple.id.au>
Date:   Tue Apr 17 19:11:28 2018 +1000

    powerpc/powernv/npu: Do a PID GPU TLB flush when invalidating a large address range
    
    commit d0cf9b561ca97d5245bb9e0c4774b7fadd897d67 upstream.
    
    The NPU has a limited number of address translation shootdown (ATSD)
    registers and the GPU has limited bandwidth to process ATSDs. This can
    result in contention of ATSD registers leading to soft lockups on some
    threads, particularly when invalidating a large address range in
    pnv_npu2_mn_invalidate_range().
    
    At some threshold it becomes more efficient to flush the entire GPU
    TLB for the given MM context (PID) than individually flushing each
    address in the range. This patch will result in ranges greater than
    2MB being converted from 32+ ATSDs into a single ATSD which will flush
    the TLB for the given PID on each GPU.
    
    Fixes: 1ab66d1fbada ("powerpc/powernv: Introduce address translation services for Nvlink2")
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Alistair Popple <alistair@popple.id.au>
    Acked-by: Balbir Singh <bsingharora@gmail.com>
    Tested-by: Balbir Singh <bsingharora@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2acc8dc0644194efba8474d3a4dc13752430894
Author: Balbir Singh <bsingharora@gmail.com>
Date:   Fri Apr 6 15:24:23 2018 +1000

    powerpc/mm: Flush cache on memory hot(un)plug
    
    commit fb5924fddf9ee31db04da7ad4e8c3434a387101b upstream.
    
    This patch adds support for flushing potentially dirty cache lines
    when memory is hot-plugged/hot-un-plugged. The support is currently
    limited to 64 bit systems.
    
    The bug was exposed when mappings for a device were actually
    hot-unplugged and plugged in back later. A similar issue was observed
    during the development of memtrace, but memtrace does it's own
    flushing of region via a custom routine.
    
    These patches do a flush both on hotplug/unplug to clear any stale
    data in the cache w.r.t mappings, there is a small race window where a
    clean cache line may be created again just prior to tearing down the
    mapping.
    
    The patches were tested by disabling the flush routines in memtrace
    and doing I/O on the trace file. The system immediately
    checkstops (quite reliablly if prior to the hot-unplug of the memtrace
    region, we memset the regions we are about to hot unplug). After these
    patches no custom flushing is needed in the memtrace code.
    
    Fixes: 9d5171a8f248 ("powerpc/powernv: Enable removal of memory for in memory tracing")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Balbir Singh <bsingharora@gmail.com>
    Acked-by: Reza Arbab <arbab@linux.ibm.com>
    Reviewed-by: Rashmica Gupta <rashmica.g@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a5ea34017993e6714dec7c741d1d9e263ec3638
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Wed Apr 4 14:48:24 2018 +0100

    KVM: arm/arm64: Close VMID generation race
    
    commit f0cf47d939d0b4b4f660c5aaa4276fa3488f3391 upstream.
    
    Before entering the guest, we check whether our VMID is still
    part of the current generation. In order to avoid taking a lock,
    we start with checking that the generation is still current, and
    only if not current do we take the lock, recheck, and update the
    generation and VMID.
    
    This leaves open a small race: A vcpu can bump up the global
    generation number as well as the VM's, but has not updated
    the VMID itself yet.
    
    At that point another vcpu from the same VM comes in, checks
    the generation (and finds it not needing anything), and jumps
    into the guest. At this point, we end-up with two vcpus belonging
    to the same VM running with two different VMIDs. Eventually, the
    VMID used by the second vcpu will get reassigned, and things will
    really go wrong...
    
    A simple solution would be to drop this initial check, and always take
    the lock. This is likely to cause performance issues. A middle ground
    is to convert the spinlock to a rwlock, and only take the read lock
    on the fast path. If the check fails at that point, drop it and
    acquire the write lock, rechecking the condition.
    
    This ensures that the above scenario doesn't occur.
    
    Cc: stable@vger.kernel.org
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Tested-by: Shannon Zhao <zhaoshenglong@huawei.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ddb53a67cbdd8eda6bd4e72870b7de0499e2e7b
Author: Thor Thayer <thor.thayer@linux.intel.com>
Date:   Mon Mar 26 14:50:00 2018 -0500

    ARM: socfpga_defconfig: Remove QSPI Sector 4K size force
    
    commit 6e8fe39989720b87439fee7817a5ca362b16d931 upstream.
    
    Remove QSPI Sector 4K size force which is causing QSPI boot
    problems with the JFFS2 root filesystem.
    
    Fixes the following error:
         "Magic bitmask 0x1985 not found at ..."
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f671ee8de31a3c2702250e64e5f18ebceb21f1e6
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Apr 10 15:21:45 2018 +0200

    ARM: amba: Don't read past the end of sysfs "driver_override" buffer
    
    commit d2ffed5185df9d8d9ccd150e4340e3b6f96a8381 upstream.
    
    When printing the driver_override parameter when it is 4095 and 4094
    bytes long, the printing code would access invalid memory because we
    need count + 1 bytes for printing.
    
    Cfr. commits 4efe874aace57dba ("PCI: Don't read past the end of sysfs
    "driver_override" buffer") and bf563b01c2895a4b ("driver core: platform:
    Don't read past the end of "driver_override" buffer").
    
    Fixes: 3cf385713460eb2b ("ARM: 8256/1: driver coamba: add device binding path 'driver_override'")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Todd Kjos <tkjos@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23abff7b984ff46b78b9964f9cdba42036b4149a
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Apr 10 15:21:44 2018 +0200

    ARM: amba: Fix race condition with driver_override
    
    commit 6a7228d90d42bcacfe38786756ba62762b91c20a upstream.
    
    The driver_override implementation is susceptible to a race condition
    when different threads are reading vs storing a different driver
    override.  Add locking to avoid this race condition.
    
    Cfr. commits 6265539776a0810b ("driver core: platform: fix race
    condition with driver_override") and 9561475db680f714 ("PCI: Fix race
    condition with driver_override").
    
    Fixes: 3cf385713460eb2b ("ARM: 8256/1: driver coamba: add device binding path 'driver_override'")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Todd Kjos <tkjos@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcd73c772ec1991094de7064b035770e491e293a
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Apr 10 15:21:43 2018 +0200

    ARM: amba: Make driver_override output consistent with other buses
    
    commit 5f53624662eaac89598641cee6cd54fc192572d9 upstream.
    
    For AMBA devices with unconfigured driver override, the
    "driver_override" sysfs virtual file is empty, while it contains
    "(null)" for platform and PCI devices.
    
    Make AMBA consistent with other buses by dropping the test for a NULL
    pointer.
    
    Note that contrary to popular belief, sprintf() handles NULL pointers
    fine; they are printed as "(null)".
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a6e0a900bced2df5f6e52ee475d13e5d5e692b3
Author: Evan Wang <xswang@marvell.com>
Date:   Fri Apr 6 16:55:34 2018 +0200

    PCI: aardvark: Fix PCIe Max Read Request Size setting
    
    commit fc31c4e347c9dad50544d01d5ee98b22c7df88bb upstream.
    
    There is an obvious typo issue in the definition of the PCIe maximum
    read request size: a bit shift is directly used as a value, while it
    should be used to shift the correct value.
    
    Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Evan Wang <xswang@marvell.com>
    Reviewed-by: Victor Gu <xigu@marvell.com>
    Reviewed-by: Nadav Haklai <nadavh@marvell.com>
    [Thomas: tweak commit log.]
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b3751e249ff93f065ae90bb9b5e66cc42da9fcc
Author: Victor Gu <xigu@marvell.com>
Date:   Fri Apr 6 16:55:33 2018 +0200

    PCI: aardvark: Use ISR1 instead of ISR0 interrupt in legacy irq mode
    
    commit 3430f924a62905891c8fa9a3b97ea52007795bc3 upstream.
    
    The Aardvark has two interrupts sets:
    
     - first set is bit[23:16] of PCIe ISR 0 register(RD0074840h)
    
     - second set is bit[11:8] of PCIe ISR 1 register(RD0074848h)
    
    Only one set should be used, while another set should be masked.
    
    The second set, ISR1, is more advanced, the Legacy INT_X status bit is
    asserted once Assert_INTX message is received, and de-asserted after
    Deassert_INTX message is received which matches what the driver is
    currently doing in the ->irq_mask() and ->irq_unmask() functions.
    
    The ISR0 requires additional work to deassert the interrupt, which the
    driver does not currently implement, therefore it needs fixing.
    
    Update the driver to use ISR1 register set, fixing current
    implementation.
    
    Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196339
    Signed-off-by: Victor Gu <xigu@marvell.com>
    [Thomas: tweak commit log.]
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    [lorenzo.pieralisi@arm.com: updated the commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Evan Wang <xswang@marvell.com>
    Reviewed-by: Nadav Haklai <nadavh@marvell.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0ae21a86eb52970966d73094a402338e1fc85ac
Author: Victor Gu <xigu@marvell.com>
Date:   Fri Apr 6 16:55:32 2018 +0200

    PCI: aardvark: Set PIO_ADDR_LS correctly in advk_pcie_rd_conf()
    
    commit 4fa3999ee672c54a5498ce98e20fe3fdf9c1cbb4 upstream.
    
    When setting the PIO_ADDR_LS register during a configuration read, we
    were properly passing the device number, function number and register
    number, but not the bus number, causing issues when reading the
    configuration of PCIe devices.
    
    Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Victor Gu <xigu@marvell.com>
    Reviewed-by: Wilson Ding <dingwei@marvell.com>
    Reviewed-by: Nadav Haklai <nadavh@marvell.com>
    [Thomas: tweak commit log.]
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e90b89088a109f1c49befd8a7f9f7d970d093e62
Author: Victor Gu <xigu@marvell.com>
Date:   Fri Apr 6 16:55:31 2018 +0200

    PCI: aardvark: Fix logic in advk_pcie_{rd,wr}_conf()
    
    commit 660661afcd40ed7f515ef3369721ed58e80c0fc5 upstream.
    
    The PCI configuration space read/write functions were special casing
    the situation where PCI_SLOT(devfn) != 0, and returned
    PCIBIOS_DEVICE_NOT_FOUND in this case.
    
    However, while this is what is intended for the root bus, it is not
    intended for the child busses, as it prevents discovering devices with
    PCI_SLOT(x) != 0. Therefore, we return PCIBIOS_DEVICE_NOT_FOUND only
    if we're on the root bus.
    
    Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Victor Gu <xigu@marvell.com>
    Reviewed-by: Wilson Ding <dingwei@marvell.com>
    Reviewed-by: Nadav Haklai <nadavh@marvell.com>
    [Thomas: tweak commit log.]
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd0485e2cc7b5f69889dca223b2c9f7cba6e91f4
Author: Martijn Coenen <maco@android.com>
Date:   Wed Mar 28 11:14:50 2018 +0200

    ANDROID: binder: prevent transactions into own process.
    
    commit 7aa135fcf26377f92dc0680a57566b4c7f3e281b upstream.
    
    This can't happen with normal nodes (because you can't get a ref
    to a node you own), but it could happen with the context manager;
    to make the behavior consistent with regular nodes, reject
    transactions into the context manager by the process owning it.
    
    Reported-by: syzbot+09e05aba06723a94d43d@syzkaller.appspotmail.com
    Signed-off-by: Martijn Coenen <maco@android.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bddabeb71f3fc2577d7576251507f36320cecdb1
Author: Cornelia Huck <cohuck@redhat.com>
Date:   Fri Apr 20 10:24:04 2018 +0200

    vfio: ccw: process ssch with interrupts disabled
    
    commit 3368e547c52b96586f0edf9657ca12b94d8e61a7 upstream.
    
    When we call ssch, an interrupt might already be pending once we
    return from the START SUBCHANNEL instruction. Therefore we need to
    make sure interrupts are disabled while holding the subchannel lock
    until after we're done with our processing.
    
    Cc: stable@vger.kernel.org #v4.12+
    Reviewed-by: Dong Jia Shi <bjsdjshi@linux.ibm.com>
    Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
    Acked-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be10336a907253a6066d802c11b6edaf7cf397f8
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue Apr 17 17:08:52 2018 -0600

    bfq-iosched: ensure to clear bic/bfqq pointers when preparing request
    
    commit 72961c4e6082be79825265d9193272b8a1634dec upstream.
    
    Even if we don't have an IO context attached to a request, we still
    need to clear the priv[0..1] pointers, as they could be pointing
    to previously used bic/bfqq structures. If we don't do so, we'll
    either corrupt memory on dispatching a request, or cause an
    imbalance in counters.
    
    Inspired by a fix from Kees.
    
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Reported-by: Kees Cook <keescook@chromium.org>
    Cc: stable@vger.kernel.org
    Fixes: aee69d78dec0 ("block, bfq: introduce the BFQ-v0 I/O scheduler as an extra scheduler")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b23b4174275d397281023703ce19ff793e6dfd98
Author: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
Date:   Tue Apr 17 17:03:12 2018 +0530

    scsi: sd: Defer spinning up drive while SANITIZE is in progress
    
    commit 505aa4b6a8834a2300971c5220c380c3271ebde3 upstream.
    
    A drive being sanitized will return NOT READY / ASC 0x4 / ASCQ
    0x1b ("LOGICAL UNIT NOT READY. SANITIZE IN PROGRESS").
    
    Prevent spinning up the drive until this condition clears.
    
    [mkp: tweaked commit message]
    
    Signed-off-by: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5f4276787d63f726b751d80b5b51f0c8d4d0384
Author: Dmitry Vyukov <dvyukov@google.com>
Date:   Wed Apr 11 17:22:43 2018 +0200

    kobject: don't use WARN for registration failures
    
    commit 3e14c6abbfb5c94506edda9d8e2c145d79375798 upstream.
    
    This WARNING proved to be noisy. The function still returns an error
    and callers should handle it. That's how most of kernel code works.
    Downgrade the WARNING to pr_err() and leave WARNINGs for kernel bugs.
    
    Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: syzbot+209c0f67f99fec8eb14b@syzkaller.appspotmail.com
    Reported-by: syzbot+7fb6d9525a4528104e05@syzkaller.appspotmail.com
    Reported-by: syzbot+2e63711063e2d8f9ea27@syzkaller.appspotmail.com
    Reported-by: syzbot+de73361ee4971b6e6f75@syzkaller.appspotmail.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6840b774dc4d211ac546af5a2e02bb02fad0b162
Author: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Date:   Thu Apr 5 14:57:59 2018 +0200

    mtd: rawnand: tango: Fix struct clk memory leak
    
    commit 007b4e8b705a4eff184d567c5a8b496622f9e116 upstream.
    
    Use devm_clk_get() to let Linux manage struct clk memory.
    
    Fixes: 6956e2385a16 ("add tango NAND flash controller support")
    Cc: stable@vger.kernel.org
    Reported-by: Xidong Wang <wangxidong_97@163.com>
    Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f69cd2d30a800776f241b3ea16279628fc4dd724
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Thu Mar 1 14:39:41 2018 +0100

    mtd: cfi: cmdset_0002: Do not allow read/write to suspend erase block.
    
    commit 7b70eb14392a7cf505f9b358d06c33b5af73d1e7 upstream.
    
    Currently it is possible to read and/or write to suspend EB's.
    Writing /dev/mtdX or /dev/mtdblockX from several processes may
    break the flash state machine.
    
    Taken from cfi_cmdset_0001 driver.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 204e0761846b2458a2b803faa4619f0830cf26de
Author: Joakim Tjernlund <joakim.tjernlund@transmode.se>
Date:   Thu Mar 1 14:39:40 2018 +0100

    mtd: cfi: cmdset_0001: Workaround Micron Erase suspend bug.
    
    commit 46a16a2283f9e678a4e26829175e0c37a5191860 upstream.
    
    Some Micron chips does not work well wrt Erase suspend for
    boot blocks. This avoids the issue by not allowing Erase suspend
    for the boot blocks for the 28F00AP30(1GBit) chip.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1de1ad0c2c4262a9eafcbede4e662aa503f71f6c
Author: Joakim Tjernlund <joakim.tjernlund@transmode.se>
Date:   Thu Mar 1 14:39:39 2018 +0100

    mtd: cfi: cmdset_0001: Do not allow read/write to suspend erase block.
    
    commit 6510bbc88e3258631831ade49033537081950605 upstream.
    
    Currently it is possible to read and/or write to suspend EB's.
    Writing /dev/mtdX or /dev/mtdblockX from several processes may
    break the flash state machine.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c677c5968aaa8122f314aca78c7210bf01cb890
Author: Thor Thayer <thor.thayer@linux.intel.com>
Date:   Mon Apr 23 12:45:11 2018 -0500

    mtd: spi-nor: cadence-quadspi: Fix page fault kernel panic
    
    commit 47016b341fc3b3fd4909e058c6fa38f165b53646 upstream.
    
    The current Cadence QSPI driver caused a kernel panic when loading
    a Root Filesystem from QSPI. The problem was caused by reading more
    bytes than needed because the QSPI operated on 4 bytes at a time.
    <snip>
    [    7.947754] spi_nor_read[1048]:from 0x037cad74, len 1 [bfe07fff]
    [    7.956247] cqspi_read[910]:offset 0x58502516, buffer=bfe07fff
    [    7.956247]
    [    7.966046] Unable to handle kernel paging request at virtual
    address bfe08002
    [    7.973239] pgd = eebfc000
    [    7.975931] [bfe08002] *pgd=2fffb811, *pte=00000000, *ppte=00000000
    </snip>
    Notice above how only 1 byte needed to be read but by reading 4 bytes
    into the end of a mapped page, an unrecoverable page fault occurred.
    
    This patch uses a temporary buffer to hold the 4 bytes read and then
    copies only the bytes required into the buffer. A min() function is
    used to limit the length to prevent buffer overflows.
    
    Request testing of this patch on other platforms. This was tested
    on the Intel Arria10 SoCFPGA DevKit.
    
    Fixes: 0cf1725676a97fc8 ("mtd: spi-nor: cqspi: Fix build on arches missing readsl/writesl")
    Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d4612bf62c8f355a478169cba68cffe9d11bd82
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Apr 25 17:07:27 2018 +0800

    ALSA: hda/realtek - change the location for one of two front mics
    
    commit 65811834ba56e9ed88117cf6c09880416c9951ab upstream.
    
    On this Lenovo ThinkCentre machine. There are two front mics,
    we change the location for one of them.
    
    Relation: f33f79f3d0e5 ("ALSA: hda/realtek - change the location for
    one of two front microphones")
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53c4197a2d7e88272afae14e3b1f844f8469af01
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Apr 25 16:05:27 2018 +0800

    ALSA: hda/realtek - Update ALC255 depop optimize
    
    commit ab3b8e5159b5335c81ba2d09ee5054d4a1b5a7a6 upstream.
    
    Add ALC255 its own depop functions for alc_init and alc_shutup.
    Assign it to ALC256 usage.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9df23efe5ccdf646be0aad10b744c8d09a56ee1
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Apr 25 15:31:52 2018 +0800

    ALSA: hda/realtek - Add some fixes for ALC233
    
    commit ea04a1dbf8b1d6af759d58e705636fde48583f8f upstream.
    
    Fill COEF to change EAPD to verb control.
    Assigned codec type.
    
    This is an additional fix over 92f974df3460 ("ALSA: hda/realtek - New
    vendor ID for ALC233").
    
    [ More notes:
      according to Kailang, the chip is 10ec:0235 bonding for ALC233b,
      which is equivalent with ALC255.  It's only used for Lenovo.
      The chip needs no alc_process_coef_fw() for headset unlike ALC255. ]
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d680a34d82b6475ab4fea343c8390f115b72b41a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:50:50 2018 +0200

    ALSA: hda: Hardening for potential Spectre v1
    
    commit 69fa6f19b95597618ab30438a27b67ad93daa7c7 upstream.
    
    As recently Smatch suggested, one place in HD-audio hwdep ioctl codes
    may expand the array directly from the user-space value with
    speculation:
      sound/pci/hda/hda_local.h:467 get_wcaps() warn: potential spectre issue 'codec->wcaps'
    
    As get_wcaps() itself is a fairly frequently called inline function,
    and there is only one single call with a user-space value, we replace
    only the latter one to open-code locally with array_index_nospec()
    hardening in this patch.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bda3aba8c0a161232d634c1ef695e72683f9f20a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:31:54 2018 +0200

    ALSA: seq: oss: Hardening for potential Spectre v1
    
    commit 8d218dd8116695ecda7164f97631c069938aa22e upstream.
    
    As Smatch recently suggested, a few places in OSS sequencer codes may
    expand the array directly from the user-space value with speculation,
    namely there are a significant amount of references to either
    info->ch[] or dp->synths[] array:
    
      sound/core/seq/oss/seq_oss_event.c:315 note_on_event() warn: potential spectre issue 'info->ch' (local cap)
      sound/core/seq/oss/seq_oss_event.c:362 note_off_event() warn: potential spectre issue 'info->ch' (local cap)
      sound/core/seq/oss/seq_oss_synth.c:470 snd_seq_oss_synth_load_patch() warn: potential spectre issue 'dp->synths' (local cap)
      sound/core/seq/oss/seq_oss_event.c:293 note_on_event() warn: potential spectre issue 'dp->synths'
      sound/core/seq/oss/seq_oss_event.c:353 note_off_event() warn: potential spectre issue 'dp->synths'
      sound/core/seq/oss/seq_oss_synth.c:506 snd_seq_oss_synth_sysex() warn: potential spectre issue 'dp->synths'
      sound/core/seq/oss/seq_oss_synth.c:580 snd_seq_oss_synth_ioctl() warn: potential spectre issue 'dp->synths'
    
    Although all these seem doing only the first load without further
    reference, we may want to stay in a safer side, so hardening with
    array_index_nospec() would still make sense.
    
    We may put array_index_nospec() at each place, but here we take a
    different approach:
    
    - For dp->synths[], change the helpers to retrieve seq_oss_synthinfo
      pointer directly instead of the array expansion at each place
    
    - For info->ch[], harden in a normal way, as there are only a couple
      of places
    
    As a result, the existing helper, snd_seq_oss_synth_is_valid() is
    replaced with snd_seq_oss_synth_info().  Also, we cover MIDI device
    where a similar array expansion is done, too, although it wasn't
    reported by Smatch.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a52a2127240ea5149a83ab80c7adacb4e36e7a4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:26:59 2018 +0200

    ALSA: seq: oss: Fix unbalanced use lock for synth MIDI device
    
    commit f5e94b4c6ebdabe0f602d796e0430180927521a0 upstream.
    
    When get_synthdev() is called for a MIDI device, it returns the fixed
    midi_synth_dev without the use refcounting.  OTOH, the caller is
    supposed to unreference unconditionally after the usage, so this would
    lead to unbalanced refcount.
    
    This patch corrects the behavior and keep up the refcount balance also
    for the MIDI synth device.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30ddc329d56281c0c1d038d5f572af3c31e6b0a6
Author: David Henningsson <diwic@ubuntu.com>
Date:   Sat Apr 21 14:57:40 2018 +0200

    ALSA: core: Report audio_tstamp in snd_pcm_sync_ptr
    
    commit f853dcaae2f5bbe021161e421bd1576845bae8f6 upstream.
    
    It looks like a simple mistake that this struct member
    was forgotten.
    
    Audio_tstamp isn't used much, and on some archs (such as x86) this
    ioctl is not used by default, so that might be the reason why this
    has slipped for so long.
    
    Fixes: 4eeaaeaea1ce ("ALSA: core: add hooks for audio timestamps")
    Signed-off-by: David Henningsson <diwic@ubuntu.com>
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Cc: <stable@vger.kernel.org> # v3.8+
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00e0495d83277d43078aa99b3186cc527af792a5
Author: Jeffery Miller <jmiller@neverware.com>
Date:   Fri Apr 20 23:20:46 2018 -0500

    ALSA: pcm: Return negative delays from SNDRV_PCM_IOCTL_DELAY.
    
    commit 912e4c332037e7ed063c164985c36fb2b549ea3a upstream.
    
    The commit c2c86a97175f ("ALSA: pcm: Remove set_fs() in PCM core code")
    changed SNDRV_PCM_IOCTL_DELAY to return an inconsistent error instead of a
    negative delay.  Originally the call would succeed and return the negative
    delay.  The Chromium OS Audio Server (CRAS) gets confused and hangs when
    the error is returned instead of the negative delay.
    
    Help CRAS avoid the issue by rolling back the behavior to return a
    negative delay instead of an error.
    
    Fixes: c2c86a97175f ("ALSA: pcm: Remove set_fs() in PCM core code")
    Signed-off-by: Jeffery Miller <jmiller@neverware.com>
    Cc: <stable@vger.kernel.org> # v4.13+
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ab1a94d17dbf959f5910f56edda84889f5ddd39
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:45:56 2018 +0200

    ALSA: control: Hardening for potential Spectre v1
    
    commit 088e861edffb84879cf0c0d1b02eda078c3a0ffe upstream.
    
    As recently Smatch suggested, a few places in ALSA control core codes
    may expand the array directly from the user-space value with
    speculation:
    
      sound/core/control.c:1003 snd_ctl_elem_lock() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:1031 snd_ctl_elem_unlock() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:844 snd_ctl_elem_info() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:891 snd_ctl_elem_read() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:939 snd_ctl_elem_write() warn: potential spectre issue 'kctl->vd'
    
    Although all these seem doing only the first load without further
    reference, we may want to stay in a safer side, so hardening with
    array_index_nospec() would still make sense.
    
    In this patch, we put array_index_nospec() to the common
    snd_ctl_get_ioff*() helpers instead of each caller.  These helpers are
    also referred from some drivers, too, and basically all usages are to
    calculate the array index from the user-space value, hence it's better
    to cover there.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d57d45965dd1acd6a256787ad17e644af605a67
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 08:04:41 2018 +0200

    ALSA: rme9652: Hardening for potential Spectre v1
    
    commit f526afcd8f71945c23ce581d7864ace93de8a4f7 upstream.
    
    As recently Smatch suggested, one place in RME9652 driver may expand
    the array directly from the user-space value with speculation:
      sound/pci/rme9652/rme9652.c:2074 snd_rme9652_channel_info() warn: potential spectre issue 'rme9652->channel_map' (local cap)
    
    This patch puts array_index_nospec() for hardening against it.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8616ffbb78d84d256106a96a2b7b02cd7123961
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 08:03:14 2018 +0200

    ALSA: hdspm: Hardening for potential Spectre v1
    
    commit 10513142a7114d251670361ad40cba2c61403406 upstream.
    
    As recently Smatch suggested, a couple of places in HDSP MADI driver
    may expand the array directly from the user-space value with
    speculation:
      sound/pci/rme9652/hdspm.c:5717 snd_hdspm_channel_info() warn: potential spectre issue 'hdspm->channel_map_out' (local cap)
      sound/pci/rme9652/hdspm.c:5734 snd_hdspm_channel_info() warn: potential spectre issue 'hdspm->channel_map_in' (local cap)
    
    This patch puts array_index_nospec() for hardening against them.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f1705268fd2ad526a9845ea5a44bf82abec853e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 08:01:48 2018 +0200

    ALSA: asihpi: Hardening for potential Spectre v1
    
    commit f9d94b57e30fd1575b4935045b32d738668aa74b upstream.
    
    As recently Smatch suggested, a couple of places in ASIHPI driver may
    expand the array directly from the user-space value with speculation:
      sound/pci/asihpi/hpimsginit.c:70 hpi_init_response() warn: potential spectre issue 'res_size' (local cap)
      sound/pci/asihpi/hpioctl.c:189 asihpi_hpi_ioctl() warn: potential spectre issue 'adapters'
    
    This patch puts array_index_nospec() for hardening against them.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b67a05364e5daf88fc37d1c84e8b91ea460f0aae
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:56:07 2018 +0200

    ALSA: opl3: Hardening for potential Spectre v1
    
    commit 7f054a5bee0987f1e2d4e59daea462421c76f2cb upstream.
    
    As recently Smatch suggested, one place in OPL3 driver may expand the
    array directly from the user-space value with speculation:
      sound/drivers/opl3/opl3_synth.c:476 snd_opl3_set_voice() warn: potential spectre issue 'snd_opl3_regmap'
    
    This patch puts array_index_nospec() for hardening against it.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19baecfc11058e923d66cd0b32e9339ec94f6b92
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 25 16:19:13 2018 +0200

    ALSA: hda - Skip jack and others for non-existing PCM streams
    
    commit 8a7d6003df41cb16f6b3b620da044fbd92d2f5ee upstream.
    
    When CONFIG_SND_DYNAMIC_MINORS isn't set, there are only limited
    number of devices available, and HD-audio, especially with HDMI/DP
    codec, will fail to create more than two devices.
    
    The driver warns about the lack of such devices and skips the PCM
    device creations, but the HDMI driver still tries to create the
    corresponding JACK, SPDIF and ELD controls even for the non-existing
    PCM substreams.  This results in confusion on user-space, and even may
    break the operation.
    
    Similarly, Intel HDMI/DP codec builds the ELD notification from i915
    graphics driver, and this may be broken if a notification is sent for
    the non-existing PCM stream.
    
    This patch adds the check of the existence of the assigned PCM
    substream in the both scenarios above, and skips the further operation
    if the PCM substream is not assigned.
    
    Fixes: 9152085defb6 ("ALSA: hda - add DP MST audio support")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d03fbe62e173c8946b271e521d7b9237ae4d2305
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Thu Apr 26 22:00:29 2018 +0900

    ALSA: dice: fix error path to destroy initialized stream data
    
    commit 0f925660a7bc49b269c163249a5d06da3a0c7b0a upstream.
    
    In error path of snd_dice_stream_init_duplex(), stream data for incoming
    packet can be left to be initialized.
    
    This commit fixes it.
    
    Fixes: 436b5abe2224 ('ALSA: dice: handle whole available isochronous streams')
    Cc: <stable@vger.kernel.org> # v4.6+
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba9c9886a40ddaeaa07e8fc81da3bbc755192115
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Sun Apr 22 21:19:24 2018 +0900

    ALSA: dice: fix OUI for TC group
    
    commit 10412c420af9ba1f3de8483a95d360e5eb5bfc84 upstream.
    
    OUI for TC Electronic is 0x000166, for TC GROUP A/S. 0x001486 is for Echo
    Digital Audio Corporation.
    
    Fixes: 7cafc65b3aa1 ('ALSA: dice: force to add two pcm devices for listed models')
    Cc: <stable@vger.kernel.org> # v4.6+
    Reference: http://standards-oui.ieee.org/oui/oui.txt
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 545906124041557d02f0dd29a59aef3182fd3ccb
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Wed Apr 25 20:12:31 2018 +0900

    tty: Use __GFP_NOFAIL for tty_ldisc_get()
    
    commit bcdd0ca8cb8730573afebcaae4138f8f4c8eaa20 upstream.
    
    syzbot is reporting crashes triggered by memory allocation fault injection
    at tty_ldisc_get() [1]. As an attempt to handle OOM in a graceful way, we
    have tried commit 5362544bebe85071 ("tty: don't panic on OOM in
    tty_set_ldisc()"). But we reverted that attempt by commit a8983d01f9b7d600
    ("Revert "tty: don't panic on OOM in tty_set_ldisc()"") due to reproducible
    crash. We should spend resource for finding and fixing race condition bugs
    rather than complicate error paths for 2 * sizeof(void *) bytes allocation
    failure.
    
    [1] https://syzkaller.appspot.com/bug?id=489d33fa386453859ead58ff5171d43772b13aa3
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+40b7287c2dc987c48c81@syzkaller.appspotmail.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vegard Nossum <vegard.nossum@gmail.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Cc: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 877f418171af2aae702cf0878ae2ec44eab5e89a
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Apr 16 20:06:34 2018 +0900

    tty: Avoid possible error pointer dereference at tty_ldisc_restore().
    
    commit 598c2d41ff44889dd8eced4f117403e472158d85 upstream.
    
    syzbot is reporting crashes [1] triggered by memory allocation failure at
    tty_ldisc_get() from tty_ldisc_restore(). While syzbot stops at WARN_ON()
    due to panic_on_warn == true, panic_on_warn == false will after all trigger
    an OOPS by dereferencing old->ops->num if IS_ERR(old) == true.
    
    We can simplify tty_ldisc_restore() as three calls (old->ops->num, N_TTY,
    N_NULL) to tty_ldisc_failto() in addition to avoiding possible error
    pointer dereference.
    
    If someone reports kernel panic triggered by forcing all memory allocations
    for tty_ldisc_restore() to fail, we can consider adding __GFP_NOFAIL for
    tty_ldisc_restore() case.
    
    [1] https://syzkaller.appspot.com/bug?id=6ac359c61e71d22e06db7f8f88243feb11d927e7
    
    Reported-by: syzbot+40b7287c2dc987c48c81@syzkaller.appspotmail.com
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Alan Cox <alan@llwyncelyn.cymru>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a50af86a62be245cf093c3de2c02790da1491df
Author: Tony Lindgren <tony@atomide.com>
Date:   Sat Apr 7 10:19:51 2018 -0700

    tty: n_gsm: Fix DLCI handling for ADM mode if debug & 2 is not set
    
    commit b2d89ad9c9682e795ed6eeb9ed455789ad6cedf1 upstream.
    
    At least on droid 4 with control channel in ADM mode, there is no response
    to Modem Status Command (MSC). Currently gsmtty_modem_update() expects to
    have data in dlci->modem_rx unless debug & 2 is set. This means that on
    droid 4, things only work if debug & 2 is set.
    
    Let's fix the issue by ignoring empty dlci->modem_rx for ADM mode. In
    the AMD mode, CMD_MSC will never respond and gsm_process_modem() won't
    get called to set dlci->modem_rx.
    
    And according to ts_127010v140000p.pdf, MSC is only relevant if basic
    option is chosen, so let's test for that too.
    
    Fixes: ea3d8465ab9b ("tty: n_gsm: Allow ADM response in addition to UA for control dlci")
    Cc: linux-serial@vger.kernel.org
    Cc: Alan Cox <alan@llwyncelyn.cymru>
    Cc: Dan Williams <dcbw@redhat.com>
    Cc: Jiri Prchal <jiri.prchal@aksignal.cz>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Michael Nazzareno Trimarchi <michael@amarulasolutions.com>
    Cc: Michael Scott <michael.scott@linaro.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Cc: Russ Gorby <russ.gorby@intel.com>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ba9a47d1fc5ce78e47026d98621366712c554f7
Author: Tony Lindgren <tony@atomide.com>
Date:   Sat Apr 7 10:19:50 2018 -0700

    tty: n_gsm: Fix long delays with control frame timeouts in ADM mode
    
    commit e9ec22547986dd32c5c70da78107ce35dbff1344 upstream.
    
    Commit ea3d8465ab9b ("tty: n_gsm: Allow ADM response in addition to UA for
    control dlci") added support for DLCI to stay in Asynchronous Disconnected
    Mode (ADM). But we still get long delays waiting for commands to other
    DLCI to complete:
    
    --> 5) C: SABM(P)
    Q>  0) C: UIH(F)
    Q>  0) C: UIH(F)
    Q>  0) C: UIH(F)
    ...
    
    This happens because gsm_control_send() sets cretries timer to T2 that is
    by default set to 34. This will cause resend for T2 times for the control
    frame. In ADM mode, we will never get a response so the control frame, so
    retries are just delaying all the commands.
    
    Let's fix the issue by setting DLCI_MODE_ADM flag after detecting the ADM
    mode for the control DLCI. Then we can use that in gsm_control_send() to
    set retries to 1. This means the control frame will be sent once allowing
    the other end at an opportunity to switch from ADM to ABM mode.
    
    Note that retries will be decremented in gsm_control_retransmit() so
    we don't want to set it to 0 here.
    
    Fixes: ea3d8465ab9b ("tty: n_gsm: Allow ADM response in addition to UA for control dlci")
    Cc: linux-serial@vger.kernel.org
    Cc: Alan Cox <alan@llwyncelyn.cymru>
    Cc: Dan Williams <dcbw@redhat.com>
    Cc: Jiri Prchal <jiri.prchal@aksignal.cz>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Michael Nazzareno Trimarchi <michael@amarulasolutions.com>
    Cc: Michael Scott <michael.scott@linaro.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Cc: Russ Gorby <russ.gorby@intel.com>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4854b9665c8193291199e7b3d53c63a14a19a802
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Thu Apr 5 19:40:16 2018 +0900

    tty: Don't call panic() at tty_ldisc_init()
    
    commit 903f9db10f18f735e62ba447147b6c434b6af003 upstream.
    
    syzbot is reporting kernel panic [1] triggered by memory allocation failure
    at tty_ldisc_get() from tty_ldisc_init(). But since both tty_ldisc_get()
    and caller of tty_ldisc_init() can cleanly handle errors, tty_ldisc_init()
    does not need to call panic() when tty_ldisc_get() failed.
    
    [1] https://syzkaller.appspot.com/bug?id=883431818e036ae6a9981156a64b821110f39187
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0ed8ece4ef395e8b1665fdba276b7285c44f0ab
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Tue Apr 3 11:59:04 2018 +0200

    drm/virtio: fix vq wait_event condition
    
    commit d02d270014f70dcab0117776b81a37b6fca745ae upstream.
    
    Wait until we have enough space in the virt queue to actually queue up
    our request.  Avoids the guest spinning in case we have a non-zero
    amount of free entries but not enough for the request.
    
    Cc: stable@vger.kernel.org
    Reported-by: Alain Magloire <amagloire@blackberry.com>
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Reviewed-by: Dave Airlie <airlied@redhat.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20180403095904.11152-1-kraxel@redhat.com
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 998d43ce034b98466e0aa1b8d56b6d524c7d0d4e
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 21:00:13 2018 +0300

    virtio_console: reset on out of memory
    
    commit 5c60300d68da32ca77f7f978039dc72bfc78b06b upstream.
    
    When out of memory and we can't add ctrl vq buffers,
    probe fails. Unfortunately the error handling is
    out of spec: it calls del_vqs without bothering
    to reset the device first.
    
    To fix, call the full cleanup function in this case.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9287108acce9b3611bc45a76801fbe242347e60
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:51:18 2018 +0300

    virtio_console: move removal code
    
    commit aa44ec867030a72e8aa127977e37dec551d8df19 upstream.
    
    Will make it reusable for error handling.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75fc6f2d39bfe32db91980408247edc77d189a5a
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:49:04 2018 +0300

    virtio_console: drop custom control queue cleanup
    
    commit 61a8950c5c5708cf2068b29ffde94e454e528208 upstream.
    
    We now cleanup all VQs on device removal - no need
    to handle the control VQ specially.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b1c41a0f7183702abb7a104c6c7e196ad69a6b3
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:24:23 2018 +0300

    virtio_console: free buffers after reset
    
    commit a7a69ec0d8e4a58be7db88d33cbfa2912807bb2b upstream.
    
    Console driver is out of spec. The spec says:
            A driver MUST NOT decrement the available idx on a live
            virtqueue (ie. there is no way to “unexpose” buffers).
    and it does exactly that by trying to detach unused buffers
    without doing a device reset first.
    
    Defer detaching the buffers until device unplug.
    
    Of course this means we might get an interrupt for
    a vq without an attached port now. Handle that by
    discarding the consumed buffer.
    
    Reported-by: Tiwei Bie <tiwei.bie@intel.com>
    Fixes: b3258ff1d6 ("virtio: Decrement avail idx on buffer detach")
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4217a339b37dd8b0c001ec54f85ea84eab7f4feb
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 19:54:23 2018 +0300

    virtio_console: don't tie bufs to a vq
    
    commit 2855b33514d290c51d52d94e25d3ef942cd4d578 upstream.
    
    an allocated buffer doesn't need to be tied to a vq -
    only vq->vdev is ever used. Pass the function the
    just what it needs - the vdev.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ae93ff136a00eccc0027d9a01c95680a9e8d756
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:22:40 2018 +0300

    virtio: add ability to iterate over vqs
    
    commit 24a7e4d20783c0514850f24a5c41ede46ab058f0 upstream.
    
    For cleanup it's helpful to be able to simply scan all vqs and discard
    all data. Add an iterator to do that.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf7405f67543bcb8b334c1e79fcd75ad172f7599
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 11:11:48 2018 +0200

    ALSA: usb-audio: Skip broken EU on Dell dock USB-audio
    
    commit 1d8d6428d1da642ddd75b0be2d1bb1123ff8e017 upstream.
    
    The Dell Dock USB-audio device with 0bda:4014 is behaving notoriously
    bad, and we have already applied some workaround to avoid the firmware
    hiccup.  Yet we still need to skip one thing, the Extension Unit at ID
    4, which doesn't react correctly to the mixer ctl access.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1090658
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6d2055ba32f0878b09f3068af10a4ba445f84a8
Author: Ravi Chandra Sadineni <ravisadineni@chromium.org>
Date:   Fri Apr 20 11:08:21 2018 -0700

    USB: Increment wakeup count on remote wakeup.
    
    commit 83a62c51ba7b3c0bf45150c4eac7aefc6c785e94 upstream.
    
    On chromebooks we depend on wakeup count to identify the wakeup source.
    But currently USB devices do not increment the wakeup count when they
    trigger the remote wake. This patch addresses the same.
    
    Resume condition is reported differently on USB 2.0 and USB 3.0 devices.
    
    On USB 2.0 devices, a wake capable device, if wake enabled, drives
    resume signal to indicate a remote wake (USB 2.0 spec section 7.1.7.7).
    The upstream facing port then sets C_PORT_SUSPEND bit and reports a
    port change event (USB 2.0 spec section 11.24.2.7.2.3). Thus if a port
    has resumed before driving the resume signal from the host and
    C_PORT_SUSPEND is set, then the device attached to the given port might
    be the reason for the last system wakeup. Increment the wakeup count for
    the same.
    
    On USB 3.0 devices, a function may signal that it wants to exit from device
    suspend by sending a Function Wake Device Notification to the host (USB3.0
    spec section 8.5.6.4) Thus on receiving the Function Wake, increment the
    wakeup count.
    
    Signed-off-by: Ravi Chandra Sadineni <ravisadineni@chromium.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c59dc4d135192123523f35ff60243295a4f9d40a
Author: Kamil Lulko <kamilx.lulko@intel.com>
Date:   Thu Apr 19 16:54:02 2018 -0700

    usb: core: Add quirk for HP v222w 16GB Mini
    
    commit 3180dabe08e3653bf0a838553905d88f3773f29c upstream.
    
    Add DELAY_INIT quirk to fix the following problem with HP
    v222w 16GB Mini:
    
    usb 1-3: unable to read config index 0 descriptor/start: -110
    usb 1-3: can't read configurations, error -110
    usb 1-3: can't set config #1, error -110
    
    Signed-off-by: Kamil Lulko <kamilx.lulko@intel.com>
    Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 333909311d70b035306a86b0139daaf480a25624
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date:   Wed Apr 18 15:34:10 2018 +0300

    usb: typec: ucsi: Increase command completion timeout value
    
    commit b1b59e16075f5e5da2943ce8de724ab96bc3c6c2 upstream.
    
    On some boards, under heavy load, the EC firmware is
    unable to complete commands even in one second. Increasing
    the command completion timeout value to five seconds.
    
    Reported-by: Quanxian Wang <quanxian.wang@intel.com>
    Fixes: c1b0bc2dabfa ("usb: typec: Add support for UCSI interface")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f310eb70657e991c68c085e41b66e7c119cb392b
Author: Kyle Roeschley <kyle.roeschley@ni.com>
Date:   Mon Apr 9 10:23:55 2018 -0500

    USB: serial: cp210x: add ID for NI USB serial console
    
    commit 1e23aace21515a8f7615a1de016c0ea8d4e0cc6e upstream.
    
    Added the USB VID and PID for the USB serial console on some National
    Instruments devices.
    
    Signed-off-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 747120e77100fccc05923a104bca3e9c729af87b
Author: Vasyl Vavrychuk <vvavrychuk@gmail.com>
Date:   Wed Apr 11 17:05:13 2018 +0300

    USB: serial: ftdi_sio: use jtag quirk for Arrow USB Blaster
    
    commit 470b5d6f0cf4674be2d1ec94e54283a1770b6a1a upstream.
    
    Arrow USB Blaster integrated on MAX1000 board uses the same vendor ID
    (0x0403) and product ID (0x6010) as the "original" FTDI device.
    
    This patch avoids picking up by ftdi_sio of the first interface of this
    USB device. After that this device can be used by Arrow user-space JTAG
    driver.
    
    Signed-off-by: Vasyl Vavrychuk <vvavrychuk@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f30aa32b716b728163893a90be929f5e9e6c071
Author: Collin May <collin@collinswebsite.com>
Date:   Sat Apr 7 14:32:48 2018 -0700

    USB: serial: simple: add libtransistor console
    
    commit fe710508b6ba9d28730f3021fed70e7043433b2e upstream.
    
    Add simple driver for libtransistor USB console.
    This device is implemented in software:
    https://github.com/reswitched/libtransistor/blob/development/lib/usb_serial.c
    
    Signed-off-by: Collin May <collin@collinswebsite.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b932b1ca9dad9ba18b58efb56074d3431c81166
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Apr 20 16:52:50 2018 +0300

    xhci: Fix USB ports for Dell Inspiron 5775
    
    commit 621faf4f6a181b6e012c1d1865213f36f4159b7f upstream.
    
    The Dell Inspiron 5775 is a Raven Ridge. The Enable Slot command timed
    out when a USB device gets plugged:
    [ 212.156326] xhci_hcd 0000:03:00.3: Error while assigning device slot ID
    [ 212.156340] xhci_hcd 0000:03:00.3: Max number of devices this xHCI host supports is 64.
    [ 212.156348] usb usb2-port3: couldn't allocate usb_device
    
    AMD suggests that a delay before xHC suspends can fix the issue.
    
    I can confirm it fixes the issue, so use the suspend delay quirk for
    Raven Ridge's xHC.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64abd2428e54ead122a4e713a0abfb9627fa3e02
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Apr 22 14:31:03 2018 +0200

    Revert "xhci: plat: Register shutdown for xhci_plat"
    
    commit c20f53c58261b121d0989e147368803b9773b413 upstream.
    
    This reverts commit b07c12517f2aed0add8ce18146bb426b14099392
    
    It is incomplete and causes hangs on devices when shutting down.  It
    needs a much more "complete" fix in order to work properly.  As that fix
    has not been merged, revert this patch for now before it causes any more
    problems.
    
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Adam Wallis <awallis@codeaurora.org>
    Cc: Mathias Nyman <mathias.nyman@intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b792b1f7d01ca95db8b39046e2a539def5ffc4f2
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Apr 5 16:31:49 2018 -0600

    usbip: vhci_hcd: check rhport before using in vhci_hub_control()
    
    commit 5b22f676118ff25049382041da0db8012e57c9e8 upstream.
    
    Validate !rhport < 0 before using it to access port_status array.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4abe5b775a16e131466f40861b90632d719da1b5
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Mon Apr 2 14:52:32 2018 -0600

    usbip: vhci_hcd: Fix usb device and sockfd leaks
    
    commit 9020a7efe537856eb3e826ebebdf38a5d07a7857 upstream.
    
    vhci_hcd fails to do reset to put usb device and sockfd in the
    module remove/stop paths. Fix the leak.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 944edaf13deeb0db5847bddf956c4316e53d6f2c
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Apr 5 16:29:04 2018 -0600

    usbip: usbip_host: fix to hold parent lock for device_attach() calls
    
    commit 4bfb141bc01312a817d36627cc47c93f801c216d upstream.
    
    usbip_host calls device_attach() without holding dev->parent lock.
    Fix it.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 470bf16ae1ab7172133fe3c6b4506a75f86d314f
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Apr 5 16:29:50 2018 -0600

    usbip: usbip_event: fix to not print kernel pointer address
    
    commit 4c982482341c64f55daf69b6caa5a2bcd9b43824 upstream.
    
    Fix it to not print kernel pointer address. Remove the conditional
    and debug message as it isn't very useful.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76dbabb38a18ff7ec20de36e9dabcadccca9ad69
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Apr 25 01:12:32 2018 -0400

    random: rate limit unseeded randomness warnings
    
    commit 4e00b339e264802851aff8e73cde7d24b57b18ce upstream.
    
    On systems without sufficient boot randomness, no point spamming dmesg.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffc5b50a2b53d180d977b969034cad1a9fb45d8b
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Apr 23 18:51:28 2018 -0400

    random: fix possible sleeping allocation from irq context
    
    commit 6c1e851c4edc13a43adb3ea4044e3fc8f43ccf7d upstream.
    
    We can do a sleeping allocation from an irq context when CONFIG_NUMA
    is enabled.  Fix this by initializing the NUMA crng instances in a
    workqueue.
    
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot+9de458f6a5e713ee8c1a@syzkaller.appspotmail.com
    Fixes: 8ef35c866f8862df ("random: set up the NUMA crng instances...")
    Cc: stable@vger.kernel.org
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 812b51a630005ed8d0a947bece1f430474b724bf
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Apr 11 15:23:56 2018 -0400

    random: set up the NUMA crng instances after the CRNG is fully initialized
    
    commit 8ef35c866f8862df074a49a93b0309725812dea8 upstream.
    
    Until the primary_crng is fully initialized, don't initialize the NUMA
    crng nodes.  Otherwise users of /dev/urandom on NUMA systems before
    the CRNG is fully initialized can get very bad quality randomness.  Of
    course everyone should move to getrandom(2) where this won't be an
    issue, but there's a lot of legacy code out there.  This related to
    CVE-2018-1108.
    
    Reported-by: Jann Horn <jannh@google.com>
    Fixes: 1e7f583af67b ("random: make /dev/urandom scalable for silly...")
    Cc: stable@kernel.org # 4.8+
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae0db58dabe5463dcbcce095e83177536ed22d6a
Author: Lukas Czerner <lczerner@redhat.com>
Date:   Tue Apr 24 11:31:44 2018 -0400

    ext4: fix bitmap position validation
    
    commit 22be37acce25d66ecf6403fc8f44df9c5ded2372 upstream.
    
    Currently in ext4_valid_block_bitmap() we expect the bitmap to be
    positioned anywhere between 0 and s_blocksize clusters, but that's
    wrong because the bitmap can be placed anywhere in the block group. This
    causes false positives when validating bitmaps on perfectly valid file
    system layouts. Fix it by checking whether the bitmap is within the group
    boundary.
    
    The problem can be reproduced using the following
    
    mkfs -t ext3 -E stride=256 /dev/vdb1
    mount /dev/vdb1 /mnt/test
    cd /mnt/test
    wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.3.tar.xz
    tar xf linux-4.16.3.tar.xz
    
    This will result in the warnings in the logs
    
    EXT4-fs error (device vdb1): ext4_validate_block_bitmap:399: comm tar: bg 84: block 2774529: invalid block bitmap
    
    [ Changed slightly for clarity and to not drop a overflow test -- TYT ]
    
    Signed-off-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reported-by: Ilya Dryomov <idryomov@gmail.com>
    Fixes: 7dac4a1726a9 ("ext4: add validity checks for bitmap block numbers")
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b39430ea068797bb45b72429db3743064280b1be
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Mar 26 23:54:10 2018 -0400

    ext4: add validity checks for bitmap block numbers
    
    commit 7dac4a1726a9c64a517d595c40e95e2d0d135f6f upstream.
    
    An privileged attacker can cause a crash by mounting a crafted ext4
    image which triggers a out-of-bounds read in the function
    ext4_valid_block_bitmap() in fs/ext4/balloc.c.
    
    This issue has been assigned CVE-2018-1093.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=199181
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1560782
    Reported-by: Wen Xu <wen.xu@gatech.edu>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55cc3bb0a6c7da92dd1332cc8e1651dc2be89bfc
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Apr 26 00:44:46 2018 -0400

    ext4: add MODULE_SOFTDEP to ensure crc32c is included in the initramfs
    
    commit 7ef79ad52136712172eb0525bf0b462516bf2f93 upstream.
    
    Fixes: a45403b51582 ("ext4: always initialize the crc32c checksum driver")
    Reported-by: François Valenduc <francoisvalenduc@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a3674acbf8b076bb42b68f5d95f0877acabf210
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Apr 18 11:49:31 2018 -0400

    ext4: set h_journal if there is a failure starting a reserved handle
    
    commit b2569260d55228b617bd82aba6d0db2faeeb4116 upstream.
    
    If ext4 tries to start a reserved handle via
    jbd2_journal_start_reserved(), and the journal has been aborted, this
    can result in a NULL pointer dereference.  This is because the fields
    h_journal and h_transaction in the handle structure share the same
    memory, via a union, so jbd2_journal_start_reserved() will clear
    h_journal before calling start_this_handle().  If this function fails
    due to an aborted handle, h_journal will still be NULL, and the call
    to jbd2_journal_free_reserved() will pass a NULL journal to
    sub_reserve_credits().
    
    This can be reproduced by running "kvm-xfstests -c dioread_nolock
    generic/475".
    
    Cc: stable@kernel.org # 3.11
    Fixes: 8f7d89f36829b ("jbd2: transaction reservation support")
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a538cb0879d8646437836d540b6e952d9103f63
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Apr 12 11:48:09 2018 -0400

    ext4: prevent right-shifting extents beyond EXT_MAX_BLOCKS
    
    commit 349fa7d6e1935f49bf4161c4900711b2989180a9 upstream.
    
    During the "insert range" fallocate operation, extents starting at the
    range offset are shifted "right" (to a higher file offset) by the range
    length.  But, as shown by syzbot, it's not validated that this doesn't
    cause extents to be shifted beyond EXT_MAX_BLOCKS.  In that case
    ->ee_block can wrap around, corrupting the extent tree.
    
    Fix it by returning an error if the space between the end of the last
    extent and EXT4_MAX_BLOCKS is smaller than the range being inserted.
    
    This bug can be reproduced by running the following commands when the
    current directory is on an ext4 filesystem with a 4k block size:
    
            fallocate -l 8192 file
            fallocate --keep-size -o 0xfffffffe000 -l 4096 -n file
            fallocate --insert-range -l 8192 file
    
    Then after unmounting the filesystem, e2fsck reports corruption.
    
    Reported-by: syzbot+06c885be0edcdaeab40c@syzkaller.appspotmail.com
    Fixes: 331573febb6a ("ext4: Add support FALLOC_FL_INSERT_RANGE for fallocate")
    Cc: stable@vger.kernel.org # v4.2+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>