commit b40108b826ed9e1c558f73b9dbabb8d80ded268b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Apr 12 09:09:26 2016 -0700

    Linux 4.4.7

commit 4b3d06d989b9535bb04f9339a862d06e3311522a
Author: Andi Kleen <ak@linux.intel.com>
Date:   Tue Mar 1 14:25:24 2016 -0800

    perf/x86/intel: Fix PEBS data source interpretation on Nehalem/Westmere
    
    commit e17dc65328057c00db7e1bfea249c8771a78b30b upstream.
    
    Jiri reported some time ago that some entries in the PEBS data source table
    in perf do not agree with the SDM. We investigated and the bits
    changed for Sandy Bridge, but the SDM was not updated.
    
    perf already implements the bits correctly for Sandy Bridge
    and later. This patch patches it up for Nehalem and Westmere.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: jolsa@kernel.org
    Link: http://lkml.kernel.org/r/1456871124-15985-1-git-send-email-andi@firstfloor.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a54af124cd73a1429ad5a9d16ab878c71e367bf8
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Tue Mar 1 20:03:52 2016 +0100

    perf/x86/intel: Use PAGE_SIZE for PEBS buffer size on Core2
    
    commit e72daf3f4d764c47fb71c9bdc7f9c54a503825b1 upstream.
    
    Using PAGE_SIZE buffers makes the WRMSR to PERF_GLOBAL_CTRL in
    intel_pmu_enable_all() mysteriously hang on Core2. As a workaround, we
    don't do this.
    
    The hard lockup is easily triggered by running 'perf test attr'
    repeatedly. Most of the time it gets stuck on sample session with
    small periods.
    
      # perf test attr -vv
      14: struct perf_event_attr setup                             :
      --- start ---
      ...
        'PERF_TEST_ATTR=/tmp/tmpuEKz3B /usr/bin/perf record -o /tmp/tmpuEKz3B/perf.data -c 123 kill >/dev/null 2>&1' ret 1
    
    Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/20160301190352.GA8355@krava.redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 886629ebb2acaeafc3102140c1c8b4ad52792484
Author: Kan Liang <kan.liang@intel.com>
Date:   Thu Mar 3 18:07:28 2016 -0500

    perf/x86/intel: Fix PEBS warning by only restoring active PMU in pmi
    
    commit c3d266c8a9838cc141b69548bc3b1b18808ae8c4 upstream.
    
    This patch tries to fix a PEBS warning found in my stress test. The
    following perf command can easily trigger the pebs warning or spurious
    NMI error on Skylake/Broadwell/Haswell platforms:
    
      sudo perf record -e 'cpu/umask=0x04,event=0xc4/pp,cycles,branches,ref-cycles,cache-misses,cache-references' --call-graph fp -b -c1000 -a
    
    Also the NMI watchdog must be enabled.
    
    For this case, the events number is larger than counter number. So
    perf has to do multiplexing.
    
    In perf_mux_hrtimer_handler, it does perf_pmu_disable(), schedule out
    old events, rotate_ctx, schedule in new events and finally
    perf_pmu_enable().
    
    If the old events include precise event, the MSR_IA32_PEBS_ENABLE
    should be cleared when perf_pmu_disable().  The MSR_IA32_PEBS_ENABLE
    should keep 0 until the perf_pmu_enable() is called and the new event is
    precise event.
    
    However, there is a corner case which could restore PEBS_ENABLE to
    stale value during the above period. In perf_pmu_disable(), GLOBAL_CTRL
    will be set to 0 to stop overflow and followed PMI. But there may be
    pending PMI from an earlier overflow, which cannot be stopped. So even
    GLOBAL_CTRL is cleared, the kernel still be possible to get PMI. At
    the end of the PMI handler, __intel_pmu_enable_all() will be called,
    which will restore the stale values if old events haven't scheduled
    out.
    
    Once the stale pebs value is set, it's impossible to be corrected if
    the new events are non-precise. Because the pebs_enabled will be set
    to 0. x86_pmu.enable_all() will ignore the MSR_IA32_PEBS_ENABLE
    setting. As a result, the following NMI with stale PEBS_ENABLE
    trigger pebs warning.
    
    The pending PMI after enabled=0 will become harmless if the NMI handler
    does not change the state. This patch checks cpuc->enabled in pmi and
    only restore the state when PMU is active.
    
    Here is the dump:
    
      Call Trace:
       <NMI>  [<ffffffff813c3a2e>] dump_stack+0x63/0x85
       [<ffffffff810a46f2>] warn_slowpath_common+0x82/0xc0
       [<ffffffff810a483a>] warn_slowpath_null+0x1a/0x20
       [<ffffffff8100fe2e>] intel_pmu_drain_pebs_nhm+0x2be/0x320
       [<ffffffff8100caa9>] intel_pmu_handle_irq+0x279/0x460
       [<ffffffff810639b6>] ? native_write_msr_safe+0x6/0x40
       [<ffffffff811f290d>] ? vunmap_page_range+0x20d/0x330
       [<ffffffff811f2f11>] ?  unmap_kernel_range_noflush+0x11/0x20
       [<ffffffff8148379f>] ? ghes_copy_tofrom_phys+0x10f/0x2a0
       [<ffffffff814839c8>] ? ghes_read_estatus+0x98/0x170
       [<ffffffff81005a7d>] perf_event_nmi_handler+0x2d/0x50
       [<ffffffff810310b9>] nmi_handle+0x69/0x120
       [<ffffffff810316f6>] default_do_nmi+0xe6/0x100
       [<ffffffff810317f2>] do_nmi+0xe2/0x130
       [<ffffffff817aea71>] end_repeat_nmi+0x1a/0x1e
       [<ffffffff810639b6>] ? native_write_msr_safe+0x6/0x40
       [<ffffffff810639b6>] ? native_write_msr_safe+0x6/0x40
       [<ffffffff810639b6>] ? native_write_msr_safe+0x6/0x40
       <<EOE>>  <IRQ>  [<ffffffff81006df8>] ?  x86_perf_event_set_period+0xd8/0x180
       [<ffffffff81006eec>] x86_pmu_start+0x4c/0x100
       [<ffffffff8100722d>] x86_pmu_enable+0x28d/0x300
       [<ffffffff811994d7>] perf_pmu_enable.part.81+0x7/0x10
       [<ffffffff8119cb70>] perf_mux_hrtimer_handler+0x200/0x280
       [<ffffffff8119c970>] ?  __perf_install_in_context+0xc0/0xc0
       [<ffffffff8110f92d>] __hrtimer_run_queues+0xfd/0x280
       [<ffffffff811100d8>] hrtimer_interrupt+0xa8/0x190
       [<ffffffff81199080>] ?  __perf_read_group_add.part.61+0x1a0/0x1a0
       [<ffffffff81051bd8>] local_apic_timer_interrupt+0x38/0x60
       [<ffffffff817af01d>] smp_apic_timer_interrupt+0x3d/0x50
       [<ffffffff817ad15c>] apic_timer_interrupt+0x8c/0xa0
       <EOI>  [<ffffffff81199080>] ?  __perf_read_group_add.part.61+0x1a0/0x1a0
       [<ffffffff81123de5>] ?  smp_call_function_single+0xd5/0x130
       [<ffffffff81123ddb>] ?  smp_call_function_single+0xcb/0x130
       [<ffffffff81199080>] ?  __perf_read_group_add.part.61+0x1a0/0x1a0
       [<ffffffff8119765a>] event_function_call+0x10a/0x120
       [<ffffffff8119c660>] ? ctx_resched+0x90/0x90
       [<ffffffff811971e0>] ? cpu_clock_event_read+0x30/0x30
       [<ffffffff811976d0>] ? _perf_event_disable+0x60/0x60
       [<ffffffff8119772b>] _perf_event_enable+0x5b/0x70
       [<ffffffff81197388>] perf_event_for_each_child+0x38/0xa0
       [<ffffffff811976d0>] ? _perf_event_disable+0x60/0x60
       [<ffffffff811a0ffd>] perf_ioctl+0x12d/0x3c0
       [<ffffffff8134d855>] ? selinux_file_ioctl+0x95/0x1e0
       [<ffffffff8124a3a1>] do_vfs_ioctl+0xa1/0x5a0
       [<ffffffff81036d29>] ? sched_clock+0x9/0x10
       [<ffffffff8124a919>] SyS_ioctl+0x79/0x90
       [<ffffffff817ac4b2>] entry_SYSCALL_64_fastpath+0x1a/0xa4
      ---[ end trace aef202839fe9a71d ]---
      Uhhuh. NMI received for unknown reason 2d on CPU 2.
      Do you have a strange power saving mode enabled?
    
    Signed-off-by: Kan Liang <kan.liang@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/1457046448-6184-1-git-send-email-kan.liang@intel.com
    [ Fixed various typos and other small details. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2b56a0758ead5987db9465e120643ede759f3ad
Author: Stephane Eranian <eranian@google.com>
Date:   Thu Mar 3 20:50:41 2016 +0100

    perf/x86/pebs: Add workaround for broken OVFL status on HSW+
    
    commit 8077eca079a212f26419c57226f28696b7100683 upstream.
    
    This patch fixes an issue with the GLOBAL_OVERFLOW_STATUS bits on
    Haswell, Broadwell and Skylake processors when using PEBS.
    
    The SDM stipulates that when the PEBS iterrupt threshold is crossed,
    an interrupt is posted and the kernel is interrupted. The kernel will
    find GLOBAL_OVF_SATUS bit 62 set indicating there are PEBS records to
    drain. But the bits corresponding to the actual counters should NOT be
    set. The kernel follows the SDM and assumes that all PEBS events are
    processed in the drain_pebs() callback. The kernel then checks for
    remaining overflows on any other (non-PEBS) events and processes these
    in the for_each_bit_set(&status) loop.
    
    As it turns out, under certain conditions on HSW and later processors,
    on PEBS buffer interrupt, bit 62 is set but the counter bits may be
    set as well. In that case, the kernel drains PEBS and generates
    SAMPLES with the EXACT tag, then it processes the counter bits, and
    generates normal (non-EXACT) SAMPLES.
    
    I ran into this problem by trying to understand why on HSW sampling on
    a PEBS event was sometimes returning SAMPLES without the EXACT tag.
    This should not happen on user level code because HSW has the
    eventing_ip which always point to the instruction that caused the
    event.
    
    The workaround in this patch simply ensures that the bits for the
    counters used for PEBS events are cleared after the PEBS buffer has
    been drained. With this fix 100% of the PEBS samples on my user code
    report the EXACT tag.
    
    Before:
      $ perf record -e cpu/event=0xd0,umask=0x81/upp ./multichase
      $ perf report -D | fgrep SAMPLES
      PERF_RECORD_SAMPLE(IP, 0x2): 11775/11775: 0x406de5 period: 73469 addr: 0 exact=Y
                               \--- EXACT tag is missing
    
    After:
      $ perf record -e cpu/event=0xd0,umask=0x81/upp ./multichase
      $ perf report -D | fgrep SAMPLES
      PERF_RECORD_SAMPLE(IP, 0x4002): 11775/11775: 0x406de5 period: 73469 addr: 0 exact=Y
                               \--- EXACT tag is set
    
    The problem tends to appear more often when multiple PEBS events are used.
    
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: adrian.hunter@intel.com
    Cc: kan.liang@intel.com
    Cc: namhyung@kernel.org
    Link: http://lkml.kernel.org/r/1457034642-21837-3-git-send-email-eranian@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a8225ef46968444fb1c4c632ec28e4cc2be633f
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Mar 4 15:59:42 2016 +0100

    sched/cputime: Fix steal time accounting vs. CPU hotplug
    
    commit e9532e69b8d1d1284e8ecf8d2586de34aec61244 upstream.
    
    On CPU hotplug the steal time accounting can keep a stale rq->prev_steal_time
    value over CPU down and up. So after the CPU comes up again the delta
    calculation in steal_account_process_tick() wreckages itself due to the
    unsigned math:
    
    	 u64 steal = paravirt_steal_clock(smp_processor_id());
    
    	 steal -= this_rq()->prev_steal_time;
    
    So if steal is smaller than rq->prev_steal_time we end up with an insane large
    value which then gets added to rq->prev_steal_time, resulting in a permanent
    wreckage of the accounting. As a consequence the per CPU stats in /proc/stat
    become stale.
    
    Nice trick to tell the world how idle the system is (100%) while the CPU is
    100% busy running tasks. Though we prefer realistic numbers.
    
    None of the accounting values which use a previous value to account for
    fractions is reset at CPU hotplug time. update_rq_clock_task() has a sanity
    check for prev_irq_time and prev_steal_time_rq, but that sanity check solely
    deals with clock warps and limits the /proc/stat visible wreckage. The
    prev_time values are still wrong.
    
    Solution is simple: Reset rq->prev_*_time when the CPU is plugged in again.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Rik van Riel <riel@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Glauber Costa <glommer@parallels.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: commit 095c0aa83e52 "sched: adjust scheduler cpu power for stolen time"
    Fixes: commit aa483808516c "sched: Remove irq time from available CPU power"
    Fixes: commit e6e6685accfa "KVM guest: Steal time accounting"
    Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1603041539490.3686@nanos
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9835db39bb8151cf4471a792a878318c8d07bf4d
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Mar 18 14:55:38 2016 +0100

    scsi_common: do not clobber fixed sense information
    
    commit ba08311647892cc7912de74525fd78416caf544a upstream.
    
    For fixed sense the information field is 32 bits, to we need to truncate
    the information field to avoid clobbering the sense code.
    
    Fixes: a1524f226a02 ("libata-eh: Set 'information' field for autosense")
    Signed-off-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cd4ebbdf533ed316ce377b66ae508cc6d1d0162
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Mar 23 00:11:20 2016 +0100

    PM / sleep: Clear pm_suspend_global_flags upon hibernate
    
    commit 276142730c39c9839465a36a90e5674a8c34e839 upstream.
    
    When suspending to RAM, waking up and later suspending to disk,
    we gratuitously runtime resume devices after the thaw phase.
    This does not occur if we always suspend to RAM or always to disk.
    
    pm_complete_with_resume_check(), which gets called from
    pci_pm_complete() among others, schedules a runtime resume
    if PM_SUSPEND_FLAG_FW_RESUME is set. The flag is set during
    a suspend-to-RAM cycle. It is cleared at the beginning of
    the suspend-to-RAM cycle but not afterwards and it is not
    cleared during a suspend-to-disk cycle at all. Fix it.
    
    Fixes: ef25ba047601 (PM / sleep: Add flags to indicate platform firmware involvement)
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79d05ce04bfbe9885936ed985c2dd53d8500f617
Author: Len Brown <len.brown@intel.com>
Date:   Sun Mar 13 00:33:48 2016 -0500

    intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled
    
    commit d70e28f57e14a481977436695b0c9ba165472431 upstream.
    
    Some SKL-H configurations require "intel_idle.max_cstate=7" to boot.
    While that is an effective workaround, it disables C10.
    
    This patch detects the problematic configuration,
    and disables C8 and C9, keeping C10 enabled.
    
    Note that enabling SGX in BIOS SETUP can also prevent this issue,
    if the system BIOS provides that option.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=109081
    "Freezes with Intel i7 6700HQ (Skylake), unless intel_idle.max_cstate=7"
    
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ded1db97aca15db72850c78ad222625386af4ea4
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sat Feb 20 22:27:48 2016 +0200

    mtd: onenand: fix deadlock in onenand_block_markbad
    
    commit 5e64c29e98bfbba1b527b0a164f9493f3db9e8cb upstream.
    
    Commit 5942ddbc500d ("mtd: introduce mtd_block_markbad interface")
    incorrectly changed onenand_block_markbad() to call mtd_block_markbad
    instead of onenand_chip's block_markbad function. As a result the function
    will now recurse and deadlock. Fix by reverting the change.
    
    Fixes: 5942ddbc500d ("mtd: introduce mtd_block_markbad interface")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Acked-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dc7e939b6b8ca3d18d5814504954014578703e2
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Fri Mar 25 14:21:50 2016 -0700

    mm/page_alloc: prevent merging between isolated and other pageblocks
    
    commit d9dddbf556674bf125ecd925b24e43a5cf2a568a upstream.
    
    Hanjun Guo has reported that a CMA stress test causes broken accounting of
    CMA and free pages:
    
    > Before the test, I got:
    > -bash-4.3# cat /proc/meminfo | grep Cma
    > CmaTotal:         204800 kB
    > CmaFree:          195044 kB
    >
    >
    > After running the test:
    > -bash-4.3# cat /proc/meminfo | grep Cma
    > CmaTotal:         204800 kB
    > CmaFree:         6602584 kB
    >
    > So the freed CMA memory is more than total..
    >
    > Also the the MemFree is more than mem total:
    >
    > -bash-4.3# cat /proc/meminfo
    > MemTotal:       16342016 kB
    > MemFree:        22367268 kB
    > MemAvailable:   22370528 kB
    
    Laura Abbott has confirmed the issue and suspected the freepage accounting
    rewrite around 3.18/4.0 by Joonsoo Kim.  Joonsoo had a theory that this is
    caused by unexpected merging between MIGRATE_ISOLATE and MIGRATE_CMA
    pageblocks:
    
    > CMA isolates MAX_ORDER aligned blocks, but, during the process,
    > partialy isolated block exists. If MAX_ORDER is 11 and
    > pageblock_order is 9, two pageblocks make up MAX_ORDER
    > aligned block and I can think following scenario because pageblock
    > (un)isolation would be done one by one.
    >
    > (each character means one pageblock. 'C', 'I' means MIGRATE_CMA,
    > MIGRATE_ISOLATE, respectively.
    >
    > CC -> IC -> II (Isolation)
    > II -> CI -> CC (Un-isolation)
    >
    > If some pages are freed at this intermediate state such as IC or CI,
    > that page could be merged to the other page that is resident on
    > different type of pageblock and it will cause wrong freepage count.
    
    This was supposed to be prevented by CMA operating on MAX_ORDER blocks,
    but since it doesn't hold the zone->lock between pageblocks, a race
    window does exist.
    
    It's also likely that unexpected merging can occur between
    MIGRATE_ISOLATE and non-CMA pageblocks.  This should be prevented in
    __free_one_page() since commit 3c605096d315 ("mm/page_alloc: restrict
    max order of merging on isolated pageblock").  However, we only check
    the migratetype of the pageblock where buddy merging has been initiated,
    not the migratetype of the buddy pageblock (or group of pageblocks)
    which can be MIGRATE_ISOLATE.
    
    Joonsoo has suggested checking for buddy migratetype as part of
    page_is_buddy(), but that would add extra checks in allocator hotpath
    and bloat-o-meter has shown significant code bloat (the function is
    inline).
    
    This patch reduces the bloat at some expense of more complicated code.
    The buddy-merging while-loop in __free_one_page() is initially bounded
    to pageblock_border and without any migratetype checks.  The checks are
    placed outside, bumping the max_order if merging is allowed, and
    returning to the while-loop with a statement which can't be possibly
    considered harmful.
    
    This fixes the accounting bug and also removes the arguably weird state
    in the original commit 3c605096d315 where buddies could be left
    unmerged.
    
    Fixes: 3c605096d315 ("mm/page_alloc: restrict max order of merging on isolated pageblock")
    Link: https://lkml.org/lkml/2016/3/2/280
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Reported-by: Hanjun Guo <guohanjun@huawei.com>
    Tested-by: Hanjun Guo <guohanjun@huawei.com>
    Acked-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Debugged-by: Laura Abbott <labbott@redhat.com>
    Debugged-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
    Cc: Michal Nazarewicz <mina86@mina86.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eae2b56828230fe326167d67a0ec6e777e69afee
Author: Joseph Qi <joseph.qi@huawei.com>
Date:   Fri Mar 25 14:21:29 2016 -0700

    ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list
    
    commit be12b299a83fc807bbaccd2bcb8ec50cbb0cb55c upstream.
    
    When master handles convert request, it queues ast first and then
    returns status.  This may happen that the ast is sent before the request
    status because the above two messages are sent by two threads.  And
    right after the ast is sent, if master down, it may trigger BUG in
    dlm_move_lockres_to_recovery_list in the requested node because ast
    handler moves it to grant list without clear lock->convert_pending.  So
    remove BUG_ON statement and check if the ast is processed in
    dlmconvert_remote.
    
    Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
    Reported-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Tariq Saeed <tariq.x.saeed@oracle.com>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4b0e673428391a5ce5827d594d9809ad57fba9e
Author: Joseph Qi <joseph.qi@huawei.com>
Date:   Fri Mar 25 14:21:26 2016 -0700

    ocfs2/dlm: fix race between convert and recovery
    
    commit ac7cf246dfdbec3d8fed296c7bf30e16f5099dac upstream.
    
    There is a race window between dlmconvert_remote and
    dlm_move_lockres_to_recovery_list, which will cause a lock with
    OCFS2_LOCK_BUSY in grant list, thus system hangs.
    
    dlmconvert_remote
    {
            spin_lock(&res->spinlock);
            list_move_tail(&lock->list, &res->converting);
            lock->convert_pending = 1;
            spin_unlock(&res->spinlock);
    
            status = dlm_send_remote_convert_request();
            >>>>>> race window, master has queued ast and return DLM_NORMAL,
                   and then down before sending ast.
                   this node detects master down and calls
                   dlm_move_lockres_to_recovery_list, which will revert the
                   lock to grant list.
                   Then OCFS2_LOCK_BUSY won't be cleared as new master won't
                   send ast any more because it thinks already be authorized.
    
            spin_lock(&res->spinlock);
            lock->convert_pending = 0;
            if (status != DLM_NORMAL)
                    dlm_revert_pending_convert(res, lock);
            spin_unlock(&res->spinlock);
    }
    
    In this case, check if res->state has DLM_LOCK_RES_RECOVERING bit set
    (res is still in recovering) or res master changed (new master has
    finished recovery), reset the status to DLM_RECOVERING, then it will
    retry convert.
    
    Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
    Reported-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Reviewed-by: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Tariq Saeed <tariq.x.saeed@oracle.com>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1d0a23831ccde9dbd5279a5d45790a96f18ad32
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Wed Mar 23 11:53:46 2016 -0700

    Input: ati_remote2 - fix crashes on detecting device with invalid descriptor
    
    commit 950336ba3e4a1ffd2ca60d29f6ef386dd2c7351d upstream.
    
    The ati_remote2 driver expects at least two interfaces with one
    endpoint each. If given malicious descriptor that specify one
    interface or no endpoints, it will crash in the probe function.
    Ensure there is at least two interfaces and one endpoint for each
    interface before using it.
    
    The full disclosure: http://seclists.org/bugtraq/2016/Mar/90
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af18c4ca4b1728e2149844656bbf1aa8d7382682
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Mar 17 14:00:17 2016 -0700

    Input: ims-pcu - sanity check against missing interfaces
    
    commit a0ad220c96692eda76b2e3fd7279f3dcd1d8a8ff upstream.
    
    A malicious device missing interface can make the driver oops.
    Add sanity checking.
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed12031e713305ef7836d5672ae2ab4e1446ce08
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Thu Mar 17 17:12:54 2016 -0700

    Input: synaptics - handle spurious release of trackstick buttons, again
    
    commit 82be788c96ed5978d3cb4a00079e26b981a3df3f upstream.
    
    Looks like the fimware 8.2 still has the extra buttons spurious release
    bug.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=114321
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 842ec116c7070c8bfc785b609acb19fb29a59cb0
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Mar 18 13:52:04 2016 -0400

    writeback, cgroup: fix use of the wrong bdi_writeback which mismatches the inode
    
    commit aaf2559332ba272671bb870464a99b909b29a3a1 upstream.
    
    When cgroup writeback is in use, there can be multiple wb's
    (bdi_writeback's) per bdi and an inode may switch among them
    dynamically.  In a couple places, the wrong wb was used leading to
    performing operations on the wrong list under the wrong lock
    corrupting the io lists.
    
    * writeback_single_inode() was taking @wb parameter and used it to
      remove the inode from io lists if it becomes clean after writeback.
      The callers of this function were always passing in the root wb
      regardless of the actual wb that the inode was associated with,
      which could also change while writeback is in progress.
    
      Fix it by dropping the @wb parameter and using
      inode_to_wb_and_lock_list() to determine and lock the associated wb.
    
    * After writeback_sb_inodes() writes out an inode, it re-locks @wb and
      inode to remove it from or move it to the right io list.  It assumes
      that the inode is still associated with @wb; however, the inode may
      have switched to another wb while writeback was in progress.
    
      Fix it by using inode_to_wb_and_lock_list() to determine and lock
      the associated wb after writeback is complete.  As the function
      requires the original @wb->list_lock locked for the next iteration,
      in the unlikely case where the inode has changed association, switch
      the locks.
    
    Kudos to Tahsin for pinpointing these subtle breakages.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: d10c80955265 ("writeback: implement foreign cgroup inode bdi_writeback switching")
    Link: http://lkml.kernel.org/g/CAAeU0aMYeM_39Y2+PaRvyB1nqAPYZSNngJ1eBRmrxn7gKAt2Mg@mail.gmail.com
    Reported-and-diagnosed-by: Tahsin Erdogan <tahsin@google.com>
    Tested-by: Tahsin Erdogan <tahsin@google.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d78ddcfbe7ab8c5f4ff0b8f20b2bbda710fc0e91
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Mar 18 13:50:03 2016 -0400

    writeback, cgroup: fix premature wb_put() in locked_inode_to_wb_and_lock_list()
    
    commit 614a4e3773148a31f58dc174bbf578ceb63510c2 upstream.
    
    locked_inode_to_wb_and_lock_list() wb_get()'s the wb associated with
    the target inode, unlocks inode, locks the wb's list_lock and verifies
    that the inode is still associated with the wb.  To prevent the wb
    going away between dropping inode lock and acquiring list_lock, the wb
    is pinned while inode lock is held.  The wb reference is put right
    after acquiring list_lock citing that the wb won't be dereferenced
    anymore.
    
    This isn't true.  If the inode is still associated with the wb, the
    inode has reference and it's safe to return the wb; however, if inode
    has been switched, the wb still needs to be unlocked which is a
    dereference and can lead to use-after-free if it it races with wb
    destruction.
    
    Fix it by putting the reference after releasing list_lock.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 87e1d789bf55 ("writeback: implement [locked_]inode_to_wb_and_lock_list()")
    Tested-by: Tahsin Erdogan <tahsin@google.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b05e5a587ddc11255de76657e6b4b0e960783cc3
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Mar 23 00:11:20 2016 +0100

    ACPI / PM: Runtime resume devices when waking from hibernate
    
    commit fbda4b38fa3995aa0777fe9cbbdcb223c6292083 upstream.
    
    Commit 58a1fbbb2ee8 ("PM / PCI / ACPI: Kick devices that might have been
    reset by firmware") added a runtime resume for devices that were runtime
    suspended when the system entered suspend-to-RAM.
    
    Briefly, the motivation was to ensure that devices did not remain in a
    reset-power-on state after resume, potentially preventing deep SoC-wide
    low-power states from being entered on idle.
    
    Currently we're not doing the same when leaving suspend-to-disk and this
    asymmetry is a problem if drivers rely on the automatic resume triggered
    by pm_complete_with_resume_check(). Fix it.
    
    Fixes: 58a1fbbb2ee8 (PM / PCI / ACPI: Kick devices that might have been reset by firmware)
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe81b4d996fbf36cf4e84869b6c5f4394f5e5af9
Author: Ludovic Desroches <ludovic.desroches@atmel.com>
Date:   Fri Mar 11 11:35:10 2016 +0100

    ARM: dts: at91: sama5d4 Xplained: don't disable hsmci regulator
    
    commit b02acd4e62602a6ab307da84388a16bf60106c48 upstream.
    
    If enabling the hsmci regulator on card detection, the board can reboot
    on sd card insertion. Keeping the regulator always enabled fixes this
    issue.
    
    Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
    Fixes: 8d545f32bd77 ("ARM: at91/dt: sama5d4 xplained: add regulators for v(q)mmc1 supplies")
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d287698c43d7915e422d298985891eb609b511b8
Author: Ludovic Desroches <ludovic.desroches@atmel.com>
Date:   Fri Mar 11 11:43:39 2016 +0100

    ARM: dts: at91: sama5d3 Xplained: don't disable hsmci regulator
    
    commit ae3fc8ea08e405682f1fa959f94b6e4126afbc1b upstream.
    
    If enabling the hsmci regulator on card detection, the board can reboot
    on sd card insertion. Keeping the regulator always enabled fixes this
    issue.
    
    Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
    Fixes: 1b53e3416dd0 ("ARM: at91/dt: sama5d3 xplained: add fixed regulator for vmmc0")
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56fb92d684cc51baf3a421a3ac19af441a52f413
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Wed Mar 2 16:36:21 2016 -0800

    nfsd: fix deadlock secinfo+readdir compound
    
    commit 2f6fc056e899bd0144a08da5cacaecbe8997cd74 upstream.
    
    nfsd_lookup_dentry exits with the parent filehandle locked.  fh_put also
    unlocks if necessary (nfsd filehandle locking is probably too lenient),
    so it gets unlocked eventually, but if the following op in the compound
    needs to lock it again, we can deadlock.
    
    A fuzzer ran into this; normal clients don't send a secinfo followed by
    a readdir in the same compound.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ef1ecc409b1e1113bf5e4b6bdd47137e5f9cebb
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Mon Feb 29 20:21:21 2016 -0500

    nfsd4: fix bad bounds checking
    
    commit 4aed9c46afb80164401143aa0fdcfe3798baa9d5 upstream.
    
    A number of spots in the xdr decoding follow a pattern like
    
    	n = be32_to_cpup(p++);
    	READ_BUF(n + 4);
    
    where n is a u32.  The only bounds checking is done in READ_BUF itself,
    but since it's checking (n + 4), it won't catch cases where n is very
    large, (u32)(-4) or higher.  I'm not sure exactly what the consequences
    are, but we've seen crashes soon after.
    
    Instead, just break these up into two READ_BUF()s.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48f447bcebd889aab7193659841de7962bf52a56
Author: Jenny Derzhavetz <jennyf@mellanox.com>
Date:   Wed Feb 24 19:24:01 2016 +0200

    iser-target: Rework connection termination
    
    commit 6d1fba0c2cc7efe42fd761ecbba833ed0ea7b07e upstream.
    
    When we receive an event that triggers connection termination,
    we have a a couple of things we may want to do:
    1. In case we are already terminating, bailout early
    2. In case we are connected but not bound, disconnect and schedule
       a connection cleanup silently (don't reinstate)
    3. In case we are connected and bound, disconnect and reinstate the connection
    
    This rework fixes a bug that was detected against a mis-behaved
    initiator which rejected our rdma_cm accept, in this stage the
    isert_conn is no bound and reinstate caused a bogus dereference.
    
    What's great about this is that we don't need the
    post_recv_buf_count anymore, so get rid of it.
    
    Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60f0f01da74b14a0b27becf30a70155a8db23445
Author: Jenny Derzhavetz <jennyf@mellanox.com>
Date:   Wed Feb 24 19:24:00 2016 +0200

    iser-target: Separate flows for np listeners and connections cma events
    
    commit f81bf458208ef6d12b2fc08091204e3859dcdba4 upstream.
    
    No need to restrict this check to specific events.
    
    Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0d31bbebb1f293ef196c4c84e682b58b0e9cf7b
Author: Jenny Derzhavetz <jennyf@mellanox.com>
Date:   Wed Feb 24 19:23:59 2016 +0200

    iser-target: Add new state ISER_CONN_BOUND to isert_conn
    
    commit aea92980601f7ddfcb3c54caa53a43726314fe46 upstream.
    
    We need an indication that isert_conn->iscsi_conn binding has
    happened so we'll know not to invoke a connection reinstatement
    on an unbound connection which will lead to a bogus isert_conn->conn
    dereferece.
    
    Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a91eb042e1bacdc61a2ca5cb184aa99c24ed5cdb
Author: Jenny Derzhavetz <jennyf@mellanox.com>
Date:   Wed Feb 24 19:23:58 2016 +0200

    iser-target: Fix identification of login rx descriptor type
    
    commit b89a7c25462b164db280abc3b05d4d9d888d40e9 upstream.
    
    Once connection request is accepted, one rx descriptor
    is posted to receive login request. This descriptor has rx type,
    but is outside the main pool of rx descriptors, and thus
    was mistreated as tx type.
    
    Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b3e8070857db21b9d3973387cd9aae5944d71ad
Author: Himanshu Madhani <himanshu.madhani@qlogic.com>
Date:   Mon Mar 14 22:47:37 2016 -0700

    target: Fix target_release_cmd_kref shutdown comp leak
    
    commit 5e47f1985d7107331c3f64fb3ec83d66fd73577e upstream.
    
    This patch fixes an active I/O shutdown bug for fabric
    drivers using target_wait_for_sess_cmds(), where se_cmd
    descriptor shutdown would result in hung tasks waiting
    indefinitely for se_cmd->cmd_wait_comp to complete().
    
    To address this bug, drop the incorrect list_del_init()
    usage in target_wait_for_sess_cmds() and always complete()
    during se_cmd target_release_cmd_kref() put, in order to
    let caller invoke the final fabric release callback
    into se_cmd->se_tfo->release_cmd() code.
    
    Reported-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
    Tested-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3822a1078c87a6f74270741bc4cc660e4f11bae
Author: Eric Anholt <eric@anholt.net>
Date:   Mon Feb 15 19:03:57 2016 -0800

    clk: bcm2835: Fix setting of PLL divider clock rates
    
    commit 773b3966dd3cdaeb68e7f2edfe5656abac1dc411 upstream.
    
    Our dividers weren't being set successfully because CM_PASSWORD wasn't
    included in the register write.  It looks easier to just compute the
    divider to write ourselves than to update clk-divider for the ability
    to OR in some arbitrary bits on write.
    
    Fixes about half of the video modes on my HDMI monitor (everything
    except 720x400).
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Michael Turquette <mturquette@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f9403e710e03098b06c321aee6b31621efca5b1
Author: Alexander Kochetkov <al.kochet@gmail.com>
Date:   Tue Jan 26 16:34:00 2016 +0300

    clk: rockchip: add hclk_cpubus to the list of rk3188 critical clocks
    
    commit e8b63288b37dbb8457b510c9d96f6006da4653f6 upstream.
    
    hclk_cpubus needs to keep running because it is needed for devices like
    the rom, i2s0 or spdif to be accessible via cpu. Without that all
    accesses to devices (readl/writel) return wrong data. So add it
    to the list of critical clocks.
    
    Fixes: 78eaf6095cc763c ("clk: rockchip: disable unused clocks")
    Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit afb1f06758abb5cfa01a54298b57e0cce3bf3273
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Wed Jan 20 21:47:57 2016 +0100

    clk: rockchip: rk3368: fix hdmi_cec gate-register
    
    commit fd0c0740fac17a014704ef89d8c8b1768711ca59 upstream.
    
    Fix a typo making the sclk_hdmi_cec access a wrong register to handle
    its gate.
    
    Fixes: 3536c97a52db ("clk: rockchip: add rk3368 clock controller")
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Reviewed-by: zhangqing <zhangqing@rock-chips.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7e33d74fbd86e518c6f98b9c6f35badc1d3719d
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Wed Jan 20 19:22:38 2016 +0100

    clk: rockchip: rk3368: fix parents of video encoder/decoder
    
    commit 0f28d98463498c61c61a38aacbf9f69e92e85e9d upstream.
    
    The vdpu and vepu clocks can also be parented to the npll and current
    parent list also is wrong as it would use the npll as "usbphy" source,
    so adapt the parent to the correct one.
    
    Fixes: 3536c97a52db ("clk: rockchip: add rk3368 clock controller")
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Reviewed-by: zhangqing <zhangqing@rock-chips.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20c736ddb2819e071dcefa087b5d33e19b462e4e
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Jan 19 10:09:22 2016 +0100

    clk: rockchip: rk3368: fix cpuclk core dividers
    
    commit c6d5fe2ca8286f35a79f7345c9378c39d48a1527 upstream.
    
    Similar to commit 9880d4277f6a ("clk: rockchip: fix rk3288 cpuclk core
    dividers") it seems the cpuclk dividers are one to high on the rk3368
    as well.
    
    And again similar to the previous fix, we opt to make the divider list
    contain the values to be written to use the same paradigm for them on all
    supported socs.
    
    Fixes: 3536c97a52db ("clk: rockchip: add rk3368 clock controller")
    Reported-by: Zhang Qing <zhangqing@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Reviewed-by: zhangqing <zhangqing@rock-chips.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 451e4ff10d95a1390c49afcce5d5c339f97b0048
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Jan 19 10:01:08 2016 +0100

    clk: rockchip: rk3368: fix cpuclk mux bit of big cpu-cluster
    
    commit 535ebd428aeb07c3327947281306f2943f2c9faa upstream.
    
    Both clusters have their mux bit in bit 7 of their respective register.
    For whatever reason the big cluster currently lists bit 15 which is
    definitly wrong.
    
    Fixes: 3536c97a52db ("clk: rockchip: add rk3368 clock controller")
    Reported-by: Zhang Qing <zhangqing@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Reviewed-by: zhangqing <zhangqing@rock-chips.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86beab2febf17b3384f9a1cd333ae7c06a31d0a0
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Mar 7 13:33:55 2016 +0200

    mmc: sdhci: Fix override of timeout clk wrt max_busy_timeout
    
    commit 995136247915c5cee633d55ba23f6eebf67aa567 upstream.
    
    Normally the timeout clock frequency is read from the capabilities
    register.  It is also possible to set the value prior to calling
    sdhci_add_host() in which case that value will override the
    capabilities register value.  However that was being done after
    calculating max_busy_timeout so that max_busy_timeout was being
    calculated using the wrong value of timeout_clk.
    
    Fix that by moving the override before max_busy_timeout is
    calculated.
    
    The result is that the max_busy_timeout and max_discard
    increase for BSW devices so that, for example, the time for
    mkfs.ext4 on a 64GB eMMC drops from about 1 minute 40 seconds
    to about 20 seconds.
    
    Note, in the future, the capabilities setting will be tidied up
    and this override won't be used anymore.  However this fix is
    needed for stable.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e113935b8fca965d685084c347864ffb18e32f62
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Tue Jan 26 13:41:04 2016 +0000

    mmc: sdhci: fix data timeout (part 2)
    
    commit 7f05538af71c7d30b5fc821cbe9f318edc645961 upstream.
    
    The calculation for the timeout based on the number of card clocks is
    incorrect.  The calculation assumed:
    
    	timeout in microseconds = clock cycles / clock in Hz
    
    which is clearly a several orders of magnitude wrong.  Fix this by
    multiplying the clock cycles by 1000000 prior to dividing by the Hz
    based clock.  Also, as per part 1, ensure that the division rounds
    up.
    
    As this needs 64-bit math via do_div(), avoid it if the clock cycles
    is zero.
    
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd3c71fbb75025f89f64bdd87123d7c247b69a96
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Tue Jan 26 13:40:58 2016 +0000

    mmc: sdhci: fix data timeout (part 1)
    
    commit fafcfda9e78cae8796d1799f14e6457790797555 upstream.
    
    The data timeout gives the minimum amount of time that should be
    waited before timing out if no data is received from the card.
    Simply dividing the nanosecond part by 1000 does not give this
    required guarantee, since such a division rounds down.  Use
    DIV_ROUND_UP() to give the desired timeout.
    
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a060276f0f429bb0402e7fa6581d472934300fb
Author: Magnus Damm <damm+renesas@opensource.se>
Date:   Tue Feb 16 13:06:41 2016 +0900

    mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case
    
    commit bcdc9f260bdce09913db1464be9817170d51044a upstream.
    
    This patch fixes the MMC SPI driver from doing polling card detect when a
    CD GPIO that supports interrupts is specified using the gpios DT property.
    
    Without this patch the DT node below results in the following output:
    
     spi_gpio: spi-gpio { /* SD2 @ CN12 */
             compatible = "spi-gpio";
             #address-cells = <1>;
             #size-cells = <0>;
             gpio-sck = <&gpio6 16 GPIO_ACTIVE_HIGH>;
             gpio-mosi = <&gpio6 17 GPIO_ACTIVE_HIGH>;
             gpio-miso = <&gpio6 18 GPIO_ACTIVE_HIGH>;
             num-chipselects = <1>;
             cs-gpios = <&gpio6 21 GPIO_ACTIVE_LOW>;
             status = "okay";
    
             spi@0 {
                     compatible = "mmc-spi-slot";
                     reg = <0>;
                     voltage-ranges = <3200 3400>;
                     spi-max-frequency = <25000000>;
                     gpios = <&gpio6 22 GPIO_ACTIVE_LOW>;   /* CD */
             };
     };
    
     # dmesg | grep mmc
     mmc_spi spi32766.0: SD/MMC host mmc0, no WP, no poweroff, cd polling
     mmc0: host does not support reading read-only switch, assuming write-enable
     mmc0: new SDHC card on SPI
     mmcblk0: mmc0:0000 SU04G 3.69 GiB
     mmcblk0: p1
    
    With this patch applied the "cd polling" portion above disappears.
    
    Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d69bc6d28c9662bde7230d88e405c8694d05d94c
Author: Shawn Lin <shawn.lin@rock-chips.com>
Date:   Wed Mar 16 18:15:47 2016 +0800

    mmc: block: fix ABI regression of mmc_blk_ioctl
    
    commit 83c742c344c08c2bbe338d45c6ec63110e9d5e3d upstream.
    
    If mmc_blk_ioctl returns -EINVAL, blkdev_ioctl continues to
    work without returning err to user-space. But now we check
    CAP_SYS_RAWIO firstly, so we return -EPERM to blkdev_ioctl,
    which make blkdev_ioctl return -EPERM to user-space directly.
    So this will break all the ioctl with BLKROSET. Now we find
    Android-adb suffer it for the following log:
    
    remount of /system failed;
    couldn't make block device writable: Operation not permitted
    openat(AT_FDCWD, "/dev/block/platform/ff420000.dwmmc/by-name/system", O_RDONLY) = 3
    ioctl(3, BLKROSET, 0)  = -1 EPERM (Operation not permitted)
    
    Fixes: a5f5774c55a2 ("mmc: block: Add new ioctl to send multi commands")
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65b55d179b275cec668b2fffa23f884b55575726
Author: John Dahlstrom <jodarom@SDF.ORG>
Date:   Sat Feb 27 00:09:58 2016 -0600

    ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list
    
    commit 4db9675d927a71faa66e5ab128d2390d6329750b upstream.
    
    Some Lenovo ideapad models lack a physical rfkill switch.
    On Lenovo models ideapad Y700 Touch-15ISK and ideapad Y700-15ISK,
    ideapad-laptop would wrongly report all radios as blocked by
    hardware which caused wireless network connections to fail.
    
    Add these models without an rfkill switch to the no_hw_rfkill list.
    
    Signed-off-by: John Dahlstrom <jodarom@sdf.org>
    Cc: <stable@vger.kernel.org> # 3.17.x-: 4fa9dab: ideapad_laptop: Lenovo G50-30 fix rfkill reports wireless blocked
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 507fafe0e83fcc011bcb23af37179b7d412624b3
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Mar 22 15:11:03 2016 -0700

    MAINTAINERS: Update mailing list and web page for hwmon subsystem
    
    commit 968ce1b1f45a7d76b5471b19bd035dbecc72f32d upstream.
    
    The old web page for the hwmon subsystem is no longer operational,
    and the mailing list has become unreliable. Move both to kernel.org.
    
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f24fe0da244641bc4a19cff1cb7c7cb3dd50b88a
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Fri Feb 26 16:15:17 2016 +0100

    kbuild/mkspec: fix grub2 installkernel issue
    
    commit c8b08ca558c0067bc9e15ce3f1e70af260410bb2 upstream.
    
    mkspec is copying built kernel to temporrary location
    
    	/boot/vmlinuz-$KERNELRELEASE-rpm
    
    and runs installkernel on it. This however directly leads to grub2
    menuentry for this suffixed binary being generated as well during the run
    of installkernel script.
    
    Later in the process the temporary -rpm suffixed files are removed, and
    therefore we end up with spurious (and non-functional) grub2 menu entries
    for each installed kernel RPM.
    
    Fix that by using a different temporary name (prefixed by '.'), so that
    the binary is not recognized as an actual kernel binary and no menuentry
    is created for it.
    
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Fixes: 3c9c7a14b627 ("rpm-pkg: add %post section to create initramfs and grub hooks")
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a42c9e4f1b3751743dd58773d45d2eb3ee4ca5ac
Author: Jan Beulich <JBeulich@suse.com>
Date:   Mon Jan 25 09:45:47 2016 -0700

    scripts/kconfig: allow building with make 3.80 again
    
    commit 42f9d3c6888bceef6dc7ba72c77acf47347dcf05 upstream.
    
    Documentation/Changes still lists this as the minimal required version,
    so it ought to remain usable for the time being.
    
    Fixes: d2036f30cf ("scripts/kconfig/Makefile: Allow KBUILD_DEFCONFIG to be a target")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a10eaa1a91a738523ce2f9e55cd9f6f655e31f1
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Thu Feb 18 00:16:14 2016 +0100

    scripts/coccinelle: modernize &
    
    commit 1b669e713f277a4d4b3cec84e13d16544ac8286d upstream.
    
    & is no longer allowed in column 0, since Coccinelle 1.0.4.
    
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Tested-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bfb8435386c44f89753b0417303110ff596dba9
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Mar 9 12:40:54 2016 +0100

    bitops: Do not default to __clear_bit() for __clear_bit_unlock()
    
    commit f75d48644c56a31731d17fa693c8175328957e1d upstream.
    
    __clear_bit_unlock() is a special little snowflake. While it carries the
    non-atomic '__' prefix, it is specifically documented to pair with
    test_and_set_bit() and therefore should be 'somewhat' atomic.
    
    Therefore the generic implementation of __clear_bit_unlock() cannot use
    the fully non-atomic __clear_bit() as a default.
    
    If an arch is able to do better; is must provide an implementation of
    __clear_bit_unlock() itself.
    
    Specifically, this came up as a result of hackbench livelock'ing in
    slab_lock() on ARC with SMP + SLUB + !LLSC.
    
    The issue was incorrect pairing of atomic ops.
    
     slab_lock() -> bit_spin_lock() -> test_and_set_bit()
     slab_unlock() -> __bit_spin_unlock() -> __clear_bit()
    
    The non serializing __clear_bit() was getting "lost"
    
     80543b8e:	ld_s       r2,[r13,0] <--- (A) Finds PG_locked is set
     80543b90:	or         r3,r2,1    <--- (B) other core unlocks right here
     80543b94:	st_s       r3,[r13,0] <--- (C) sets PG_locked (overwrites unlock)
    
    Fixes ARC STAR 9000817404 (and probably more).
    
    Reported-by: Vineet Gupta <Vineet.Gupta1@synopsys.com>
    Tested-by: Vineet Gupta <Vineet.Gupta1@synopsys.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: James E.J. Bottomley <jejb@parisc-linux.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Noam Camus <noamc@ezchip.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20160309114054.GJ6356@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3dba3f672dfd0d5d961a294dac5bee18759cda6a
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Tue Mar 22 17:30:58 2016 -0400

    tracing: Fix trace_printk() to print when not using bprintk()
    
    commit 3debb0a9ddb16526de8b456491b7db60114f7b5e upstream.
    
    The trace_printk() code will allocate extra buffers if the compile detects
    that a trace_printk() is used. To do this, the format of the trace_printk()
    is saved to the __trace_printk_fmt section, and if that section is bigger
    than zero, the buffers are allocated (along with a message that this has
    happened).
    
    If trace_printk() uses a format that is not a constant, and thus something
    not guaranteed to be around when the print happens, the compiler optimizes
    the fmt out, as it is not used, and the __trace_printk_fmt section is not
    filled. This means the kernel will not allocate the special buffers needed
    for the trace_printk() and the trace_printk() will not write anything to the
    tracing buffer.
    
    Adding a "__used" to the variable in the __trace_printk_fmt section will
    keep it around, even though it is set to NULL. This will keep the string
    from being printed in the debugfs/tracing/printk_formats section as it is
    not needed.
    
    Reported-by: Vlastimil Babka <vbabka@suse.cz>
    Fixes: 07d777fe8c398 "tracing: Add percpu buffers for trace_printk()"
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aab3ba82f8445abe99f33e743e7316d0d55fee7b
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Fri Mar 18 15:46:48 2016 -0400

    tracing: Fix crash from reading trace_pipe with sendfile
    
    commit a29054d9478d0435ab01b7544da4f674ab13f533 upstream.
    
    If tracing contains data and the trace_pipe file is read with sendfile(),
    then it can trigger a NULL pointer dereference and various BUG_ON within the
    VM code.
    
    There's a patch to fix this in the splice_to_pipe() code, but it's also a
    good idea to not let that happen from trace_pipe either.
    
    Link: http://lkml.kernel.org/r/1457641146-9068-1-git-send-email-rabin@rab.in
    
    Reported-by: Rabin Vincent <rabin.vincent@gmail.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa60f652eeebb8345ed8c543d1a8d6b71f902de3
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Fri Mar 18 12:27:43 2016 -0400

    tracing: Have preempt(irqs)off trace preempt disabled functions
    
    commit cb86e05390debcc084cfdb0a71ed4c5dbbec517d upstream.
    
    Joel Fernandes reported that the function tracing of preempt disabled
    sections was not being reported when running either the preemptirqsoff or
    preemptoff tracers. This was due to the fact that the function tracer
    callback for those tracers checked if irqs were disabled before tracing. But
    this fails when we want to trace preempt off locations as well.
    
    Joel explained that he wanted to see funcitons where interrupts are enabled
    but preemption was disabled. The expected output he wanted:
    
       <...>-2265    1d.h1 3419us : preempt_count_sub <-irq_exit
       <...>-2265    1d..1 3419us : __do_softirq <-irq_exit
       <...>-2265    1d..1 3419us : msecs_to_jiffies <-__do_softirq
       <...>-2265    1d..1 3420us : irqtime_account_irq <-__do_softirq
       <...>-2265    1d..1 3420us : __local_bh_disable_ip <-__do_softirq
       <...>-2265    1..s1 3421us : run_timer_softirq <-__do_softirq
       <...>-2265    1..s1 3421us : hrtimer_run_pending <-run_timer_softirq
       <...>-2265    1..s1 3421us : _raw_spin_lock_irq <-run_timer_softirq
       <...>-2265    1d.s1 3422us : preempt_count_add <-_raw_spin_lock_irq
       <...>-2265    1d.s2 3422us : _raw_spin_unlock_irq <-run_timer_softirq
       <...>-2265    1..s2 3422us : preempt_count_sub <-_raw_spin_unlock_irq
       <...>-2265    1..s1 3423us : rcu_bh_qs <-__do_softirq
       <...>-2265    1d.s1 3423us : irqtime_account_irq <-__do_softirq
       <...>-2265    1d.s1 3423us : __local_bh_enable <-__do_softirq
    
    There's a comment saying that the irq disabled check is because there's a
    possible race that tracing_cpu may be set when the function is executed. But
    I don't remember that race. For now, I added a check for preemption being
    enabled too to not record the function, as there would be no race if that
    was the case. I need to re-investigate this, as I'm now thinking that the
    tracing_cpu will always be correct. But no harm in keeping the check for
    now, except for the slight performance hit.
    
    Link: http://lkml.kernel.org/r/1457770386-88717-1-git-send-email-agnel.joel@gmail.com
    
    Fixes: 5e6d2b9cfa3a "tracing: Use one prologue for the preempt irqs off tracer function tracers"
    Reported-by: Joel Fernandes <agnel.joel@gmail.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcda0fd9a8e18ea72f32542d9a1c4b010f89c5d2
Author: Alex Estrin <alex.estrin@intel.com>
Date:   Thu Feb 11 16:30:51 2016 -0500

    IB/ipoib: fix for rare multicast join race condition
    
    commit 08bc327629cbd63bb2f66677e4b33b643695097c upstream.
    
    A narrow window for race condition still exist between
    multicast join thread and *dev_flush workers.
    A kernel crash caused by prolong erratic link state changes
    was observed (most likely a faulty cabling):
    
    [167275.656270] BUG: unable to handle kernel NULL pointer dereference at
    0000000000000020
    [167275.665973] IP: [<ffffffffa05f8f2e>] ipoib_mcast_join+0xae/0x1d0 [ib_ipoib]
    [167275.674443] PGD 0
    [167275.677373] Oops: 0000 [#1] SMP
    ...
    [167275.977530] Call Trace:
    [167275.982225]  [<ffffffffa05f92f0>] ? ipoib_mcast_free+0x200/0x200 [ib_ipoib]
    [167275.992024]  [<ffffffffa05fa1b7>] ipoib_mcast_join_task+0x2a7/0x490
    [ib_ipoib]
    [167276.002149]  [<ffffffff8109d5fb>] process_one_work+0x17b/0x470
    [167276.010754]  [<ffffffff8109e3cb>] worker_thread+0x11b/0x400
    [167276.019088]  [<ffffffff8109e2b0>] ? rescuer_thread+0x400/0x400
    [167276.027737]  [<ffffffff810a5aef>] kthread+0xcf/0xe0
    Here was a hit spot:
    ipoib_mcast_join() {
    ..............
          rec.qkey      = priv->broadcast->mcmember.qkey;
                                           ^^^^^^^
    .....
     }
    Proposed patch should prevent multicast join task to continue
    if link state change is detected.
    
    Signed-off-by: Alex Estrin <alex.estrin@intel.com>
    Changes from v4:
    - as suggested by Doug Ledford, optimized spinlock usage,
    i.e. ipoib_mcast_join() is called with lock held.
    Changes from v3:
    - sync with priv->lock before flag check.
    Chages from v2:
    - Move check for OPER_UP flag state to mcast_join() to
    ensure no event worker is in progress.
    - minor style fixes.
    Changes from v1:
    - No need to lock again if error detected.
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Cc: Nikolay Borisov <kernel@kyup.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 044ebd1d5a691b1638ae622994d02f74f6e43591
Author: Ken Wang <Qingqing.Wang@amd.com>
Date:   Thu Mar 17 17:26:57 2016 +0800

    drm/amdgpu: include the right version of gmc header files for iceland
    
    commit 16a8a49be1b878ef6dd5d1663d456e254e54ae3d upstream.
    
    Signed-off-by: Ken Wang <Qingqing.Wang@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b5abb9b85e97630e07b2b6d33f4739a2eb4e872
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 2 12:10:20 2016 -0500

    drm/amdgpu: disable runtime pm on PX laptops without dGPU power control
    
    commit bedf2a65c1aa8fb29ba8527fd00c0f68ec1f55f1 upstream.
    
    Some PX laptops don't provide an ACPI method to control dGPU power.  On
    those systems, the driver is responsible for handling the dGPU power
    state.  Disable runtime PM on them until support for this is implemented.
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4ecd0324b3cdea3abc4b0f5d7e2829530400317
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Sun Mar 6 02:39:53 2016 +0100

    drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards.
    
    commit 459ee1c3fd097ab56ababd8ff4bb7ef6a792de33 upstream.
    
    As observed on Apple iMac10,1, DCE-3.2, RV-730,
    link rate of 2.7 Ghz is not selected, because
    the args.v1.ucConfig flag setting for 2.7 Ghz
    gets overwritten by a following assignment of
    the transmitter to use.
    
    Move link rate setup a few lines down to fix this.
    In practice this didn't have any positive or
    negative effect on display setup on the tested
    iMac10,1 so i don't know if backporting to stable
    makes sense or not.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 791b5b0d2d01542a87af4b5f8fb2504ce2d5b352
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 2 11:47:29 2016 -0500

    drm/radeon: disable runtime pm on PX laptops without dGPU power control
    
    commit e64c952efb8e0c15ae82cec8e455ab4910690ef1 upstream.
    
    Some PX laptops don't provide an ACPI method to control dGPU power.  On
    those systems, the driver is responsible for handling the dGPU power
    state.  Disable runtime PM on them until support for this is implemented.
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ae6554c2bbfa89218cf3a6e8d8d10581334f551
Author: Matti Gottlieb <matti.gottlieb@intel.com>
Date:   Sun Feb 14 17:05:39 2016 +0200

    iwlwifi: mvm: Fix paging memory leak
    
    commit 905e36ae172c83a30894a3adefab7d4f850fcf54 upstream.
    
    If the opmode is stopped and started again we did not free
    the paging buffers. Fix that.
    In addition when freeing the firmware's paging download
    buffer, set the pointer to NULL.
    
    Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6677a2ab036f28134b60ad4ed6fd2e72db579b8a
Author: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Date:   Thu Feb 25 13:54:20 2016 -0300

    ipr: Fix regression when loading firmware
    
    commit 21b81716c6bff24cda52dc75588455f879ddbfe9 upstream.
    
    Commit d63c7dd5bcb9 ("ipr: Fix out-of-bounds null overwrite") removed
    the end of line handling when storing the update_fw sysfs attribute.
    This changed the userpace API because it started refusing writes
    terminated by a line feed, which broke the update tools we already have.
    
    This patch re-adds that handling, so both a write terminated by a line
    feed or not can make it through with the update.
    
    Fixes: d63c7dd5bcb9 ("ipr: Fix out-of-bounds null overwrite")
    Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
    Cc: Insu Yun <wuninsu@gmail.com>
    Acked-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a918d2bcea6aab6e671bfb0901cbecc3cf68fca1
Author: Insu Yun <wuninsu@gmail.com>
Date:   Wed Jan 6 12:44:01 2016 -0500

    ipr: Fix out-of-bounds null overwrite
    
    commit d63c7dd5bcb9441af0526d370c43a65ca2c980d9 upstream.
    
    Return value of snprintf is not bound by size value, 2nd argument.
    (https://www.kernel.org/doc/htmldocs/kernel-api/API-snprintf.html).
    Return value is number of printed chars, can be larger than 2nd
    argument.  Therefore, it can write null byte out of bounds ofbuffer.
    Since snprintf puts null, it does not need to put additional null byte.
    
    Signed-off-by: Insu Yun <wuninsu@gmail.com>
    Reviewed-by: Shane Seymour <shane.seymour@hpe.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91b95d59aa38ca5a1b9835c108ae1aed533e5e76
Author: Aurelien Jacquiot <a-jacquiot@ti.com>
Date:   Tue Mar 22 14:25:42 2016 -0700

    rapidio/rionet: fix deadlock on SMP
    
    commit 36915976eca58f2eefa040ba8f9939672564df61 upstream.
    
    Fix deadlocking during concurrent receive and transmit operations on SMP
    platforms caused by the use of incorrect lock: on transmit 'tx_lock'
    spinlock should be used instead of 'lock' which is used for receive
    operation.
    
    This fix is applicable to kernel versions starting from v2.15.
    
    Signed-off-by: Aurelien Jacquiot <a-jacquiot@ti.com>
    Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74b23f79f16802d01315db8b028518ef0abd7bc8
Author: Jann Horn <jann@thejh.net>
Date:   Tue Mar 22 14:25:36 2016 -0700

    fs/coredump: prevent fsuid=0 dumps into user-controlled directories
    
    commit 378c6520e7d29280f400ef2ceaf155c86f05a71a upstream.
    
    This commit fixes the following security hole affecting systems where
    all of the following conditions are fulfilled:
    
     - The fs.suid_dumpable sysctl is set to 2.
     - The kernel.core_pattern sysctl's value starts with "/". (Systems
       where kernel.core_pattern starts with "|/" are not affected.)
     - Unprivileged user namespace creation is permitted. (This is
       true on Linux >=3.8, but some distributions disallow it by
       default using a distro patch.)
    
    Under these conditions, if a program executes under secure exec rules,
    causing it to run with the SUID_DUMP_ROOT flag, then unshares its user
    namespace, changes its root directory and crashes, the coredump will be
    written using fsuid=0 and a path derived from kernel.core_pattern - but
    this path is interpreted relative to the root directory of the process,
    allowing the attacker to control where a coredump will be written with
    root privileges.
    
    To fix the security issue, always interpret core_pattern for dumps that
    are written under SUID_DUMP_ROOT relative to the root directory of init.
    
    Signed-off-by: Jann Horn <jann@thejh.net>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37bd8c883ea5f3b90ae1788a1f76c93cb0dbeba5
Author: Seth Forshee <seth.forshee@canonical.com>
Date:   Fri Mar 11 10:35:34 2016 -0600

    fuse: Add reference counting for fuse_io_priv
    
    commit 744742d692e37ad5c20630e57d526c8f2e2fe3c9 upstream.
    
    The 'reqs' member of fuse_io_priv serves two purposes. First is to track
    the number of oustanding async requests to the server and to signal that
    the io request is completed. The second is to be a reference count on the
    structure to know when it can be freed.
    
    For sync io requests these purposes can be at odds.  fuse_direct_IO() wants
    to block until the request is done, and since the signal is sent when
    'reqs' reaches 0 it cannot keep a reference to the object. Yet it needs to
    use the object after the userspace server has completed processing
    requests. This leads to some handshaking and special casing that it
    needlessly complicated and responsible for at least one race condition.
    
    It's much cleaner and safer to maintain a separate reference count for the
    object lifecycle and to let 'reqs' just be a count of outstanding requests
    to the userspace server. Then we can know for sure when it is safe to free
    the object without any handshaking or special cases.
    
    The catch here is that most of the time these objects are stack allocated
    and should not be freed. Initializing these objects with a single reference
    that is never released prevents accidental attempts to free the objects.
    
    Fixes: 9d5722b7777e ("fuse: handle synchronous iocbs internally")
    Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32b9807433507058fce25092a0d11abac494d00d
Author: Robert Doebbelin <robert@quobyte.com>
Date:   Mon Mar 7 09:50:56 2016 +0100

    fuse: do not use iocb after it may have been freed
    
    commit 7cabc61e01a0a8b663bd2b4c982aa53048218734 upstream.
    
    There's a race in fuse_direct_IO(), whereby is_sync_kiocb() is called on an
    iocb that could have been freed if async io has already completed.  The fix
    in this case is simple and obvious: cache the result before starting io.
    
    It was discovered by KASan:
    
    kernel: ==================================================================
    kernel: BUG: KASan: use after free in fuse_direct_IO+0xb1a/0xcc0 at addr ffff88036c414390
    
    Signed-off-by: Robert Doebbelin <robert@quobyte.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: bcba24ccdc82 ("fuse: enable asynchronous processing direct IO")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2775a60447ae12350711b443be1083117b6f13b8
Author: Ming Lei <ming.lei@canonical.com>
Date:   Sat Mar 12 09:29:40 2016 +0800

    md: multipath: don't hardcopy bio in .make_request path
    
    commit fafcde3ac1a418688a734365203a12483b83907a upstream.
    
    Inside multipath_make_request(), multipath maps the incoming
    bio into low level device's bio, but it is totally wrong to
    copy the bio into mapped bio via '*mapped_bio = *bio'. For
    example, .__bi_remaining is kept in the copy, especially if
    the incoming bio is chained to via bio splitting, so .bi_end_io
    can't be called for the mapped bio at all in the completing path
    in this kind of situation.
    
    This patch fixes the issue by using clone style.
    
    Reported-and-tested-by: Andrea Righi <righi.andrea@gmail.com>
    Signed-off-by: Ming Lei <ming.lei@canonical.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5e30f2b934bf9964e1bf5fb1c1bd4d1bc865b5d
Author: NeilBrown <neilb@suse.com>
Date:   Wed Mar 9 12:58:25 2016 +1100

    md/raid5: preserve STRIPE_PREREAD_ACTIVE in break_stripe_batch_list
    
    commit 550da24f8d62fe81f3c13e3ec27602d6e44d43dc upstream.
    
    break_stripe_batch_list breaks up a batch and copies some flags from
    the batch head to the members, preserving others.
    
    It doesn't preserve or copy STRIPE_PREREAD_ACTIVE.  This is not
    normally a problem as STRIPE_PREREAD_ACTIVE is cleared when a
    stripe_head is added to a batch, and is not set on stripe_heads
    already in a batch.
    
    However there is no locking to ensure one thread doesn't set the flag
    after it has just been cleared in another.  This does occasionally happen.
    
    md/raid5 maintains a count of the number of stripe_heads with
    STRIPE_PREREAD_ACTIVE set: conf->preread_active_stripes.  When
    break_stripe_batch_list clears STRIPE_PREREAD_ACTIVE inadvertently
    this could becomes incorrect and will never again return to zero.
    
    md/raid5 delays the handling of some stripe_heads until
    preread_active_stripes becomes zero.  So when the above mention race
    happens, those stripe_heads become blocked and never progress,
    resulting is write to the array handing.
    
    So: change break_stripe_batch_list to preserve STRIPE_PREREAD_ACTIVE
    in the members of a batch.
    
    URL: https://bugzilla.kernel.org/show_bug.cgi?id=108741
    URL: https://bugzilla.redhat.com/show_bug.cgi?id=1258153
    URL: http://thread.gmane.org/5649C0E9.2030204@zoner.cz
    Reported-by: Martin Svec <martin.svec@zoner.cz> (and others)
    Tested-by: Tom Weber <linux@junkyard.4t2.com>
    Fixes: 1b956f7a8f9a ("md/raid5: be more selective about distributing flags across batch.")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b82ed7dc00f3472d4a7bca472e05ed9744881bc8
Author: Shaohua Li <shli@fb.com>
Date:   Mon Mar 14 11:49:32 2016 -0700

    raid10: include bio_end_io_list in nr_queued to prevent freeze_array hang
    
    commit 23ddba80ebe836476bb2fa1f5ef305dd1c63dc0b upstream.
    
    This is the raid10 counterpart of the bug fixed by Nate
    (raid1: include bio_end_io_list in nr_queued to prevent freeze_array hang)
    
    Fixes: 95af587e95(md/raid10: ensure device failure recorded before write request returns)
    Cc: Nate Dailey <nate.dailey@stratus.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad072f606586a70eab8fd168465a6df4c695a9e9
Author: Shaohua Li <shli@fb.com>
Date:   Thu Feb 25 16:24:42 2016 -0800

    RAID5: revert e9e4c377e2f563 to fix a livelock
    
    commit 6ab2a4b806ae21b6c3e47c5ff1285ec06d505325 upstream.
    
    Revert commit
    e9e4c377e2f563(md/raid5: per hash value and exclusive wait_for_stripe)
    
    The problem is raid5_get_active_stripe waits on
    conf->wait_for_stripe[hash]. Assume hash is 0. My test release stripes
    in this order:
    - release all stripes with hash 0
    - raid5_get_active_stripe still sleeps since active_stripes >
      max_nr_stripes * 3 / 4
    - release all stripes with hash other than 0. active_stripes becomes 0
    - raid5_get_active_stripe still sleeps, since nobody wakes up
      wait_for_stripe[0]
    The system live locks. The problem is active_stripes isn't a per-hash
    count. Revert the patch makes the live lock go away.
    
    Cc: Yuanhan Liu <yuanhan.liu@linux.intel.com>
    Cc: NeilBrown <neilb@suse.de>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8568767fe1d63fbbdeacf2f69da6f84ad277d4f7
Author: Shaohua Li <shli@fb.com>
Date:   Wed Feb 24 17:38:28 2016 -0800

    RAID5: check_reshape() shouldn't call mddev_suspend
    
    commit 27a353c026a879a1001e5eac4bda75b16262c44a upstream.
    
    check_reshape() is called from raid5d thread. raid5d thread shouldn't
    call mddev_suspend(), because mddev_suspend() waits for all IO finish
    but IO is handled in raid5d thread, we could easily deadlock here.
    
    This issue is introduced by
    738a273 ("md/raid5: fix allocation of 'scribble' array.")
    
    Reported-and-tested-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fad8b6fc040bf1d9807ee0e3358275d06b14cf96
Author: Jes Sorensen <Jes.Sorensen@redhat.com>
Date:   Tue Feb 16 16:44:24 2016 -0500

    md/raid5: Compare apples to apples (or sectors to sectors)
    
    commit e7597e69dec59b65c5525db1626b9d34afdfa678 upstream.
    
    'max_discard_sectors' is in sectors, while 'stripe' is in bytes.
    
    This fixes the problem where DISCARD would get disabled on some larger
    RAID5 configurations (6 or more drives in my testing), while it worked
    as expected with smaller configurations.
    
    Fixes: 620125f2bf8 ("MD: raid5 trim support")
    Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b9eb2b2234c44c509384549a023c3f3bde5c59a
Author: Nate Dailey <nate.dailey@stratus.com>
Date:   Mon Feb 29 10:43:58 2016 -0500

    raid1: include bio_end_io_list in nr_queued to prevent freeze_array hang
    
    commit ccfc7bf1f09d6190ef86693ddc761d5fe3fa47cb upstream.
    
    If raid1d is handling a mix of read and write errors, handle_read_error's
    call to freeze_array can get stuck.
    
    This can happen because, though the bio_end_io_list is initially drained,
    writes can be added to it via handle_write_finished as the retry_list
    is processed. These writes contribute to nr_pending but are not included
    in nr_queued.
    
    If a later entry on the retry_list triggers a call to handle_read_error,
    freeze array hangs waiting for nr_pending == nr_queued+extra. The writes
    on the bio_end_io_list aren't included in nr_queued so the condition will
    never be satisfied.
    
    To prevent the hang, include bio_end_io_list writes in nr_queued.
    
    There's probably a better way to handle decrementing nr_queued, but this
    seemed like the safest way to avoid breaking surrounding code.
    
    I'm happy to supply the script I used to repro this hang.
    
    Fixes: 55ce74d4bfe1b(md/raid1: ensure device failure recorded before write request returns.)
    Signed-off-by: Nate Dailey <nate.dailey@stratus.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b34291f71d0fb3d09728fd43d6da350ff6a179d6
Author: Mateusz Guzik <mguzik@redhat.com>
Date:   Wed Mar 2 09:51:09 2016 +1100

    xfs: fix two memory leaks in xfs_attr_list.c error paths
    
    commit 2e83b79b2d6c78bf1b4aa227938a214dcbddc83f upstream.
    
    This plugs 2 trivial leaks in xfs_attr_shortform_list and
    xfs_attr3_leaf_list_int.
    
    Signed-off-by: Mateusz Guzik <mguzik@redhat.com>
    Reviewed-by: Eric Sandeen <sandeen@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b3ae95f03d9ff3877549e601c88f7650e3ada29
Author: Nikolay Borisov <kernel@kyup.com>
Date:   Thu Mar 3 10:54:57 2016 +0100

    quota: Fix possible GPF due to uninitialised pointers
    
    commit ab73ef46398e2c0159f3a71de834586422d2a44a upstream.
    
    When dqget() in __dquot_initialize() fails e.g. due to IO error,
    __dquot_initialize() will pass an array of uninitialized pointers to
    dqput_all() and thus can lead to deference of random data. Fix the
    problem by properly initializing the array.
    
    Signed-off-by: Nikolay Borisov <kernel@kyup.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3c5b82c36e98876ab507d3bc062100eecaba158
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Tue Mar 8 19:31:24 2016 +0530

    ARC: bitops: Remove non relevant comments
    
    commit 2a41b6dc28dc71c1a3f1622612a26edc58f7561e upstream.
    
    commit 80f420842ff42 removed the ARC bitops microoptimization but failed
    to prune the comments to same effect
    
    Fixes: 80f420842ff42 ("ARC: Make ARC bitops "safer" (add anti-optimization)")
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f640dae8943ecbcc9ee6710aec89bba594512336
Author: Lada Trimasova <ltrimas@synopsys.com>
Date:   Wed Mar 9 20:21:04 2016 +0300

    ARC: [BE] readl()/writel() to work in Big Endian CPU configuration
    
    commit f778cc65717687a3d3f26dd21bef62cd059f1b8b upstream.
    
    read{l,w}() write{l,w}() primitives should use le{16,32}_to_cpu() and
    cpu_to_le{16,32}() respectively to ensure device registers are read
    correctly in Big Endian CPU configuration.
    
    Per Arnd Bergmann
    | Most drivers using readl() or readl_relaxed() expect those to perform byte
    | swaps on big-endian architectures, as the registers tend to be fixed endian
    
    This was needed for getting UART to work correctly on a Big Endian ARC.
    
    The ARC accessors originally were fine, and the bug got introduced
    inadventently by commit b8a033023994 ("ARCv2: barriers")
    
    Fixes: b8a033023994 ("ARCv2: barriers")
    Link: http://lkml.kernel.org/r/201603100845.30602.arnd@arndb.de
    Cc: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Lada Trimasova <ltrimas@synopsys.com>
    [vgupta: beefed up changelog, added Fixes/stable tags]
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f841628aca5d4133ad2aba0e2f279c8ab65b9d8
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Thu Mar 3 18:34:29 2016 +0300

    xtensa: clear all DBREAKC registers on start
    
    commit 7de7ac785ae18a2cdc78d7560f48e3213d9ea0ab upstream.
    
    There are XCHAL_NUM_DBREAK registers, clear them all.
    This also fixes cryptic assembler error message with binutils 2.25 when
    XCHAL_NUM_DBREAK is 0:
    
      as: out of memory allocating 18446744073709551575 bytes after a total
      of 495616 bytes
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd8af682db6a51a5130f48b07d211c808f321997
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Thu Feb 25 23:27:51 2016 +0300

    xtensa: fix preemption in {clear,copy}_user_highpage
    
    commit a67cc9aa2dfc6e66addf240bbd79e16e01565e81 upstream.
    
    Disabling pagefault makes little sense there, preemption disabling is
    what was meant.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2e1e0a0afd3549c87c97ec2b3363b7325c6e3d5
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Tue Feb 9 01:02:38 2016 +0300

    xtensa: ISS: don't hang if stdin EOF is reached
    
    commit 362014c8d9d51d504c167c44ac280169457732be upstream.
    
    Simulator stdin may be connected to a file, when its end is reached
    kernel hangs in infinite loop inside rs_poll, because simc_poll always
    signals that descriptor 0 is readable and simc_read always returns 0.
    Check simc_read return value and exit loop if it's not positive. Also
    don't rewind polling timer if it's zero.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab14444f6f3dd3cd0a47ad4bcc35fed256d1e9a7
Author: Rabin Vincent <rabin@rab.in>
Date:   Thu Mar 10 21:19:06 2016 +0100

    splice: handle zero nr_pages in splice_to_pipe()
    
    commit d6785d9152147596f60234157da2b02540c3e60f upstream.
    
    Running the following command:
    
     busybox cat /sys/kernel/debug/tracing/trace_pipe > /dev/null
    
    with any tracing enabled pretty very quickly leads to various NULL
    pointer dereferences and VM BUG_ON()s, such as these:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
     IP: [<ffffffff8119df6c>] generic_pipe_buf_release+0xc/0x40
     Call Trace:
      [<ffffffff811c48a3>] splice_direct_to_actor+0x143/0x1e0
      [<ffffffff811c42e0>] ? generic_pipe_buf_nosteal+0x10/0x10
      [<ffffffff811c49cf>] do_splice_direct+0x8f/0xb0
      [<ffffffff81196869>] do_sendfile+0x199/0x380
      [<ffffffff81197600>] SyS_sendfile64+0x90/0xa0
      [<ffffffff8192cbee>] entry_SYSCALL_64_fastpath+0x12/0x6d
    
     page dumped because: VM_BUG_ON_PAGE(atomic_read(&page->_count) == 0)
     kernel BUG at include/linux/mm.h:367!
     invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
     RIP: [<ffffffff8119df9c>] generic_pipe_buf_release+0x3c/0x40
     Call Trace:
      [<ffffffff811c48a3>] splice_direct_to_actor+0x143/0x1e0
      [<ffffffff811c42e0>] ? generic_pipe_buf_nosteal+0x10/0x10
      [<ffffffff811c49cf>] do_splice_direct+0x8f/0xb0
      [<ffffffff81196869>] do_sendfile+0x199/0x380
      [<ffffffff81197600>] SyS_sendfile64+0x90/0xa0
      [<ffffffff8192cd1e>] tracesys_phase2+0x84/0x89
    
    (busybox's cat uses sendfile(2), unlike the coreutils version)
    
    This is because tracing_splice_read_pipe() can call splice_to_pipe()
    with spd->nr_pages == 0.  spd_pages underflows in splice_to_pipe() and
    we fill the page pointers and the other fields of the pipe_buffers with
    garbage.
    
    All other callers of splice_to_pipe() avoid calling it when nr_pages ==
    0, and we could make tracing_splice_read_pipe() do that too, but it
    seems reasonable to have splice_to_page() handle this condition
    gracefully.
    
    Signed-off-by: Rabin Vincent <rabin@rab.in>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 994f9db39113a268394fcba06537cabfbb40cb2b
Author: Dmitry V. Levin <ldv@altlinux.org>
Date:   Thu Mar 19 11:10:54 2015 +0000

    vfs: show_vfsstat: do not ignore errors from show_devname method
    
    commit 5f8d498d4364f544fee17125787a47553db02afa upstream.
    
    Explicitly check show_devname method return code and bail out in case
    of an error.  This fixes regression introduced by commit 9d4d65748a5c.
    
    Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da191fac4bfa7ba6372e10365591a2759a3298ea
Author: Vinayak Menon <vinmenon@codeaurora.org>
Date:   Mon Feb 22 19:15:44 2016 +0530

    of: alloc anywhere from memblock if range not specified
    
    commit e53b50c0cbe392c946807abf7d07615a3c588642 upstream.
    
    early_init_dt_alloc_reserved_memory_arch passes end as 0 to
    __memblock_alloc_base, when limits are not specified. But
    __memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE
    and limits the end to memblock.current_limit. This results in regions
    never being placed in HIGHMEM area, for e.g. CMA.
    Let __memblock_alloc_base allocate from anywhere in memory if limits are
    not specified.
    
    Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b4a50fae597168ed1eb10e0ca60e73ac649963f
Author: Dmitri Epshtein <dima@marvell.com>
Date:   Sat Mar 12 18:44:18 2016 +0100

    net: mvneta: enable change MAC address when interface is up
    
    commit 928b6519afeb2a5e2dc61154380b545ed66c476a upstream.
    
    Function eth_prepare_mac_addr_change() is called as part of MAC
    address change. This function check if interface is running.
    To enable change MAC address when interface is running:
    IFF_LIVE_ADDR_CHANGE flag must be set to dev->priv_flags field
    
    Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP
    network unit")
    Signed-off-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36591ef19ab6e82cfb3580880ba1fefd843aa8ed
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Mar 15 20:43:04 2016 -0400

    cgroup: ignore css_sets associated with dead cgroups during migration
    
    commit 2b021cbf3cb6208f0d40fd2f1869f237934340ed upstream.
    
    Before 2e91fa7f6d45 ("cgroup: keep zombies associated with their
    original cgroups"), all dead tasks were associated with init_css_set.
    If a zombie task is requested for migration, while migration prep
    operations would still be performed on init_css_set, the actual
    migration would ignore zombie tasks.  As init_css_set is always valid,
    this worked fine.
    
    However, after 2e91fa7f6d45, zombie tasks stay with the css_set it was
    associated with at the time of death.  Let's say a task T associated
    with cgroup A on hierarchy H-1 and cgroup B on hiearchy H-2.  After T
    becomes a zombie, it would still remain associated with A and B.  If A
    only contains zombie tasks, it can be removed.  On removal, A gets
    marked offline but stays pinned until all zombies are drained.  At
    this point, if migration is initiated on T to a cgroup C on hierarchy
    H-2, migration path would try to prepare T's css_set for migration and
    trigger the following.
    
     WARNING: CPU: 0 PID: 1576 at kernel/cgroup.c:474 cgroup_get+0x121/0x160()
     CPU: 0 PID: 1576 Comm: bash Not tainted 4.4.0-work+ #289
     ...
     Call Trace:
      [<ffffffff8127e63c>] dump_stack+0x4e/0x82
      [<ffffffff810445e8>] warn_slowpath_common+0x78/0xb0
      [<ffffffff810446d5>] warn_slowpath_null+0x15/0x20
      [<ffffffff810c33e1>] cgroup_get+0x121/0x160
      [<ffffffff810c349b>] link_css_set+0x7b/0x90
      [<ffffffff810c4fbc>] find_css_set+0x3bc/0x5e0
      [<ffffffff810c5269>] cgroup_migrate_prepare_dst+0x89/0x1f0
      [<ffffffff810c7547>] cgroup_attach_task+0x157/0x230
      [<ffffffff810c7a17>] __cgroup_procs_write+0x2b7/0x470
      [<ffffffff810c7bdc>] cgroup_tasks_write+0xc/0x10
      [<ffffffff810c4790>] cgroup_file_write+0x30/0x1b0
      [<ffffffff811c68fc>] kernfs_fop_write+0x13c/0x180
      [<ffffffff81151673>] __vfs_write+0x23/0xe0
      [<ffffffff81152494>] vfs_write+0xa4/0x1a0
      [<ffffffff811532d4>] SyS_write+0x44/0xa0
      [<ffffffff814af2d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
    
    It doesn't make sense to prepare migration for css_sets pointing to
    dead cgroups as they are guaranteed to contain only zombies which are
    ignored later during migration.  This patch makes cgroup destruction
    path mark all affected css_sets as dead and updates the migration path
    to ignore them during preparation.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 2e91fa7f6d45 ("cgroup: keep zombies associated with their original cgroups")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0de3cec40ee0f365751e11a477e47dd5568c34e
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Fri Mar 11 09:56:33 2016 +0200

    Bluetooth: Fix potential buffer overflow with Add Advertising
    
    commit 6a0e78072c2ae7b20b14e0249d8108441ea928d2 upstream.
    
    The Add Advertising command handler does the appropriate checks for
    the AD and Scan Response data, however fails to take into account the
    general length of the mgmt command itself, which could lead to
    potential buffer overflows. This patch adds the necessary check that
    the mgmt command length is consistent with the given ad and scan_rsp
    lengths.
    
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7435429a8a7f3a83f760a1f72958ee53db408e27
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Wed Feb 10 00:49:11 2016 +0300

    Bluetooth: Add new AR3012 ID 0489:e095
    
    commit 28c971d82fb58ef7cba22e5308be6d2d2590473d upstream.
    
    T: Bus=01 Lev=01 Prnt=01 Port=04 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=0489 ProdID=e095 Rev=00.01
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    This device requires ar3k/AthrBT_0x31010100.dfu and
    ar3k/ramps_0x31010100_40.dfu firmware files that are not in
    linux-firmware yet.
    
    BugLink: https://bugs.launchpad.net/bugs/1542944
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a4cdbf56201f983f8177e3845fcb47d25d4fcb0
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Sun Feb 28 17:44:09 2016 +0200

    watchdog: rc32434_wdt: fix ioctl error handling
    
    commit 10e7ac22cdd4d211cef99afcb9371b70cb175be6 upstream.
    
    Calling return copy_to_user(...) in an ioctl will not do the right thing
    if there's a pagefault: copy_to_user returns the number of bytes not
    copied in this case.
    
    Fix up watchdog/rc32434_wdt to do
    	return copy_to_user(...)) ?  -EFAULT : 0;
    
    instead.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f4a82d5e3492c26fb0263ca7f007180612e8b54
Author: Joshua Hunt <johunt@akamai.com>
Date:   Thu Mar 17 14:17:23 2016 -0700

    watchdog: don't run proc_watchdog_update if new value is same as old
    
    commit a1ee1932aa6bea0bb074f5e3ced112664e4637ed upstream.
    
    While working on a script to restore all sysctl params before a series of
    tests I found that writing any value into the
    /proc/sys/kernel/{nmi_watchdog,soft_watchdog,watchdog,watchdog_thresh}
    causes them to call proc_watchdog_update().
    
      NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
      NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
      NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
      NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
    
    There doesn't appear to be a reason for doing this work every time a write
    occurs, so only do it when the values change.
    
    Signed-off-by: Josh Hunt <johunt@akamai.com>
    Acked-by: Don Zickus <dzickus@redhat.com>
    Reviewed-by: Aaron Tomlin <atomlin@redhat.com>
    Cc: Ulrich Obergfell <uobergfe@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee52f62c636c0c151ea92ffbf5ef940be51b0d22
Author: Luis R. Rodriguez <mcgrof@kernel.org>
Date:   Thu Mar 17 14:17:16 2016 -0700

    ia64: define ioremap_uc()
    
    commit b0f84ac352762ed02d7ea9f284942a8cab7f9077 upstream.
    
    All architectures now need ioremap_uc(), ia64 seems defines this already
    through its ioremap_nocache() and it already ensures it *only* uses UC.
    
    This is needed since v4.3 to complete an allyesconfig compile on ia64,
    there were others archs that needed this, and this one seems to have
    fallen through the cracks.
    
    Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Acked-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ccab5b139971a2a3f48df24d1ee8be2dbf84042
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Thu Mar 17 14:20:28 2016 -0700

    mm: memcontrol: reclaim and OOM kill when shrinking memory.max below usage
    
    commit b6e6edcfa40561e9c8abe5eecf1c96f8e5fd9c6f upstream.
    
    Setting the original memory.limit_in_bytes hardlimit is subject to a
    race condition when the desired value is below the current usage.  The
    code tries a few times to first reclaim and then see if the usage has
    dropped to where we would like it to be, but there is no locking, and
    the workload is free to continue making new charges up to the old limit.
    Thus, attempting to shrink a workload relies on pure luck and hope that
    the workload happens to cooperate.
    
    To fix this in the cgroup2 memory.max knob, do it the other way round:
    set the limit first, then try enforcement.  And if reclaim is not able
    to succeed, trigger OOM kills in the group.  Keep going until the new
    limit is met, we run out of OOM victims and there's only unreclaimable
    memory left, or the task writing to memory.max is killed.  This allows
    users to shrink groups reliably, and the behavior is consistent with
    what happens when new charges are attempted in excess of memory.max.
    
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b42fc47e1b64cb661fed8d96f874effbdf1d7f1
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Thu Mar 17 14:20:25 2016 -0700

    mm: memcontrol: reclaim when shrinking memory.high below usage
    
    commit 588083bb37a3cea8533c392370a554417c8f29cb upstream.
    
    When setting memory.high below usage, nothing happens until the next
    charge comes along, and then it will only reclaim its own charge and not
    the now potentially huge excess of the new memory.high.  This can cause
    groups to stay in excess of their memory.high indefinitely.
    
    To fix that, when shrinking memory.high, kick off a reclaim cycle that
    goes after the delta.
    
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca75edc44088cc40792161fd2ca650c5cfe8ee9f
Author: Eric Wheeler <git@linux.ewheeler.net>
Date:   Mon Mar 7 15:17:50 2016 -0800

    bcache: fix cache_set_flush() NULL pointer dereference on OOM
    
    commit f8b11260a445169989d01df75d35af0f56178f95 upstream.
    
    When bch_cache_set_alloc() fails to kzalloc the cache_set, the
    asyncronous closure handling tries to dereference a cache_set that
    hadn't yet been allocated inside of cache_set_flush() which is called
    by __cache_set_unregister() during cleanup.  This appears to happen only
    during an OOM condition on bcache_register.
    
    Signed-off-by: Eric Wheeler <bcache@linux.ewheeler.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b58e781068d9a5fd6b0ee77f595c3dbaa0d2b7aa
Author: Eric Wheeler <git@linux.ewheeler.net>
Date:   Fri Feb 26 14:39:06 2016 -0800

    bcache: fix race of writeback thread starting before complete initialization
    
    commit 07cc6ef8edc47f8b4fc1e276d31127a0a5863d4d upstream.
    
    The bch_writeback_thread might BUG_ON in read_dirty() if
    dc->sb==BDEV_STATE_DIRTY and bch_sectors_dirty_init has not yet completed
    its related initialization.  This patch downs the dc->writeback_lock until
    after initialization is complete, thus preventing bch_writeback_thread
    from proceeding prematurely.
    
    See this thread:
      http://thread.gmane.org/gmane.linux.kernel.bcache.devel/3453
    
    Signed-off-by: Eric Wheeler <bcache@linux.ewheeler.net>
    Tested-by: Marc MERLIN <marc@merlins.org>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32bb1185093c67c2280e440685ebc6b23fd47743
Author: Eric Wheeler <git@linux.ewheeler.net>
Date:   Fri Feb 26 14:33:56 2016 -0800

    bcache: cleaned up error handling around register_cache()
    
    commit 9b299728ed777428b3908ac72ace5f8f84b97789 upstream.
    
    Fix null pointer dereference by changing register_cache() to return an int
    instead of being void.  This allows it to return -ENOMEM or -ENODEV and
    enables upper layers to handle the OOM case without NULL pointer issues.
    
    See this thread:
      http://thread.gmane.org/gmane.linux.kernel.bcache.devel/3521
    
    Fixes this error:
      gargamel:/sys/block/md5/bcache# echo /dev/sdh2 > /sys/fs/bcache/register
    
      bcache: register_cache() error opening sdh2: cannot allocate memory
      BUG: unable to handle kernel NULL pointer dereference at 00000000000009b8
      IP: [<ffffffffc05a7e8d>] cache_set_flush+0x102/0x15c [bcache]
      PGD 120dff067 PUD 1119a3067 PMD 0
      Oops: 0000 [#1] SMP
      Modules linked in: veth ip6table_filter ip6_tables
      (...)
      CPU: 4 PID: 3371 Comm: kworker/4:3 Not tainted 4.4.2-amd64-i915-volpreempt-20160213bc1 #3
      Hardware name: System manufacturer System Product Name/P8H67-M PRO, BIOS 3904 04/27/2013
      Workqueue: events cache_set_flush [bcache]
      task: ffff88020d5dc280 ti: ffff88020b6f8000 task.ti: ffff88020b6f8000
      RIP: 0010:[<ffffffffc05a7e8d>]  [<ffffffffc05a7e8d>] cache_set_flush+0x102/0x15c [bcache]
    
    Signed-off-by: Eric Wheeler <bcache@linux.ewheeler.net>
    Tested-by: Marc MERLIN <marc@merlins.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84512e476ce92fbdb60d4687e3ea230dbf0655c8
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Thu Feb 11 11:03:09 2016 -0800

    IB/srpt: Simplify srpt_handle_tsk_mgmt()
    
    commit 51093254bf879bc9ce96590400a87897c7498463 upstream.
    
    Let the target core check task existence instead of the SRP target
    driver. Additionally, let the target core check the validity of the
    task management request instead of the ib_srpt driver.
    
    This patch fixes the following kernel crash:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000001
    IP: [<ffffffffa0565f37>] srpt_handle_new_iu+0x6d7/0x790 [ib_srpt]
    Oops: 0002 [#1] SMP
    Call Trace:
     [<ffffffffa05660ce>] srpt_process_completion+0xde/0x570 [ib_srpt]
     [<ffffffffa056669f>] srpt_compl_thread+0x13f/0x160 [ib_srpt]
     [<ffffffff8109726f>] kthread+0xcf/0xe0
     [<ffffffff81613cfc>] ret_from_fork+0x7c/0xb0
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Fixes: 3e4f574857ee ("ib_srpt: Convert TMR path to target_submit_tmr")
    Tested-by: Alex Estrin <alex.estrin@intel.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: Nicholas Bellinger <nab@linux-iscsi.org>
    Cc: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a8f4a490871df59d1f3cfe28fae4458d2cbef7f
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Tue Dec 15 16:38:22 2015 +0100

    brd: Fix discard request processing
    
    commit 5e4298be45e83ecdffaabb370eea9396889b07f1 upstream.
    
    Avoid that discard requests with size => PAGE_SIZE fail with
    -EIO. Refuse discard requests if the discard size is not a
    multiple of the page size.
    
    Fixes: 2dbe54957636 ("brd: Refuse improperly aligned discard requests")
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: Jan Kara <jack@suse.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Robert Elliot <elliott@hp.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93272beafa9d9a5933590c90d2fa525e86e67032
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Wed Mar 9 23:47:25 2016 -0500

    jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount path
    
    commit c0a2ad9b50dd80eeccd73d9ff962234590d5ec93 upstream.
    
    On umount path, jbd2_journal_destroy() writes latest transaction ID
    (->j_tail_sequence) to be used at next mount.
    
    The bug is that ->j_tail_sequence is not holding latest transaction ID
    in some cases. So, at next mount, there is chance to conflict with
    remaining (not overwritten yet) transactions.
    
    	mount (id=10)
    	write transaction (id=11)
    	write transaction (id=12)
    	umount (id=10) <= the bug doesn't write latest ID
    
    	mount (id=10)
    	write transaction (id=11)
    	crash
    
    	mount
    	[recovery process]
    		transaction (id=11)
    		transaction (id=12) <= valid transaction ID, but old commit
                                           must not replay
    
    Like above, this bug become the cause of recovery failure, or FS
    corruption.
    
    So why ->j_tail_sequence doesn't point latest ID?
    
    Because if checkpoint transactions was reclaimed by memory pressure
    (i.e. bdev_try_to_free_page()), then ->j_tail_sequence is not updated.
    (And another case is, __jbd2_journal_clean_checkpoint_list() is called
    with empty transaction.)
    
    So in above cases, ->j_tail_sequence is not pointing latest
    transaction ID at umount path. Plus, REQ_FLUSH for checkpoint is not
    done too.
    
    So, to fix this problem with minimum changes, this patch updates
    ->j_tail_sequence, and issue REQ_FLUSH.  (With more complex changes,
    some optimizations would be possible to avoid unnecessary REQ_FLUSH
    for example though.)
    
    BTW,
    
    	journal->j_tail_sequence =
    		++journal->j_transaction_sequence;
    
    Increment of ->j_transaction_sequence seems to be unnecessary, but
    ext3 does this.
    
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2a70d6055c5da54d3f45805a19c37a693acd07f
Author: Kamal Mostafa <kamal@canonical.com>
Date:   Wed Jan 27 22:29:33 2016 -0800

    tools/hv: Use include/uapi with __EXPORTED_HEADERS__
    
    commit 50fe6dd10069e7c062e27f29606f6e91ea979399 upstream.
    
    Use the local uapi headers to keep in sync with "recently" added #define's
    (e.g. VSS_OP_REGISTER1).
    
    Fixes: 3eb2094c59e8 ("Adding makefile for tools/hv")
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1dac534145d0f84b3fcadf5b69d8de3ad147f471
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 15 16:44:55 2016 +0100

    ALSA: hda - Fix unconditional GPIO toggle via automute
    
    commit 1f7c6658962fa1260c1658d681bd6bb0c746b99a upstream.
    
    Cirrus HD-audio driver may adjust GPIO pins for EAPD dynamically
    depending on the jack plug state.  This works fine for the auto-mute
    mode where the speaker gets muted upon the HP jack plug.   OTOH, when
    the auto-mute mode is off, this turns off the EAPD unexpectedly
    depending on the jack state, which results in the silent speaker
    output.
    
    This patch fixes the silent speaker output issue by setting GPIO bits
    constantly when the auto-mute mode is off.
    
    Reported-and-tested-by: moosotc@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db894649e34abceade484c35e5acd346e74e916d
Author: Hui Wang <hui.wang@canonical.com>
Date:   Fri Mar 11 12:04:02 2016 +0800

    ALSA: hda - fix the mic mute button and led problem for a Lenovo AIO
    
    commit 6ef2f68fa38bf415830f67903d87180d933e0f47 upstream.
    
    This Lenovo ThinkCentre AIO also uses Line2 as mic mute button and
    uses GPIO2 to control the mic mute led, so applying this quirk can
    make both the button and led work.
    
    BugLink: https://bugs.launchpad.net/bugs/1555912
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee2a37ab39b013589647ced2e6526c7358cb2111
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 10 12:02:49 2016 +0100

    ALSA: hda - Don't handle ELD notify from invalid port
    
    commit 4f8e4f3537cafc4de128e6bfdf83baa78bc60eb1 upstream.
    
    The current Intel HDMI codec driver supports only three fixed ports
    from port B to port D.  However, i915 driver may assign a DP on other
    ports, e.g. port A, when no eDP is used.  This incompatibility is
    caught later at pin_nid_to_pin_index() and results in a warning
    message like "HDMI: pin nid 4 not registered" at each time.
    
    This patch filters out such invalid events beforehand, so that the
    kernel won't be too grumbling.
    
    Reported-by: Stefan Assmann <sassmann@kpanic.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fae159b7d25987747919ccb73a8813da81abd97
Author: Vittorio Gambaletta (VittGam) <linuxbugs@vittgam.net>
Date:   Sun Mar 13 22:19:34 2016 +0100

    ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41.
    
    commit 4061db03dd71d195b9973ee466f6ed32f6a3fc16 upstream.
    
    The clock measurement on the AC'97 audio card found in the IBM ThinkPad X41
    will often fail, so add a quirk entry to fix it.
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=441087
    Signed-off-by: Vittorio Gambaletta <linuxbugs@vittgam.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae8168541087b26f946f31555e977c146aba637a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 10 20:56:20 2016 +0100

    ALSA: pcm: Avoid "BUG:" string for warnings again
    
    commit 0ab1ace856205d10cbc1924b2d931c01ffd216a6 upstream.
    
    The commit [d507941beb1e: ALSA: pcm: Correct PCM BUG error message]
    made the warning prefix back to "BUG:" due to its previous wrong
    prefix.  But a kernel message containing "BUG:" seems taken as an Oops
    message wrongly by some brain-dead daemons, and it annoys users in the
    end.  Instead of teaching daemons, change the string again to a more
    reasonable one.
    
    Fixes: 507941beb1e ('ALSA: pcm: Correct PCM BUG error message')
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbb4bee779b3301a3ab7924f85f38b96bdf1fd4a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 10 11:33:43 2016 +0100

    ALSA: hda - Apply reboot D3 fix for CX20724 codec, too
    
    commit 56dc66ff1c6d71f9a38c4a7c000b72b921fe4c89 upstream.
    
    Just like CX20722, CX7024 codec also requires the power down at reboot
    in order to reduce the noise at reboot/shutdown.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=113511
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c46344a83ea7265d391e978711c07fc6380d8d7
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:21:20 2016 -0800

    mtip32xx: Cleanup queued requests after surprise removal
    
    commit 008e56d200225321371748d95908e6222436f06d upstream.
    
    Fail all pending requests after surprise removal of a drive.
    
    Signed-off-by: Vignesh Gunasekaran <vgunasekaran@micron.com>
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d45d26e491c01c98934a7d941343df8477cad38f
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:21:13 2016 -0800

    mtip32xx: Implement timeout handler
    
    commit abb0ccd185c9e31847709b86192e6c815d1f57ad upstream.
    
    Added timeout handler. Replaced blk_mq_end_request() with
    blk_mq_complete_request() to avoid double completion of a request.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Rajesh Kumar Sambandam <rsambandam@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f75d029f84a7c85a0d0875506c823ba50b10b3a1
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:18:20 2016 -0800

    mtip32xx: Handle FTL rebuild failure state during device initialization
    
    commit aae4a033868c496adae86fc6f9c3e0c405bbf360 upstream.
    
    Allow device initialization to finish gracefully when it is in
    FTL rebuild failure state. Also, recover device out of this state
    after successfully secure erasing it.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Vignesh Gunasekaran <vgunasekaran@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2e6e22464ac6fb53e60d74ddf02fb829959ab9c
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:18:10 2016 -0800

    mtip32xx: Handle safe removal during IO
    
    commit 51c6570eb922146470c2fe660c34585414679bd6 upstream.
    
    Flush inflight IOs using fsync_bdev() when the device is safely
    removed. Also, block further IOs in device open function.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Rajesh Kumar Sambandam <rsambandam@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e241a8dab98aff4d79d36e8cc71c4487c909bdd5
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:17:47 2016 -0800

    mtip32xx: Fix for rmmod crash when drive is in FTL rebuild
    
    commit 59cf70e236c96594d9f1e065755d8fce9df5356b upstream.
    
    When FTL rebuild is in progress, alloc_disk() initializes the disk
    but device node will be created by add_disk() only after successful
    completion of FTL rebuild. So, skip deletion of device node in
    removal path when FTL rebuild is in progress.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d58a02e4fdad9cb7ce0799363eaa54c012fcd33
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:16:38 2016 -0800

    mtip32xx: Print exact time when an internal command is interrupted
    
    commit 5b7e0a8ac85e2dfd83830dc9e0b3554d153a37e3 upstream.
    
    Print exact time when an internal command is interrupted.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Rajesh Kumar Sambandam <rsambandam@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 828e9f2e8aa20881e1fc46152590d09520161ef8
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:16:21 2016 -0800

    mtip32xx: Remove unwanted code from taskfile error handler
    
    commit e35b94738a2f7caa12017f69ef385cb6b8028965 upstream.
    
    Remove setting and clearing MTIP_PF_EH_ACTIVE_BIT flag in
    mtip_handle_tfe() as they are redundant. Also avoid waking
    up service thread from mtip_handle_tfe() because it is
    already woken up in case of taskfile error.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Rajesh Kumar Sambandam <rsambandam@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b899eb4833d3394f37272d38b4b1a26eac30feb
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:16:00 2016 -0800

    mtip32xx: Fix broken service thread handling
    
    commit cfc05bd31384c4898bf2437a4de5557f3cf9803a upstream.
    
    Service thread does not detect the need for taskfile error hanlding. Fixed the
    flag condition to process taskfile error.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef87aef51d0de4220bf9c4de34de89f2716b3398
Author: Asai Thambi SP <asamymuthupa@micron.com>
Date:   Wed Feb 24 21:17:32 2016 -0800

    mtip32xx: Avoid issuing standby immediate cmd during FTL rebuild
    
    commit d8a18d2d8f5de55666c6011ed175939d22c8e3d8 upstream.
    
    Prevent standby immediate command from being issued in remove,
    suspend and shutdown paths, while drive is in FTL rebuild process.
    
    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Vignesh Gunasekaran <vgunasekaran@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c1fa99764bd76be5707447b40aa0806acfc61bf
Author: Tiffany Lin <tiffany.lin@mediatek.com>
Date:   Tue Jan 19 05:56:50 2016 -0200

    media: v4l2-compat-ioctl32: fix missing length copy in put_v4l2_buffer32
    
    commit 7df5ab8774aa383c6d2bff00688d004585d96dfd upstream.
    
    In v4l2-compliance utility, test QUERYBUF required correct length
    value to go through each planar to check planar's length in
    multi-planar buffer type
    
    Signed-off-by: Tiffany Lin <tiffany.lin@mediatek.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6aed423a0e54306003228d3b68196c542af6cd59
Author: Philipp Zabel <p.zabel@pengutronix.de>
Date:   Mon Jan 4 17:30:09 2016 -0200

    coda: fix first encoded frame payload
    
    commit 74dc385cb450089b28c28be2c8a0baca296b95f9 upstream.
    
    During the recent vb2_buffer restructuring, the calculation of the
    buffer payload reported to userspace was accidentally broken for the
    first encoded frame, counting only the length of the headers.
    This patch re-adds the length of the actual frame data.
    
    Fixes: 2d7007153f0c ("[media] media: videobuf2: Restructure vb2_buffer")
    
    Reported-by: Michael Olbrich <m.olbrich@pengutronix.de>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Tested-by: Jan Luebbe <jlu@pengutronix.de>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c26bcd82af503a92ae4e10223707f2b51ec3cd9
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Feb 7 09:24:29 2016 -0200

    bttv: Width must be a multiple of 16 when capturing planar formats
    
    commit 5c915c68763889f0183a1cc61c84bb228b60124a upstream.
    
    On my bttv card "Hauppauge WinTV [card=10]" capturing in YV12 fmt at max
    size results in a solid green rectangle being captured (all colors 0 in
    YUV).
    
    This turns out to be caused by max-width (924) not being a multiple of 16.
    
    We've likely never hit this problem before since normally xawtv / tvtime,
    etc. will prefer packed pixel formats. But when using a video card which
    is using xf86-video-modesetting + glamor, only planar XVideo fmts are
    available, and xawtv will chose a matching capture format to avoid needing
    to do conversion, triggering the solid green window problem.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 454b8cbea62141cdaee224a118678c890c7aa186
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Wed Feb 10 09:32:25 2016 -0200

    adv7511: TX_EDID_PRESENT is still 1 after a disconnect
    
    commit b339a72e04a62f0b1882c43492fc712f1176b3e6 upstream.
    
    The V4L2_CID_TX_EDID_PRESENT control reports if an EDID is present.
    The adv7511 however still reported the EDID present after disconnecting
    the HDMI cable. Fix the logic regarding this control. And when the EDID
    is disconnected also call ADV7511_EDID_DETECT to notify the bridge driver.
    This was also missing.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fe401d63051c524e45d2a1c57bf1e34ecc19a7b
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Feb 14 17:51:37 2016 -0200

    saa7134: Fix bytesperline not being set correctly for planar formats
    
    commit 3e71da19f9dc22e39a755d6ae9678661abb66adc upstream.
    
    bytesperline should be the bytesperline for the first plane for planar
    formats, not that of all planes combined.
    
    This fixes a crash in xawtv caused by the wrong bpl.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1305389
    Reported-and-tested-by: Stas Sergeev <stsp@list.ru>
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc0768092cebd0b70a08f5423263669ea3849ef9
Author: Sebastian Frias <sf84@laposte.net>
Date:   Fri Dec 18 17:40:05 2015 +0100

    8250: use callbacks to access UART_DLL/UART_DLM
    
    commit 0b41ce991052022c030fd868e03877700220b090 upstream.
    
    Some UART HW has a single register combining UART_DLL/UART_DLM
    (this was probably forgotten in the change that introduced the
    callbacks, commit b32b19b8ffc05cbd3bf91c65e205f6a912ca15d9)
    
    Fixes: b32b19b8ffc0 ("[SERIAL] 8250: set divisor register correctly ...")
    
    Signed-off-by: Sebastian Frias <sf84@laposte.net>
    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 456db805f77c45611caa217996dcb93f24afb2e5
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Sat Jan 9 17:48:45 2016 -0800

    net: irda: Fix use-after-free in irtty_open()
    
    commit 401879c57f01cbf2da204ad2e8db910525c6dbea upstream.
    
    The N_IRDA line discipline may access the previous line discipline's closed
    and already-fre private data on open [1].
    
    The tty->disc_data field _never_ refers to valid data on entry to the
    line discipline's open() method. Rather, the ldisc is expected to
    initialize that field for its own use for the lifetime of the instance
    (ie. from open() to close() only).
    
    [1]
        ==================================================================
        BUG: KASAN: use-after-free in irtty_open+0x422/0x550 at addr ffff8800331dd068
        Read of size 4 by task a.out/13960
        =============================================================================
        BUG kmalloc-512 (Tainted: G    B          ): kasan: bad access detected
        -----------------------------------------------------------------------------
        ...
        Call Trace:
         [<ffffffff815fa2ae>] __asan_report_load4_noabort+0x3e/0x40 mm/kasan/report.c:279
         [<ffffffff836938a2>] irtty_open+0x422/0x550 drivers/net/irda/irtty-sir.c:436
         [<ffffffff829f1b80>] tty_ldisc_open.isra.2+0x60/0xa0 drivers/tty/tty_ldisc.c:447
         [<ffffffff829f21c0>] tty_set_ldisc+0x1a0/0x940 drivers/tty/tty_ldisc.c:567
         [<     inline     >] tiocsetd drivers/tty/tty_io.c:2650
         [<ffffffff829da49e>] tty_ioctl+0xace/0x1fd0 drivers/tty/tty_io.c:2883
         [<     inline     >] vfs_ioctl fs/ioctl.c:43
         [<ffffffff816708ac>] do_vfs_ioctl+0x57c/0xe60 fs/ioctl.c:607
         [<     inline     >] SYSC_ioctl fs/ioctl.c:622
         [<ffffffff81671204>] SyS_ioctl+0x74/0x80 fs/ioctl.c:613
         [<ffffffff852a7876>] entry_SYSCALL_64_fastpath+0x16/0x7a
    
    Reported-and-tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 583aacb1f69b733e6808625fbc44da8f499c9bfb
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Sun Jan 10 20:36:12 2016 -0800

    tty: Fix GPF in flush_to_ldisc(), part 2
    
    commit f33798deecbd59a2955f40ac0ae2bc7dff54c069 upstream.
    
    commit 9ce119f318ba ("tty: Fix GPF in flush_to_ldisc()") fixed a
    GPF caused by a line discipline which does not define a receive_buf()
    method.
    
    However, the vt driver (and speakup driver also) pushes selection
    data directly to the line discipline receive_buf() method via
    tty_ldisc_receive_buf(). Fix the same problem in tty_ldisc_receive_buf().
    
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62fe263236e09a5b4ec64bc71a42d37caf943eca
Author: H Hartley Sweeten <hsweeten@visionengravers.com>
Date:   Tue Mar 22 10:04:48 2016 -0700

    staging: comedi: ni_mio_common: fix the ni_write[blw]() functions
    
    commit bd3a3cd6c27b117fb9a43a38c8072c95332beecc upstream.
    
    Memory mapped io (dev->mmio) should not also be writing to the ioport
    (dev->iobase) registers. Add the missing 'else' to these functions.
    
    Fixes: 0953ee4acca0 ("staging: comedi: ni_mio_common: checkpatch.pl cleanup (else not useful)")
    Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
    Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 263b0af7cc419a6f5254269a30e9784b5476f433
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Wed Mar 23 00:38:43 2016 +0200

    staging: android: ion_test: fix check of platform_device_register_simple() error code
    
    commit ccbc2a9e7878ff09bcaed4893c2a2d3adbb797e2 upstream.
    
    On error platform_device_register_simple() returns ERR_PTR() value,
    check for NULL always fails. The change corrects the check itself and
    propagates the returned error upwards.
    
    Fixes: 81fb0b901397 ("staging: android: ion_test: unregister the platform device")
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5e8deb7f07fb8f7d34c908dea303ba948752916
Author: Spencer E. Olson <olsonse@umich.edu>
Date:   Tue Jan 12 10:33:18 2016 -0700

    staging: comedi: ni_tiocmd: change mistaken use of start_src for start_arg
    
    commit 1fd24a4702d2af0ea4d5845126cf57d4d1796216 upstream.
    
    This fixes a bug in function ni_tio_input_inttrig().  The trigger number
    should be compared to cmd->start_arg, not cmd->start_src.
    
    Fixes: 6a760394d7eb ("staging: comedi: ni_tiocmd: clarify the cmd->start_arg validation and use")
    Signed-off-by: Spencer E. Olson <olsonse@umich.edu>
    Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2fb06096e2538e131bd9551eb5a70ba42c1b3f7
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Fri Feb 12 17:10:37 2016 +0100

    HID: fix hid_ignore_special_drivers module parameter
    
    commit 4392bf333388cabdad5afe5b1500002d7b9c318e upstream.
    
    hid_ignore_special_drivers works fine until hid_scan_report autodetects and
    reassign devices (for hid-multitouch, hid-microsoft and hid-rmi).
    
    Simplify the handling of the parameter: if it is there, use hid-generic, no
    matter what, and if not, scan the device or rely on the hid_have_special_driver
    table.
    
    This was detected while trying to disable hid-multitouch on a Surface Pro cover
    which prevented to use the keyboard.
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cca86656508d12f998e11ee7f71b8a40864af3b4
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Mon Mar 7 11:02:38 2016 +0100

    HID: multitouch: force retrieving of Win8 signature blob
    
    commit 45c5c6828214605eaefa6755c47bd1a2c7eb203e upstream.
    
    The Synaptics 0x11e5 over I2C found in the Asus T100-CHI requires to
    fetch the signature blob to actually start sending events.
    
    With this patch, we should be close enough to the Windows driver which
    checks the content of the blob at plugin to validate or not the
    touchscreen.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=113481
    Fixes: 6d4f5440 ("HID: multitouch: Fetch feature reports on demand for Win8 devices")
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 773332f0e2b1b530079c812975833c8c2d59e4d7
Author: Dmitry Torokhov <dtor@chromium.org>
Date:   Mon Mar 14 15:21:04 2016 -0700

    HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report()
    
    commit 3b654288b196ceaa156029d9457ccbded0489b98 upstream.
    
    Even though hid_hw_* checks that passed in data_len is less than
    HID_MAX_BUFFER_SIZE it is not enough, as i2c-hid does not necessarily
    allocate buffers of HID_MAX_BUFFER_SIZE but rather checks all device
    reports and select largest size. In-kernel users normally just send as much
    data as report needs, so there is no problem, but hidraw users can do
    whatever they please:
    
    BUG: KASAN: slab-out-of-bounds in memcpy+0x34/0x54 at addr ffffffc07135ea80
    Write of size 4101 by task syz-executor/8747
    CPU: 2 PID: 8747 Comm: syz-executor Tainted: G    BU         3.18.0 #37
    Hardware name: Google Tegra210 Smaug Rev 1,3+ (DT)
    Call trace:
    [<ffffffc00020ebcc>] dump_backtrace+0x0/0x258 arch/arm64/kernel/traps.c:83
    [<ffffffc00020ee40>] show_stack+0x1c/0x2c arch/arm64/kernel/traps.c:172
    [<     inline     >] __dump_stack lib/dump_stack.c:15
    [<ffffffc001958114>] dump_stack+0x90/0x140 lib/dump_stack.c:50
    [<     inline     >] print_error_description mm/kasan/report.c:97
    [<     inline     >] kasan_report_error mm/kasan/report.c:278
    [<ffffffc0004597dc>] kasan_report+0x268/0x530 mm/kasan/report.c:305
    [<ffffffc0004592e8>] __asan_storeN+0x20/0x150 mm/kasan/kasan.c:718
    [<ffffffc0004594e0>] memcpy+0x30/0x54 mm/kasan/kasan.c:299
    [<ffffffc001306354>] __i2c_hid_command+0x2b0/0x7b4 drivers/hid/i2c-hid/i2c-hid.c:178
    [<     inline     >] i2c_hid_set_or_send_report drivers/hid/i2c-hid/i2c-hid.c:321
    [<ffffffc0013079a0>] i2c_hid_output_raw_report.isra.2+0x3d4/0x4b8 drivers/hid/i2c-hid/i2c-hid.c:589
    [<ffffffc001307ad8>] i2c_hid_output_report+0x54/0x68 drivers/hid/i2c-hid/i2c-hid.c:602
    [<     inline     >] hid_hw_output_report include/linux/hid.h:1039
    [<ffffffc0012cc7a0>] hidraw_send_report+0x400/0x414 drivers/hid/hidraw.c:154
    [<ffffffc0012cc7f4>] hidraw_write+0x40/0x64 drivers/hid/hidraw.c:177
    [<ffffffc0004681dc>] vfs_write+0x1d4/0x3cc fs/read_write.c:534
    [<     inline     >] SYSC_pwrite64 fs/read_write.c:627
    [<ffffffc000468984>] SyS_pwrite64+0xec/0x144 fs/read_write.c:614
    Object at ffffffc07135ea80, in cache kmalloc-512
    Object allocated with size 268 bytes.
    
    Let's check data length against the buffer size before attempting to copy
    data over.
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72c49c697bb63054c7c3a26b90d15fb3a95e30eb
Author: Grazvydas Ignotas <notasas@gmail.com>
Date:   Sat Feb 13 22:41:51 2016 +0200

    HID: logitech: fix Dual Action gamepad support
    
    commit 5d74325a2201376a95520a4a38a1ce2c65761c49 upstream.
    
    The patch that added Logitech Dual Action gamepad support forgot to
    update the special driver list for the device. This caused the logitech
    driver not to probe unless kernel module load order was favorable.
    Update the special driver list to fix it. Thanks to Simon Wood for the
    idea.
    
    Cc: Vitaly Katraew <zawullon@gmail.com>
    Fixes: 56d0c8b7c8fb ("HID: add support for Logitech Dual Action gamepads")
    Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 158c0029a8861591d42c6ad144d09cbd2c2dfe81
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Mon Feb 8 22:31:08 2016 +0200

    tpm: fix the cleanup of struct tpm_chip
    
    commit 8e0ee3c9faed7ca68807ea45141775856c438ac0 upstream.
    
    If the initialization fails before tpm_chip_register(), put_device()
    will be not called, which causes release callback not to be called.
    This patch fixes the issue by adding put_device() to devres list of
    the parent device.
    
    Fixes: 313d21eeab ("tpm: device class for tpm")
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 062c8a4ff40fedf82c1ec177a63b06c41801c2e9
Author: Harald Hoyer <harald@redhat.com>
Date:   Sat Feb 6 15:44:42 2016 +0100

    tpm_eventlog.c: fix binary_bios_measurements
    
    commit 186d124f07da193a8f47e491af85cb695d415f2f upstream.
    
    The commit 0cc698af36ff ("vTPM: support little endian guests") copied
    the event, but without the event data, did an endian conversion on the
    size and tried to output the event data from the copied version, which
    has only have one byte of the data, resulting in garbage event data.
    
    [jarkko.sakkinen@linux.intel.com: fixed minor coding style issues and
     renamed the local variable tempPtr as temp_ptr now that there is an
     excuse to do this.]
    
    Signed-off-by: Harald Hoyer <harald@redhat.com>
    Fixes: 0cc698af36ff ("vTPM: support little endian guests")
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 160f50a3f40f3aa32ec7c7c9d18b3ffb5bdf12e2
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Thu Feb 18 22:11:29 2016 +0200

    tpm_crb: tpm2_shutdown() must be called before tpm_chip_unregister()
    
    commit 99cda8cb4639de81cde785b5bab9bc52e916e594 upstream.
    
    Wrong call order.
    
    Reported-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Fixes: 74d6b3ceaa17
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e69549b48e39e72c7aad093e0c5e29ab547a9f1
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Fri Jan 29 09:47:22 2016 -0800

    tpm: fix the rollback in tpm_chip_register()
    
    commit 72c91ce8523ae5828fe5e4417ae0aaab53707a08 upstream.
    
    Fixed the rollback and gave more self-documenting names for the
    functions.
    
    Fixes: d972b0523f ("tpm: fix call order in tpm-chip.c")
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa0ae4f223ab29ab853959b08449b5c08c9cb7a0
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Sun Feb 7 23:35:32 2016 +0200

    mei: bus: check if the device is enabled before data transfer
    
    commit 15c13dfcad883a1e76b714480fb27be96247fd82 upstream.
    
    The bus data transfer interface was missing the check if the device is
    in enabled state, this may lead to stack corruption during link reset.
    
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 499f9ff872f8792d3318b0bd5e6533bfe48abf0d
Author: David Howells <dhowells@redhat.com>
Date:   Wed Feb 24 14:37:15 2016 +0000

    X.509: Fix leap year handling again
    
    commit ac4cbedfdf55455b4c447f17f0fa027dbf02b2a6 upstream.
    
    There are still a couple of minor issues in the X.509 leap year handling:
    
     (1) To avoid doing a modulus-by-400 in addition to a modulus-by-100 when
         determining whether the year is a leap year or not, I divided the year
         by 100 after doing the modulus-by-100, thereby letting the compiler do
         one instruction for both, and then did a modulus-by-4.
    
         Unfortunately, I then passed the now-modified year value to mktime64()
         to construct a time value.
    
         Since this isn't a fast path and since mktime64() does a bunch of
         divisions, just condense down to "% 400".  It's also easier to read.
    
     (2) The default month length for any February where the year doesn't
         divide by four exactly is obtained from the month_length[] array where
         the value is 29, not 28.
    
         This is fixed by altering the table.
    
    Reported-by: Rudolf Polzer <rpolzer@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: David Woodhouse <David.Woodhouse@intel.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f08fc4eed81e135c687ac246531a6dbbd236eb14
Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
Date:   Thu Mar 17 10:47:10 2016 +0100

    crypto: marvell/cesa - forward devm_ioremap_resource() error code
    
    commit dfe97ad30e8c038261663a18b9e04b8b5bc07bea upstream.
    
    Forward devm_ioremap_resource() error code instead of returning
    -ENOMEM.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reported-by: Russell King - ARM Linux <linux@arm.linux.org.uk>
    Fixes: f63601fd616a ("crypto: marvell/cesa - add a new driver for Marvell's CESA")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75efb5fe5ce23f72ef8641f593b5829152c6203c
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Sun Mar 6 03:22:04 2016 +0200

    crypto: ux500 - fix checks of error code returned by devm_ioremap_resource()
    
    commit b62917a2622ebcb03a500ef20da47be80d8c8951 upstream.
    
    The change fixes potential oops while accessing iomem on invalid
    address, if devm_ioremap_resource() fails due to some reason.
    
    The devm_ioremap_resource() function returns ERR_PTR() and never
    returns NULL, which makes useless a following check for NULL.
    
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Fixes: 5a4eea2658c93 ("crypto: ux500 - Use devm_xxx() managed function")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90933f3fb612574e326f9872c5bd2121f8e2da39
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Sun Mar 6 03:21:52 2016 +0200

    crypto: atmel - fix checks of error code returned by devm_ioremap_resource()
    
    commit 9b52d55f4f0e2bb9a34abbcf99e05e17f1b3b281 upstream.
    
    The change fixes potential oops while accessing iomem on invalid
    address, if devm_ioremap_resource() fails due to some reason.
    
    The devm_ioremap_resource() function returns ERR_PTR() and never
    returns NULL, which makes useless a following check for NULL.
    
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Fixes: b0e8b3417a62 ("crypto: atmel - use devm_xxx() managed function")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f69c1b51f6da629e6f03b336ffec8c31b56e6f8a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Sat Jan 30 17:38:28 2016 +0300

    crypto: keywrap - memzero the correct memory
    
    commit 2b8b28fd232233c22fb61009dd8b0587390d2875 upstream.
    
    We're clearing the wrong memory.  The memory corruption is likely
    harmless because we weren't going to use that stack memory again but not
    zeroing is a potential information leak.
    
    Fixes: e28facde3c39 ('crypto: keywrap - add key wrapping block chaining mode')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cdc91f539d77f4be720330f577b708a56cc9391
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Thu Feb 25 16:48:13 2016 -0600

    crypto: ccp - memset request context to zero during import
    
    commit ce0ae266feaf35930394bd770c69778e4ef03ba9 upstream.
    
    Since a crypto_ahash_import() can be called against a request context
    that has not had a crypto_ahash_init() performed, the request context
    needs to be cleared to insure there is no random data present. If not,
    the random data can result in a kernel oops during crypto_ahash_update().
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc78d091bd92300de98b1b372da7d5ee9dcd8e63
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Tue Feb 2 11:38:21 2016 -0600

    crypto: ccp - Don't assume export/import areas are aligned
    
    commit b31dde2a5cb1bf764282abf934266b7193c2bc7c upstream.
    
    Use a local variable for the exported and imported state so that
    alignment is not an issue. On export, set a local variable from the
    request context and then memcpy the contents of the local variable to
    the export memory area. On import, memcpy the import memory area into
    a local variable and then use the local variable to set the request
    context.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c5156ad2da4493e6402bf7335d044445dca8c00
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Fri Jan 29 12:45:14 2016 -0600

    crypto: ccp - Limit the amount of information exported
    
    commit d1662165ae612ec8b5f94a6b07e65ea58b6dce34 upstream.
    
    Since the exported information can be exposed to user-space, instead of
    exporting the entire request context only export the minimum information
    needed.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 120e2febfc11ea91e34bec1c92fe5d6475c89508
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Tue Jan 12 11:17:38 2016 -0600

    crypto: ccp - Add hash state import and export support
    
    commit 952bce9792e6bf36fda09c2e5718abb5d9327369 upstream.
    
    Commit 8996eafdcbad ("crypto: ahash - ensure statesize is non-zero")
    added a check to prevent ahash algorithms from successfully registering
    if the import and export functions were not implemented. This prevents
    an oops in the hash_accept function of algif_hash. This commit causes
    the ccp-crypto module SHA support and AES CMAC support from successfully
    registering and causing the ccp-crypto module load to fail because the
    ahash import and export functions are not implemented.
    
    Update the CCP Crypto API support to provide import and export support
    for ahash algorithms.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28dee875257cf0985de5ddea4053d968fe365b44
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Fri Mar 4 01:32:19 2016 +0300

    Bluetooth: btusb: Add a new AR3012 ID 13d3:3472
    
    commit 75c6aca4765dbe3d0c1507ab5052f2e373dc2331 upstream.
    
    T: Bus=01 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=13d3 ProdID=3472 Rev=00.01
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    BugLink: https://bugs.launchpad.net/bugs/1552925
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36a7f23fc74cf3f3947ea837310b1140e9592f6d
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Sun Feb 28 11:04:06 2016 +0300

    Bluetooth: btusb: Add a new AR3012 ID 04ca:3014
    
    commit 81d90442eac779938217c3444b240aa51fd3db47 upstream.
    
    T: Bus=01 Lev=01 Prnt=01 Port=04 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=04ca ProdID=3014 Rev=00.02
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    BugLink: https://bugs.launchpad.net/bugs/1546694
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb243c3d81a5d8b5a275c4e118bea481df5d0510
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Wed Feb 10 15:33:17 2016 +0300

    Bluetooth: btusb: Add new AR3012 ID 13d3:3395
    
    commit 609574eb46335cfac1421a07c0505627cbbab1f0 upstream.
    
    T: Bus=03 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=13d3 ProdID=3395 Rev=00.01
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    BugLink: https://bugs.launchpad.net/bugs/1542564
    
    Reported-and-tested-by: Christopher Simerly <kilikopela29@gmail.com>
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7f03eeaaf7cdb9528c9710d648182af5a4db493
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Thu Mar 31 12:05:43 2016 -0400

    ALSA: usb-audio: Fix double-free in error paths after snd_usb_add_audio_stream() call
    
    commit 836b34a935abc91e13e63053d0a83b24dfb5ea78 upstream.
    
    create_fixed_stream_quirk(), snd_usb_parse_audio_interface() and
    create_uaxx_quirk() functions allocate the audioformat object by themselves
    and free it upon error before returning. However, once the object is linked
    to a stream, it's freed again in snd_usb_audio_pcm_free(), thus it'll be
    double-freed, eventually resulting in a memory corruption.
    
    This patch fixes these failures in the error paths by unlinking the audioformat
    object before freeing it.
    
    Based on a patch by Takashi Iwai <tiwai@suse.de>
    
    [Note for stable backports:
     this patch requires the commit 902eb7fd1e4a ('ALSA: usb-audio: Minor
     code cleanup in create_fixed_stream_quirk()')]
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1283358
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d073cfdf7f685628485d9692623c668b173bb60
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 15 12:14:49 2016 +0100

    ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk()
    
    commit 902eb7fd1e4af3ac69b9b30f8373f118c92b9729 upstream.
    
    Just a minor code cleanup: unify the error paths.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94bfaf24e6ba9a789fa0aa50fb4b7d228f8d3cff
Author: Victor Clément <victor.clement@openmailbox.org>
Date:   Sat Mar 19 13:17:42 2016 +0100

    ALSA: usb-audio: add Microsoft HD-5001 to quirks
    
    commit 0ef21100ae912f76ed89f76ecd894f4ffb3689c1 upstream.
    
    The Microsoft HD-5001 webcam microphone does not support sample rate
    reading as the HD-5000 one.
    This results in dmesg errors and sound hanging with pulseaudio.
    
    Signed-off-by: Victor Clément <victor.clement@openmailbox.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9f026d3903957ffe515ab47ea5df421dafc47cb
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 15 15:20:58 2016 +0100

    ALSA: usb-audio: Add sanity checks for endpoint accesses
    
    commit 447d6275f0c21f6cc97a88b3a0c601436a4cdf2a upstream.
    
    Add some sanity check codes before actually accessing the endpoint via
    get_endpoint() in order to avoid the invalid access through a
    malformed USB descriptor.  Mostly just checking bNumEndpoints, but in
    one place (snd_microii_spdif_default_get()), the validity of iface and
    altsetting index is checked as well.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=971125
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57f6ad5f1580a5a06c573fb15ed6dcf701e037f6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 15 12:09:10 2016 +0100

    ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk()
    
    commit 0f886ca12765d20124bd06291c82951fd49a33be upstream.
    
    create_fixed_stream_quirk() may cause a NULL-pointer dereference by
    accessing the non-existing endpoint when a USB device with a malformed
    USB descriptor is used.
    
    This patch avoids it simply by adding a sanity check of bNumEndpoints
    before the accesses.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=971125
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbd40d7beef0b17624bc1f838f4d44dfa4b0326b
Author: Josh Boyer <jwboyer@fedoraproject.org>
Date:   Mon Mar 14 09:33:40 2016 -0700

    Input: powermate - fix oops with malicious USB descriptors
    
    commit 9c6ba456711687b794dcf285856fc14e2c76074f upstream.
    
    The powermate driver expects at least one valid USB endpoint in its
    probe function.  If given malicious descriptors that specify 0 for
    the number of endpoints, it will crash.  Validate the number of
    endpoints on the interface before using them.
    
    The full report for this issue can be found here:
    http://seclists.org/bugtraq/2016/Mar/85
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cede226daa83e26c4ef21773a75f535927b935d
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 22 08:53:55 2016 -0200

    pwc: Add USB id for Philips Spc880nc webcam
    
    commit 7445e45d19a09e5269dc85f17f9635be29d2f76c upstream.
    
    SPC 880NC PC camera discussions:
    	http://www.pclinuxos.com/forum/index.php/topic,135688.0.html
    
    Reported-by: Kikim <klucznik0@op.pl>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49102971470cc282f50f674b4aa5c4adabeb281d
Author: Bjørn Mork <bjorn@mork.no>
Date:   Thu Apr 7 12:09:17 2016 +0200

    USB: option: add "D-Link DWM-221 B1" device id
    
    commit d48d5691ebf88a15d95ba96486917ffc79256536 upstream.
    
    Thomas reports:
    "Windows:
    
    00 diagnostics
    01 modem
    02 at-port
    03 nmea
    04 nic
    
    Linux:
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2001 ProdID=7e19 Rev=02.32
    S:  Manufacturer=Mobile Connect
    S:  Product=Mobile Connect
    S:  SerialNumber=0123456789ABCDEF
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage"
    
    Reported-by: Thomas Schäfer <tschaefer@t-online.de>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3e0983cb9fc0b1e876fd51f186f8fa887089261
Author: Josh Boyer <jwboyer@fedoraproject.org>
Date:   Thu Mar 10 09:48:52 2016 -0500

    USB: serial: ftdi_sio: Add support for ICP DAS I-756xU devices
    
    commit ea6db90e750328068837bed34cb1302b7a177339 upstream.
    
    A Fedora user reports that the ftdi_sio driver works properly for the
    ICP DAS I-7561U device.  Further, the user manual for these devices
    instructs users to load the driver and add the ids using the sysfs
    interface.
    
    Add support for these in the driver directly so that the devices work
    out of the box instead of needing manual configuration.
    
    Reported-by: <thesource@mail.ru>
    Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df3dddcc643832fc4fd133b8956be64b37841b67
Author: Martyn Welch <martyn.welch@collabora.co.uk>
Date:   Tue Mar 29 17:47:29 2016 +0100

    USB: serial: cp210x: Adding GE Healthcare Device ID
    
    commit cddc9434e3dcc37a85c4412fb8e277d3a582e456 upstream.
    
    The CP2105 is used in the GE Healthcare Remote Alarm Box, with the
    Manufacturer ID of 0x1901 and Product ID of 0x0194.
    
    Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca76906a7753052b00e491ba017393f9071b0406
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Mar 31 12:04:25 2016 -0400

    USB: cypress_m8: add endpoint sanity check
    
    commit c55aee1bf0e6b6feec8b2927b43f7a09a6d5f754 upstream.
    
    An attack using missing endpoints exists.
    
    CVE-2016-3137
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f6ad5b0d28c84030693fe21b308c0b711fa66f6
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Mar 31 12:04:26 2016 -0400

    USB: digi_acceleport: do sanity checking for the number of ports
    
    commit 5a07975ad0a36708c6b0a5b9fea1ff811d0b0c1f upstream.
    
    The driver can be crashed with devices that expose crafted descriptors
    with too few endpoints.
    
    See: http://seclists.org/bugtraq/2016/Mar/61
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    [johan: fix OOB endpoint check and add error messages ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9deac9454b7a5643a09829f4731276cea6697b72
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Mar 31 12:04:24 2016 -0400

    USB: mct_u232: add sanity checking in probe
    
    commit 4e9a0b05257f29cf4b75f3209243ed71614d062e upstream.
    
    An attack using the lack of sanity checking in probe is known. This
    patch checks for the existence of a second port.
    
    CVE-2016-3136
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    [johan: add error message ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6c6426252e2653407811f46c883661955b9f5fa
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Mar 16 13:26:17 2016 +0100

    USB: usb_driver_claim_interface: add sanity checking
    
    commit 0b818e3956fc1ad976bee791eadcbb3b5fec5bfd upstream.
    
    Attacks that trick drivers into passing a NULL pointer
    to usb_driver_claim_interface() using forged descriptors are
    known. This thwarts them by sanity checking.
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 850631bedd3cb7f79cb32a456c9ad3a5f6e1d1f3
Author: Josh Boyer <jwboyer@fedoraproject.org>
Date:   Mon Mar 14 10:42:38 2016 -0400

    USB: iowarrior: fix oops with malicious USB descriptors
    
    commit 4ec0ef3a82125efc36173062a50624550a900ae0 upstream.
    
    The iowarrior driver expects at least one valid endpoint.  If given
    malicious descriptors that specify 0 for the number of endpoints,
    it will crash in the probe function.  Ensure there is at least
    one endpoint on the interface before using it.
    
    The full report of this issue can be found here:
    http://seclists.org/bugtraq/2016/Mar/87
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ea680abf7640c777396909102bc22915107cb5b
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Mar 15 10:14:04 2016 +0100

    USB: cdc-acm: more sanity checking
    
    commit 8835ba4a39cf53f705417b3b3a94eb067673f2c9 upstream.
    
    An attack has become available which pretends to be a quirky
    device circumventing normal sanity checks and crashes the kernel
    by an insufficient number of interfaces. This patch adds a check
    to the code path for quirky devices.
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a85722c650265714c592d7ef99d277106dbb17bb
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 7 20:11:52 2016 +0100

    USB: uas: Reduce can_queue to MAX_CMNDS
    
    commit 55ff8cfbc4e12a7d2187df523938cc671fbebdd1 upstream.
    
    The uas driver can never queue more then MAX_CMNDS (- 1) tags and tags
    are shared between luns, so there is no need to claim that we can_queue
    some random large number.
    
    Not claiming that we can_queue 65536 commands, fixes the uas driver
    failing to initialize while allocating the tag map with a "Page allocation
    failure (order 7)" error on systems which have been running for a while
    and thus have fragmented memory.
    
    Reported-and-tested-by: Yves-Alexis Perez <corsac@corsac.net>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa563cf3bc7ef570f449501ff7ab12f3b7080ff0
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Feb 17 11:52:43 2016 +0100

    usb: hub: fix a typo in hub_port_init() leading to wrong logic
    
    commit 0d5ce778c43bf888328231bcdce05d5c860655aa upstream.
    
    A typo of j for i led to a logic bug. To rule out future
    confusion, the variable names are made meaningful.
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 951822beba268f76af9463c69095284df20311f6
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Feb 10 11:33:18 2016 +0100

    usb: retry reset if a device times out
    
    commit 264904ccc33c604d4b3141bbd33808152dfac45b upstream.
    
    Some devices I got show an inability to operate right after
    power on if they are already connected. They are beyond recovery
    if the descriptors are requested multiple times. So in case of
    a timeout we rather bail early and reset again. But it must be
    done only on the first loop lest we get into a reset/time out
    spiral that can be overcome with a retry.
    
    This patch is a rework of a patch that fell through the cracks.
    http://www.spinics.net/lists/linux-usb/msg103263.html
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8907d8a6fd3f21992283efd67002aea719396f2b
Author: Bryn M. Reeves <bmr@redhat.com>
Date:   Mon Mar 14 17:04:34 2016 -0400

    dm: fix rq_end_stats() NULL pointer in dm_requeue_original_request()
    
    commit 98dbc9c6c61698792e3a66f32f3bf066201d42d7 upstream.
    
    An "old" (.request_fn) DM 'struct request' stores a pointer to the
    associated 'struct dm_rq_target_io' in rq->special.
    
    dm_requeue_original_request(), previously named
    dm_requeue_unmapped_original_request(), called dm_unprep_request() to
    reset rq->special to NULL.  But rq_end_stats() would go on to hit a NULL
    pointer deference because its call to tio_from_request() returned NULL.
    
    Fix this by calling rq_end_stats() _before_ dm_unprep_request()
    
    Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Fixes: e262f34741 ("dm stats: add support for request-based DM devices")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f47aea487df2dc281c7f64ff7430aff3b260af0
Author: Joe Thornber <ejt@redhat.com>
Date:   Thu Mar 10 16:20:58 2016 +0000

    dm cache: make sure every metadata function checks fail_io
    
    commit d14fcf3dd79c0b8a8d0ba469c44a6b04f3a1403b upstream.
    
    Otherwise operations may be attempted that will only ever go on to crash
    (since the metadata device is either missing or unreliable if 'fail_io'
    is set).
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 291e2b3900da45dcc9c58e264f960fcb822bd07a
Author: Joe Thornber <ejt@redhat.com>
Date:   Tue Mar 1 10:58:44 2016 +0000

    dm thin metadata: don't issue prefetches if a transaction abort has failed
    
    commit 2eae9e4489b4cf83213fa3bd508b5afca3f01780 upstream.
    
    If a transaction abort has failed then we can no longer use the metadata
    device.  Typically this happens if the superblock is unreadable.
    
    This fix addresses a crash seen during metadata device failure testing.
    
    Fixes: 8a01a6af75 ("dm thin: prefetch missing metadata pages")
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5504a47088034573d0839120751b1aec46204aab
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Fri Feb 5 08:49:01 2016 -0500

    dm: fix excessive dm-mq context switching
    
    commit 6acfe68bac7e6f16dc312157b1fa6e2368985013 upstream.
    
    Request-based DM's blk-mq support (dm-mq) was reported to be 50% slower
    than if an underlying null_blk device were used directly.  One of the
    reasons for this drop in performance is that blk_insert_clone_request()
    was calling blk_mq_insert_request() with @async=true.  This forced the
    use of kblockd_schedule_delayed_work_on() to run the blk-mq hw queues
    which ushered in ping-ponging between process context (fio in this case)
    and kblockd's kworker to submit the cloned request.  The ftrace
    function_graph tracer showed:
    
      kworker-2013  =>   fio-12190
      fio-12190    =>  kworker-2013
      ...
      kworker-2013  =>   fio-12190
      fio-12190    =>  kworker-2013
      ...
    
    Fixing blk_insert_clone_request()'s blk_mq_insert_request() call to
    _not_ use kblockd to submit the cloned requests isn't enough to
    eliminate the observed context switches.
    
    In addition to this dm-mq specific blk-core fix, there are 2 DM core
    fixes to dm-mq that (when paired with the blk-core fix) completely
    eliminate the observed context switching:
    
    1)  don't blk_mq_run_hw_queues in blk-mq request completion
    
        Motivated by desire to reduce overhead of dm-mq, punting to kblockd
        just increases context switches.
    
        In my testing against a really fast null_blk device there was no benefit
        to running blk_mq_run_hw_queues() on completion (and no other blk-mq
        driver does this).  So hopefully this change doesn't induce the need for
        yet another revert like commit 621739b00e16ca2d !
    
    2)  use blk_mq_complete_request() in dm_complete_request()
    
        blk_complete_request() doesn't offer the traditional q->mq_ops vs
        .request_fn branching pattern that other historic block interfaces
        do (e.g. blk_get_request).  Using blk_mq_complete_request() for
        blk-mq requests is important for performance.  It should be noted
        that, like blk_complete_request(), blk_mq_complete_request() doesn't
        natively handle partial completions -- but the request-based
        DM-multipath target does provide the required partial completion
        support by dm.c:end_clone_bio() triggering requeueing of the request
        via dm-mpath.c:multipath_end_io()'s return of DM_ENDIO_REQUEUE.
    
    dm-mq fix #2 is _much_ more important than #1 for eliminating the
    context switches.
    Before: cpu          : usr=15.10%, sys=59.39%, ctx=7905181, majf=0, minf=475
    After:  cpu          : usr=20.60%, sys=79.35%, ctx=2008, majf=0, minf=472
    
    With these changes multithreaded async read IOPs improved from ~950K
    to ~1350K for this dm-mq stacked on null_blk test-case.  The raw read
    IOPs of the underlying null_blk device for the same workload is ~1950K.
    
    Fixes: 7fb4898e0 ("block: add blk-mq support to blk_insert_cloned_request()")
    Fixes: bfebd1cdb ("dm: add full blk-mq support to request-based DM")
    Reported-by: Sagi Grimberg <sagig@dev.mellanox.co.il>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Acked-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15c3af026b6e66ca2d9566d862af7e2fd7943a40
Author: DingXiang <dingxiang@huawei.com>
Date:   Tue Feb 2 12:29:18 2016 +0800

    dm snapshot: disallow the COW and origin devices from being identical
    
    commit 4df2bf466a9c9c92f40d27c4aa9120f4e8227bfc upstream.
    
    Otherwise loading a "snapshot" table using the same device for the
    origin and COW devices, e.g.:
    
    echo "0 20971520 snapshot 253:3 253:3 P 8" | dmsetup create snap
    
    will trigger:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000098
    [ 1958.979934] IP: [<ffffffffa040efba>] dm_exception_store_set_chunk_size+0x7a/0x110 [dm_snapshot]
    [ 1958.989655] PGD 0
    [ 1958.991903] Oops: 0000 [#1] SMP
    ...
    [ 1959.059647] CPU: 9 PID: 3556 Comm: dmsetup Tainted: G          IO    4.5.0-rc5.snitm+ #150
    ...
    [ 1959.083517] task: ffff8800b9660c80 ti: ffff88032a954000 task.ti: ffff88032a954000
    [ 1959.091865] RIP: 0010:[<ffffffffa040efba>]  [<ffffffffa040efba>] dm_exception_store_set_chunk_size+0x7a/0x110 [dm_snapshot]
    [ 1959.104295] RSP: 0018:ffff88032a957b30  EFLAGS: 00010246
    [ 1959.110219] RAX: 0000000000000000 RBX: 0000000000000008 RCX: 0000000000000001
    [ 1959.118180] RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff880329334a00
    [ 1959.126141] RBP: ffff88032a957b50 R08: 0000000000000000 R09: 0000000000000001
    [ 1959.134102] R10: 000000000000000a R11: f000000000000000 R12: ffff880330884d80
    [ 1959.142061] R13: 0000000000000008 R14: ffffc90001c13088 R15: ffff880330884d80
    [ 1959.150021] FS:  00007f8926ba3840(0000) GS:ffff880333440000(0000) knlGS:0000000000000000
    [ 1959.159047] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1959.165456] CR2: 0000000000000098 CR3: 000000032f48b000 CR4: 00000000000006e0
    [ 1959.173415] Stack:
    [ 1959.175656]  ffffc90001c13040 ffff880329334a00 ffff880330884ed0 ffff88032a957bdc
    [ 1959.183946]  ffff88032a957bb8 ffffffffa040f225 ffff880329334a30 ffff880300000000
    [ 1959.192233]  ffffffffa04133e0 ffff880329334b30 0000000830884d58 00000000569c58cf
    [ 1959.200521] Call Trace:
    [ 1959.203248]  [<ffffffffa040f225>] dm_exception_store_create+0x1d5/0x240 [dm_snapshot]
    [ 1959.211986]  [<ffffffffa040d310>] snapshot_ctr+0x140/0x630 [dm_snapshot]
    [ 1959.219469]  [<ffffffffa0005c44>] ? dm_split_args+0x64/0x150 [dm_mod]
    [ 1959.226656]  [<ffffffffa0005ea7>] dm_table_add_target+0x177/0x440 [dm_mod]
    [ 1959.234328]  [<ffffffffa0009203>] table_load+0x143/0x370 [dm_mod]
    [ 1959.241129]  [<ffffffffa00090c0>] ? retrieve_status+0x1b0/0x1b0 [dm_mod]
    [ 1959.248607]  [<ffffffffa0009e35>] ctl_ioctl+0x255/0x4d0 [dm_mod]
    [ 1959.255307]  [<ffffffff813304e2>] ? memzero_explicit+0x12/0x20
    [ 1959.261816]  [<ffffffffa000a0c3>] dm_ctl_ioctl+0x13/0x20 [dm_mod]
    [ 1959.268615]  [<ffffffff81215eb6>] do_vfs_ioctl+0xa6/0x5c0
    [ 1959.274637]  [<ffffffff81120d2f>] ? __audit_syscall_entry+0xaf/0x100
    [ 1959.281726]  [<ffffffff81003176>] ? do_audit_syscall_entry+0x66/0x70
    [ 1959.288814]  [<ffffffff81216449>] SyS_ioctl+0x79/0x90
    [ 1959.294450]  [<ffffffff8167e4ae>] entry_SYSCALL_64_fastpath+0x12/0x71
    ...
    [ 1959.323277] RIP  [<ffffffffa040efba>] dm_exception_store_set_chunk_size+0x7a/0x110 [dm_snapshot]
    [ 1959.333090]  RSP <ffff88032a957b30>
    [ 1959.336978] CR2: 0000000000000098
    [ 1959.344121] ---[ end trace b049991ccad1169e ]---
    
    Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1195899
    Signed-off-by: Ding Xiang <dingxiang@huawei.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83250e67a9d65a662c5fdec6075f3c2dee0e79a0
Author: Jerry Hoemann <jerry.hoemann@hpe.com>
Date:   Wed Jan 6 16:03:41 2016 -0700

    libnvdimm: Fix security issue with DSM IOCTL.
    
    commit 07accfa9d1a8bac8262f6d24a94a54d2d1f35149 upstream.
    
    Code attempts to prevent certain IOCTL DSM from being called
    when device is opened read only.  This security feature can
    be trivially overcome by changing the size portion of the
    ioctl_command which isn't used.
    
    Check only the _IOC_NR (i.e. the command).
    
    Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9d26f81ae9fa23988a5b503455f300bcef292fb
Author: Alan <gnomes@lxorguk.ukuu.org.uk>
Date:   Mon Feb 15 18:53:15 2016 +0000

    aic7xxx: Fix queue depth handling
    
    commit 5a51a7abca133860a6f4429655a9eda3c4afde32 upstream.
    
    We were setting the queue depth correctly, then setting it back to
    two. If you hit this as a bisection point then please send me an email
    as it would imply we've been hiding other bugs with this one.
    
    Signed-off-by: Alan Cox <alan@linux.intel.com>
    Reviewed-by: Hannes Reinicke <hare@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e760edfb7ba763e48b870025ab0b5edb4af85089
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Fri Mar 4 10:41:49 2016 +0100

    be2iscsi: set the boot_kset pointer to NULL in case of failure
    
    commit 84bd64993f916bcf86270c67686ecf4cea7b8933 upstream.
    
    In beiscsi_setup_boot_info(), the boot_kset pointer should be set to
    NULL in case of failure otherwise an invalid pointer dereference may
    occur later.
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1f327046b17e6d9fac9bc61e23bcb1897c2d9b3
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Mon Mar 7 11:59:44 2016 +0100

    scsi: storvsc: fix SRB_STATUS_ABORTED handling
    
    commit ff06c5ffbcb4ffa542fb80c897be977956fafecc upstream.
    
    Commit 3209f9d780d1 ("scsi: storvsc: Fix a bug in the handling of SRB
    status flags") filtered SRB_STATUS_AUTOSENSE_VALID out effectively making
    the (SRB_STATUS_ABORTED | SRB_STATUS_AUTOSENSE_VALID) case a dead code. The
    logic from this branch (e.g. storvsc_device_scan() call) is still required,
    fix the check.
    
    Fixes: 3209f9d780d1 ("scsi: storvsc: Fix a bug in the handling of SRB status flags")
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Acked-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67aa7e6dd927c17103b3c5acb7eb50efb2372dab
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Sat Mar 5 17:52:02 2016 -0500

    sd: Fix discard granularity when LBPRZ=1
    
    commit 6540a65da90c09590897310e31993b1f6e28485a upstream.
    
    Commit 397737223c59 ("sd: Make discard granularity match logical block
    size when LBPRZ=1") accidentally set the granularity to one byte instead
    of one logical block on devices that provide deterministic zeroes after
    UNMAP.
    
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reported-by: Mike Snitzer <snitzer@redhat.com>
    Reviewed-by: Ewan Milne <emilne@redhat.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Fixes: 397737223c59e89dca7305feb6528caef8fbef84
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e468298bd4f80e9353b2fe1273ad036a4abaf6e6
Author: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
Date:   Wed Feb 3 15:06:03 2016 -0800

    aacraid: Set correct msix count for EEH recovery
    
    commit ecc479e00db8eb110b200afe1effcb3df20ca7ae upstream.
    
    During EEH recovery number of online CPU's might change thereby changing
    the number of MSIx vectors. Since each fib is allocated to a vector,
    changes in the number of vectors causes fib to be sent thru invalid
    vectors.In addition the correct number of MSIx vectors is not updated in
    the INIT struct sent to the controller, when it is reinitialized.
    
    Fixed by reassigning vectors to fibs based on the updated number of MSIx
    vectors and updating the INIT structure before sending to controller.
    
    Fixes: MSI-X vector calculation for suspend/resume
    Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
    Reviewed-by: Shane Seymour <shane.seymour@hpe.com>
    Reviewed-by: Johannes Thumshirn <jthushirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3a3019dfc5411743273b5a53f2d95a845bec736
Author: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
Date:   Wed Feb 3 15:06:02 2016 -0800

    aacraid: Fix memory leak in aac_fib_map_free
    
    commit f88fa79a61726ce9434df9b4aede36961f709f17 upstream.
    
    aac_fib_map_free() calls pci_free_consistent() without checking that
    dev->hw_fib_va is not NULL and dev->max_fib_size is not zero.If they are
    indeed NULL/0, this will result in a hang as pci_free_consistent() will
    attempt to invalidate cache for the entire 64-bit address space
    (which would take a very long time).
    
    Fixed by adding a check to make sure that dev->hw_fib_va and
    dev->max_fib_size are not NULL and 0 respectively.
    
    Fixes: 9ad5204d6 - "[SCSI]aacraid: incorrect dma mapping mask during blinked recover or user initiated reset"
    Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1624297ccc24486aa9e264f04f59743e5563a6b2
Author: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
Date:   Wed Feb 3 15:06:00 2016 -0800

    aacraid: Fix RRQ overload
    
    commit 3f4ce057d51a9c0ed9b01ba693df685d230ffcae upstream.
    
    The driver utilizes an array of atomic variables to keep track of IO
    submissions to each vector. To submit an IO multiple threads iterate
    through the array to find a vector which has empty slots to send an
    IO. The reading and updating of the variable is not atomic, causing race
    conditions when a thread uses a full vector to submit an IO.
    
    Fixed by mapping each FIB to a vector, the submission path then uses
    said vector to submit IO thereby removing the possibly of a race
    condition.The vector assignment is started from 1 since vector 0 is
    reserved for the use of AIF management FIBS.If the number of MSIx
    vectors is 1 (MSI or INTx mode) then all the fibs are allocated to
    vector 0.
    
    Fixes: 495c0217 "aacraid: MSI-x support"
    Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5967a77df538ea60fb83f3957b9d7cfc4646ae2
Author: Douglas Gilbert <dgilbert@interlog.com>
Date:   Thu Mar 3 00:31:29 2016 -0500

    sg: fix dxferp in from_to case
    
    commit 5ecee0a3ee8d74b6950cb41e8989b0c2174568d4 upstream.
    
    One of the strange things that the original sg driver did was let the
    user provide both a data-out buffer (it followed the sg_header+cdb)
    _and_ specify a reply length greater than zero. What happened was that
    the user data-out buffer was copied into some kernel buffers and then
    the mid level was told a read type operation would take place with the
    data from the device overwriting the same kernel buffers. The user would
    then read those kernel buffers back into the user space.
    
    From what I can tell, the above action was broken by commit fad7f01e61bf
    ("sg: set dxferp to NULL for READ with the older SG interface") in 2008
    and syzkaller found that out recently.
    
    Make sure that a user space pointer is passed through when data follows
    the sg_header structure and command.  Fix the abnormal case when a
    non-zero reply_len is also given.
    
    Fixes: fad7f01e61bf737fe8a3740d803f000db57ecac6
    Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
    Reviewed-by: Ewan Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e8a1a17bcc016c59044b06776fc1ddbcc897bb3
Author: Nadav Amit <namit@vmware.com>
Date:   Fri Apr 1 14:31:23 2016 -0700

    x86/mm: TLB_REMOTE_SEND_IPI should count pages
    
    commit 18c98243ddf05a1827ad2c359c5ac051101e7ff7 upstream.
    
    TLB_REMOTE_SEND_IPI was recently introduced, but it counts bytes instead
    of pages.  In addition, it does not report correctly the case in which
    flush_tlb_page flushes a page.  Fix it to be consistent with other TLB
    counters.
    
    Fixes: 5b74283ab251b9d ("x86, mm: trace when an IPI is about to be sent")
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f71e846236048ca5165b4ff5bc6f1745cabb6bd6
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Mar 16 14:14:22 2016 -0700

    x86/iopl: Fix iopl capability check on Xen PV
    
    commit c29016cf41fe9fa994a5ecca607cf5f1cd98801e upstream.
    
    iopl(3) is supposed to work if iopl is already 3, even if
    unprivileged.  This didn't work right on Xen PV.  Fix it.
    
    Reviewewd-by: Jan Beulich <JBeulich@suse.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jan Beulich <JBeulich@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/8ce12013e6e4c0a44a97e316be4a6faff31bd5ea.1458162709.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f63ab5873ed78838afa4b2f8bfd9d18f806cf40
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Mar 16 14:14:21 2016 -0700

    x86/iopl/64: Properly context-switch IOPL on Xen PV
    
    commit b7a584598aea7ca73140cb87b40319944dd3393f upstream.
    
    On Xen PV, regs->flags doesn't reliably reflect IOPL and the
    exit-to-userspace code doesn't change IOPL.  We need to context
    switch it manually.
    
    I'm doing this without going through paravirt because this is
    specific to Xen PV.  After the dust settles, we can merge this with
    the 32-bit code, tidy up the iopl syscall implementation, and remove
    the set_iopl pvop entirely.
    
    Fixes XSA-171.
    
    Reviewewd-by: Jan Beulich <JBeulich@suse.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jan Beulich <JBeulich@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/693c3bd7aeb4d3c27c92c622b7d0f554a458173c.1458162709.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1eeb3225856a914d199f92d2d492142783eb5740
Author: Dave Jones <davej@codemonkey.org.uk>
Date:   Mon Mar 14 21:20:54 2016 -0400

    x86/apic: Fix suspicious RCU usage in smp_trace_call_function_interrupt()
    
    commit 7834c10313fb823e538f2772be78edcdeed2e6e3 upstream.
    
    Since 4.4, I've been able to trigger this occasionally:
    
    ===============================
    [ INFO: suspicious RCU usage. ]
    4.5.0-rc7-think+ #3 Not tainted
    Cc: Andi Kleen <ak@linux.intel.com>
    Link: http://lkml.kernel.org/r/20160315012054.GA17765@codemonkey.org.uk
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    -------------------------------
    ./arch/x86/include/asm/msr-trace.h:47 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    RCU used illegally from idle CPU!
    rcu_scheduler_active = 1, debug_locks = 1
    RCU used illegally from extended quiescent state!
    no locks held by swapper/3/0.
    
    stack backtrace:
    CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.5.0-rc7-think+ #3
     ffffffff92f821e0 1f3e5c340597d7fc ffff880468e07f10 ffffffff92560c2a
     ffff880462145280 0000000000000001 ffff880468e07f40 ffffffff921376a6
     ffffffff93665ea0 0000cc7c876d28da 0000000000000005 ffffffff9383dd60
    Call Trace:
     <IRQ>  [<ffffffff92560c2a>] dump_stack+0x67/0x9d
     [<ffffffff921376a6>] lockdep_rcu_suspicious+0xe6/0x100
     [<ffffffff925ae7a7>] do_trace_write_msr+0x127/0x1a0
     [<ffffffff92061c83>] native_apic_msr_eoi_write+0x23/0x30
     [<ffffffff92054408>] smp_trace_call_function_interrupt+0x38/0x360
     [<ffffffff92d1ca60>] trace_call_function_interrupt+0x90/0xa0
     <EOI>  [<ffffffff92ac5124>] ? cpuidle_enter_state+0x1b4/0x520
    
    Move the entering_irq() call before ack_APIC_irq(), because entering_irq()
    tells the RCU susbstems to end the extended quiescent state, so that the
    following trace call in ack_APIC_irq() works correctly.
    
    Suggested-by: Andi Kleen <ak@linux.intel.com>
    Fixes: 4787c368a9bc "x86/tracing: Add irq_enter/exit() in smp_trace_reschedule_interrupt()"
    Signed-off-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

commit dc1441612fdb4ca221e3a4aa32e39e74d020e386
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Mar 14 09:40:46 2016 +0100

    x86/irq: Cure live lock in fixup_irqs()
    
    commit 551adc60573cb68e3d55cacca9ba1b7437313df7 upstream.
    
    Harry reported, that he's able to trigger a system freeze with cpu hot
    unplug. The freeze turned out to be a live lock caused by recent changes in
    irq_force_complete_move().
    
    When fixup_irqs() and from there irq_force_complete_move() is called on the
    dying cpu, then all other cpus are in stop machine an wait for the dying cpu
    to complete the teardown. If there is a move of an interrupt pending then
    irq_force_complete_move() sends the cleanup IPI to the cpus in the old_domain
    mask and waits for them to clear the mask. That's obviously impossible as
    those cpus are firmly stuck in stop machine with interrupts disabled.
    
    I should have known that, but I completely overlooked it being concentrated on
    the locking issues around the vectors. And the existance of the call to
    __irq_complete_move() in the code, which actually sends the cleanup IPI made
    it reasonable to wait for that cleanup to complete. That call was bogus even
    before the recent changes as it was just a pointless distraction.
    
    We have to look at two cases:
    
    1) The move_in_progress flag of the interrupt is set
    
       This means the ioapic has been updated with the new vector, but it has not
       fired yet. In theory there is a race:
    
       set_ioapic(new_vector) <-- Interrupt is raised before update is effective,
       			      i.e. it's raised on the old vector.
    
       So if the target cpu cannot handle that interrupt before the old vector is
       cleaned up, we get a spurious interrupt and in the worst case the ioapic
       irq line becomes stale, but my experiments so far have only resulted in
       spurious interrupts.
    
       But in case of cpu hotplug this should be a non issue because if the
       affinity update happens right before all cpus rendevouz in stop machine,
       there is no way that the interrupt can be blocked on the target cpu because
       all cpus loops first with interrupts enabled in stop machine, so the old
       vector is not yet cleaned up when the interrupt fires.
    
       So the only way to run into this issue is if the delivery of the interrupt
       on the apic/system bus would be delayed beyond the point where the target
       cpu disables interrupts in stop machine. I doubt that it can happen, but at
       least there is a theroretical chance. Virtualization might be able to
       expose this, but AFAICT the IOAPIC emulation is not as stupid as the real
       hardware.
    
       I've spent quite some time over the weekend to enforce that situation,
       though I was not able to trigger the delayed case.
    
    2) The move_in_progress flag is not set and the old_domain cpu mask is not
       empty.
    
       That means, that an interrupt was delivered after the change and the
       cleanup IPI has been sent to the cpus in old_domain, but not all CPUs have
       responded to it yet.
    
    In both cases we can assume that the next interrupt will arrive on the new
    vector, so we can cleanup the old vectors on the cpus in the old_domain cpu
    mask.
    
    Fixes: 98229aa36caa "x86/irq: Plug vector cleanup race"
    Reported-by: Harry Junior <harryjr@outlook.fr>
    Tested-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Joe Lawrence <joe.lawrence@stratus.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1603140931430.3657@nanos
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2221620b0bce6df54e19eaf6065c368075e499e6
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Mon Mar 21 11:12:55 2016 +0000

    PCI: ACPI: IA64: fix IO port generic range check
    
    commit 4a2e7aab4ffce1e0e79b303dc2f9a03aa9f3a332 upstream.
    
    The [0 - 64k] ACPI PCI IO port resource boundary check in:
    
    acpi_dev_ioresource_flags()
    
    is currently applied blindly in the ACPI resource parsing to all
    architectures, but only x86 suffers from that IO space limitation.
    
    On arches (ie IA64 and ARM64) where IO space is memory mapped,
    the PCI root bridges IO resource windows are firstly initialized from
    the _CRS (in acpi_decode_space()) and contain the CPU physical address
    at which a root bridge decodes IO space in the CPU physical address
    space with the offset value representing the offset required to translate
    the PCI bus address into the CPU physical address.
    
    The IO resource windows are then parsed and updated in arch code
    before creating and enumerating PCI buses (eg IA64 add_io_space())
    to map in an arch specific way the obtained CPU physical address range
    to a slice of virtual address space reserved to map PCI IO space,
    ending up with PCI bridges resource windows containing IO
    resources like the following on a working IA64 configuration:
    
    PCI host bridge to bus 0000:00
    pci_bus 0000:00: root bus resource [io  0x1000000-0x100ffff window] (bus
    address [0x0000-0xffff])
    pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000fffff window]
    pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff window]
    pci_bus 0000:00: root bus resource [mem 0x80004000000-0x800ffffffff window]
    pci_bus 0000:00: root bus resource [bus 00]
    
    This implies that the [0 - 64K] check in acpi_dev_ioresource_flags()
    leaves platforms with memory mapped IO space (ie IA64) broken (ie kernel
    can't claim IO resources since the host bridge IO resource is disabled
    and discarded by ACPI core code, see log on IA64 with missing root bridge
    IO resource, silently filtered by current [0 - 64k] check in
    acpi_dev_ioresource_flags()):
    
    PCI host bridge to bus 0000:00
    pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000fffff window]
    pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff window]
    pci_bus 0000:00: root bus resource [mem 0x80004000000-0x800ffffffff window]
    pci_bus 0000:00: root bus resource [bus 00]
    
    [...]
    
    pci 0000:00:03.0: [1002:515e] type 00 class 0x030000
    pci 0000:00:03.0: reg 0x10: [mem 0x80000000-0x87ffffff pref]
    pci 0000:00:03.0: reg 0x14: [io  0x1000-0x10ff]
    pci 0000:00:03.0: reg 0x18: [mem 0x88020000-0x8802ffff]
    pci 0000:00:03.0: reg 0x30: [mem 0x88000000-0x8801ffff pref]
    pci 0000:00:03.0: supports D1 D2
    pci 0000:00:03.0: can't claim BAR 1 [io  0x1000-0x10ff]: no compatible
    bridge window
    
    For this reason, the IO port resources boundaries check in generic ACPI
    parsing code should be guarded with a CONFIG_X86 guard so that more arches
    (ie ARM64) can benefit from the generic ACPI resources parsing interface
    without incurring in unexpected resource filtering, fixing at the same
    time current breakage on IA64.
    
    This patch factors out IO ports boundary [0 - 64k] check in generic ACPI
    code and makes the IO space check X86 specific to make sure that IO
    space resources are usable on other arches too.
    
    Fixes: 3772aea7d6f3 (ia64/PCI/ACPI: Use common ACPI resource parsing interface for host bridge)
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cbac3c4f74d92bf04645a613e061ab4f9baa866
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Thu Feb 25 14:35:57 2016 -0600

    PCI: Disable IO/MEM decoding for devices with non-compliant BARs
    
    commit b84106b4e2290c081cdab521fa832596cdfea246 upstream.
    
    The PCI config header (first 64 bytes of each device's config space) is
    defined by the PCI spec so generic software can identify the device and
    manage its usage of I/O, memory, and IRQ resources.
    
    Some non-spec-compliant devices put registers other than BARs where the
    BARs should be.  When the PCI core sizes these "BARs", the reads and writes
    it does may have unwanted side effects, and the "BAR" may appear to
    describe non-sensical address space.
    
    Add a flag bit to mark non-compliant devices so we don't touch their BARs.
    Turn off IO/MEM decoding to prevent the devices from consuming address
    space, since we can't read the BARs to find out what that address space
    would be.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88c9954c5c898dfe2e581cba34417ab5abccdd0d
Author: Phil Elwell <phil@raspberrypi.org>
Date:   Mon Feb 29 17:30:08 2016 -0800

    pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing
    
    commit 2c7e3306d23864d49f686f22e56e180ff0fffb7f upstream.
    
    The DT bindings for pinctrl-bcm2835 allow both the function and pull
    to contain either one entry or one per pin. However, an error in the
    DT parsing can cause failures if the number of pulls differs from the
    number of functions.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Reviewed-by: Stephen Warren <swarren@wwwdotorg.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1948606af0861bd181cb85ed1797ef02c20bbec
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Mon Mar 14 15:47:23 2016 +0100

    s390/pci: enforce fmb page boundary rule
    
    commit 80c544ded25ac14d7cc3e555abb8ed2c2da99b84 upstream.
    
    The function measurement block must not cross a page boundary. Ensure
    that by raising the alignment requirement to the smallest power of 2
    larger than the size of the fmb.
    
    Fixes: d0b088531 ("s390/pci: performance statistics and debug infrastructure")
    Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c024dcd3df1a0180993d4ce94b87e8ec271c6c2e
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Thu Mar 10 10:32:21 2016 +0100

    s390/cpumf: add missing lpp magic initialization
    
    commit 8f100bb1ff27873dd71f636da670e503b9ade3c6 upstream.
    
    Add the missing lpp magic initialization for cpu 0. Without this all
    samples on cpu 0 do not have the most significant bit set in the
    program parameter field, which we use to distinguish between guest and
    host samples if the pid is also 0.
    
    We did initialize the lpp magic in the absolute zero lowcore but
    forgot that when switching to the allocated lowcore on cpu 0 only.
    
    Reported-by: Shu Juan Zhang <zhshuj@cn.ibm.com>
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Fixes: e22cf8ca6f75 ("s390/cpumf: rework program parameter setting to detect guest samples")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a4d9389206b787f620966dd0442ac0cd8df5525
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Thu Mar 10 09:52:55 2016 +0100

    s390: fix floating pointer register corruption (again)
    
    commit e370e4769463a65dcf8806fa26d2874e0542ac41 upstream.
    
    There is a tricky interaction between the machine check handler
    and the critical sections of load_fpu_regs and save_fpu_regs
    functions. If the machine check interrupts one of the two
    functions the critical section cleanup will complete the function
    before the machine check handler s390_do_machine_check is called.
    Trouble is that the machine check handler needs to validate the
    floating point registers *before* and not *after* the completion
    of load_fpu_regs/save_fpu_regs.
    
    The simplest solution is to rewind the PSW to the start of the
    load_fpu_regs/save_fpu_regs and retry the function after the
    return from the machine check handler.
    
    Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 608377369dcebfa0dc9506a4f17d008bc93bb5b9
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jan 20 12:54:51 2016 +0300

    EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr()
    
    commit 6f3508f61c814ee852c199988a62bd954c50dfc1 upstream.
    
    dct_sel_base_off is declared as a u64 but we're only using the lower 32
    bits because of a shift wrapping bug. This can possibly truncate the
    upper 16 bits of DctSelBaseOffset[47:26], causing us to misdecode the CS
    row.
    
    Fixes: c8e518d5673d ('amd64_edac: Sanitize f10_get_base_addr_offset')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20160120095451.GB19898@mwanda
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dff87fa52ddf26df67526d303d08226e7168560b
Author: Tony Luck <tony.luck@intel.com>
Date:   Wed Mar 9 16:40:48 2016 -0800

    EDAC/sb_edac: Fix computation of channel address
    
    commit eb1af3b71f9d83e45f2fd2fd649356e98e1c582c upstream.
    
    Large memory Haswell-EX systems with multiple DIMMs per channel were
    sometimes reporting the wrong DIMM.
    
    Found three problems:
    
     1) Debug printouts for socket and channel interleave were not interpreting
        the register fields correctly. The socket interleave field is a 2^X
        value (0=1, 1=2, 2=4, 3=8). The channel interleave is X+1 (0=1, 1=2,
        2=3. 3=4).
    
     2) Actual use of the socket interleave value didn't interpret as 2^X
    
     3) Conversion of address to channel address was complicated, and wrong.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Acked-by: Aristeu Rozanski <arozansk@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-edac@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10595c57f4682b096d6ac6dd2212ac889f08d9f4
Author: David Hildenbrand <dahi@linux.vnet.ibm.com>
Date:   Mon Feb 29 09:19:24 2016 +0100

    sched/preempt, sh: kmap_coherent relies on disabled preemption
    
    commit b15d53d009558d14c4f394a6d1fa2039c7f45c43 upstream.
    
    kmap_coherent needs disabled preemption to not schedule in the critical
    section, just like kmap_coherent on mips and kmap_atomic in general.
    
    Fixes: 8222dbe21e79 "sched/preempt, mm/fault: Decouple preemption from the page fault logic"
    Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
    Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af080e5802224176001a987c3ab77ba7490ef49e
Author: Chris Friesen <cbf123@mail.usask.ca>
Date:   Sat Mar 5 23:18:48 2016 -0600

    sched/cputime: Fix steal_account_process_tick() to always return jiffies
    
    commit f9c904b7613b8b4c85b10cd6b33ad41b2843fa9d upstream.
    
    The callers of steal_account_process_tick() expect it to return
    whether a jiffy should be considered stolen or not.
    
    Currently the return value of steal_account_process_tick() is in
    units of cputime, which vary between either jiffies or nsecs
    depending on CONFIG_VIRT_CPU_ACCOUNTING_GEN.
    
    If cputime has nsecs granularity and there is a tiny amount of
    stolen time (a few nsecs, say) then we will consider the entire
    tick stolen and will not account the tick on user/system/idle,
    causing /proc/stats to show invalid data.
    
    The fix is to change steal_account_process_tick() to accumulate
    the stolen time and only account it once it's worth a jiffy.
    
    (Thanks to Frederic Weisbecker for suggestions to fix a bug in my
    first version of the patch.)
    
    Signed-off-by: Chris Friesen <chris.friesen@windriver.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/56DBBDB8.40305@mail.usask.ca
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d75936f3f968b98243b9380b0c05d90b5292245d
Author: Zhang Rui <rui.zhang@intel.com>
Date:   Fri Mar 18 10:03:24 2016 +0800

    Thermal: Ignore invalid trip points
    
    commit 81ad4276b505e987dd8ebbdf63605f92cd172b52 upstream.
    
    In some cases, platform thermal driver may report invalid trip points,
    thermal core should not take any action for these trip points.
    
    This fixed a regression that bogus trip point starts to screw up thermal
    control on some Lenovo laptops, after
    commit bb431ba26c5cd0a17c941ca6c3a195a3a6d5d461
    Author: Zhang Rui <rui.zhang@intel.com>
    Date:   Fri Oct 30 16:31:47 2015 +0800
    
        Thermal: initialize thermal zone device correctly
    
        After thermal zone device registered, as we have not read any
        temperature before, thus tz->temperature should not be 0,
        which actually means 0C, and thermal trend is not available.
        In this case, we need specially handling for the first
        thermal_zone_device_update().
    
        Both thermal core framework and step_wise governor is
        enhanced to handle this. And since the step_wise governor
        is the only one that uses trends, so it's the only thermal
        governor that needs to be updated.
    
        Tested-by: Manuel Krause <manuelkrause@netscape.net>
        Tested-by: szegad <szegadlo@poczta.onet.pl>
        Tested-by: prash <prash.n.rao@gmail.com>
        Tested-by: amish <ammdispose-arch@yahoo.com>
        Tested-by: Matthias <morpheusxyz123@yahoo.de>
        Reviewed-by: Javi Merino <javi.merino@arm.com>
        Signed-off-by: Zhang Rui <rui.zhang@intel.com>
        Signed-off-by: Chen Yu <yu.c.chen@intel.com>
    
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1317190
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=114551
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64bf6d9705aa8724a17a137e76dc6f5b58309026
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Sat Feb 27 21:21:12 2016 +0100

    perf tools: Fix python extension build
    
    commit 67d5268908283c187e0a460048a423256c2fb288 upstream.
    
    The util/python-ext-sources file contains source files required to build
    the python extension relative to $(srctree)/tools/perf,
    
    Such a file path $(FILE).c is handed over to the python extension build
    system, which builds the final object in the
    $(PYTHON_EXTBUILD)/tmp/$(FILE).o path.
    
    After the build is done all files from $(PYTHON_EXTBUILD)lib/ are
    carried as the result binaries.
    
    Above system fails when we add source file relative to ../lib, which we
    do for:
    
      ../lib/bitmap.c
      ../lib/find_bit.c
      ../lib/hweight.c
      ../lib/rbtree.c
    
    All above objects will be built like:
    
      $(PYTHON_EXTBUILD)/tmp/../lib/bitmap.c
      $(PYTHON_EXTBUILD)/tmp/../lib/find_bit.c
      $(PYTHON_EXTBUILD)/tmp/../lib/hweight.c
      $(PYTHON_EXTBUILD)/tmp/../lib/rbtree.c
    
    which accidentally happens to be final library path:
    
      $(PYTHON_EXTBUILD)/lib/
    
    Changing setup.py to pass full paths of source files to Extension build
    class and thus keep all built objects under $(PYTHON_EXTBUILD)tmp
    directory.
    
    Reported-by: Jeff Bastian <jbastian@redhat.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Josh Boyer <jwboyer@fedoraproject.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/20160227201350.GB28494@krava.redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6be7771fe7242d7d4399545e0c9e2f6f3cd76725
Author: Wang Nan <wangnan0@huawei.com>
Date:   Fri Feb 19 11:43:52 2016 +0000

    perf tools: Fix checking asprintf return value
    
    commit 26dee028d365fbc0e3326606a8520260b4462381 upstream.
    
    According to man pages, asprintf returns -1 when failure. This patch
    fixes two incorrect return value checker.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
    Cc: Cody P Schafer <dev@codyps.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jeremie Galarneau <jeremie.galarneau@efficios.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kirill Smelkov <kirr@nexedi.com>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Fixes: ffeb883e5662 ("perf tools: Show proper error message for wrong terms of hw/sw events")
    Link: http://lkml.kernel.org/r/1455882283-79592-5-git-send-email-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dfe91df33715503b253563d5e6d9a816758485c
Author: Andi Kleen <ak@linux.intel.com>
Date:   Wed Feb 17 14:44:55 2016 -0800

    perf tools: Dont stop PMU parsing on alias parse error
    
    commit 940db6dcd3f4659303fdf6befe7416adc4d24118 upstream.
    
    When an error happens during alias parsing currently the complete
    parsing of all attributes of the PMU is stopped. This is breaks old perf
    on a newer kernel that may have not-yet-know alias attributes (such as
    .scale or .per-pkg).
    
    Continue when some attribute is unparseable.
    
    This is IMHO a stable candidate and should be backported to older
    versions to avoid problems with newer kernels.
    
    v2: Print warnings when something goes wrong.
    v3: Change warning to debug output
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Link: http://lkml.kernel.org/r/1455749095-18358-1-git-send-email-andi@firstfloor.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37014e0c5c90e250892da8aba8533cd43bacb4eb
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Wed Mar 2 13:24:14 2016 +0200

    perf/core: Fix perf_sched_count derailment
    
    commit 927a5570855836e5d5859a80ce7e91e963545e8f upstream.
    
    The error path in perf_event_open() is such that asking for a sampling
    event on a PMU that doesn't generate interrupts will end up in dropping
    the perf_sched_count even though it hasn't been incremented for this
    event yet.
    
    Given a sufficient amount of these calls, we'll end up disabling
    scheduler's jump label even though we'd still have active events in the
    system, thereby facilitating the arrival of the infernal regions upon us.
    
    I'm fixing this by moving account_event() inside perf_event_alloc().
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: vince@deater.net
    Link: http://lkml.kernel.org/r/1456917854-29427-1-git-send-email-alexander.shishkin@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a84dfcbf56eab7955b607e22696cb145e019f20
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri Mar 18 16:58:38 2016 +0100

    KVM: VMX: fix nested vpid for old KVM guests
    
    commit ef697a712a6165aea7779c295604b099e8bfae2e upstream.
    
    Old KVM guests invoke single-context invvpid without actually checking
    whether it is supported.  This was fixed by commit 518c8ae ("KVM: VMX:
    Make sure single type invvpid is supported before issuing invvpid
    instruction", 2010-08-01) and the patch after, but pre-2.6.36
    kernels lack it including RHEL 6.
    
    Reported-by: jmontleo@redhat.com
    Tested-by: jmontleo@redhat.com
    Fixes: 99b83ac893b84ed1a62ad6d1f2b6cc32026b9e85
    Reviewed-by: David Matlack <dmatlack@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9153f95f2b5a1a90b81c746342bed9d40dc9ae0
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri Mar 18 16:53:42 2016 +0100

    KVM: VMX: avoid guest hang on invalid invvpid instruction
    
    commit f6870ee9e53430f2a318ccf0dd5e66bb46194e43 upstream.
    
    A guest executing an invalid invvpid instruction would hang
    because the instruction pointer was not updated.
    
    Reported-by: jmontleo@redhat.com
    Tested-by: jmontleo@redhat.com
    Fixes: 99b83ac893b84ed1a62ad6d1f2b6cc32026b9e85
    Reviewed-by: David Matlack <dmatlack@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c44b175bf03cd74e517f3c98b2cb4896e04202ae
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri Mar 18 16:53:29 2016 +0100

    KVM: VMX: avoid guest hang on invalid invept instruction
    
    commit 2849eb4f99d54925c543db12917127f88b3c38ff upstream.
    
    A guest executing an invalid invept instruction would hang
    because the instruction pointer was not updated.
    
    Fixes: bfd0a56b90005f8c8a004baf407ad90045c2b11e
    Reviewed-by: David Matlack <dmatlack@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e2fa4bbbac1c2e198e4c980d451c9ec568ae798
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Mon Mar 21 10:15:25 2016 +0100

    KVM: fix spin_lock_init order on x86
    
    commit e9ad4ec8379ad1ba6f68b8ca1c26b50b5ae0a327 upstream.
    
    Moving the initialization earlier is needed in 4.6 because
    kvm_arch_init_vm is now using mmu_lock, causing lockdep to
    complain:
    
    [  284.440294] INFO: trying to register non-static key.
    [  284.445259] the code is fine but needs lockdep annotation.
    [  284.450736] turning off the locking correctness validator.
    ...
    [  284.528318]  [<ffffffff810aecc3>] lock_acquire+0xd3/0x240
    [  284.533733]  [<ffffffffa0305aa0>] ? kvm_page_track_register_notifier+0x20/0x60 [kvm]
    [  284.541467]  [<ffffffff81715581>] _raw_spin_lock+0x41/0x80
    [  284.546960]  [<ffffffffa0305aa0>] ? kvm_page_track_register_notifier+0x20/0x60 [kvm]
    [  284.554707]  [<ffffffffa0305aa0>] kvm_page_track_register_notifier+0x20/0x60 [kvm]
    [  284.562281]  [<ffffffffa02ece70>] kvm_mmu_init_vm+0x20/0x30 [kvm]
    [  284.568381]  [<ffffffffa02dbf7a>] kvm_arch_init_vm+0x1ea/0x200 [kvm]
    [  284.574740]  [<ffffffffa02bff3f>] kvm_dev_ioctl+0xbf/0x4d0 [kvm]
    
    However, it also helps fixing a preexisting problem, which is why this
    patch is also good for stable kernels: kvm_create_vm was incrementing
    current->mm->mm_count but not decrementing it at the out_err label (in
    case kvm_init_mmu_notifier failed).  The new initialization order makes
    it possible to add the required mmdrop without adding a new error label.
    
    Reported-by: Borislav Petkov <bp@alien8.de>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49f0cbfc3e73108c319c3d3cc5fe04587d96b654
Author: Radim Krčmář <rkrcmar@redhat.com>
Date:   Wed Mar 2 22:56:38 2016 +0100

    KVM: i8254: change PIT discard tick policy
    
    commit 7dd0fdff145c5be7146d0ac06732ae3613412ac1 upstream.
    
    Discard policy uses ack_notifiers to prevent injection of PIT interrupts
    before EOI from the last one.
    
    This patch changes the policy to always try to deliver the interrupt,
    which makes a difference when its vector is in ISR.
    Old implementation would drop the interrupt, but proposed one injects to
    IRR, like real hardware would.
    
    The old policy breaks legacy NMI watchdogs, where PIT is used through
    virtual wire (LVT0): PIT never sends an interrupt before receiving EOI,
    thus a guest deadlock with disabled interrupts will stop NMIs.
    
    Note that NMI doesn't do EOI, so PIT also had to send a normal interrupt
    through IOAPIC.  (KVM's PIT is deeply rotten and luckily not used much
    in modern systems.)
    
    Even though there is a chance of regressions, I think we can fix the
    LVT0 NMI bug without introducing a new tick policy.
    
    Reported-by: Yuki Shibuya <shibuya.yk@ncos.nec.co.jp>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f6e5e26e68f1171b7cf8bebb7ce86c95e506639
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Feb 10 17:50:23 2016 +0100

    KVM: x86: fix missed hardware breakpoints
    
    commit 4e422bdd2f849d98fffccbc3295c2f0996097fb3 upstream.
    
    Sometimes when setting a breakpoint a process doesn't stop on it.
    This is because the debug registers are not loaded correctly on
    VCPU load.
    
    The following simple reproducer from Oleg Nesterov tries using debug
    registers in both the host and the guest, for example by running "./bp
    0 1" on the host and "./bp 14 15" under QEMU.
    
        #include <unistd.h>
        #include <signal.h>
        #include <stdlib.h>
        #include <stdio.h>
        #include <sys/wait.h>
        #include <sys/ptrace.h>
        #include <sys/user.h>
        #include <asm/debugreg.h>
        #include <assert.h>
    
        #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
    
        unsigned long encode_dr7(int drnum, int enable, unsigned int type, unsigned int len)
        {
            unsigned long dr7;
    
            dr7 = ((len | type) & 0xf)
                << (DR_CONTROL_SHIFT + drnum * DR_CONTROL_SIZE);
            if (enable)
                dr7 |= (DR_GLOBAL_ENABLE << (drnum * DR_ENABLE_SIZE));
    
            return dr7;
        }
    
        int write_dr(int pid, int dr, unsigned long val)
        {
            return ptrace(PTRACE_POKEUSER, pid,
                    offsetof (struct user, u_debugreg[dr]),
                    val);
        }
    
        void set_bp(pid_t pid, void *addr)
        {
            unsigned long dr7;
            assert(write_dr(pid, 0, (long)addr) == 0);
            dr7 = encode_dr7(0, 1, DR_RW_EXECUTE, DR_LEN_1);
            assert(write_dr(pid, 7, dr7) == 0);
        }
    
        void *get_rip(int pid)
        {
            return (void*)ptrace(PTRACE_PEEKUSER, pid,
                    offsetof(struct user, regs.rip), 0);
        }
    
        void test(int nr)
        {
            void *bp_addr = &&label + nr, *bp_hit;
            int pid;
    
            printf("test bp %d\n", nr);
            assert(nr < 16); // see 16 asm nops below
    
            pid = fork();
            if (!pid) {
                assert(ptrace(PTRACE_TRACEME, 0,0,0) == 0);
                kill(getpid(), SIGSTOP);
                for (;;) {
                    label: asm (
                        "nop; nop; nop; nop;"
                        "nop; nop; nop; nop;"
                        "nop; nop; nop; nop;"
                        "nop; nop; nop; nop;"
                    );
                }
            }
    
            assert(pid == wait(NULL));
            set_bp(pid, bp_addr);
    
            for (;;) {
                assert(ptrace(PTRACE_CONT, pid, 0, 0) == 0);
                assert(pid == wait(NULL));
    
                bp_hit = get_rip(pid);
                if (bp_hit != bp_addr)
                    fprintf(stderr, "ERR!! hit wrong bp %ld != %d\n",
                        bp_hit - &&label, nr);
            }
        }
    
        int main(int argc, const char *argv[])
        {
            while (--argc) {
                int nr = atoi(*++argv);
                if (!fork())
                    test(nr);
            }
    
            while (wait(NULL) > 0)
                ;
            return 0;
        }
    
    Suggested-by: Nadadv Amit <namit@cs.technion.ac.il>
    Reported-by: Andrey Wagin <avagin@gmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54fda475686cfb9a90bb558c0fa590e644503432
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Fri Feb 26 09:15:11 2016 -0600

    x86/PCI: Mark Broadwell-EP Home Agent & PCU as having non-compliant BARs
    
    commit b894157145e4ac7598d7062bc93320898a5e059e upstream.
    
    The Home Agent and PCU PCI devices in Broadwell-EP have a non-BAR register
    where a BAR should be.  We don't know what the side effects of sizing the
    "BAR" would be, and we don't know what address space the "BAR" might appear
    to describe.
    
    Mark these devices as having non-compliant BARs so the PCI core doesn't
    touch them.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6724209df88ec1a760d036b71b8f871b1556785
Author: Stephane Eranian <eranian@google.com>
Date:   Thu Mar 3 20:50:40 2016 +0100

    perf/x86/intel: Add definition for PT PMI bit
    
    commit 5690ae28e472d25e330ad0c637a5cea3fc39fb32 upstream.
    
    This patch adds a definition for GLOBAL_OVFL_STATUS bit 55
    which is used with the Processor Trace (PT) feature.
    
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: adrian.hunter@intel.com
    Cc: kan.liang@intel.com
    Cc: namhyung@kernel.org
    Link: http://lkml.kernel.org/r/1457034642-21837-2-git-send-email-eranian@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7657a398c105500d1614444a26c1fc9166813fb8
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Feb 10 14:15:27 2016 -0800

    x86/entry/compat: Keep TS_COMPAT set during signal delivery
    
    commit 4e79e182b419172e35936a47f098509092d69817 upstream.
    
    Signal delivery needs to know the sign of an interrupted syscall's
    return value in order to detect -ERESTART variants.  Normally this
    works independently of bitness because syscalls internally return
    long.  Under ptrace, however, this can break, and syscall_get_error
    is supposed to sign-extend regs->ax if needed.
    
    We were clearing TS_COMPAT too early, though, and this prevented
    sign extension, which subtly broke syscall restart under ptrace.
    
    Reported-by: Robert O'Callahan <robert@ocallahan.org>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Shuah Khan <shuahkh@osg.samsung.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: c5c46f59e4e7 ("x86/entry: Add new, comprehensible entry and exit handlers written in C")
    Link: http://lkml.kernel.org/r/cbce3cf545522f64eb37f5478cb59746230db3b5.1455142412.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5aeaf8bd6c6a3f29a1ab55987c10741ef984ea52
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Feb 3 12:33:29 2016 +0100

    x86/microcode: Untangle from BLK_DEV_INITRD
    
    commit 5f9c01aa7c49a2d74474d6d879a797b8badf29e6 upstream.
    
    Thomas Voegtle reported that doing oldconfig with a .config which has
    CONFIG_MICROCODE enabled but BLK_DEV_INITRD disabled prevents the
    microcode loading mechanism from being built.
    
    So untangle it from the BLK_DEV_INITRD dependency so that oldconfig
    doesn't turn it off and add an explanatory text to its Kconfig help what
    the supported methods for supplying microcode are.
    
    Reported-by: Thomas Voegtle <tv@lio96.de>
    Tested-by: Thomas Voegtle <tv@lio96.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1454499225-21544-2-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8c28e096a07b7bdf6fae534c8ff5f372b25ea82
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Feb 3 12:33:30 2016 +0100

    x86/microcode/intel: Make early loader look for builtin microcode too
    
    commit 264285ac01673e70557c43ecee338ce97c4c0672 upstream.
    
    Set the initrd @start depending on the presence of an initrd. Otherwise,
    builtin microcode loading doesn't work as the start is wrong and we're
    using it to compute offset to the microcode blobs.
    
    Tested-by: Thomas Voegtle <tv@lio96.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1454499225-21544-3-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19e0783ae96837e30e94acdb0cc4ae935338a969
Author: Chris Paterson <chris.paterson2@renesas.com>
Date:   Wed Feb 10 14:07:01 2016 +0000

    mmc: sh_mmcif: Correct TX DMA channel allocation
    
    commit a32ef81c9889c9554a3c4b465c4ee7b2d26c6b10 upstream.
    
    Commit 27cbd7e815a8 ("mmc: sh_mmcif: rework dma channel handling")
    introduced a typo causing the TX DMA channel allocation to be overwritten
    by the requested RX DMA channel.
    
    Fixes: 27cbd7e815a8 ("mmc: sh_mmcif: rework dma channel handling")
    Signed-off-by: Chris Paterson <chris.paterson2@renesas.com>
    Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c045105c641ccbeb6e94e87980cc8db870aa3961
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Nov 16 17:08:41 2015 +0100

    mmc: sh_mmcif: rework dma channel handling
    
    commit 27cbd7e815a8e223ff7c4fe56daca724101288ac upstream.
    
    When compiling the sh_mmcif driver for ARM64, we currently
    get a harmless build warning:
    
    ../drivers/mmc/host/sh_mmcif.c: In function 'sh_mmcif_request_dma_one':
    ../drivers/mmc/host/sh_mmcif.c:417:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
        (void *)pdata->slave_id_tx :
        ^
    ../drivers/mmc/host/sh_mmcif.c:418:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
        (void *)pdata->slave_id_rx;
    
    This could be worked around by adding another cast to uintptr_t, but
    I decided to simplify the code a little more to avoid that. This
    splits out the platform data using code into a separate function
    and builds that only for CONFIG_SUPERH. This part still has a typecast
    but does not need a second one. The SH platform code could be further
    modified to pass a pointer directly as we do on other architectures
    when we have a filter function.
    
    The normal case is simplified further and now just calls
    dma_request_slave_channel() directly without going through the
    compat handling.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e08f9a7c0e0242c2fae664d252e25c9bf93db522
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Nov 18 15:25:23 2015 +0100

    ASoC: samsung: pass DMA channels as pointers
    
    commit b9a1a743818ea3265abf98f9431623afa8c50c86 upstream.
    
    ARM64 allmodconfig produces a bunch of warnings when building the
    samsung ASoC code:
    
    sound/soc/samsung/dmaengine.c: In function 'samsung_asoc_init_dma_data':
    sound/soc/samsung/dmaengine.c:53:32: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       playback_data->filter_data = (void *)playback->channel;
    sound/soc/samsung/dmaengine.c:60:31: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       capture_data->filter_data = (void *)capture->channel;
    
    We could easily shut up the warning by adding an intermediate cast,
    but there is a bigger underlying problem: The use of IORESOURCE_DMA
    to pass data from platform code to device drivers is dubious to start
    with, as what we really want is a pointer that can be passed into
    a filter function.
    
    Note that on s3c64xx, the pl08x DMA data is already a pointer, but
    gets cast to resource_size_t so we can pass it as a resource, and it
    then gets converted back to a pointer. In contrast, the data we pass
    for s3c24xx is an index into a device specific table, and we artificially
    convert that into a pointer for the filter function.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1999fa6e8145305a6c8bda30ea20783717708e6
Author: Thierry Reding <treding@nvidia.com>
Date:   Wed Dec 2 16:54:50 2015 +0100

    regulator: core: Fix nested locking of supplies
    
    commit 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b upstream.
    
    Commit fa731ac7ea04 ("regulator: core: avoid unused variable warning")
    introduced a subtle change in how supplies are locked. Where previously
    code was always locking the regulator of the current iteration, the new
    implementation only locks the regulator if it has a supply. For any
    given power tree that means that the root will never get locked.
    
    On the other hand the regulator_unlock_supply() will still release all
    the locks, which in turn causes the lock debugging code to warn about a
    mutex being unlocked which wasn't locked.
    
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Fixes: Fixes: fa731ac7ea04 ("regulator: core: avoid unused variable warning")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c8fe4f52755d4690a745f4e56b543c51add86fe
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Nov 20 15:24:39 2015 +0100

    regulator: core: avoid unused variable warning
    
    commit fa731ac7ea04a7d3a5c6d2f568132478c02a83b3 upstream.
    
    The second argument of the mutex_lock_nested() helper is only
    evaluated if CONFIG_DEBUG_LOCK_ALLOC is set. Otherwise we
    get this build warning for the new regulator_lock_supply
    function:
    
    drivers/regulator/core.c: In function 'regulator_lock_supply':
    drivers/regulator/core.c:142:6: warning: unused variable 'i' [-Wunused-variable]
    
    To avoid the warning, this restructures the code to make it
    both simpler and to move the 'i++' outside of the mutex_lock_nested
    call, where it is now always used and the variable is not
    flagged as unused.
    
    We had some discussion about changing mutex_lock_nested to an
    inline function, which would make the code do the right thing here,
    but in the end decided against it, in order to guarantee that
    mutex_lock_nested() does not introduced overhead without
    CONFIG_DEBUG_LOCK_ALLOC.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 9f01cd4a915 ("regulator: core: introduce function to lock regulators and its supplies")
    Link: http://permalink.gmane.org/gmane.linux.kernel/2068900
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84cf91ad330f5c9ba51f761a37e58b9aa99bf470
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Mon Feb 29 15:59:18 2016 +0100

    s390/cpumf: Fix lpp detection
    
    commit 7a76aa95f6f6682db5629449d763251d1c9f8c4e upstream.
    
    we have to check bit 40 of the facility list before issuing LPP
    and not bit 48. Otherwise a guest running on a system with
    "The decimal-floating-point zoned-conversion facility" and without
    the "The set-program-parameters facility" might crash on an lpp
    instruction.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Fixes: e22cf8ca6f75 ("s390/cpumf: rework program parameter setting to detect guest samples")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>