commit 4a710285a8a2c97d13e5ca538801efa86bb75c36
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Mon Apr 11 12:50:22 2016 +0200

    Linux 3.12.58

commit 718a4b101c98945544011f723d966fed3a08e875
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: Jiri Slaby <jslaby@suse.cz>

commit 1c936da21740ad81b3008f7649fae5ceabd32925
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: Jiri Slaby <jslaby@suse.cz>

commit 6ef98c94504eb928b37fb084f45f3da39c9d6f68
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: Jiri Slaby <jslaby@suse.cz>

commit 630ed84ec2212acd91b6752e612bb17b6335a670
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: Jiri Slaby <jslaby@suse.cz>

commit 71e64a840bac24303c9cc564f92517eaa64573b7
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: Jiri Slaby <jslaby@suse.cz>

commit 69f0a1a3a67b769ec9afb0f0a0b748f4d7b1fd1c
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: Jiri Slaby <jslaby@suse.cz>

commit ca216547bc4a3e7d73043f4d9b42d6461cf3067f
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: Jiri Slaby <jslaby@suse.cz>

commit b18626baf7a8b5bef098204516641b0701419d85
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: Jiri Slaby <jslaby@suse.cz>

commit 10227fe086fb3a147d26b4183255cabe1315dcfd
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.
    
    [3.12 backport: we have only list_del]
    
    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: Jiri Slaby <jslaby@suse.cz>

commit 5e5da2b330fd1a3565cab74a34e81305a4e6deae
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: Jiri Slaby <jslaby@suse.cz>

commit 605de482e9927443b082071b65484440c2cdeefd
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: Jiri Slaby <jslaby@suse.cz>

commit a20513a2aff547c52db7b32238b1feeb1ba11319
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: Jiri Slaby <jslaby@suse.cz>

commit d704928dc7d402d22a8279b584a46afc519938e8
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: Jiri Slaby <jslaby@suse.cz>

commit a56c35cbb2643d668d2bf06398e9c7a2098ccfcc
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: Jiri Slaby <jslaby@suse.cz>

commit 042a9da57786ca3406abb815bdbf1684a88c0b27
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: Jiri Slaby <jslaby@suse.cz>

commit 07e97c1f3e74070f054e293410425a795516e4aa
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: Jiri Slaby <jslaby@suse.cz>

commit fd797512816d954c1b82e405f8fb7022c0cbeb81
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: Jiri Slaby <jslaby@suse.cz>

commit cc2a8c04813d99a763c135e417f23c7302eedd81
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: Jiri Slaby <jslaby@suse.cz>

commit 36f5207148d48433625966162d03f804d81e1a23
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: Jiri Slaby <jslaby@suse.cz>

commit 0458912a9267764e965972a81525f0cb00a46df8
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: Jiri Slaby <jslaby@suse.cz>

commit 49a1f130199063af38c1cdc3dd687d591d585ba8
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: Jiri Slaby <jslaby@suse.cz>

commit 648cb1f4b47064c7850847ce8f966c003d1251a1
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: Jiri Slaby <jslaby@suse.cz>

commit 4c7cf0b21798e15adbc65db8cd9993f47c26343d
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: Jiri Slaby <jslaby@suse.cz>

commit 2c6be442b79d95b294f542073e2c2e1ff0d7d2d3
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: Jiri Slaby <jslaby@suse.cz>

commit cfe5e5157966a9391fd3e55db8cd131d324eb0e7
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: Jiri Slaby <jslaby@suse.cz>

commit 040c8d1246a690c1b1cade456da20be023c9ff44
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: Jiri Slaby <jslaby@suse.cz>

commit 12d5171636629247076eefafd5ae09d67e249e8b
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: Jiri Slaby <jslaby@suse.cz>

commit 955804c1471e58e89e52cd802f696c47cfbd4157
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: Jiri Slaby <jslaby@suse.cz>

commit fa51c0f6ee268de826d77a74b46727663d19ff76
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: Jiri Slaby <jslaby@suse.cz>

commit b04d5e00dc91e70b538d25a51c5240221415460f
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: Jiri Slaby <jslaby@suse.cz>

commit 7a269ff5c3904926c1aa76c0f83ead851cdac165
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: Jiri Slaby <jslaby@suse.cz>

commit ac3a5b5fc36a13c260bf8ca577c30cf858aadb1b
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: Jiri Slaby <jslaby@suse.cz>

commit 6294da6a1f8a1d6ae96d28f7188b8acad0b99996
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: Jiri Slaby <jslaby@suse.cz>

commit 90180fca41954cafac4f1a583631ac3ca143f18f
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: Jiri Slaby <jslaby@suse.cz>

commit 8ec48afe45d109c19879203f031050f14496f2f1
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: Jiri Slaby <jslaby@suse.cz>

commit 51cf6aad2e644d691f4bc555855434ef46033ecf
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: Jiri Slaby <jslaby@suse.cz>

commit 5497d32e08732ad371a61866bc0721a3ac1ae0af
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: Jiri Slaby <jslaby@suse.cz>

commit 144b4dc51a0d0dd3aefcabd3079ecda41a162700
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: Jiri Slaby <jslaby@suse.cz>

commit 214032e3c22b825f86e5810bbba756e94faa893f
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: Jiri Slaby <jslaby@suse.cz>

commit 909bf5343d9edc29d4dc172bbb526644e8a55b44
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: Jiri Slaby <jslaby@suse.cz>

commit 3b8dbf6b7b4e4fd1274fe2e5b04eda5a3394c543
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: Jiri Slaby <jslaby@suse.cz>

commit 4f5d9400a57200b8a9f6a683a7beadd159ac09e1
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: Jiri Slaby <jslaby@suse.cz>

commit 59d81b6e6b258f6200565e608ddc8f911b0b0146
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: Jiri Slaby <jslaby@suse.cz>

commit 6d74c41a9f527d4c65af78336adeb897559a7307
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: Jiri Slaby <jslaby@suse.cz>

commit 1e63113534e452ec166e01f9321239b520db5543
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: Jiri Slaby <jslaby@suse.cz>

commit a5a2394c837182bd52478d2ac03f57413140fd34
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: Jiri Slaby <jslaby@suse.cz>

commit 4a77ba7a4e8567821f3e77054f23b3daade25999
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: Jiri Slaby <jslaby@suse.cz>

commit cd4d737344639d7225d0232ec99a1b833d7e2324
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: Jiri Slaby <jslaby@suse.cz>

commit f9dbb3666b3ddb5f9a7e44a433383cb6880a03f5
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: Jiri Slaby <jslaby@suse.cz>

commit 38114f18d3c6a7e5a82b6fab03542131dcd62500
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: Jiri Slaby <jslaby@suse.cz>

commit 74fd1380d488617ce8a11dbf4f91ec6f0d605255
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: Jiri Slaby <jslaby@suse.cz>

commit f475db149d75bf100084a813ce9e1e9f4fa508e7
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: Jiri Slaby <jslaby@suse.cz>

commit 0db3d20b766d627cf60f61c9d2c3d92dc3359fa9
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: Jiri Slaby <jslaby@suse.cz>

commit 347f9ff47039268ab03007b0e27797ca86e26d49
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: Jiri Slaby <jslaby@suse.cz>

commit bbb8253942cd0e935bb5b3b01970e098422ef270
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: Jiri Slaby <jslaby@suse.cz>

commit 2b565174937e555c5d92770c71987a5b5cb942eb
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: Jiri Slaby <jslaby@suse.cz>

commit 5a180c98143ff8f05bd99e585690f2e658328405
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: Jiri Slaby <jslaby@suse.cz>

commit e488c934bd5f7d321e32b5d5c550c0020b87d3ec
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: Jiri Slaby <jslaby@suse.cz>

commit f479018034abbc565fcaf93ce3e8ebf22a68fbad
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: Jiri Slaby <jslaby@suse.cz>
    
    -------------------------------
    ./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 b82df119eed7e6d5815c04af734ae2f527b46af0
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: Jiri Slaby <jslaby@suse.cz>

commit 4f9a76cd0771cf2dbd2ef016bb0acfb4d6b461e9
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: Jiri Slaby <jslaby@suse.cz>

commit 8ef8a7493e8be4a8befac27b97a71c12879e7a70
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: Jiri Slaby <jslaby@suse.cz>

commit 9a9bec2c25f2620f00e6b31ae0cf963438435bb1
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: Jiri Slaby <jslaby@suse.cz>

commit 0466b50334cbf5183656d7bab8c3d7677fb2a100
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: Jiri Slaby <jslaby@suse.cz>

commit a2a4370a312ac4793b165768f8fc69495b05b23e
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Apr 5 12:24:23 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>
    [ kamal: backport to 3.19-stable: no X86_FEATURE_XENPV so just call
      xen_pv_domain() directly ]
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ebb69171ed7947630327e4146b3e4229254fb0bb
Author: Charles_Rose@Dell.com <Charles_Rose@Dell.com>
Date:   Fri Nov 6 14:18:56 2015 -0600

    ahci: Add Device ID for Intel Sunrise Point PCH
    
    commit c5967b79ecabe2baca40658d9073e28b30d7f6cf upstream.
    
    This patch adds missing AHCI RAID SATA Device IDs for the Intel Sunrise
    Point PCH.
    
    Signed-off-by: Nanda Kishore Chinna <nanda_kishore_chinna@dell.com>
    Signed-off-by: Charles Rose <charles_rose@dell.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6af792bb57d0ba6695b5390a19f8eedcf51b602c
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Mon Feb 29 15:03:33 2016 -0800

    mld, igmp: Fix reserved tailroom calculation
    
    commit 1837b2e2bcd23137766555a63867e649c0b637f0 upstream.
    
    The current reserved_tailroom calculation fails to take hlen and tlen into
    account.
    
    skb:
    [__hlen__|__data____________|__tlen___|__extra__]
    ^                                               ^
    head                                            skb_end_offset
    
    In this representation, hlen + data + tlen is the size passed to alloc_skb.
    "extra" is the extra space made available in __alloc_skb because of
    rounding up by kmalloc. We can reorder the representation like so:
    
    [__hlen__|__data____________|__extra__|__tlen___]
    ^                                               ^
    head                                            skb_end_offset
    
    The maximum space available for ip headers and payload without
    fragmentation is min(mtu, data + extra). Therefore,
    reserved_tailroom
    = data + extra + tlen - min(mtu, data + extra)
    = skb_end_offset - hlen - min(mtu, skb_end_offset - hlen - tlen)
    = skb_tailroom - min(mtu, skb_tailroom - tlen) ; after skb_reserve(hlen)
    
    Compare the second line to the current expression:
    reserved_tailroom = skb_end_offset - min(mtu, skb_end_offset)
    and we can see that hlen and tlen are not taken into account.
    
    The min() in the third line can be expanded into:
    if mtu < skb_tailroom - tlen:
    	reserved_tailroom = skb_tailroom - mtu
    else:
    	reserved_tailroom = tlen
    
    Depending on hlen, tlen, mtu and the number of multicast address records,
    the current code may output skbs that have less tailroom than
    dev->needed_tailroom or it may output more skbs than needed because not all
    space available is used.
    
    Fixes: 4c672e4b ("ipv6: mld: fix add_grhead skb_over_panic for devs with large MTUs")
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e98ac0863a51df3929483164d775efd0d72a3564
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Wed Nov 5 20:27:38 2014 +0100

    ipv6: mld: fix add_grhead skb_over_panic for devs with large MTUs
    
    commit 4c672e4b42bc8046d63a6eb0a2c6a450a501af32 upstream.
    
    It has been reported that generating an MLD listener report on
    devices with large MTUs (e.g. 9000) and a high number of IPv6
    addresses can trigger a skb_over_panic():
    
    skbuff: skb_over_panic: text:ffffffff80612a5d len:3776 put:20
    head:ffff88046d751000 data:ffff88046d751010 tail:0xed0 end:0xec0
    dev:port1
     ------------[ cut here ]------------
    kernel BUG at net/core/skbuff.c:100!
    invalid opcode: 0000 [#1] SMP
    Modules linked in: ixgbe(O)
    CPU: 3 PID: 0 Comm: swapper/3 Tainted: G O 3.14.23+ #4
    [...]
    Call Trace:
     <IRQ>
     [<ffffffff80578226>] ? skb_put+0x3a/0x3b
     [<ffffffff80612a5d>] ? add_grhead+0x45/0x8e
     [<ffffffff80612e3a>] ? add_grec+0x394/0x3d4
     [<ffffffff80613222>] ? mld_ifc_timer_expire+0x195/0x20d
     [<ffffffff8061308d>] ? mld_dad_timer_expire+0x45/0x45
     [<ffffffff80255b5d>] ? call_timer_fn.isra.29+0x12/0x68
     [<ffffffff80255d16>] ? run_timer_softirq+0x163/0x182
     [<ffffffff80250e6f>] ? __do_softirq+0xe0/0x21d
     [<ffffffff8025112b>] ? irq_exit+0x4e/0xd3
     [<ffffffff802214bb>] ? smp_apic_timer_interrupt+0x3b/0x46
     [<ffffffff8063f10a>] ? apic_timer_interrupt+0x6a/0x70
    
    mld_newpack() skb allocations are usually requested with dev->mtu
    in size, since commit 72e09ad107e7 ("ipv6: avoid high order allocations")
    we have changed the limit in order to be less likely to fail.
    
    However, in MLD/IGMP code, we have some rather ugly AVAILABLE(skb)
    macros, which determine if we may end up doing an skb_put() for
    adding another record. To avoid possible fragmentation, we check
    the skb's tailroom as skb->dev->mtu - skb->len, which is a wrong
    assumption as the actual max allocation size can be much smaller.
    
    The IGMP case doesn't have this issue as commit 57e1ab6eaddc
    ("igmp: refine skb allocations") stores the allocation size in
    the cb[].
    
    Set a reserved_tailroom to make it fit into the MTU and use
    skb_availroom() helper instead. This also allows to get rid of
    igmp_skb_size().
    
    Reported-by: Wei Liu <lw1a2.jing@gmail.com>
    Fixes: 72e09ad107e7 ("ipv6: avoid high order allocations")
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Cc: David L Stevens <david.stevens@oracle.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 76f4d42f76cf1a80287265d224e4ede1b9fc69d0
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Thu Mar 31 09:01:22 2016 +0200

    net/ipv6: fix DEVCONF_ constants
    
    In 3.12 commit e16f537864eb9cf68683d9e107706d1b31fcaa76 (net/ipv6: add
    sysctl option accept_ra_min_hop_limit), upstream commit
    8013d1d7eafb0589ca766db6b74026f76b7f5cb4, we added
    DEVCONF_USE_OIF_ADDRS_ONLY and DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT
    constants into <linux/ipv6.h>. But they have different values to
    upstream because some values were added in upstream and we did not
    backport them.
    
    So we have:
            DEVCONF_SUPPRESS_FRAG_NDISC,
    +       DEVCONF_USE_OIF_ADDRS_ONLY,
    +       DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
            DEVCONF_MAX
    And upstream has:
            DEVCONF_SUPPRESS_FRAG_NDISC,
    +       DEVCONF_ACCEPT_RA_FROM_LOCAL,
    +       DEVCONF_USE_OPTIMISTIC,
    +       DEVCONF_ACCEPT_RA_MTU,
    +       DEVCONF_STABLE_SECRET,
    +       DEVCONF_USE_OIF_ADDRS_ONLY,
    +       DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
            DEVCONF_MAX
    
    Now, our DEVCONF_USE_OIF_ADDRS_ONLY corresponds to
    DEVCONF_USE_OIF_ADDRS_ONLY-4 == DEVCONF_ACCEPT_RA_FROM_LOCAL from
    upstream. Similarly the other constant.
    
    Fix that by simply defining the missing constants to make the values
    equal.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Reported-by: YOSHIFUJI Hideaki <hideaki.yoshifuji@miraclelinux.com>
    Cc: Luis Henriques <luis.henriques@canonical.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Hangbin Liu <liuhangbin@gmail.com>

commit 2e9b24229c4283f1c303cc4483afa72c6d9dbe49
Author: Jeff Layton <jlayton@poochiereds.net>
Date:   Fri Mar 20 15:15:14 2015 -0400

    nfs: fix high load average due to callback thread sleeping
    
    commit 5d05e54af3cdbb13cf19c557ff2184781b91a22c upstream.
    
    Chuck pointed out a problem that crept in with commit 6ffa30d3f734 (nfs:
    don't call blocking operations while !TASK_RUNNING). Linux counts tasks
    in uninterruptible sleep against the load average, so this caused the
    system's load average to be pinned at at least 1 when there was a
    NFSv4.1+ mount active.
    
    Not a huge problem, but it's probably worth fixing before we get too
    many complaints about it. This patch converts the code back to use
    TASK_INTERRUPTIBLE sleep, simply has it flush any signals on each loop
    iteration. In practice no one should really be signalling this thread at
    all, so I think this is reasonably safe.
    
    With this change, there's also no need to game the hung task watchdog so
    we can also convert the schedule_timeout call back to a normal schedule.
    
    Reported-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
    Tested-by: Chuck Lever <chuck.lever@oracle.com>
    Fixes: commit 6ffa30d3f734 (“nfs: don't call blocking . . .”)
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d93cbb4439e3d9e898df3dd526db2e4c3f5d7968
Author: Ian Mitchell <imitchell@sgi.com>
Date:   Mon Aug 31 16:48:12 2015 -0400

    Fix kmalloc overflow in LPFC driver at large core count
    
    commit c0365c0692d6ea038bb4feda308eec69e11292a3 upstream.
    
    This patch allows the LPFC to start up without a fatal kernel bug based
    on an exceeded KMALLOC_MAX_SIZE and a too large NR_CPU-based maskbits
    field. The bug was based on the number of CPU cores in a system.
    Using the get_cpu_mask() function declared in kernel/cpu.c allows the
    driver to load on the community kernel 4.2 RC1.
    
    Below is the kernel bug reproduced:
    
    8<--------------------------------------------------------------------
    2199382.828437 (    0.005216)| lpfc 0003:02:00.0: enabling device (0140 -> 0142)
    2199382.999272 (    0.170835)| ------------[ cut here ]------------
    2199382.999337 (    0.000065)| WARNING: CPU: 84 PID: 404 at mm/slab_common.c:653 kmalloc_slab+0x2f/0x89()
    2199383.004534 (    0.005197)| Modules linked in: lpfc(+) usbcore(+) mptctl scsi_transport_fc sg lpc_ich i2c_i801 usb_common tpm_tis mfd_core tpm acpi_cpufreq button scsi_dh_alua scsi_dh_rdacusbcore: registered new device driver usb
    2199383.020568 (    0.016034)|
    2199383.020581 (    0.000013)|  scsi_dh_hp_sw scsi_dh_emc scsi_dh gru thermal sata_nv processor piix fan thermal_sysehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    2199383.035288 (    0.014707)|
    2199383.035306 (    0.000018)|  hwmon ata_piix
    2199383.035336 (    0.000030)| CPU: 84 PID: 404 Comm: kworker/84:0 Not tainted 3.18.0-rc2-gat-00106-ga7ca10f-dirty #178
    2199383.047077 (    0.011741)| ehci-pci: EHCI PCI platform driver
    2199383.047134 (    0.000057)| Hardware name: SGI UV2000/ROMLEY, BIOS SGI UV 2000/3000 series BIOS 01/15/2013
    2199383.056245 (    0.009111)| Workqueue: events work_for_cpu_fn
    2199383.066174 (    0.009929)|  000000000000028d ffff88eef827bbe8 ffffffff815a542f 000000000000028d
    2199383.069545 (    0.003371)|  ffffffff810ea142 ffff88eef827bc28 ffffffff8104365c ffff88eefe4006c8
    2199383.076214 (    0.006669)|  0000000000000000 00000000000080d0 0000000000000000 0000000000000004
    2199383.079213 (    0.002999)| Call Trace:
    2199383.084084 (    0.004871)|  [<ffffffff815a542f>] dump_stack+0x49/0x62
    2199383.087283 (    0.003199)|  [<ffffffff810ea142>] ? kmalloc_slab+0x2f/0x89
    2199383.091415 (    0.004132)|  [<ffffffff8104365c>] warn_slowpath_common+0x77/0x92
    2199383.095197 (    0.003782)|  [<ffffffff8104368c>] warn_slowpath_null+0x15/0x17
    2199383.103336 (    0.008139)|  [<ffffffff810ea142>] kmalloc_slab+0x2f/0x89
    2199383.107082 (    0.003746)|  [<ffffffff8110fd9e>] __kmalloc+0x13/0x16a
    2199383.112531 (    0.005449)|  [<ffffffffa01a8ed9>] lpfc_pci_probe_one_s4+0x105b/0x1644 [lpfc]
    2199383.115316 (    0.002785)|  [<ffffffff81302b92>] ? pci_bus_read_config_dword+0x75/0x87
    2199383.123431 (    0.008115)|  [<ffffffffa01a951f>] lpfc_pci_probe_one+0x5d/0xcb5 [lpfc]
    2199383.127364 (    0.003933)|  [<ffffffff81497119>] ? dbs_check_cpu+0x168/0x177
    2199383.136438 (    0.009074)|  [<ffffffff81496fa5>] ? gov_queue_work+0xb4/0xc0
    2199383.140407 (    0.003969)|  [<ffffffff8130b2a1>] local_pci_probe+0x1e/0x52
    2199383.143105 (    0.002698)|  [<ffffffff81052c47>] work_for_cpu_fn+0x13/0x1b
    2199383.147315 (    0.004210)|  [<ffffffff81054965>] process_one_work+0x222/0x35e
    2199383.151379 (    0.004064)|  [<ffffffff81054e76>] worker_thread+0x3d5/0x46e
    2199383.159402 (    0.008023)|  [<ffffffff81054aa1>] ? process_one_work+0x35e/0x35e
    2199383.163097 (    0.003695)|  [<ffffffff810599c6>] kthread+0xc8/0xd2
    2199383.167476 (    0.004379)|  [<ffffffff810598fe>] ? kthread_freezable_should_stop+0x5b/0x5b
    2199383.176434 (    0.008958)|  [<ffffffff815a8cac>] ret_from_fork+0x7c/0xb0
    2199383.180086 (    0.003652)|  [<ffffffff810598fe>] ? kthread_freezable_should_stop+0x5b/0x5b
    2199383.192333 (    0.012247)| ehci-pci 0000:00:1a.0: EHCI Host Controller
    -------------------------------------------------------------------->8
    
    The proposed solution was approved by James Smart at Emulex and tested
    on a UV2 machine with 6144 cores. With the fix, the LPFC module loads
    with no unwanted effects on the system.
    
    Signed-off-by: Ian Mitchell <imitchell@sgi.com>
    Signed-off-by: Alex Thorlton <athorlton@sgi.com>
    Suggested-by: Robert Elliot <elliott@hp.com>
    [james.smart: resolve unused variable warning]
    Signed-off-by: James Smart <james.smart@avagotech.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 71f4162a575f64823a027da782342ad0c10ba16f
Author: Markus Metzger <markus.t.metzger@intel.com>
Date:   Fri Feb 14 16:44:08 2014 -0800

    perf, nmi: Fix unknown NMI warning
    
    commit a3ef2229c94ff70998724cb64b9cb4c77db9e950 upstream.
    
    When using BTS on Core i7-4*, I get the below kernel warning.
    
    $ perf record -c 1 -e branches:u ls
    Message from syslogd@labpc1501 at Nov 11 15:49:25 ...
     kernel:[  438.317893] Uhhuh. NMI received for unknown reason 31 on CPU 2.
    
    Message from syslogd@labpc1501 at Nov 11 15:49:25 ...
     kernel:[  438.317920] Do you have a strange power saving mode enabled?
    
    Message from syslogd@labpc1501 at Nov 11 15:49:25 ...
     kernel:[  438.317945] Dazed and confused, but trying to continue
    
    Make intel_pmu_handle_irq() take the full exit path when returning early.
    
    Cc: eranian@google.com
    Cc: peterz@infradead.org
    Cc: mingo@kernel.org
    Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1392425048-5309-1-git-send-email-andi@firstfloor.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2b4faae22a29af588d8a7fda0ce53b2934c93155
Author: Lukasz Odzioba <lukasz.odzioba@intel.com>
Date:   Mon Oct 12 13:53:32 2015 +0200

    hwmon: (coretemp) Increase limit of maximum core ID from 32 to 128.
    
    commit cc904f9cf26dc455cffbdf6e7eb86717e047d8ff upstream.
    
    A new limit selected arbitrarily as power of two greater than
    required minimum for Xeon Phi processor (72 for Knights Landing).
    
    Currently driver is not able to handle cores with core ID greater than 32.
    Such attempt ends up with the following error in dmesg:
    coretemp coretemp.0: Adding Core XXX failed
    
    Signed-off-by: Lukasz Odzioba <lukasz.odzioba@intel.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit bf06b31b00b2bc7427e567c67d11c01513044557
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Mon Feb 15 14:46:49 2016 +0100

    s390/mm: four page table levels vs. fork
    
    commit 3446c13b268af86391d06611327006b059b8bab1 upstream.
    
    The fork of a process with four page table levels is broken since
    git commit 6252d702c5311ce9 "[S390] dynamic page tables."
    
    All new mm contexts are created with three page table levels and
    an asce limit of 4TB. If the parent has four levels dup_mmap will
    add vmas to the new context which are outside of the asce limit.
    The subsequent call to copy_page_range will walk the three level
    page table structure of the new process with non-zero pgd and pud
    indexes. This leads to memory clobbers as the pgd_index *and* the
    pud_index is added to the mm->pgd pointer without a pgd_deref
    in between.
    
    The init_new_context() function is selecting the number of page
    table levels for a new context. The function is used by mm_init()
    which in turn is called by dup_mm() and mm_alloc(). These two are
    used by fork() and exec(). The init_new_context() function can
    distinguish the two cases by looking at mm->context.asce_limit,
    for fork() the mm struct has been copied and the number of page
    table levels may not change. For exec() the mm_alloc() function
    set the new mm structure to zero, in this case a three-level page
    table is created as the temporary stack space is located at
    STACK_TOP_MAX = 4TB.
    
    This fixes CVE-2016-2143.
    
    Reported-by: Marcin Kościelnicki <koriakin@0x04.net>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d53a0262f6738c81193e000b2975a7183be521f3
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 12 12:05:20 2016 +0100

    USB: visor: fix null-deref at probe
    
    commit cac9b50b0d75a1d50d6c056ff65c005f3224c8e0 upstream.
    
    Fix null-pointer dereference at probe should a (malicious) Treo device
    lack the expected endpoints.
    
    Specifically, the Treo port-setup hack was dereferencing the bulk-in and
    interrupt-in urbs without first making sure they had been allocated by
    core.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9112aa764e14174e8b1b3e035c77c5a33103e64a
Author: Wei Huang <wehuang@redhat.com>
Date:   Wed Aug 13 12:06:14 2014 -0400

    KVM: SVM: add rdmsr support for AMD event registers
    
    commit dc9b2d933a1d5782b70977024f862759c8ebb2f7 upstream.
    
    Current KVM only supports RDMSR for K7_EVNTSEL0 and K7_PERFCTR0
    MSRs. Reading the rest MSRs will trigger KVM to inject #GP into
    guest VM. This causes a warning message "Failed to access perfctr
    msr (MSR c0010001 is ffffffffffffffff)" on AMD host. This patch
    adds RDMSR support for all K7_EVNTSELn and K7_PERFCTRn registers
    and thus supresses the warning message.
    
    Signed-off-by: Wei Huang <wehuang@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b8c77bd5c38ebf85eb4dfa632f3f3d61ec5db219
Author: Dirk Brandewie <dirk.j.brandewie@intel.com>
Date:   Mon Mar 24 07:41:29 2014 -0700

    intel_pstate: Use del_timer_sync in intel_pstate_cpu_stop
    
    commit c2294a2f7853e6450361d078b65407bdaa6d1d11 upstream.
    
    Ensure that no timer callback is running since we are about to free
    the timer structure.  We cannot guarantee that the call back is called
    on the CPU where the timer is running.
    
    Reported-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
    Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a706ac408da4994438d995d2cf4d2f7943086ca4
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Dec 16 13:32:38 2015 -0500

    USB: fix invalid memory access in hub_activate()
    
    commit e50293ef9775c5f1cf3fcc093037dd6a8c5684ea upstream.
    
    Commit 8520f38099cc ("USB: change hub initialization sleeps to
    delayed_work") changed the hub_activate() routine to make part of it
    run in a workqueue.  However, the commit failed to take a reference to
    the usb_hub structure or to lock the hub interface while doing so.  As
    a result, if a hub is plugged in and quickly unplugged before the work
    routine can run, the routine will try to access memory that has been
    deallocated.  Or, if the hub is unplugged while the routine is
    running, the memory may be deallocated while it is in active use.
    
    This patch fixes the problem by taking a reference to the usb_hub at
    the start of hub_activate() and releasing it at the end (when the work
    is finished), and by locking the hub interface while the work routine
    is running.  It also adds a check at the start of the routine to see
    if the hub has already been disconnected, in which nothing should be
    done.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Alexandru Cornea <alexandru.cornea@intel.com>
    Tested-by: Alexandru Cornea <alexandru.cornea@intel.com>
    Fixes: 8520f38099cc ("USB: change hub initialization sleeps to delayed_work")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b6f358ab27b07362881ba280e1bb4d4b4184e4e9
Author: Michal Hocko <mhocko@suse.cz>
Date:   Wed Jun 4 16:07:36 2014 -0700

    memcg: do not hang on OOM when killed by userspace OOM access to memory reserves
    
    commit d8dc595ce3909fbc131bdf5ab8c9808fe624b18d upstream.
    
    Eric has reported that he can see task(s) stuck in memcg OOM handler
    regularly.  The only way out is to
    
    	echo 0 > $GROUP/memory.oom_control
    
    His usecase is:
    
    - Setup a hierarchy with memory and the freezer (disable kernel oom and
      have a process watch for oom).
    
    - In that memory cgroup add a process with one thread per cpu.
    
    - In one thread slowly allocate once per second I think it is 16M of ram
      and mlock and dirty it (just to force the pages into ram and stay
      there).
    
    - When oom is achieved loop:
      * attempt to freeze all of the tasks.
      * if frozen send every task SIGKILL, unfreeze, remove the directory in
        cgroupfs.
    
    Eric has then pinpointed the issue to be memcg specific.
    
    All tasks are sitting on the memcg_oom_waitq when memcg oom is disabled.
    Those that have received fatal signal will bypass the charge and should
    continue on their way out.  The tricky part is that the exit path might
    trigger a page fault (e.g.  exit_robust_list), thus the memcg charge,
    while its memcg is still under OOM because nobody has released any charges
    yet.
    
    Unlike with the in-kernel OOM handler the exiting task doesn't get
    TIF_MEMDIE set so it doesn't shortcut further charges of the killed task
    and falls to the memcg OOM again without any way out of it as there are no
    fatal signals pending anymore.
    
    This patch fixes the issue by checking PF_EXITING early in
    mem_cgroup_try_charge and bypass the charge same as if it had fatal
    signal pending or TIF_MEMDIE set.
    
    Normally exiting tasks (aka not killed) will bypass the charge now but
    this should be OK as the task is leaving and will release memory and
    increasing the memory pressure just to release it in a moment seems
    dubious wasting of cycles.  Besides that charges after exit_signals should
    be rare.
    
    I am bringing this patch again (rebased on the current mmotm tree). I
    hope we can move forward finally. If there is still an opposition then
    I would really appreciate a concurrent approach so that we can discuss
    alternatives.
    
    http://comments.gmane.org/gmane.linux.kernel.stable/77650 is a reference
    to the followup discussion when the patch has been dropped from the mmotm
    last time.
    
    Reported-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Michal Hocko <mhocko@suse.cz>
    Acked-by: David Rientjes <rientjes@google.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 448da40809ea54305d826a634f4f6bb9c16cd14d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 15 16:20:24 2016 +0100

    ALSA: seq: Fix leak of pool buffer at concurrent writes
    
    commit d99a36f4728fcbcc501b78447f625bdcce15b842 upstream.
    
    When multiple concurrent writes happen on the ALSA sequencer device
    right after the open, it may try to allocate vmalloc buffer for each
    write and leak some of them.  It's because the presence check and the
    assignment of the buffer is done outside the spinlock for the pool.
    
    The fix is to move the check and the assignment into the spinlock.
    
    (The current implementation is suboptimal, as there can be multiple
     unnecessary vmallocs because the allocation is done before the check
     in the spinlock.  But the pool size is already checked beforehand, so
     this isn't a big problem; that is, the only possible path is the
     multiple writes before any pool assignment, and practically seen, the
     current coverage should be "good enough".)
    
    The issue was triggered by syzkaller fuzzer.
    
    Buglink: http://lkml.kernel.org/r/CACT4Y+bSzazpXNvtAr=WXaL8hptqjHwqEyFA+VN2AWEx=aurkg@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d077a2449de41ea868cb723d736ed0f288805b3f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Jan 31 11:57:41 2016 +0100

    ALSA: rawmidi: Make snd_rawmidi_transmit() race-free
    
    commit 06ab30034ed9c200a570ab13c017bde248ddb2a6 upstream.
    
    A kernel WARNING in snd_rawmidi_transmit_ack() is triggered by
    syzkaller fuzzer:
      WARNING: CPU: 1 PID: 20739 at sound/core/rawmidi.c:1136
    Call Trace:
     [<     inline     >] __dump_stack lib/dump_stack.c:15
     [<ffffffff82999e2d>] dump_stack+0x6f/0xa2 lib/dump_stack.c:50
     [<ffffffff81352089>] warn_slowpath_common+0xd9/0x140 kernel/panic.c:482
     [<ffffffff813522b9>] warn_slowpath_null+0x29/0x30 kernel/panic.c:515
     [<ffffffff84f80bd5>] snd_rawmidi_transmit_ack+0x275/0x400 sound/core/rawmidi.c:1136
     [<ffffffff84fdb3c1>] snd_virmidi_output_trigger+0x4b1/0x5a0 sound/core/seq/seq_virmidi.c:163
     [<     inline     >] snd_rawmidi_output_trigger sound/core/rawmidi.c:150
     [<ffffffff84f87ed9>] snd_rawmidi_kernel_write1+0x549/0x780 sound/core/rawmidi.c:1223
     [<ffffffff84f89fd3>] snd_rawmidi_write+0x543/0xb30 sound/core/rawmidi.c:1273
     [<ffffffff817b0323>] __vfs_write+0x113/0x480 fs/read_write.c:528
     [<ffffffff817b1db7>] vfs_write+0x167/0x4a0 fs/read_write.c:577
     [<     inline     >] SYSC_write fs/read_write.c:624
     [<ffffffff817b50a1>] SyS_write+0x111/0x220 fs/read_write.c:616
     [<ffffffff86336c36>] entry_SYSCALL_64_fastpath+0x16/0x7a arch/x86/entry/entry_64.S:185
    
    Also a similar warning is found but in another path:
    Call Trace:
     [<     inline     >] __dump_stack lib/dump_stack.c:15
     [<ffffffff82be2c0d>] dump_stack+0x6f/0xa2 lib/dump_stack.c:50
     [<ffffffff81355139>] warn_slowpath_common+0xd9/0x140 kernel/panic.c:482
     [<ffffffff81355369>] warn_slowpath_null+0x29/0x30 kernel/panic.c:515
     [<ffffffff8527e69a>] rawmidi_transmit_ack+0x24a/0x3b0 sound/core/rawmidi.c:1133
     [<ffffffff8527e851>] snd_rawmidi_transmit_ack+0x51/0x80 sound/core/rawmidi.c:1163
     [<ffffffff852d9046>] snd_virmidi_output_trigger+0x2b6/0x570 sound/core/seq/seq_virmidi.c:185
     [<     inline     >] snd_rawmidi_output_trigger sound/core/rawmidi.c:150
     [<ffffffff85285a0b>] snd_rawmidi_kernel_write1+0x4bb/0x760 sound/core/rawmidi.c:1252
     [<ffffffff85287b73>] snd_rawmidi_write+0x543/0xb30 sound/core/rawmidi.c:1302
     [<ffffffff817ba5f3>] __vfs_write+0x113/0x480 fs/read_write.c:528
     [<ffffffff817bc087>] vfs_write+0x167/0x4a0 fs/read_write.c:577
     [<     inline     >] SYSC_write fs/read_write.c:624
     [<ffffffff817bf371>] SyS_write+0x111/0x220 fs/read_write.c:616
     [<ffffffff86660276>] entry_SYSCALL_64_fastpath+0x16/0x7a arch/x86/entry/entry_64.S:185
    
    In the former case, the reason is that virmidi has an open code
    calling snd_rawmidi_transmit_ack() with the value calculated outside
    the spinlock.   We may use snd_rawmidi_transmit() in a loop just for
    consuming the input data, but even there, there is a race between
    snd_rawmidi_transmit_peek() and snd_rawmidi_tranmit_ack().
    
    Similarly in the latter case, it calls snd_rawmidi_transmit_peek() and
    snd_rawmidi_tranmit_ack() separately without protection, so they are
    racy as well.
    
    The patch tries to address these issues by the following ways:
    - Introduce the unlocked versions of snd_rawmidi_transmit_peek() and
      snd_rawmidi_transmit_ack() to be called inside the explicit lock.
    - Rewrite snd_rawmidi_transmit() to be race-free (the former case).
    - Make the split calls (the latter case) protected in the rawmidi spin
      lock.
    
    Buglink: http://lkml.kernel.org/r/CACT4Y+YPq1+cYLkadwjWa5XjzF1_Vki1eHnVn-Lm0hzhSpu5PA@mail.gmail.com
    Buglink: http://lkml.kernel.org/r/CACT4Y+acG4iyphdOZx47Nyq_VHGbpJQK-6xNpiqUjaZYqsXOGw@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a95562da6514c69802771fccdcd6a6053903f70e
Author: John Allen <jallen@linux.vnet.ibm.com>
Date:   Thu Jan 14 15:22:16 2016 -0800

    drivers/base/memory.c: fix kernel warning during memory hotplug on ppc64
    
    commit cb5490a5eea415106d7438df440da5fb1e17318d upstream.
    
    Fix a bug where a kernel warning is triggered when performing a memory
    hotplug on ppc64.  This warning may also occur on any architecture that
    uses the memory_probe_store interface.
    
      WARNING: at drivers/base/memory.c:200
      CPU: 9 PID: 13042 Comm: systemd-udevd Not tainted 4.4.0-rc4-00113-g0bd0f1e-dirty #7
      NIP [c00000000055e034] pages_correctly_reserved+0x134/0x1b0
      LR [c00000000055e7f8] memory_subsys_online+0x68/0x140
      Call Trace:
        memory_subsys_online+0x68/0x140
        device_online+0xb4/0x120
        store_mem_state+0xb0/0x180
        dev_attr_store+0x34/0x60
        sysfs_kf_write+0x64/0xa0
        kernfs_fop_write+0x17c/0x1e0
        __vfs_write+0x40/0x160
        vfs_write+0xb8/0x200
        SyS_write+0x60/0x110
        system_call+0x38/0xd0
    
    The warning is triggered because there is a udev rule that automatically
    tries to online memory after it has been added.  The udev rule varies
    from distro to distro, but will generally look something like:
    
      SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"
    
    On any architecture that uses memory_probe_store to reserve memory, the
    udev rule will be triggered after the first section of the block is
    reserved and will subsequently attempt to online the entire block,
    interrupting the memory reservation process and causing the warning.
    This patch modifies memory_probe_store to add a block of memory with a
    single call to add_memory as opposed to looping through and adding each
    section individually.  A single call to add_memory is protected by the
    mem_hotplug mutex which will prevent the udev rule from onlining memory
    until the reservation of the entire block is complete.
    
    Signed-off-by: John Allen <jallen@linux.vnet.ibm.com>
    Acked-by: Dave Hansen <dave.hansen@intel.com>
    Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3edd21641d33befe790e2cdd0d912a49aa59bb33
Author: Yuval Mintz <Yuval.Mintz@qlogic.com>
Date:   Thu Aug 27 08:03:08 2015 +0300

    bnx2x: Add new device ids under the Qlogic vendor
    
    commit 9c9a6524b5fdf6cb57c9ff627b7f242a6a4e0b00 upstream.
    
    This adds support for 3 new PCI device combinations -
    1077:16a1, 1077:16a4 and 1077:16ad.
    
    Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a8a83b61ee4585fdae046a98fc1bd20cdb122fc7
Author: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Date:   Thu Feb 13 11:19:47 2014 +0800

    Btrfs: skip locking when searching commit root
    
    commit e84752d434b5cca0869e906e7b94d0531b25c6d3 upstream.
    
    We won't change commit root, skip locking dance with commit root
    when walking backrefs, this can speed up btrfs send operations.
    
    Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5f3284939089d34d1a7685ad83aeca797c3896ae
Author: Kirill Tkhai <ktkhai@parallels.com>
Date:   Mon Oct 27 14:18:25 2014 +0400

    sched: Fix race between task_group and sched_task_group
    
    commit eeb61e53ea19be0c4015b00b2e8b3b2185436f2b upstream.
    
    The race may happen when somebody is changing task_group of a forking task.
    Child's cgroup is the same as parent's after dup_task_struct() (there just
    memory copying). Also, cfs_rq and rt_rq are the same as parent's.
    
    But if parent changes its task_group before it's called cgroup_post_fork(),
    we do not reflect this situation on child. Child's cfs_rq and rt_rq remain
    the same, while child's task_group changes in cgroup_post_fork().
    
    To fix this we introduce fork() method, which calls sched_move_task() directly.
    This function changes sched_task_group on appropriate (also its logic has
    no problem with freshly created tasks, so we shouldn't introduce something
    special; we are able just to use it).
    
    Possibly, this decides the Burke Libbey's problem: https://lkml.org/lkml/2014/10/24/456
    
    Signed-off-by: Kirill Tkhai <ktkhai@parallels.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/1414405105.19914.169.camel@tkhai
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d1f8a33ffa14fa975e3ee41a89e53b302e305c30
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Jul 24 20:51:54 2014 +1000

    xfs: allow inode allocations in post-growfs disk space
    
    commit 9de67c3ba9ea961ba420573d56479d09d33a7587 upstream.
    
    Today, if we perform an xfs_growfs which adds allocation groups,
    mp->m_maxagi is not properly updated when the growfs is complete.
    
    Therefore inodes will continue to be allocated only in the
    AGs which existed prior to the growfs, and the new space
    won't be utilized.
    
    This is because of this path in xfs_growfs_data_private():
    
    xfs_growfs_data_private
    	xfs_initialize_perag(mp, nagcount, &nagimax);
    		if (mp->m_flags & XFS_MOUNT_32BITINODES)
    			index = xfs_set_inode32(mp);
    		else
    			index = xfs_set_inode64(mp);
    
    		if (maxagi)
    			*maxagi = index;
    
    where xfs_set_inode* iterates over the (old) agcount in
    mp->m_sb.sb_agblocks, which has not yet been updated
    in the growfs path.  So "index" will be returned based on
    the old agcount, not the new one, and new AGs are not available
    for inode allocation.
    
    Fix this by explicitly passing the proper AG count (which
    xfs_initialize_perag() already has) down another level,
    so that xfs_set_inode* can make the proper decision about
    acceptable AGs for inode allocation in the potentially
    newly-added AGs.
    
    This has been broken since 3.7, when these two
    xfs_set_inode* functions were added in commit 2d2194f.
    Prior to that, we looped over "agcount" not sb_agblocks
    in these calculations.
    
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8d676cb5b5fda91d494dec091f43c87c1c7eddd9
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Thu Feb 11 16:10:24 2016 -0500

    xen/pciback: Save the number of MSI-X entries to be copied later.
    
    commit d159457b84395927b5a52adb72f748dd089ad5e5 upstream.
    
    Commit 8135cf8b092723dbfcc611fe6fdcb3a36c9951c5 (xen/pciback: Save
    xen_pci_op commands before processing it) broke enabling MSI-X because
    it would never copy the resulting vectors into the response.  The
    number of vectors requested was being overwritten by the return value
    (typically zero for success).
    
    Save the number of vectors before processing the op, so the correct
    number of vectors are copied afterwards.
    
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Cc: "Jan Beulich" <JBeulich@suse.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 16d5d05d88c55f41fe6e87aa205ecc0d2d9a2567
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Mon Nov 16 12:40:48 2015 -0500

    xen/pciback: Save xen_pci_op commands before processing it
    
    commit 8135cf8b092723dbfcc611fe6fdcb3a36c9951c5 upstream.
    
    Double fetch vulnerabilities that happen when a variable is
    fetched twice from shared memory but a security check is only
    performed the first time.
    
    The xen_pcibk_do_op function performs a switch statements on the op->cmd
    value which is stored in shared memory. Interestingly this can result
    in a double fetch vulnerability depending on the performed compiler
    optimization.
    
    This patch fixes it by saving the xen_pci_op command before
    processing it. We also use 'barrier' to make sure that the
    compiler does not perform any optimization.
    
    This is part of XSA155.
    
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Jan Beulich <JBeulich@suse.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: "Jan Beulich" <JBeulich@suse.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d529da06c0acdb1205973357e60f6e7d91dafe20
Author: Roger Pau Monné <roger.pau@citrix.com>
Date:   Tue Nov 3 16:40:43 2015 +0000

    xen-blkback: read from indirect descriptors only once
    
    commit 18779149101c0dd43ded43669ae2a92d21b6f9cb upstream.
    
    Since indirect descriptors are in memory shared with the frontend, the
    frontend could alter the first_sect and last_sect values after they have
    been validated but before they are recorded in the request.  This may
    result in I/O requests that overflow the foreign page, possibly
    overwriting local pages when the I/O request is executed.
    
    When parsing indirect descriptors, only read first_sect and last_sect
    once.
    
    This is part of XSA155.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Jan Beulich <JBeulich@suse.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a0a2c1c906c4506332b9ad8769b0efa112b9814e
Author: Roger Pau Monné <roger.pau@citrix.com>
Date:   Tue Nov 3 16:34:09 2015 +0000

    xen-blkback: only read request operation from shared ring once
    
    commit 1f13d75ccb806260079e0679d55d9253e370ec8a upstream.
    
    A compiler may load a switch statement value multiple times, which could
    be bad when the value is in memory shared with the frontend.
    
    When converting a non-native request to a native one, ensure that
    src->operation is only loaded once by using READ_ONCE().
    
    This is part of XSA155.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: "Jan Beulich" <JBeulich@suse.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1b7f294a5b3097000d0940e8273759907aabce51
Author: David Vrabel <david.vrabel@citrix.com>
Date:   Fri Oct 30 15:17:06 2015 +0000

    xen-netback: use RING_COPY_REQUEST() throughout
    
    commit 68a33bfd8403e4e22847165d149823a2e0e67c9c upstream.
    
    Instead of open-coding memcpy()s and directly accessing Tx and Rx
    requests, use the new RING_COPY_REQUEST() that ensures the local copy
    is correct.
    
    This is more than is strictly necessary for guest Rx requests since
    only the id and gref fields are used and it is harmless if the
    frontend modifies these.
    
    This is part of XSA155.
    
    Reviewed-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0327f4b748bbb7930e9850c4275eae4c94685124
Author: David Vrabel <david.vrabel@citrix.com>
Date:   Fri Oct 30 15:16:01 2015 +0000

    xen-netback: don't use last request to determine minimum Tx credit
    
    commit 0f589967a73f1f30ab4ac4dd9ce0bb399b4d6357 upstream.
    
    The last from guest transmitted request gives no indication about the
    minimum amount of credit that the guest might need to send a packet
    since the last packet might have been a small one.
    
    Instead allow for the worst case 128 KiB packet.
    
    This is part of XSA155.
    
    Reviewed-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 120b649bd2f6699ed56dfa93c4a8b070babe9984
Author: David Vrabel <david.vrabel@citrix.com>
Date:   Fri Oct 30 14:58:08 2015 +0000

    xen: Add RING_COPY_REQUEST()
    
    commit 454d5d882c7e412b840e3c99010fe81a9862f6fb upstream.
    
    Using RING_GET_REQUEST() on a shared ring is easy to use incorrectly
    (i.e., by not considering that the other end may alter the data in the
    shared ring while it is being inspected).  Safe usage of a request
    generally requires taking a local copy.
    
    Provide a RING_COPY_REQUEST() macro to use instead of
    RING_GET_REQUEST() and an open-coded memcpy().  This takes care of
    ensuring that the copy is done correctly regardless of any possible
    compiler optimizations.
    
    Use a volatile source to prevent the compiler from reordering or
    omitting the copy.
    
    This is part of XSA155.
    
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit fa7125505a94bfda98cd1f78c34285b5b9b6dc45
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Mar 26 17:45:37 2015 +0100

    locking: Remove atomicy checks from {READ,WRITE}_ONCE
    
    commit 7bd3e239d6c6d1cad276e8f130b386df4234dcd7 upstream.
    
    The fact that volatile allows for atomic load/stores is a special case
    not a requirement for {READ,WRITE}_ONCE(). Their primary purpose is to
    force the compiler to emit load/stores _once_.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d9c401f43e7669c7efc3784cf98d850aff1da447
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Feb 20 15:46:31 2015 -0800

    kernel: make READ_ONCE() valid on const arguments
    
    commit dd36929720f40f17685e841ae0d4c581c165ea60 upstream.
    
    The use of READ_ONCE() causes lots of warnings witht he pending paravirt
    spinlock fixes, because those ends up having passing a member to a
    'const' structure to READ_ONCE().
    
    There should certainly be nothing wrong with using READ_ONCE() with a
    const source, but the helper function __read_once_size() would cause
    warnings because it would drop the 'const' qualifier, but also because
    the destination would be marked 'const' too due to the use of 'typeof'.
    
    Use a union of types in READ_ONCE() to avoid this issue.
    
    Also make sure to use parenthesis around the macro arguments to avoid
    possible operator precedence issues.
    
    Tested-by: Ingo Molnar <mingo@kernel.org>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dda458f0183649e8613a62bb59bec4e5acb883aa
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Tue Jan 13 10:46:42 2015 +0100

    kernel: Change ASSIGN_ONCE(val, x) to WRITE_ONCE(x, val)
    
    commit 43239cbe79fc369f5d2160bd7f69e28b5c50a58c upstream.
    
    Feedback has shown that WRITE_ONCE(x, val) is easier to use than
    ASSIGN_ONCE(val,x).
    There are no in-tree users yet, so lets change it for 3.19.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Acked-by: Davidlohr Bueso <dave@stgolabs.net>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b5be8baf9e0d5ea035588a0430b2af4989e07572
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Tue Nov 25 10:01:16 2014 +0100

    kernel: Provide READ_ONCE and ASSIGN_ONCE
    
    commit 230fa253df6352af12ad0a16128760b5cb3f92df upstream.
    
    ACCESS_ONCE does not work reliably on non-scalar types. For
    example gcc 4.6 and 4.7 might remove the volatile tag for such
    accesses during the SRA (scalar replacement of aggregates) step
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145)
    
    Let's provide READ_ONCE/ASSIGN_ONCE that will do all accesses via
    scalar types as suggested by Linus Torvalds. Accesses larger than
    the machines word size cannot be guaranteed to be atomic. These
    macros will use memcpy and emit a build warning.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e1ce59d23ead0fa2d3d8e1dabcce3877312a77e9
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Tue Oct 7 12:19:53 2014 -0700

    umount: Do not allow unmounting rootfs.
    
    commit da362b09e42ee0bcaf0356afee6078b4f324baff upstream.
    
    Andrew Vagin <avagin@parallels.com> writes:
    
    > #define _GNU_SOURCE
    > #include <sys/types.h>
    > #include <sys/stat.h>
    > #include <fcntl.h>
    > #include <sched.h>
    > #include <unistd.h>
    > #include <sys/mount.h>
    >
    > int main(int argc, char **argv)
    > {
    > 	int fd;
    >
    > 	fd = open("/proc/self/ns/mnt", O_RDONLY);
    > 	if (fd < 0)
    > 	   return 1;
    > 	   while (1) {
    > 	   	 if (umount2("/", MNT_DETACH) ||
    > 		        setns(fd, CLONE_NEWNS))
    > 					break;
    > 					}
    >
    > 					return 0;
    > }
    >
    > root@ubuntu:/home/avagin# gcc -Wall nsenter.c -o nsenter
    > root@ubuntu:/home/avagin# strace ./nsenter
    > execve("./nsenter", ["./nsenter"], [/* 22 vars */]) = 0
    > ...
    > open("/proc/self/ns/mnt", O_RDONLY)     = 3
    > umount("/", MNT_DETACH)                 = 0
    > setns(3, 131072)                        = 0
    > umount("/", MNT_DETACH
    >
    causes:
    
    > [  260.548301] ------------[ cut here ]------------
    > [  260.550941] kernel BUG at /build/buildd/linux-3.13.0/fs/pnode.c:372!
    > [  260.552068] invalid opcode: 0000 [#1] SMP
    > [  260.552068] Modules linked in: xt_CHECKSUM iptable_mangle xt_tcpudp xt_addrtype xt_conntrack ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack bridge stp llc dm_thin_pool dm_persistent_data dm_bufio dm_bio_prison iptable_filter ip_tables x_tables crct10dif_pclmul crc32_pclmul ghash_clmulni_intel binfmt_misc nfsd auth_rpcgss nfs_acl aesni_intel nfs lockd aes_x86_64 sunrpc fscache lrw gf128mul glue_helper ablk_helper cryptd serio_raw ppdev parport_pc lp parport btrfs xor raid6_pq libcrc32c psmouse floppy
    > [  260.552068] CPU: 0 PID: 1723 Comm: nsenter Not tainted 3.13.0-30-generic #55-Ubuntu
    > [  260.552068] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    > [  260.552068] task: ffff8800376097f0 ti: ffff880074824000 task.ti: ffff880074824000
    > [  260.552068] RIP: 0010:[<ffffffff811e9483>]  [<ffffffff811e9483>] propagate_umount+0x123/0x130
    > [  260.552068] RSP: 0018:ffff880074825e98  EFLAGS: 00010246
    > [  260.552068] RAX: ffff88007c741140 RBX: 0000000000000002 RCX: ffff88007c741190
    > [  260.552068] RDX: ffff88007c741190 RSI: ffff880074825ec0 RDI: ffff880074825ec0
    > [  260.552068] RBP: ffff880074825eb0 R08: 00000000000172e0 R09: ffff88007fc172e0
    > [  260.552068] R10: ffffffff811cc642 R11: ffffea0001d59000 R12: ffff88007c741140
    > [  260.552068] R13: ffff88007c741140 R14: ffff88007c741140 R15: 0000000000000000
    > [  260.552068] FS:  00007fd5c7e41740(0000) GS:ffff88007fc00000(0000) knlGS:0000000000000000
    > [  260.552068] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    > [  260.552068] CR2: 00007fd5c7968050 CR3: 0000000070124000 CR4: 00000000000406f0
    > [  260.552068] Stack:
    > [  260.552068]  0000000000000002 0000000000000002 ffff88007c631000 ffff880074825ed8
    > [  260.552068]  ffffffff811dcfac ffff88007c741140 0000000000000002 ffff88007c741160
    > [  260.552068]  ffff880074825f38 ffffffff811dd12b ffffffff811cc642 0000000075640000
    > [  260.552068] Call Trace:
    > [  260.552068]  [<ffffffff811dcfac>] umount_tree+0x20c/0x260
    > [  260.552068]  [<ffffffff811dd12b>] do_umount+0x12b/0x300
    > [  260.552068]  [<ffffffff811cc642>] ? final_putname+0x22/0x50
    > [  260.552068]  [<ffffffff811cc849>] ? putname+0x29/0x40
    > [  260.552068]  [<ffffffff811dd88c>] SyS_umount+0xdc/0x100
    > [  260.552068]  [<ffffffff8172aeff>] tracesys+0xe1/0xe6
    > [  260.552068] Code: 89 50 08 48 8b 50 08 48 89 02 49 89 45 08 e9 72 ff ff ff 0f 1f 44 00 00 4c 89 e6 4c 89 e7 e8 f5 f6 ff ff 48 89 c3 e9 39 ff ff ff <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 66 66 66 66 90 55 b8 01
    > [  260.552068] RIP  [<ffffffff811e9483>] propagate_umount+0x123/0x130
    > [  260.552068]  RSP <ffff880074825e98>
    > [  260.611451] ---[ end trace 11c33d85f1d4c652 ]--
    
    Which in practice is totally uninteresting.  Only the global root user can
    do it, and it is just a stupid thing to do.
    
    However that is no excuse to allow a silly way to oops the kernel.
    
    We can avoid this silly problem by setting MNT_LOCKED on the rootfs
    mount point and thus avoid needing any special cases in the unmount
    code.
    
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5cc4ff312ac06ee4c49801f5b288c1118c3e5785
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Mar 13 23:28:00 2016 -0400

    ipv4: Don't do expensive useless work during inetdev destroy.
    
    commit fbd40ea0180a2d328c5adc61414dc8bab9335ce2 upstream.
    
    When an inetdev is destroyed, every address assigned to the interface
    is removed.  And in this scenerio we do two pointless things which can
    be very expensive if the number of assigned interfaces is large:
    
    1) Address promotion.  We are deleting all addresses, so there is no
       point in doing this.
    
    2) A full nf conntrack table purge for every address.  We only need to
       do this once, as is already caught by the existing
       masq_dev_notifier so masq_inet_event() can skip this.
    
    [mk] 3.12.*: The change in masq_inet_event() needs to be duplicated in
    both IPv4 and IPv6 version of the function, these two were merged in
    3.18.
    
    Reported-by: Solar Designer <solar@openwall.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Tested-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Acked-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7514ee10d606566daaf42df8fedc0e450249d69e
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: Jiri Slaby <jslaby@suse.cz>

commit def91dea48a3acb14c2379b9461ae659d95616a2
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: Jiri Slaby <jslaby@suse.cz>